From b63a1c628d08d61873569bede8a4dc908baefff7 Mon Sep 17 00:00:00 2001 From: FurkanErdogan-BJSS <162117266+FurkanErdogan-BJSS@users.noreply.github.com> Date: Tue, 30 Apr 2024 10:53:38 +0100 Subject: [PATCH 01/20] Feature/cb2 11709 test: remove nested integration tests (#94) * test: remove nested tests * test: get cvs-nop latest * test: fix test script names * test: move testcontainers to devDependencies * test: fix test scripts * test: add jest-serial-runner to run sequentially * test: add condition for useLocalDb() * test: add logs * test: remove coverage cli option from test script * test: remove coverage cli option from test script * test: add coverage cli option to test script * test: move unit test execution to pre-commit * test: remove log line * test: remove --coverage from github workflow * test: remove async from jest describe block * test: remove ignoreCoveragePathPatterns from jest config * test: address comments * test: upgrade mysql2 to fix vulnarabilities --- .gitignore | 3 + README.md | 6 + cvs-nop | 2 +- jest.config.js | 41 +- package-lock.json | 8724 ++++++++--------- package.json | 22 +- ...nto-service-document-conversion.intTest.ts | 1177 ++- tests/integration/integration.allIntTest.ts | 15 - ...tech-record-document-conversion.intTest.ts | 1273 ++- ...-results-conversion-with-delete.intTest.ts | 3525 ++++--- ...-results-conversion-with-upsert.intTest.ts | 3525 ++++--- tsconfig.json | 2 +- 12 files changed, 8932 insertions(+), 9383 deletions(-) delete mode 100644 tests/integration/integration.allIntTest.ts diff --git a/.gitignore b/.gitignore index c09eb80..1a56e90 100644 --- a/.gitignore +++ b/.gitignore @@ -51,3 +51,6 @@ coverage/** #reports .reports/** + +# vscode specific files +.vscode/** \ No newline at end of file diff --git a/README.md b/README.md index 11544e1..43b2a25 100644 --- a/README.md +++ b/README.md @@ -58,6 +58,12 @@ This will cause numerous debug logs to fire. Messages will include event informa ```shell npm run test ``` +Runs all unit tests + +```shell +npm run test-all +``` +Runs all the tests (Unit and Integration) ### Integration tests Integration tests depend on: diff --git a/cvs-nop b/cvs-nop index facfbb9..3b66757 160000 --- a/cvs-nop +++ b/cvs-nop @@ -1 +1 @@ -Subproject commit facfbb97886d2444aa9a6e431b3e54ad78b48224 +Subproject commit 3b66757f917c50cd86e8246dfb6d7f8d2fd28abe diff --git a/jest.config.js b/jest.config.js index f7ab6e5..ba869ef 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,13 +1,32 @@ process.env.TZ = "GMT"; module.exports = { - preset: "ts-jest", - testEnvironment: "node", - roots: ["/src", "/tests"], - setupFiles: ["jest-plugin-context/setup"], - moduleFileExtensions: ["js", "ts"], - testResultsProcessor: "jest-sonar-reporter", - transform: { - "^.+\\.tsx?$": "ts-jest", - }, - testMatch: ["**/*.*Test.ts"], -}; + projects: [ + { + displayName: "UNIT", + testMatch: ["/tests/**/*.unitTest.ts"], + preset: "ts-jest", + testEnvironment: "node", + roots: ["/tests"], + setupFiles: ["jest-plugin-context/setup"], + moduleFileExtensions: ["js", "ts"], + testResultsProcessor: "jest-sonar-reporter", + transform: { + "^.+\\.ts?$": "ts-jest", + }, + }, + { + displayName: "INTEGRATION", + testMatch: ["/tests/**/*.intTest.ts"], + preset: "ts-jest", + testEnvironment: "node", + roots: ["/tests"], + setupFiles: ["jest-plugin-context/setup"], + moduleFileExtensions: ["js", "ts"], + testResultsProcessor: "jest-sonar-reporter", + transform: { + "^.+\\.ts?$": "ts-jest", + }, + runner: "jest-serial-runner", + } + ], + }; diff --git a/package-lock.json b/package-lock.json index 832543a..c0c415a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,15 +16,14 @@ "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", - "mysql2": "2.2.5", + "mysql2": "3.9.7", "prettier": "2.2.1", "reflect-metadata": "0.1.13", - "testcontainers": "7.6.2", "ts-node-register": "1.0.0", "uuid": "8.3.2" }, "devDependencies": { - "@aws-sdk/client-dynamodb": "3.266.0", + "@aws-sdk/client-dynamodb": "3.554.0", "@aws-sdk/util-dynamodb": "3.266.0", "@commitlint/cli": "12.1.4", "@commitlint/config-conventional": "12.1.4", @@ -42,14 +41,16 @@ "husky": "3.0.9", "jest": "26.0.0", "jest-plugin-context": "2.9.0", + "jest-serial-runner": "1.2.1", "jest-sonar-reporter": "2.0.0", "lambda-tester": "3.5.0", "serverless": "3.33.0", - "serverless-offline": "6.9.0", + "serverless-offline": "13.3.3", "serverless-plugin-tracing": "2.0.0", - "serverless-plugin-typescript": "1.1.9", + "serverless-plugin-typescript": "2.1.5", "sinon": "7.5.0", "sonar-scanner": "3.1.0", + "testcontainers": "7.6.2", "ts-jest": "26.5.1", "tslint": "5.20.0", "tslint-no-unused-expression-chai": "0.1.4", @@ -60,6 +61,17 @@ "npm": "9.*" } }, + "node_modules/@aws-crypto/crc32": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", + "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "dev": true, + "dependencies": { + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" + } + }, "node_modules/@aws-crypto/ie11-detection": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", @@ -116,2101 +128,2165 @@ "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/abort-controller": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.266.0.tgz", - "integrity": "sha512-H/ySWWSwJN5coP9c5Ge2pOJYs1YPG5AVemGeKRx3kw5Z7Btd9jSFyYV0qGPd78HG3FopjZqSb4l2puPPp8UdpA==", + "node_modules/@aws-sdk/client-dynamodb": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", + "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-endpoint-discovery": "3.535.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/abort-controller/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.266.0.tgz", - "integrity": "sha512-UGEiqvVgb9PVRLnIl7OFb4WZWjBXUQBlUPMx8sds1QmVoTAlNJxRupQk3SxWTLi4IkWNEfEFR+lbkaQWS5GLjg==", + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-lambda": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", + "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.266.0", - "@aws-sdk/config-resolver": "3.266.0", - "@aws-sdk/credential-provider-node": "3.266.0", - "@aws-sdk/fetch-http-handler": "3.266.0", - "@aws-sdk/hash-node": "3.266.0", - "@aws-sdk/invalid-dependency": "3.266.0", - "@aws-sdk/middleware-content-length": "3.266.0", - "@aws-sdk/middleware-endpoint": "3.266.0", - "@aws-sdk/middleware-endpoint-discovery": "3.266.0", - "@aws-sdk/middleware-host-header": "3.266.0", - "@aws-sdk/middleware-logger": "3.266.0", - "@aws-sdk/middleware-recursion-detection": "3.266.0", - "@aws-sdk/middleware-retry": "3.266.0", - "@aws-sdk/middleware-serde": "3.266.0", - "@aws-sdk/middleware-signing": "3.266.0", - "@aws-sdk/middleware-stack": "3.266.0", - "@aws-sdk/middleware-user-agent": "3.266.0", - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/node-http-handler": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/smithy-client": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/url-parser": "3.266.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.266.0", - "@aws-sdk/util-defaults-mode-node": "3.266.0", - "@aws-sdk/util-endpoints": "3.266.0", - "@aws-sdk/util-retry": "3.266.0", - "@aws-sdk/util-user-agent-browser": "3.266.0", - "@aws-sdk/util-user-agent-node": "3.266.0", - "@aws-sdk/util-utf8": "3.254.0", - "@aws-sdk/util-waiter": "3.266.0", - "tslib": "^2.3.1", - "uuid": "^8.3.2" + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/eventstream-serde-browser": "^2.2.0", + "@smithy/eventstream-serde-config-resolver": "^2.2.0", + "@smithy/eventstream-serde-node": "^2.2.0", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-stream": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/client-sso": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.266.0.tgz", - "integrity": "sha512-eK20HlA61ehvCBf62bk29DX0cXPQh2/KMlvuHnjhxDrn4BLMxLCMer8Awz3MIoBbVQKG1h46X2z6/pJra8Fs4w==", + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.554.0.tgz", + "integrity": "sha512-yj6CgIxCT3UwMumEO481KH4QvwArkAPzD7Xvwe1QKgJATc9bKNEo/FxV8LfnWIJ7nOtMDxbNxYLMXH/Fs1qGaQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.266.0", - "@aws-sdk/fetch-http-handler": "3.266.0", - "@aws-sdk/hash-node": "3.266.0", - "@aws-sdk/invalid-dependency": "3.266.0", - "@aws-sdk/middleware-content-length": "3.266.0", - "@aws-sdk/middleware-endpoint": "3.266.0", - "@aws-sdk/middleware-host-header": "3.266.0", - "@aws-sdk/middleware-logger": "3.266.0", - "@aws-sdk/middleware-recursion-detection": "3.266.0", - "@aws-sdk/middleware-retry": "3.266.0", - "@aws-sdk/middleware-serde": "3.266.0", - "@aws-sdk/middleware-stack": "3.266.0", - "@aws-sdk/middleware-user-agent": "3.266.0", - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/node-http-handler": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/smithy-client": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/url-parser": "3.266.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.266.0", - "@aws-sdk/util-defaults-mode-node": "3.266.0", - "@aws-sdk/util-endpoints": "3.266.0", - "@aws-sdk/util-retry": "3.266.0", - "@aws-sdk/util-user-agent-browser": "3.266.0", - "@aws-sdk/util-user-agent-node": "3.266.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/core": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.266.0.tgz", - "integrity": "sha512-kpXr0Vj7IjDZ1ef3GHAe+/eDFp/XpEKfNHCl0r2MB5zTTFYxDm8BlFl7qB1rBJlqzqpPRhy+1J+UAsg84melsw==", + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.554.0.tgz", + "integrity": "sha512-M86rkiRqbZBF5VyfTQ/vttry9VSoQkZ1oCqYF+SAGlXmD0Of8587yRSj2M4rYe0Uj7nRQIfSnhDYp1UzsZeRfQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.266.0", - "@aws-sdk/fetch-http-handler": "3.266.0", - "@aws-sdk/hash-node": "3.266.0", - "@aws-sdk/invalid-dependency": "3.266.0", - "@aws-sdk/middleware-content-length": "3.266.0", - "@aws-sdk/middleware-endpoint": "3.266.0", - "@aws-sdk/middleware-host-header": "3.266.0", - "@aws-sdk/middleware-logger": "3.266.0", - "@aws-sdk/middleware-recursion-detection": "3.266.0", - "@aws-sdk/middleware-retry": "3.266.0", - "@aws-sdk/middleware-serde": "3.266.0", - "@aws-sdk/middleware-stack": "3.266.0", - "@aws-sdk/middleware-user-agent": "3.266.0", - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/node-http-handler": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/smithy-client": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/url-parser": "3.266.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.266.0", - "@aws-sdk/util-defaults-mode-node": "3.266.0", - "@aws-sdk/util-endpoints": "3.266.0", - "@aws-sdk/util-retry": "3.266.0", - "@aws-sdk/util-user-agent-browser": "3.266.0", - "@aws-sdk/util-user-agent-node": "3.266.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.554.0" } }, "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/client-sts": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.266.0.tgz", - "integrity": "sha512-ml3cjtIhHP21OwNKAC25ys5nAox0m4E2gPH97Q5s/1aE/hzxqQKkTO6YWp3eW7gwruubNV1GG/w0uHvAUYMjBw==", + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.554.0.tgz", + "integrity": "sha512-EhaA6T0M0DNg5M8TCF1a7XJI5D/ZxAF3dgVIchyF98iNzjYgl/7U8K6hJay2A11aFvVu70g46xYMpz3Meky4wQ==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.266.0", - "@aws-sdk/credential-provider-node": "3.266.0", - "@aws-sdk/fetch-http-handler": "3.266.0", - "@aws-sdk/hash-node": "3.266.0", - "@aws-sdk/invalid-dependency": "3.266.0", - "@aws-sdk/middleware-content-length": "3.266.0", - "@aws-sdk/middleware-endpoint": "3.266.0", - "@aws-sdk/middleware-host-header": "3.266.0", - "@aws-sdk/middleware-logger": "3.266.0", - "@aws-sdk/middleware-recursion-detection": "3.266.0", - "@aws-sdk/middleware-retry": "3.266.0", - "@aws-sdk/middleware-sdk-sts": "3.266.0", - "@aws-sdk/middleware-serde": "3.266.0", - "@aws-sdk/middleware-signing": "3.266.0", - "@aws-sdk/middleware-stack": "3.266.0", - "@aws-sdk/middleware-user-agent": "3.266.0", - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/node-http-handler": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/smithy-client": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/url-parser": "3.266.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.266.0", - "@aws-sdk/util-defaults-mode-node": "3.266.0", - "@aws-sdk/util-endpoints": "3.266.0", - "@aws-sdk/util-retry": "3.266.0", - "@aws-sdk/util-user-agent-browser": "3.266.0", - "@aws-sdk/util-user-agent-node": "3.266.0", - "@aws-sdk/util-utf8": "3.254.0", - "fast-xml-parser": "4.0.11", - "tslib": "^2.3.1" + "@aws-sdk/core": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.554.0" } }, "node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/config-resolver": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.266.0.tgz", - "integrity": "sha512-s1DKPIJVcB506mRDGLzRAT3ZFUD/JvglbRoN9/oGUkCHusiOAlOIuTTilSfkjq13Ntq+O/sUIpWhir0R45dBcA==", + "node_modules/@aws-sdk/core": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.554.0.tgz", + "integrity": "sha512-JrG7ToTLeNf+/S3IiCUPVw9jEDB0DXl5ho8n/HwOa946mv+QyCepCuV2U/8f/1KAX0mD8Ufm/E4/cbCbFHgbSg==", "dev": true, "dependencies": { - "@aws-sdk/signature-v4": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.266.0", - "tslib": "^2.3.1" + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.2.1", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/config-resolver/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.266.0.tgz", - "integrity": "sha512-hh6/mkchzl6KUZBNFBkTB2YKEKPr2nLYS65d5DQnj+O2zXrWzVejS3mGT5iI7FZTcmKEdkxEGM+w8eZNGrdLBQ==", + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", + "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", "dev": true, "dependencies": { - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.266.0.tgz", - "integrity": "sha512-UEfzcMtSJsNt9DedP+LDAG3cSLq7XFl/6wJAkDAAeNuDmy5iTCk03sZF21LJ1A31GKviEHpxLquBslOdk1DYGQ==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.552.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", + "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", "dev": true, "dependencies": { - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/url-parser": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-stream": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/credential-provider-imds/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.266.0.tgz", - "integrity": "sha512-zyQo/eCtiPjoDvcsDI4xBojY6qy+o59B4LiVan1byvDQBbdI2VqshaDC4E+VJyCXcIZlYY1cT5NWt2g3wKKOLg==", - "dev": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.266.0", - "@aws-sdk/credential-provider-imds": "3.266.0", - "@aws-sdk/credential-provider-process": "3.266.0", - "@aws-sdk/credential-provider-sso": "3.266.0", - "@aws-sdk/credential-provider-web-identity": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/shared-ini-file-loader": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.554.0.tgz", + "integrity": "sha512-BQenhg43S6TMJHxrdjDVdVF+HH5tA1op9ZYLyJrvV5nn7CCO4kyAkkOuSAv1NkL+RZsIkW0/vHTXwQOQw3cUsg==", + "dev": true, + "dependencies": { + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.554.0", + "@aws-sdk/credential-provider-web-identity": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.266.0.tgz", - "integrity": "sha512-x4KtMZFpNuh6jfrKWtOnwkRrVJj4dR7fAWD95xiUtykE4eD7YthTBOQPVtRcroxHNKo80gmcZnJf6ZdvHG0XCw==", - "dev": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.266.0", - "@aws-sdk/credential-provider-imds": "3.266.0", - "@aws-sdk/credential-provider-ini": "3.266.0", - "@aws-sdk/credential-provider-process": "3.266.0", - "@aws-sdk/credential-provider-sso": "3.266.0", - "@aws-sdk/credential-provider-web-identity": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/shared-ini-file-loader": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.554.0.tgz", + "integrity": "sha512-poX/+2OE3oxqp4f5MiaJh251p8l+bzcFwgcDBwz0e2rcpvMSYl9jw4AvGnCiG2bmf9yhNJdftBiS1A+KjxV0qA==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.554.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.554.0", + "@aws-sdk/credential-provider-web-identity": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.266.0.tgz", - "integrity": "sha512-x9MvMCAVUGr/7c2h6HbpDbEQSkdc2CH7snqdzl3fL6f3Q2HqhIG9rYWi9kAm4WIOIe2AuEIyzpOcGhwu+lyAqQ==", + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", + "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", "dev": true, "dependencies": { - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/shared-ini-file-loader": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.266.0.tgz", - "integrity": "sha512-48QjXHmL8etffasJa0ioQxLvFGJrD53cPC8PbiUCcsbhmEg7TEGIRDdir7h+RzEup+9s1kJhdwCsi1k2jkyXMg==", + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.554.0.tgz", + "integrity": "sha512-8QPpwBA31i/fZ7lDZJC4FA9EdxLg5SJ8sPB2qLSjp5UTGTYL2HRl0Eznkb7DXyp/wImsR/HFR1NxuFCCVotLCg==", "dev": true, "dependencies": { - "@aws-sdk/client-sso": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/shared-ini-file-loader": "3.266.0", - "@aws-sdk/token-providers": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sso": "3.554.0", + "@aws-sdk/token-providers": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.266.0.tgz", - "integrity": "sha512-EMcH+vt/WyWysHa2vwq2G3n73gRhyJ7fw3sh+3MhBtK5850bpLeSBz3iXvow3VKm8rbkn5IwZ2YdwG2OZgr66w==", + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.554.0.tgz", + "integrity": "sha512-HN54DzLjepw5ZWSF9ycGevhFTyg6pjLuLKy5Y8t/f1jFDComzYdGEDe0cdV9YO653W3+PQwZZGz09YVygGYBLg==", "dev": true, "dependencies": { - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.208.0.tgz", - "integrity": "sha512-MkrCvaZhTb1qZCjcDH73t5n43h0Kr0GS+30lpXZ9PAnHJZPqv+vhWFPK0ZsFe1XktbS0WOoDR4ED+lWm0Dw7Rg==", + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.535.0.tgz", + "integrity": "sha512-sPG2l00iVuporK9AmPWq4UBcJURs2RN+vKA8QLRQANmQS3WFHWHamvGltxCjK79izkeqri882V4XlFpZfWhemA==", "dev": true, "dependencies": { "mnemonist": "0.38.3", - "tslib": "^2.3.1" + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@aws-sdk/endpoint-cache/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.266.0.tgz", - "integrity": "sha512-qqW5G/AdanNdAtNtDripRvijzgVOhvZ6NLRjVuOwWp3C5WRAAzMdl2lew2Q2swUy4InHwDsNeYjdhn1+hIIjrg==", - "dev": true, - "dependencies": { - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/querystring-builder": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-base64": "3.208.0", - "tslib": "^2.3.1" - } - }, - "node_modules/@aws-sdk/fetch-http-handler/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/hash-node": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.266.0.tgz", - "integrity": "sha512-E0uXwLU0/lY1itKhS2wsDBaqysAryV/Suk6cXpyJWe13iktRJhMoVaD3SYEJD9jytXohXYgXCRly8tDYnxPwZQ==", + "node_modules/@aws-sdk/middleware-endpoint-discovery": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.535.0.tgz", + "integrity": "sha512-+EsqJB5A15RoTf0HxUdknF3hp+2WDg0HWc+QERUctzzYXy9l5LIQjmhQ96cWDyFttKmHE+4h6fjMZjJEeWOeYQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-buffer-from": "3.208.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@aws-sdk/endpoint-cache": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/hash-node/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/invalid-dependency": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.266.0.tgz", - "integrity": "sha512-q3LkPLTd3LXhFnym6jjtlZzhJK9U4WekCyhFYrD+bBlyQGW/wuimpKE0ovGIyxuIZ/oklreYai5u1uH5FzgFlA==", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", + "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/invalid-dependency/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/is-array-buffer": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", - "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", + "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/is-array-buffer/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-content-length": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.266.0.tgz", - "integrity": "sha512-sVsSJ00BBu5ttOOggNp9kRKPopz01g3+z4aZng8nH/ZLpNO0cNVJPqU0SOlwiWuYCQQBXJahMe/SpWLXuPPstA==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", + "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", "dev": true, "dependencies": { - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-content-length/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.266.0.tgz", - "integrity": "sha512-xAuLKmCjD8DYNIb9LVfnWG/16nqzoHEW+kxfecxeTaKGXb3eD+LoCbbE2l7pqBFC4uE+8ufrgexBBibHRnhotg==", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.540.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", + "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", "dev": true, "dependencies": { - "@aws-sdk/middleware-serde": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/signature-v4": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/url-parser": "3.266.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.266.0.tgz", - "integrity": "sha512-3YYU7aeHRL5pUgDAK8uV4NdnrbxXJtf3AzqCtCxxKGhaZEFu98413CWfTacuMX/I3ZarKxJpLSr1vIB2n63FXQ==", + "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", + "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", "dev": true, "dependencies": { - "@aws-sdk/config-resolver": "3.266.0", - "@aws-sdk/endpoint-cache": "3.208.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-config-provider": "^2.3.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/middleware-endpoint/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.266.0.tgz", - "integrity": "sha512-Rz5xkVkr7DW23QiZoXHUhqXIHhtqM364jjmIfmHCXeYsobXqLw9spU8n2DLzcltFqFKLOljzahu3RKjYe5IUSw==", + "node_modules/@aws-sdk/token-providers": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.554.0.tgz", + "integrity": "sha512-KMMQ5Cw0FUPL9H8g69Lp08xtzRo7r/MK+lBV6LznWBbCP/NwtZ8awVHaPy2P31z00cWtu9MYkUTviWPqJTaBvg==", "dev": true, "dependencies": { - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/client-sso-oidc": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/token-providers/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.266.0.tgz", - "integrity": "sha512-JiAvd0kKOmehdn2KBWxd7EobOVg5LCVZUtSKcwNdZiWhcxLw/z4Rn95J+Sk/e0GoHKETIkD5gRLWNNumjGgnvA==", + "node_modules/@aws-sdk/types": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", + "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-recursion-detection": { + "node_modules/@aws-sdk/util-dynamodb": { "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.266.0.tgz", - "integrity": "sha512-kaAQQmeTL0JNPtT6g83FksIwnJfgtRP05a8FAeiLQOdhkxs862HWK7vpFHlEgSrGi49LP27Du+msqTErXcwOMQ==", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.266.0.tgz", + "integrity": "sha512-ozlsMwXnfNTFXHFsD/+A9h1ZQNqJ4XTYTVqzpBYiHq4jfECge1UeGp06c3v1tVvszkAvV8TUrUE37eZNzTPl/g==", "dev": true, "dependencies": { - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/types": "3.266.0", "tslib": "^2.3.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { + "node_modules/@aws-sdk/util-dynamodb/node_modules/tslib": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", "dev": true }, - "node_modules/@aws-sdk/middleware-retry": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.266.0.tgz", - "integrity": "sha512-SxfRXOfuuvllgtTSAPX/43+PTb0Xf8BlAoVQDstW+GDC+IfaL4wcmOKS4ClwUdzGEGBb4E+wL8wdEaVej3T3lA==", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.540.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", + "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", "dev": true, "dependencies": { - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/service-error-classification": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-middleware": "3.266.0", - "@aws-sdk/util-retry": "3.266.0", - "tslib": "^2.3.1", - "uuid": "^8.3.2" + "@aws-sdk/types": "3.535.0", + "@smithy/types": "^2.12.0", + "@smithy/util-endpoints": "^1.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-retry/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.266.0.tgz", - "integrity": "sha512-8yETgfyfFHc1m4v8LEUpxF2kEzc6qokjC6vwPGx2FghmZ9JdhpVWNJZRzpNqecKCl+MpkGfRv07NLvyc9veqww==", + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", + "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", "dev": true, "dependencies": { - "@aws-sdk/middleware-signing": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/signature-v4": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-sts/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-serde": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.266.0.tgz", - "integrity": "sha512-UX7kFB5SmizNBcFIw6qNp/87dldx0VsDIZtTDpbeS05O3vsh7BEfByibOFPS5PlGqWjZt0T+FLcx/9Y4XSrSxA==", + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", + "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@aws-sdk/types": "3.535.0", + "@smithy/types": "^2.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/middleware-serde/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-signing": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.266.0.tgz", - "integrity": "sha512-PlpngmBB5P9oxEdYZRtCbHiP1ftDk/RIWLY2ewk02xK6lkzY8tlZ8wPGOmshj9C7b3SzPOASJLEbtDS86yXn/Q==", + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", + "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", "dev": true, "dependencies": { - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/signature-v4": "3.266.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-middleware": "3.266.0", - "tslib": "^2.3.1" + "@aws-sdk/types": "3.535.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/middleware-signing/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-stack": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.266.0.tgz", - "integrity": "sha512-v1BHaHu+o1MUYoozeHRJQBEbnQvFeOnxL8e1/uio19DdWqtOA2wv6eznTfsxXOORER1xZX38EjlcZGWbM41maA==", + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dev": true, "dependencies": { "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/middleware-stack/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.266.0.tgz", - "integrity": "sha512-ofnRkm+iMMl6NatDa0nqGIFRVEtS5lIKntS4htPVsJvI/lqWzlgn75L2YgzYgkpU2o4GWBMvjCjhnnZ3V32BQQ==", + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "dev": true, "dependencies": { - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@babel/compat-data": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", + "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==", "dev": true }, - "node_modules/@aws-sdk/node-config-provider": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.266.0.tgz", - "integrity": "sha512-myK9Dr/QNfijEZQFOFkQJ8NAyZVA8yBiZTA15+EMphap1ciVXRGSpE/8KzF/qEX5wY2WoDZuPUUfmPebC3+jUA==", + "node_modules/@babel/core": { + "version": "7.13.15", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", + "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", "dev": true, "dependencies": { - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/shared-ini-file-loader": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/node-config-provider/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/node-http-handler": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.266.0.tgz", - "integrity": "sha512-JLezkHEDWN7dN/mZEzA0La+iKRZqxOyqjYJNpFNTz4ZiR0XlV5zhihHBkgatE0/hL1xVCV+ljSiyMGP//4DkjQ==", - "dev": true, - "dependencies": { - "@aws-sdk/abort-controller": "3.266.0", - "@aws-sdk/protocol-http": "3.266.0", - "@aws-sdk/querystring-builder": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/code-frame": "^7.12.13", + "@babel/generator": "^7.13.9", + "@babel/helper-compilation-targets": "^7.13.13", + "@babel/helper-module-transforms": "^7.13.14", + "@babel/helpers": "^7.13.10", + "@babel/parser": "^7.13.15", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.15", + "@babel/types": "^7.13.14", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@aws-sdk/node-http-handler/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/property-provider": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.266.0.tgz", - "integrity": "sha512-/M0HpUNkAUJF9wEKsWyJ/w2ZXwSwRByZ1IGkDluPoCweDmhbSp2n9WC8S/IyPktGlesEjQbfuLCvgjgiEfGPkg==", + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/@aws-sdk/property-provider/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/protocol-http": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.266.0.tgz", - "integrity": "sha512-bg59CcRVgqKlrwDBdxy3NFmi30P61nUqZlAHaEtdxoj/oVHNaUKMDGl/YEM8O1UB2r0KO4KJdEu5tvAcChYk+A==", + "node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/protocol-http/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/querystring-builder": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.266.0.tgz", - "integrity": "sha512-dor4slaD1ohUiGZxouK4Nu5LmRwspJg6JhOwKfaUMUR3oJnVnBBv5k/84UHjsmC6mJDWu4fEsfUd8rVg2HpYxA==", + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@aws-sdk/querystring-builder/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/querystring-parser": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.266.0.tgz", - "integrity": "sha512-XECB7T7xNoFOfyqgitQPwjLDGn4Y9M5pnPVwdKs3UiZGvX0KSBxtWMNRo5Sv4QyIOm0DQYQimER1DiKxbrpvZA==", + "node_modules/@babel/helper-compilation-targets": { + "version": "7.13.13", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", + "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/compat-data": "^7.13.12", + "@babel/helper-validator-option": "^7.12.17", + "browserslist": "^4.14.5", + "semver": "^6.3.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@aws-sdk/querystring-parser/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/@aws-sdk/service-error-classification": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.266.0.tgz", - "integrity": "sha512-Yq9NVRkVaVzNsQsWZ6gwkfmyuPM6CBxBeWkjvcE0B4TiD8DDjFZIjGoUrUpGgraCA4W7WHeTwOFghzSK+BcYVA==", + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.266.0.tgz", - "integrity": "sha512-8S/7I6FjQczulFha2ebpBfUcbg3G/NDp+fByTz9DWqY9EI4VsvCJsScYexSc9t89F0ny9zyyspfESzfzdy2PRw==", + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/shared-ini-file-loader/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/signature-v4": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.266.0.tgz", - "integrity": "sha512-TvDhA3yVTKLBgHNtKNY31m7O5HRSSQrk0OjVVt6mkEjAuXjSC4TDno+l/kOfpFco+gV1WiFt0cqrLAM6h9CL8A==", + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.266.0", - "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.266.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/signature-v4/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/smithy-client": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.266.0.tgz", - "integrity": "sha512-FCv4cIt/uDFe2E24mgnL4PlnQcnkIj1v7H/jS6amRoZAkrDai6DcvnUQJ6TsyRTjKY56K1Xq/ev7vcXe+bcVJA==", + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", + "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", "dev": true, "dependencies": { - "@aws-sdk/middleware-stack": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@babel/types": "^7.13.12" } }, - "node_modules/@aws-sdk/smithy-client/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.266.0.tgz", - "integrity": "sha512-NnWqT03u8STssKnKkGtHUSFDUBgv/VF+h4rwvyY5NKO9FMReN0v90XE/Bb2Oa3pzx6C5AG89kGmAvy+0VRn+Rg==", + "node_modules/@babel/helper-module-imports": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", + "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", "dev": true, "dependencies": { - "@aws-sdk/client-sso-oidc": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/shared-ini-file-loader": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@babel/types": "^7.13.12" } }, - "node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/types": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.266.0.tgz", - "integrity": "sha512-DGOnzUKM9gE1xRyzNKe9S0hOMHT1C1CEuTJ8MgPQjXj5UgndAIItU+9kkfeZTLSbp3rDHeNZ8EP9/oS9kC+q8Q==", + "node_modules/@babel/helper-module-transforms": { + "version": "7.13.14", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", + "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", "dev": true, "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@babel/helper-module-imports": "^7.13.12", + "@babel/helper-replace-supers": "^7.13.12", + "@babel/helper-simple-access": "^7.13.12", + "@babel/helper-split-export-declaration": "^7.12.13", + "@babel/helper-validator-identifier": "^7.12.11", + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.13", + "@babel/types": "^7.13.14" } }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/url-parser": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.266.0.tgz", - "integrity": "sha512-KeXkGDNBlNGdrXKu9mKE018GvgtJg5aH3mliXvPnO3jXlhpbgu7G+PJoykAJiw41fcIwWC/lX6JDMkmIgvElwQ==", + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", + "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", "dev": true, "dependencies": { - "@aws-sdk/querystring-parser": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/types": "^7.12.13" } }, - "node_modules/@aws-sdk/url-parser/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@babel/helper-plugin-utils": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", + "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", "dev": true }, - "node_modules/@aws-sdk/util-base64": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", - "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", + "node_modules/@babel/helper-replace-supers": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", + "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", "dev": true, "dependencies": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@babel/helper-member-expression-to-functions": "^7.13.12", + "@babel/helper-optimise-call-expression": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.12" } }, - "node_modules/@aws-sdk/util-base64/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.188.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", - "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", + "node_modules/@babel/helper-simple-access": { + "version": "7.13.12", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", + "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/types": "^7.13.12" } }, - "node_modules/@aws-sdk/util-body-length-browser/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-body-length-node": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", - "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/types": "^7.22.5" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/util-body-length-node/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@aws-sdk/util-buffer-from": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", - "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, - "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "tslib": "^2.3.1" - }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/util-buffer-from/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "node_modules/@babel/helper-validator-option": { + "version": "7.12.17", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", + "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", "dev": true }, - "node_modules/@aws-sdk/util-config-provider": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", - "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", + "node_modules/@babel/helpers": { + "version": "7.13.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", + "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", "dev": true, "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@babel/template": "^7.12.13", + "@babel/traverse": "^7.13.0", + "@babel/types": "^7.13.0" } }, - "node_modules/@aws-sdk/util-config-provider/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.266.0.tgz", - "integrity": "sha512-DzjU4TZyrvQBZfwdBBXTH5+SjeHWSrCplOOt6zXKtu8rt5GntVS4Oyx0DTz1JGCAqesicQpZ9jTQ6YKp7EOntw==", + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "dev": true, "dependencies": { - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/types": "3.266.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.266.0.tgz", - "integrity": "sha512-hyxPm84YuHPxze7jHnYaLBGVcmdE6V9irlXUe3V/JgYYCnGdwMob+TNwkdWVp4DGW/8b41FxlBDvRZPBKCvTpQ==", + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "dev": true, - "dependencies": { - "@aws-sdk/config-resolver": "3.266.0", - "@aws-sdk/credential-provider-imds": "3.266.0", - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/property-provider": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">= 10.0.0" + "node": ">=6.0.0" } }, - "node_modules/@aws-sdk/util-defaults-mode-node/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.266.0.tgz", - "integrity": "sha512-ozlsMwXnfNTFXHFsD/+A9h1ZQNqJ4XTYTVqzpBYiHq4jfECge1UeGp06c3v1tVvszkAvV8TUrUE37eZNzTPl/g==", + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-dynamodb/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.266.0.tgz", - "integrity": "sha512-G75mBFyEoO9+fnx2BawcmdnRyBkE2mIyDl560cgxH3HiicmgED71QNQ+qWxxmFx+G4bnZOft+2l9BfIf+i9wcA==", + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", - "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.12.13" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-hex-encoding/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.208.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", - "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-middleware": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.266.0.tgz", - "integrity": "sha512-q5dWY20Euh9vCXCuTNbcKXLNhW6dXBHxYAHR+csP2OFNLLB4wiJaeMYr9iwcB0YXcfnpQbXznSF0PLbPPZgCmw==", + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-middleware/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-retry": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.266.0.tgz", - "integrity": "sha512-+HcMcJ8y9O3Jsq0I3Zqh9/cqMey3RM4j+M6hzAsFBOwjbBvWV4EfXb5g+NODJzyLxrBIHAesZyyQAiCipvbAlA==", + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", "dev": true, "dependencies": { - "@aws-sdk/service-error-classification": "3.266.0", - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.10.4" }, - "engines": { - "node": ">= 14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-retry/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-uri-escape": { - "version": "3.201.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", - "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-uri-escape/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.266.0.tgz", - "integrity": "sha512-pMJ4C5lzDEVJ0kZoZdV1ww4hn9s15cExaPcRgUqjCwzNxYo9E1Jc6wCC533sYNZF1aSkY9NDLyJmv/lP7FvF4A==", + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, "dependencies": { - "@aws-sdk/types": "3.266.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.266.0.tgz", - "integrity": "sha512-CNpJsxvEplAP3XLwUmr7iJ428pCH2aFQIFLjXFjcAaB2IbgG1/801hdzdmeBH+1LSYVJ5qd3R+HeaZhxMDo62A==", + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, "dependencies": { - "@aws-sdk/node-config-provider": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" + "@babel/helper-plugin-utils": "^7.8.0" }, "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-utf8": { - "version": "3.254.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz", - "integrity": "sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==", + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", "dev": true, "dependencies": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" }, - "engines": { - "node": ">=14.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-utf8/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", + "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } }, - "node_modules/@aws-sdk/util-waiter": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.266.0.tgz", - "integrity": "sha512-le+ekM2U/MyQ81e9aZHfhj2XFsHxzmHdlvqFIkrSQ71Wt1/Fkv8DcVUEQy9IbO88sOzVGOsB8T7USU3zAVBGnQ==", + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "dependencies": { - "@aws-sdk/abort-controller": "3.266.0", - "@aws-sdk/types": "3.266.0", - "tslib": "^2.3.1" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=6.9.0" } }, - "node_modules/@aws-sdk/util-waiter/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } }, - "node_modules/@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.12.13" + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", - "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==", + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", "dev": true }, - "node_modules/@babel/core": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", - "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.15", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.14", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "watch": "cli.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "engines": { + "node": ">=0.1.95" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@commitlint/cli": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.4.tgz", + "integrity": "sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg==", "dev": true, + "dependencies": { + "@commitlint/format": "^12.1.4", + "@commitlint/lint": "^12.1.4", + "@commitlint/load": "^12.1.4", + "@commitlint/read": "^12.1.4", + "@commitlint/types": "^12.1.4", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^16.2.0" + }, "bin": { - "semver": "bin/semver.js" + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/ensure": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.4.tgz", + "integrity": "sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@commitlint/types": "^12.1.4", + "lodash": "^4.17.19" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", + "node_modules/@commitlint/cli/node_modules/@commitlint/execute-rule": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz", + "integrity": "sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg==", + "dev": true, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/cli/node_modules/@commitlint/format": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.4.tgz", + "integrity": "sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" + "@commitlint/types": "^12.1.4", + "chalk": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@commitlint/cli/node_modules/@commitlint/is-ignored": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz", + "integrity": "sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "@commitlint/types": "^12.1.4", + "semver": "7.3.5" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", + "node_modules/@commitlint/cli/node_modules/@commitlint/lint": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.4.tgz", + "integrity": "sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA==", "dev": true, "dependencies": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" + "@commitlint/is-ignored": "^12.1.4", + "@commitlint/parse": "^12.1.4", + "@commitlint/rules": "^12.1.4", + "@commitlint/types": "^12.1.4" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", + "node_modules/@commitlint/cli/node_modules/@commitlint/load": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.4.tgz", + "integrity": "sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@commitlint/execute-rule": "^12.1.4", + "@commitlint/resolve-extends": "^12.1.4", + "@commitlint/types": "^12.1.4", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/message": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.4.tgz", + "integrity": "sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA==", + "dev": true, + "engines": { + "node": ">=v10" + } + }, + "node_modules/@commitlint/cli/node_modules/@commitlint/parse": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.4.tgz", + "integrity": "sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@commitlint/types": "^12.1.4", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.0.0" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", + "node_modules/@commitlint/cli/node_modules/@commitlint/read": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.4.tgz", + "integrity": "sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "@commitlint/top-level": "^12.1.4", + "@commitlint/types": "^12.1.4", + "fs-extra": "^9.0.0", + "git-raw-commits": "^2.0.0" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", + "node_modules/@commitlint/cli/node_modules/@commitlint/resolve-extends": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz", + "integrity": "sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", + "node_modules/@commitlint/cli/node_modules/@commitlint/rules": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.4.tgz", + "integrity": "sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "@commitlint/ensure": "^12.1.4", + "@commitlint/message": "^12.1.4", + "@commitlint/to-lines": "^12.1.4", + "@commitlint/types": "^12.1.4" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "node_modules/@commitlint/cli/node_modules/@commitlint/to-lines": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.4.tgz", + "integrity": "sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw==", + "dev": true, + "engines": { + "node": ">=v10" + } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", + "node_modules/@commitlint/cli/node_modules/@commitlint/top-level": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.4.tgz", + "integrity": "sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", + "node_modules/@commitlint/cli/node_modules/@commitlint/types": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.4.tgz", + "integrity": "sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw==", "dev": true, "dependencies": { - "@babel/types": "^7.13.12" + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", + "node_modules/@commitlint/cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/types": "^7.12.13" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true + "node_modules/@commitlint/cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "node_modules/@commitlint/cli/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", + "node_modules/@commitlint/cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.15.tgz", - "integrity": "sha512-b9COtcAlVEQljy/9fbcMHpG+UIW9ReF+gpaxDHTlZd0c6/UU9ng8zdySAW9sRTzpvcdCHn6bUcbuYUgGzLAWVQ==", + "node_modules/@commitlint/cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@commitlint/cli/node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@commitlint/cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@commitlint/cli/node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@commitlint/cli/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/cli/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@commitlint/cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@commitlint/cli/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@commitlint/cli/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@commitlint/config-conventional": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.4.tgz", + "integrity": "sha512-ZIdzmdy4o4WyqywMEpprRCrehjCSQrHkaRTVZV411GyLigFQHlEBSJITAihLAWe88Qy/8SyoIe5uKvAsV5vRqQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "conventional-changelog-conventionalcommits": "^4.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v10" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@commitlint/config-validator": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", + "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@commitlint/types": "^17.4.4", + "ajv": "^8.11.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v14" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@commitlint/ensure": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz", + "integrity": "sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@commitlint/types": "^17.4.4", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v14" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@commitlint/execute-rule": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", + "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v14" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@commitlint/format": { + "version": "17.4.4", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", + "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@commitlint/types": "^17.4.4", + "chalk": "^4.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=v14" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@commitlint/format/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "color-convert": "^2.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", + "node_modules/@commitlint/format/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.15.tgz", - "integrity": "sha512-/mpZMNvj6bce59Qzl09fHEs8Bt8NnpEDQYleHUPZQ3wXUMvXi+HJPLars68oAbmp839fGoOkv2pSL2z9ajCIaQ==", + "node_modules/@commitlint/format/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@commitlint/format/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.15", - "@babel/types": "^7.13.14", - "debug": "^4.1.0", - "globals": "^11.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/@babel/types": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.14.tgz", - "integrity": "sha512-A2aa3QTkWoyqsZZFl56MLUsfmh7O0gN41IPvXAE/++8ojpbz12SszD7JEGYVdn4f9Kt4amIei07swF1h4AqmmQ==", + "node_modules/@commitlint/format/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@balena/dockerignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "node_modules/@commitlint/is-ignored": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.7.tgz", + "integrity": "sha512-vqyNRqtbq72P2JadaoWiuoLtXIs9SaAWDqdtef6G2zsoXqKFc7vqj1f+thzVgosXG3X/5K9jNp+iYijmvOfc/g==", "dev": true, "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" + "@commitlint/types": "^17.4.4", + "semver": "7.5.2" }, "engines": { - "node": ">=0.1.95" + "node": ">=v14" } }, - "node_modules/@commitlint/cli": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.4.tgz", - "integrity": "sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg==", + "node_modules/@commitlint/is-ignored/node_modules/semver": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", + "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", "dev": true, "dependencies": { - "@commitlint/format": "^12.1.4", - "@commitlint/lint": "^12.1.4", - "@commitlint/load": "^12.1.4", - "@commitlint/read": "^12.1.4", - "@commitlint/types": "^12.1.4", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^16.2.0" + "lru-cache": "^6.0.0" }, "bin": { - "commitlint": "cli.js" + "semver": "bin/semver.js" }, "engines": { - "node": ">=v10" + "node": ">=10" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/ensure": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.4.tgz", - "integrity": "sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw==", + "node_modules/@commitlint/lint": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.7.tgz", + "integrity": "sha512-TW+AozfuOFMrHn+jdwtz0IWu8REKFp0eryOvoBp2r8IXNc4KihKB1spAiUB6SFyHD6hVVeolz12aHnJ3Mb+xVQ==", "dev": true, "dependencies": { - "@commitlint/types": "^12.1.4", - "lodash": "^4.17.19" + "@commitlint/is-ignored": "^17.6.7", + "@commitlint/parse": "^17.6.7", + "@commitlint/rules": "^17.6.7", + "@commitlint/types": "^17.4.4" }, "engines": { - "node": ">=v10" + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/execute-rule": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz", - "integrity": "sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg==", + "node_modules/@commitlint/load": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.6.7.tgz", + "integrity": "sha512-QZ2rJTbX55BQdYrCm/p6+hh/pFBgC9nTJxfsrK6xRPe2thiQzHN0AQDBqBwAirn6gIkHrjIbCbtAE6kiDYLjrw==", "dev": true, + "dependencies": { + "@commitlint/config-validator": "^17.6.7", + "@commitlint/execute-rule": "^17.4.0", + "@commitlint/resolve-extends": "^17.6.7", + "@commitlint/types": "^17.4.4", + "@types/node": "*", + "chalk": "^4.1.0", + "cosmiconfig": "^8.0.0", + "cosmiconfig-typescript-loader": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0", + "resolve-from": "^5.0.0", + "ts-node": "^10.8.1", + "typescript": "^4.6.4 || ^5.0.0" + }, "engines": { - "node": ">=v10" + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/format": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.4.tgz", - "integrity": "sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g==", + "node_modules/@commitlint/load/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@commitlint/types": "^12.1.4", - "chalk": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=v10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/is-ignored": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz", - "integrity": "sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw==", + "node_modules/@commitlint/load/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@commitlint/types": "^12.1.4", - "semver": "7.3.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=v10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/lint": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.4.tgz", - "integrity": "sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA==", + "node_modules/@commitlint/load/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@commitlint/is-ignored": "^12.1.4", - "@commitlint/parse": "^12.1.4", - "@commitlint/rules": "^12.1.4", - "@commitlint/types": "^12.1.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">=v10" + "node": ">=7.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/load": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.4.tgz", - "integrity": "sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA==", + "node_modules/@commitlint/load/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@commitlint/load/node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "dependencies": { - "@commitlint/execute-rule": "^12.1.4", - "@commitlint/resolve-extends": "^12.1.4", - "@commitlint/types": "^12.1.4", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=v10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/message": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.4.tgz", - "integrity": "sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA==", + "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", + "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", "dev": true, "engines": { - "node": ">=v10" + "node": ">=v14.21.3" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "ts-node": ">=10", + "typescript": ">=4" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/parse": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.4.tgz", - "integrity": "sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw==", + "node_modules/@commitlint/load/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@commitlint/types": "^12.1.4", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.0.0" - }, "engines": { - "node": ">=v10" + "node": ">=8" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/read": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.4.tgz", - "integrity": "sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg==", + "node_modules/@commitlint/load/node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "@commitlint/top-level": "^12.1.4", - "@commitlint/types": "^12.1.4", - "fs-extra": "^9.0.0", - "git-raw-commits": "^2.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">=v10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/resolve-extends": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz", - "integrity": "sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg==", + "node_modules/@commitlint/load/node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" - }, "engines": { - "node": ">=v10" + "node": ">=4" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/rules": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.4.tgz", - "integrity": "sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg==", + "node_modules/@commitlint/load/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "@commitlint/ensure": "^12.1.4", - "@commitlint/message": "^12.1.4", - "@commitlint/to-lines": "^12.1.4", - "@commitlint/types": "^12.1.4" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=v10" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/to-lines": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.4.tgz", - "integrity": "sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw==", + "node_modules/@commitlint/load/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, "engines": { - "node": ">=v10" + "node": ">=8" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/top-level": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.4.tgz", - "integrity": "sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg==", + "node_modules/@commitlint/load/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "find-up": "^5.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=v10" + "node": ">=8" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/types": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.4.tgz", - "integrity": "sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw==", + "node_modules/@commitlint/load/node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true, - "dependencies": { - "chalk": "^4.0.0" + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=v10" + "node": ">=14.17" + } + }, + "node_modules/@commitlint/message": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", + "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", + "dev": true, + "engines": { + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@commitlint/parse": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.7.tgz", + "integrity": "sha512-ibO03BgEns+JJpohpBZYD49mCdSNMg6fTv7vA5yqzEFWkBQk5NWhEBw2yG+Z1UClStIRkMkAYyI2HzoQG9tCQQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@commitlint/types": "^17.4.4", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.2.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "node_modules/@commitlint/read": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", + "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@commitlint/top-level": "^17.4.0", + "@commitlint/types": "^17.4.4", + "fs-extra": "^11.0.0", + "git-raw-commits": "^2.0.11", + "minimist": "^1.2.6" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/@commitlint/read/node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", "dev": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" } }, - "node_modules/@commitlint/cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@commitlint/read/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "universalify": "^2.0.0" }, - "engines": { - "node": ">=7.0.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@commitlint/cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@commitlint/cli/node_modules/cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "node_modules/@commitlint/read/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, "engines": { - "node": ">=10" + "node": ">= 10.0.0" } }, - "node_modules/@commitlint/cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@commitlint/resolve-extends": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", + "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", "dev": true, + "dependencies": { + "@commitlint/config-validator": "^17.6.7", + "@commitlint/types": "^17.4.4", + "import-fresh": "^3.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/import-fresh": { + "node_modules/@commitlint/resolve-extends/node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", @@ -2226,7 +2302,7 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/cli/node_modules/import-fresh/node_modules/resolve-from": { + "node_modules/@commitlint/resolve-extends/node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", @@ -2235,7 +2311,7 @@ "node": ">=4" } }, - "node_modules/@commitlint/cli/node_modules/resolve-from": { + "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -2244,125 +2320,183 @@ "node": ">=8" } }, - "node_modules/@commitlint/cli/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@commitlint/rules": { + "version": "17.6.7", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.7.tgz", + "integrity": "sha512-x/SDwDTN3w3Gr5xkhrIORu96rlKCc8ZLYEMXRqi9+MB33st2mKcGvKa5uJuigHlbl3xm75bAAubATrodVrjguQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@commitlint/ensure": "^17.6.7", + "@commitlint/message": "^17.4.2", + "@commitlint/to-lines": "^17.4.0", + "@commitlint/types": "^17.4.4", + "execa": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=v14" } }, - "node_modules/@commitlint/cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@commitlint/rules/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@commitlint/cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/@commitlint/rules/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/@commitlint/cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "node_modules/@commitlint/rules/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/config-conventional": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.4.tgz", - "integrity": "sha512-ZIdzmdy4o4WyqywMEpprRCrehjCSQrHkaRTVZV411GyLigFQHlEBSJITAihLAWe88Qy/8SyoIe5uKvAsV5vRqQ==", + "node_modules/@commitlint/rules/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@commitlint/rules/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "path-key": "^3.0.0" }, "engines": { - "node": ">=v10" + "node": ">=8" } }, - "node_modules/@commitlint/config-validator": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", - "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", + "node_modules/@commitlint/rules/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/rules/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", - "ajv": "^8.11.0" + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/rules/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@commitlint/rules/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=v14" + "node": ">= 8" } }, - "node_modules/@commitlint/ensure": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz", - "integrity": "sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==", + "node_modules/@commitlint/to-lines": { + "version": "17.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", + "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", "dev": true, - "dependencies": { - "@commitlint/types": "^17.4.4", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" - }, "engines": { "node": ">=v14" } }, - "node_modules/@commitlint/execute-rule": { + "node_modules/@commitlint/top-level": { "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", - "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", + "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", "dev": true, + "dependencies": { + "find-up": "^5.0.0" + }, "engines": { "node": ">=v14" } }, - "node_modules/@commitlint/format": { + "node_modules/@commitlint/types": { "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", - "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", + "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", "chalk": "^4.1.0" }, "engines": { "node": ">=v14" } }, - "node_modules/@commitlint/format/node_modules/ansi-styles": { + "node_modules/@commitlint/types/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -2377,7 +2511,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@commitlint/format/node_modules/chalk": { + "node_modules/@commitlint/types/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", @@ -2393,7 +2527,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/format/node_modules/color-convert": { + "node_modules/@commitlint/types/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -2405,13 +2539,13 @@ "node": ">=7.0.0" } }, - "node_modules/@commitlint/format/node_modules/color-name": { + "node_modules/@commitlint/types/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@commitlint/format/node_modules/has-flag": { + "node_modules/@commitlint/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -2420,7 +2554,7 @@ "node": ">=8" } }, - "node_modules/@commitlint/format/node_modules/supports-color": { + "node_modules/@commitlint/types/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -2432,544 +2566,800 @@ "node": ">=8" } }, - "node_modules/@commitlint/is-ignored": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.7.tgz", - "integrity": "sha512-vqyNRqtbq72P2JadaoWiuoLtXIs9SaAWDqdtef6G2zsoXqKFc7vqj1f+thzVgosXG3X/5K9jNp+iYijmvOfc/g==", - "dev": true, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dependencies": { - "@commitlint/types": "^17.4.4", - "semver": "7.5.2" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { - "node": ">=v14" + "node": ">=12" } }, - "node_modules/@commitlint/is-ignored/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "node_modules/@hapi/accept": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@commitlint/lint": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.7.tgz", - "integrity": "sha512-TW+AozfuOFMrHn+jdwtz0IWu8REKFp0eryOvoBp2r8IXNc4KihKB1spAiUB6SFyHD6hVVeolz12aHnJ3Mb+xVQ==", + "node_modules/@hapi/ammo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", + "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", "dev": true, "dependencies": { - "@commitlint/is-ignored": "^17.6.7", - "@commitlint/parse": "^17.6.7", - "@commitlint/rules": "^17.6.7", - "@commitlint/types": "^17.4.4" - }, - "engines": { - "node": ">=v14" + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@commitlint/load": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.6.7.tgz", - "integrity": "sha512-QZ2rJTbX55BQdYrCm/p6+hh/pFBgC9nTJxfsrK6xRPe2thiQzHN0AQDBqBwAirn6gIkHrjIbCbtAE6kiDYLjrw==", + "node_modules/@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/execute-rule": "^17.4.0", - "@commitlint/resolve-extends": "^17.6.7", - "@commitlint/types": "^17.4.4", - "@types/node": "*", - "chalk": "^4.1.0", - "cosmiconfig": "^8.0.0", - "cosmiconfig-typescript-loader": "^4.0.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0", - "resolve-from": "^5.0.0", - "ts-node": "^10.8.1", - "typescript": "^4.6.4 || ^5.0.0" + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/call": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", + "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", + "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/catbox-memory": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", + "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/content": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", + "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.0" + } + }, + "node_modules/@hapi/cryptiles": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", + "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1" }, "engines": { - "node": ">=v14" + "node": ">=14.0.0" } }, - "node_modules/@commitlint/load/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@hapi/file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", + "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", + "dev": true + }, + "node_modules/@hapi/h2o2": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-10.0.4.tgz", + "integrity": "sha512-dvD8+Y/Okc0fh0blqaYCLIrcy0+1LqIhMr7hjk8elLQZ9mkw2hKFB9dFKuRfWf+1nvHpGlW+PwccqkdebynQbg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1", + "@hapi/wreck": "^18.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@commitlint/load/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@hapi/hapi": { + "version": "21.3.9", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.9.tgz", + "integrity": "sha512-AT5m+Rb8iSOFG3zWaiEuTJazf4HDYl5UpRpyxMJ3yR+g8tOEmqDv6FmXrLHShdvDOStAAepHGnr1G7egkFSRdw==", + "dev": true, + "dependencies": { + "@hapi/accept": "^6.0.1", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.1", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.1.1", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.1", + "@hapi/validate": "^2.0.1" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@hapi/heavy": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", + "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", "dev": true }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@hapi/iron": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", + "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/mimos": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", + "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" + } + }, + "node_modules/@hapi/mimos/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.6" + } + }, + "node_modules/@hapi/nigel": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", + "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@commitlint/load/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@hapi/pez": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", + "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", + "dev": true, + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" + } + }, + "node_modules/@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/shot": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/somever": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", + "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", + "dev": true, + "dependencies": { + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", + "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/subtext": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", + "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + } + }, + "node_modules/@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=14.0.0" } }, - "node_modules/@commitlint/load/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } }, - "node_modules/@commitlint/load/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", "dev": true, "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" } }, - "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", - "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", + "node_modules/@hapi/vise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", + "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", "dev": true, - "engines": { - "node": ">=v14.21.3" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "ts-node": ">=10", - "typescript": ">=4" + "dependencies": { + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@commitlint/load/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@hapi/wreck": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", + "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" } }, - "node_modules/@commitlint/load/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/@commitlint/load/node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/@commitlint/load/node_modules/js-yaml": { + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/@commitlint/load/node_modules/resolve-from": { + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@commitlint/load/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/load/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "dependencies": { + "p-limit": "^2.2.0" }, "engines": { - "node": ">=14.17" + "node": ">=8" } }, - "node_modules/@commitlint/message": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", - "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { - "node": ">=v14" + "node": ">=6" } }, - "node_modules/@commitlint/parse": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.7.tgz", - "integrity": "sha512-ibO03BgEns+JJpohpBZYD49mCdSNMg6fTv7vA5yqzEFWkBQk5NWhEBw2yG+Z1UClStIRkMkAYyI2HzoQG9tCQQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "@commitlint/types": "^17.4.4", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.2.2" - }, "engines": { - "node": ">=v14" + "node": ">=8" } }, - "node_modules/@commitlint/read": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", - "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "dependencies": { - "@commitlint/top-level": "^17.4.0", - "@commitlint/types": "^17.4.4", - "fs-extra": "^11.0.0", - "git-raw-commits": "^2.0.11", - "minimist": "^1.2.6" - }, "engines": { - "node": ">=v14" + "node": ">=8" } }, - "node_modules/@commitlint/read/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" }, "engines": { - "node": ">=14.14" + "node": ">= 10.14.2" } }, - "node_modules/@commitlint/read/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "color-convert": "^2.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@commitlint/read/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, "engines": { - "node": ">= 10.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", - "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/types": "^17.4.4", - "import-fresh": "^3.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=v14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/resolve-extends/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=7.0.0" } }, - "node_modules/@commitlint/resolve-extends/node_modules/import-fresh/node_modules/resolve-from": { + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@commitlint/rules": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.7.tgz", - "integrity": "sha512-x/SDwDTN3w3Gr5xkhrIORu96rlKCc8ZLYEMXRqi9+MB33st2mKcGvKa5uJuigHlbl3xm75bAAubATrodVrjguQ==", + "node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", "dev": true, "dependencies": { - "@commitlint/ensure": "^17.6.7", - "@commitlint/message": "^17.4.2", - "@commitlint/to-lines": "^17.4.0", - "@commitlint/types": "^17.4.4", - "execa": "^5.0.0" + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=v14" + "node": ">= 10.14.2" } }, - "node_modules/@commitlint/rules/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@commitlint/rules/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/@jest/core/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "fill-range": "^7.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=8" } }, - "node_modules/@commitlint/rules/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/rules/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=10.17.0" + "node": ">=7.0.0" } }, - "node_modules/@commitlint/rules/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@commitlint/rules/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/@commitlint/rules/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/@jest/core/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.12.0" } }, - "node_modules/@commitlint/rules/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/@jest/core/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/@commitlint/rules/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@commitlint/rules/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/@jest/core/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "is-number": "^7.0.0" }, - "bin": { - "node-which": "bin/node-which" + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" }, "engines": { - "node": ">= 8" + "node": ">= 10.14.2" } }, - "node_modules/@commitlint/to-lines": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", - "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, "engines": { - "node": ">=v14" + "node": ">= 10.14.2" } }, - "node_modules/@commitlint/top-level": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", - "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", + "node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", "dev": true, "dependencies": { - "find-up": "^5.0.0" + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" }, "engines": { - "node": ">=v14" + "node": ">= 10.14.2" } }, - "node_modules/@commitlint/types": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", - "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", + "node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", "dev": true, "dependencies": { - "chalk": "^4.1.0" + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" }, "engines": { - "node": ">=v14" + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" } }, - "node_modules/@commitlint/types/node_modules/ansi-styles": { + "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -2984,10 +3374,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -3000,7 +3390,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@commitlint/types/node_modules/color-convert": { + "node_modules/@jest/reporters/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -3012,13 +3402,13 @@ "node": ">=7.0.0" } }, - "node_modules/@commitlint/types/node_modules/color-name": { + "node_modules/@jest/reporters/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@commitlint/types/node_modules/has-flag": { + "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -3027,7 +3417,16 @@ "node": ">=8" } }, - "node_modules/@commitlint/types/node_modules/supports-color": { + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -3039,520 +3438,249 @@ "node": ">=8" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@hapi/accept": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-3.2.4.tgz", - "integrity": "sha512-soThGB+QMgfxlh0Vzhzlf3ZOEOPk5biEwcOXhkF0Eedqx8VnhGiggL9UYHrIsOb1rUg3Be3K8kp0iDL2wbVSOQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/address": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", - "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", - "deprecated": "Moved to 'npm install @sideway/address'", - "dev": true - }, - "node_modules/@hapi/ammo": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-3.1.2.tgz", - "integrity": "sha512-ej9OtFmiZv1qr45g1bxEZNGyaR4jRpyMxU6VhbxjaYThymvOwsyIsUKMZnP5Qw2tfYFuwqCJuIBHGpeIbdX9gQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/b64": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-4.2.1.tgz", - "integrity": "sha512-zqHpQuH5CBMw6hADzKfU/IGNrxq1Q+/wTYV+OiZRQN9F3tMyk+9BUMeBvFRMamduuqL8iSp62QAnJ+7ATiYLWA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/boom": { - "version": "7.4.11", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-7.4.11.tgz", - "integrity": "sha512-VSU/Cnj1DXouukYxxkes4nNJonCnlogHvIff1v1RVoN4xzkKhMXX+GRmb3NyH1iar10I9WFPDv2JPwfH3GaV0A==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/bounce": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-1.3.2.tgz", - "integrity": "sha512-3bnb1AlcEByFZnpDIidxQyw1Gds81z/1rSqlx4bIEE+wUN0ATj0D49B5cE1wGocy90Rp/de4tv7GjsKd5RQeew==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "^8.3.1" - } - }, - "node_modules/@hapi/bourne": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", - "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true - }, - "node_modules/@hapi/call": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-5.1.3.tgz", - "integrity": "sha512-5DfWpMk7qZiYhvBhM5oUiT4GQ/O8a2rFR121/PdwA/eZ2C1EsuD547ZggMKAR5bZ+FtxOf0fdM20zzcXzq2mZA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/catbox": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-10.2.3.tgz", - "integrity": "sha512-kN9hXO4NYyOHW09CXiuj5qW1syc/0XeVOBsNNk0Tz89wWNQE5h21WF+VsfAw3uFR8swn/Wj3YEVBnWqo82m/JQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/joi": "16.x.x", - "@hapi/podium": "3.x.x" - } - }, - "node_modules/@hapi/catbox-memory": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-4.1.1.tgz", - "integrity": "sha512-T6Hdy8DExzG0jY7C8yYWZB4XHfc0v+p1EGkwxl2HoaPYAmW7I3E59M/IvmSVpis8RPcIoBp41ZpO2aZPBpM2Ww==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/content": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@hapi/content/-/content-4.1.1.tgz", - "integrity": "sha512-3TWvmwpVPxFSF3KBjKZ8yDqIKKZZIm7VurDSweYpXYENZrJH3C1hd1+qEQW9wQaUaI76pPBLGrXl6I3B7i3ipA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x" - } - }, - "node_modules/@hapi/cryptiles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-4.2.1.tgz", - "integrity": "sha512-XoqgKsHK0l/VpqPs+tr6j6vE+VQ3+2bkF2stvttmc7xAOf1oSAwHcJ0tlp/6MxMysktt1IEY0Csy3khKaP9/uQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x" - } - }, - "node_modules/@hapi/file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@hapi/file/-/file-1.0.0.tgz", - "integrity": "sha512-Bsfp/+1Gyf70eGtnIgmScvrH8sSypO3TcK3Zf0QdHnzn/ACnAkI6KLtGACmNRPEzzIy+W7aJX5E+1fc9GwIABQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true - }, - "node_modules/@hapi/formula": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@hapi/formula/-/formula-1.2.0.tgz", - "integrity": "sha512-UFbtbGPjstz0eWHb+ga/GM3Z9EzqKXFWIbSOFURU0A/Gku0Bky4bCk9/h//K2Xr3IrCfjFNhMm4jyZ5dbCewGA==", - "deprecated": "Moved to 'npm install @sideway/formula'", - "dev": true - }, - "node_modules/@hapi/h2o2": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-8.3.2.tgz", - "integrity": "sha512-2WkZq+QAkvYHWGqnUuG0stcVeGyv9T7bopBYnCJSUEuvBZlUf2BTX2JCVSKxsnTLOxCYwoC/aI4Rr0ZSRd2oVg==", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/joi": "16.x.x", - "@hapi/wreck": "15.x.x" - } - }, - "node_modules/@hapi/hapi": { - "version": "18.4.1", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-18.4.1.tgz", - "integrity": "sha512-9HjVGa0Z4Qv9jk9AVoUdJMQLA+KuZ+liKWyEEkVBx3e3H1F0JM6aGbPkY9jRfwsITBWGBU2iXazn65SFKSi/tg==", - "deprecated": "This version contains severe security issues and defects and should not be used! Please upgrade to the latest version of @hapi/hapi or consider a commercial license (https://github.com/hapijs/hapi/issues/4114)", - "dev": true, - "dependencies": { - "@hapi/accept": "^3.2.4", - "@hapi/ammo": "^3.1.2", - "@hapi/boom": "7.x.x", - "@hapi/bounce": "1.x.x", - "@hapi/call": "^5.1.3", - "@hapi/catbox": "10.x.x", - "@hapi/catbox-memory": "4.x.x", - "@hapi/heavy": "6.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/joi": "15.x.x", - "@hapi/mimos": "4.x.x", - "@hapi/podium": "3.x.x", - "@hapi/shot": "4.x.x", - "@hapi/somever": "2.x.x", - "@hapi/statehood": "6.x.x", - "@hapi/subtext": "^6.1.3", - "@hapi/teamwork": "3.x.x", - "@hapi/topo": "3.x.x" - } - }, - "node_modules/@hapi/hapi/node_modules/@hapi/joi": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", - "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", - "deprecated": "Switch to 'npm install joi'", - "dev": true, - "dependencies": { - "@hapi/address": "2.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/topo": "3.x.x" - } - }, - "node_modules/@hapi/heavy": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-6.2.2.tgz", - "integrity": "sha512-PY1dCCO6dsze7RlafIRhTaGeyTgVe49A/lSkxbhKGjQ7x46o/OFf7hLiRqTCDh3atcEKf6362EaB3+kTUbCsVA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/joi": "16.x.x" - } - }, - "node_modules/@hapi/hoek": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", - "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true - }, - "node_modules/@hapi/iron": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-5.1.4.tgz", - "integrity": "sha512-+ElC+OCiwWLjlJBmm8ZEWjlfzTMQTdgPnU/TsoU5QsktspIWmWi9IU4kU83nH+X/SSya8TP8h8P11Wr5L7dkQQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/b64": "4.x.x", - "@hapi/boom": "7.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/cryptiles": "4.x.x", - "@hapi/hoek": "8.x.x" - } - }, - "node_modules/@hapi/joi": { - "version": "16.1.8", - "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-16.1.8.tgz", - "integrity": "sha512-wAsVvTPe+FwSrsAurNt5vkg3zo+TblvC5Bb1zMVK6SJzZqw9UrJnexxR+76cpePmtUZKHAPxcQ2Bf7oVHyahhg==", - "deprecated": "Switch to 'npm install joi'", - "dev": true, - "dependencies": { - "@hapi/address": "^2.1.2", - "@hapi/formula": "^1.2.0", - "@hapi/hoek": "^8.2.4", - "@hapi/pinpoint": "^1.0.2", - "@hapi/topo": "^3.1.3" - } - }, - "node_modules/@hapi/mimos": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-4.1.1.tgz", - "integrity": "sha512-CXoi/zfcTWfKYX756eEea8rXJRIb9sR4d7VwyAH9d3BkDyNgAesZxvqIdm55npQc6S9mU3FExinMAQVlIkz0eA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x", - "mime-db": "1.x.x" - } - }, - "node_modules/@hapi/nigel": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-3.1.1.tgz", - "integrity": "sha512-R9YWx4S8yu0gcCBrMUDCiEFm1SQT895dMlYoeNBp8I6YhF1BFF1iYPueKA2Kkp9BvyHdjmvrxCOns7GMmpl+Fw==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x", - "@hapi/vise": "3.x.x" - } - }, - "node_modules/@hapi/pez": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-4.1.2.tgz", - "integrity": "sha512-8zSdJ8cZrJLFldTgwjU9Fb1JebID+aBCrCsycgqKYe0OZtM2r3Yv3aAwW5z97VsZWCROC1Vx6Mdn4rujh5Ktcg==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/b64": "4.x.x", - "@hapi/boom": "7.x.x", - "@hapi/content": "^4.1.1", - "@hapi/hoek": "8.x.x", - "@hapi/nigel": "3.x.x" - } - }, - "node_modules/@hapi/pinpoint": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@hapi/pinpoint/-/pinpoint-1.0.2.tgz", - "integrity": "sha512-dtXC/WkZBfC5vxscazuiJ6iq4j9oNx1SHknmIr8hofarpKUZKmlUVYVIhNVzIEgK5Wrc4GMHL5lZtt1uS2flmQ==", - "deprecated": "Moved to 'npm install @sideway/pinpoint'", - "dev": true - }, - "node_modules/@hapi/podium": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-3.4.3.tgz", - "integrity": "sha512-QJlnYLEYZWlKQ9fSOtuUcpANyoVGwT68GA9P0iQQCAetBK0fI+nbRBt58+aMixoifczWZUthuGkNjqKxgPh/CQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x", - "@hapi/joi": "16.x.x" + "node": ">= 10.14.2" } }, - "node_modules/@hapi/shot": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-4.1.2.tgz", - "integrity": "sha512-6LeHLjvsq/bQ0R+fhEyr7mqExRGguNTrxFZf5DyKe3CK6pNabiGgYO4JVFaRrLZ3JyuhkS0fo8iiRE2Ql2oA/A==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/source-map/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "@hapi/hoek": "8.x.x", - "@hapi/joi": "16.x.x" + "engines": { + "node": ">=6" } }, - "node_modules/@hapi/somever": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-2.1.1.tgz", - "integrity": "sha512-cic5Sto4KGd9B0oQSdKTokju+rYhCbdpzbMb0EBnrH5Oc1z048hY8PaZ1lx2vBD7I/XIfTQVQetBH57fU51XRA==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/source-map/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "@hapi/bounce": "1.x.x", - "@hapi/hoek": "8.x.x" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@hapi/statehood": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-6.1.2.tgz", - "integrity": "sha512-pYXw1x6npz/UfmtcpUhuMvdK5kuOGTKcJNfLqdNptzietK2UZH5RzNJSlv5bDHeSmordFM3kGItcuQWX2lj2nQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", "dev": true, "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/bounce": "1.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/cryptiles": "4.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/iron": "5.x.x", - "@hapi/joi": "16.x.x" + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/@hapi/subtext": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-6.1.3.tgz", - "integrity": "sha512-qWN6NbiHNzohVcJMeAlpku/vzbyH4zIpnnMPMPioQMwIxbPFKeNViDCNI6fVBbMPBiw/xB4FjqiJkRG5P9eWWg==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", "dev": true, "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/content": "^4.1.1", - "@hapi/file": "1.x.x", - "@hapi/hoek": "8.x.x", - "@hapi/pez": "^4.1.2", - "@hapi/wreck": "15.x.x" + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/@hapi/teamwork": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-3.3.1.tgz", - "integrity": "sha512-61tiqWCYvMKP7fCTXy0M4VE6uNIwA0qvgFoiDubgfj7uqJ0fdHJFQNnVPGrxhLWlwz0uBPWrQlBH7r8y9vFITQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", - "dev": true - }, - "node_modules/@hapi/topo": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", - "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", "dev": true, "dependencies": { - "@hapi/hoek": "^8.3.0" + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" } }, - "node_modules/@hapi/vise": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-3.1.1.tgz", - "integrity": "sha512-OXarbiCSadvtg+bSdVPqu31Z1JoBL+FwNYz3cYoBKQ5xq1/Cr4A3IkGpAZbAuxU5y4NL5pZFZG3d2a3ZGm/dOQ==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@hapi/hoek": "8.x.x" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@hapi/wreck": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-15.1.0.tgz", - "integrity": "sha512-tQczYRTTeYBmvhsek/D49En/5khcShaBEmzrAaDjMrFXKJRuF8xA8+tlq1ETLBFwGd6Do6g2OC74rt11kzawzg==", - "deprecated": "This version has been deprecated and is no longer supported or maintained", + "node_modules/@jest/transform/node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "dependencies": { - "@hapi/boom": "7.x.x", - "@hapi/bourne": "1.x.x", - "@hapi/hoek": "8.x.x" + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@jest/transform/node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@jest/transform/node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/@jest/transform/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@jest/transform/node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=8" + "node": ">=8.0" } }, - "node_modules/@jest/console": { + "node_modules/@jest/types": { "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" }, "engines": { "node": ">= 10.14.2" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { + "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -3567,7 +3695,7 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/console/node_modules/chalk": { + "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", @@ -3583,7 +3711,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/console/node_modules/color-convert": { + "node_modules/@jest/types/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -3595,13 +3723,13 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/console/node_modules/color-name": { + "node_modules/@jest/types/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/console/node_modules/has-flag": { + "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -3610,7 +3738,7 @@ "node": ">=8" } }, - "node_modules/@jest/console/node_modules/supports-color": { + "node_modules/@jest/types/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -3622,258 +3750,282 @@ "node": ">=8" } }, - "node_modules/@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">= 10.14.2" + "node": ">=6.0.0" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jest/core/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "engines": { - "node": ">=8" + "node": ">=6.0.0" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6.0.0" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "debug": "^4.1.1" } }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", "dev": true }, - "node_modules/@jest/core/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@jest/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@jest/core/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 8" } }, - "node_modules/@jest/core/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/@serverless/dashboard-plugin": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.3.tgz", + "integrity": "sha512-iTZhpZbiVl6G2AyfgoqxemqqpG4pUceWys3GsyZtjimnfnGd2UFBOMVUMTavLhYia7lQc4kQVuXQ+afLlkg+pQ==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "@serverless/event-mocks": "^1.1.1", + "@serverless/platform-client": "^4.3.2", + "@serverless/utils": "^6.8.2", + "child-process-ext": "^2.1.1", + "chokidar": "^3.5.3", + "flat": "^5.0.2", + "fs-extra": "^9.1.0", + "js-yaml": "^4.1.0", + "jszip": "^3.10.1", + "lodash": "^4.17.21", + "memoizee": "^0.4.15", + "ncjsm": "^4.3.2", + "node-dir": "^0.1.17", + "node-fetch": "^2.6.8", + "open": "^7.4.2", + "semver": "^7.3.8", + "simple-git": "^3.16.0", + "type": "^2.7.2", + "uuid": "^8.3.2", + "yamljs": "^0.3.0" }, "engines": { - "node": ">=8.6" + "node": ">=12.0" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@serverless/dashboard-plugin/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@serverless/dashboard-plugin/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=8" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/core/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/@serverless/dashboard-plugin/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" }, "engines": { - "node": ">=8.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "node_modules/@serverless/dashboard-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 10.14.2" + "node": ">=10" } }, - "node_modules/@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "node_modules/@serverless/event-mocks": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@serverless/event-mocks/-/event-mocks-1.1.1.tgz", + "integrity": "sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" + "@types/lodash": "^4.14.123", + "lodash": "^4.17.11" } }, - "node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "node_modules/@serverless/platform-client": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@serverless/platform-client/-/platform-client-4.5.1.tgz", + "integrity": "sha512-XltmO/029X76zi0LUFmhsnanhE2wnqH1xf+WBt5K8gumQA9LnrfwLgPxj+VA+mm6wQhy+PCp7H5SS0ZPu7F2Cw==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "adm-zip": "^0.5.5", + "archiver": "^5.3.0", + "axios": "^1.6.2", + "fast-glob": "^3.2.7", + "https-proxy-agent": "^5.0.0", + "ignore": "^5.1.8", + "isomorphic-ws": "^4.0.1", + "js-yaml": "^3.14.1", + "jwt-decode": "^2.2.0", + "minimatch": "^3.0.4", + "querystring": "^0.2.1", + "run-parallel-limit": "^1.1.0", + "throat": "^5.0.0", + "traverse": "^0.6.6", + "ws": "^7.5.3" }, "engines": { - "node": ">= 10.14.2" + "node": ">=10.0" } }, - "node_modules/@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "node_modules/@serverless/platform-client/node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/@serverless/utils": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.15.0.tgz", + "integrity": "sha512-7eDbqKv/OBd11jjdZjUwFGN8sHWkeUqLeHXHQxQ1azja2IM7WIH+z/aLgzR6LhB3/MINNwtjesDpjGqTMj2JKQ==", + "dev": true, + "dependencies": { + "archive-type": "^4.0.0", + "chalk": "^4.1.2", + "ci-info": "^3.8.0", + "cli-progress-footer": "^2.3.2", + "content-disposition": "^0.5.4", + "d": "^1.0.1", + "decompress": "^4.2.1", + "event-emitter": "^0.3.5", + "ext": "^1.7.0", + "ext-name": "^5.0.0", + "file-type": "^16.5.4", + "filenamify": "^4.3.0", + "get-stream": "^6.0.1", + "got": "^11.8.6", + "inquirer": "^8.2.5", + "js-yaml": "^4.1.0", + "jwt-decode": "^3.1.2", + "lodash": "^4.17.21", + "log": "^6.3.1", + "log-node": "^8.0.3", + "make-dir": "^4.0.0", + "memoizee": "^0.4.15", + "ms": "^2.1.3", + "ncjsm": "^4.3.2", + "node-fetch": "^2.6.11", + "open": "^8.4.2", + "p-event": "^4.2.0", + "supports-color": "^8.1.1", + "timers-ext": "^0.1.7", + "type": "^2.7.2", + "uni-global": "^1.0.0", + "uuid": "^8.3.2", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "node-notifier": "^8.0.0" + "node": ">=12.0" } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { + "node_modules/@serverless/utils/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -3888,10 +4040,16 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@serverless/utils/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@serverless/utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -3904,7 +4062,34 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { + "node_modules/@serverless/utils/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@serverless/utils/node_modules/ci-info": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", + "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/@serverless/utils/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -3916,13 +4101,25 @@ "node": ">=7.0.0" } }, - "node_modules/@jest/reporters/node_modules/color-name": { + "node_modules/@serverless/utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@jest/reporters/node_modules/has-flag": { + "node_modules/@serverless/utils/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@serverless/utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -3931,845 +4128,1041 @@ "node": ">=8" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@serverless/utils/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@serverless/utils/node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true + }, + "node_modules/@serverless/utils/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "node_modules/@serverless/utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@serverless/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 10.14.2" + "node": ">=10" } }, - "node_modules/@jest/source-map/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/@serverless/utils/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@serverless/utils/node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "type-detect": "4.0.8" } }, - "node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", "dev": true, "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - }, - "engines": { - "node": ">= 10.14.2" + "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "node_modules/@sinonjs/formatio": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", + "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "@sinonjs/commons": "^1", + "@sinonjs/samsam": "^3.1.0" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@sinonjs/samsam": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", + "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@sinonjs/commons": "^1.3.0", + "array-from": "^2.1.1", + "lodash": "^4.17.15" } }, - "node_modules/@jest/transform/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true + }, + "node_modules/@smithy/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@smithy/abort-controller/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/config-resolver": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", + "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-config-provider": "^2.3.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@smithy/config-resolver/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", + "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@smithy/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@jest/transform/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/@smithy/credential-provider-imds": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", + "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@jest/transform/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/@smithy/eventstream-codec": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz", + "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==", "dev": true, - "engines": { - "node": ">=0.12.0" + "dependencies": { + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "tslib": "^2.6.2" } }, - "node_modules/@jest/transform/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/@smithy/eventstream-codec/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.2.0.tgz", + "integrity": "sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "@smithy/eventstream-serde-universal": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.6" + "node": ">=14.0.0" } }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.2.0.tgz", + "integrity": "sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@jest/transform/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.2.0.tgz", + "integrity": "sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "@smithy/eventstream-serde-universal": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.0" + "node": ">=14.0.0" } }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.2.0.tgz", + "integrity": "sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "@smithy/eventstream-codec": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=14.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", + "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "tslib": "^2.6.2" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/hash-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", + "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/types": "^2.12.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@smithy/hash-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", + "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@smithy/invalid-dependency/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@smithy/is-array-buffer/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/middleware-content-length": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", + "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } + "node_modules/@smithy/middleware-content-length/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "node_modules/@smithy/middleware-endpoint": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", + "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", "dev": true, "dependencies": { - "debug": "^4.1.1" + "@smithy/middleware-serde": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "node_modules/@smithy/middleware-retry": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", + "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", "dev": true, "dependencies": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/service-error-classification": "^2.1.5", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=4" + "node": ">=14.0.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@smithy/middleware-retry/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@smithy/middleware-serde": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", + "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", "dev": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@smithy/middleware-serde/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/middleware-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", + "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, - "node_modules/@serverless/dashboard-plugin": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.3.tgz", - "integrity": "sha512-iTZhpZbiVl6G2AyfgoqxemqqpG4pUceWys3GsyZtjimnfnGd2UFBOMVUMTavLhYia7lQc4kQVuXQ+afLlkg+pQ==", + "node_modules/@smithy/middleware-stack/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/node-config-provider": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", + "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", "dev": true, "dependencies": { - "@serverless/event-mocks": "^1.1.1", - "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.8.2", - "child-process-ext": "^2.1.1", - "chokidar": "^3.5.3", - "flat": "^5.0.2", - "fs-extra": "^9.1.0", - "js-yaml": "^4.1.0", - "jszip": "^3.10.1", - "lodash": "^4.17.21", - "memoizee": "^0.4.15", - "ncjsm": "^4.3.2", - "node-dir": "^0.1.17", - "node-fetch": "^2.6.8", - "open": "^7.4.2", - "semver": "^7.3.8", - "simple-git": "^3.16.0", - "type": "^2.7.2", - "uuid": "^8.3.2", - "yamljs": "^0.3.0" + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0" + "node": ">=14.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@smithy/node-config-provider/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@serverless/dashboard-plugin/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@smithy/node-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", + "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "@smithy/abort-controller": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "node_modules/@smithy/node-http-handler/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/property-provider": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", + "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", "dev": true, "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@smithy/property-provider/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/protocol-http": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", + "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/@serverless/event-mocks": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@serverless/event-mocks/-/event-mocks-1.1.1.tgz", - "integrity": "sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A==", + "node_modules/@smithy/protocol-http/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/querystring-builder": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", + "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", "dev": true, "dependencies": { - "@types/lodash": "^4.14.123", - "lodash": "^4.17.11" + "@smithy/types": "^2.12.0", + "@smithy/util-uri-escape": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@serverless/platform-client": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@serverless/platform-client/-/platform-client-4.3.2.tgz", - "integrity": "sha512-DAa5Z0JAZc6UfrTZLYwqoZxgAponZpFwaqd7WzzMA+loMCkYWyJNwxrAmV6cr2UUJpkko4toPZuJ3vM9Ie+NDA==", + "node_modules/@smithy/querystring-builder/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/querystring-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", + "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", "dev": true, "dependencies": { - "adm-zip": "^0.5.5", - "archiver": "^5.3.0", - "axios": "^0.21.1", - "fast-glob": "^3.2.7", - "https-proxy-agent": "^5.0.0", - "ignore": "^5.1.8", - "isomorphic-ws": "^4.0.1", - "js-yaml": "^3.14.1", - "jwt-decode": "^2.2.0", - "minimatch": "^3.0.4", - "querystring": "^0.2.1", - "run-parallel-limit": "^1.1.0", - "throat": "^5.0.0", - "traverse": "^0.6.6", - "ws": "^7.5.3" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" + "node": ">=14.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "node_modules/@smithy/querystring-parser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/service-error-classification": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", + "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", "dev": true, + "dependencies": { + "@smithy/types": "^2.12.0" + }, "engines": { - "node": ">=0.4.x" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.13.1.tgz", - "integrity": "sha512-yokWzlsIaAd3TWzNgIDz6l8HZmtYZs9caaLuheZ0IiZ/bDWSCLBWn84HKkdWZOmFnYxejyPNJEOwE59mtSR3Ow==", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", + "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", "dev": true, "dependencies": { - "archive-type": "^4.0.0", - "chalk": "^4.1.2", - "ci-info": "^3.8.0", - "cli-progress-footer": "^2.3.2", - "content-disposition": "^0.5.4", - "d": "^1.0.1", - "decompress": "^4.2.1", - "event-emitter": "^0.3.5", - "ext": "^1.7.0", - "ext-name": "^5.0.0", - "file-type": "^16.5.4", - "filenamify": "^4.3.0", - "get-stream": "^6.0.1", - "got": "^11.8.6", - "inquirer": "^8.2.5", - "js-yaml": "^4.1.0", - "jwt-decode": "^3.1.2", - "lodash": "^4.17.21", - "log": "^6.3.1", - "log-node": "^8.0.3", - "make-dir": "^4.0.0", - "memoizee": "^0.4.15", - "ms": "^2.1.3", - "ncjsm": "^4.3.2", - "node-fetch": "^2.6.11", - "open": "^8.4.2", - "p-event": "^4.2.0", - "supports-color": "^8.1.1", - "timers-ext": "^0.1.7", - "type": "^2.7.2", - "uni-global": "^1.0.0", - "uuid": "^8.3.2", - "write-file-atomic": "^4.0.2" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/signature-v4": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", + "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/is-array-buffer": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-uri-escape": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/@smithy/signature-v4/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@serverless/utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@smithy/smithy-client": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", + "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-stream": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@smithy/smithy-client/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "node_modules/@smithy/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/url-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", + "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" + "dependencies": { + "@smithy/querystring-parser": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/@serverless/utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@smithy/url-parser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-base64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", + "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/@smithy/util-base64/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@serverless/utils/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/@smithy/util-body-length-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", + "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-body-length-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", + "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@smithy/util-body-length-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@smithy/util-buffer-from/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-config-provider": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", + "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "node_modules/@smithy/util-config-provider/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@serverless/utils/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", + "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", "dev": true, "dependencies": { - "semver": "^7.5.3" + "@smithy/property-provider": "^2.2.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10.0.0" } }, - "node_modules/@serverless/utils/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@serverless/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", + "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@smithy/config-resolver": "^2.2.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">= 10.0.0" } }, - "node_modules/@serverless/utils/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-endpoints": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", + "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">= 14.0.0" } }, - "node_modules/@serverless/utils/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "node_modules/@smithy/util-endpoints/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", + "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "tslib": "^2.6.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.0.0" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-middleware": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", + "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", "dev": true, + "dependencies": { + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=14.0.0" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@smithy/util-middleware/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-retry": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", + "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@smithy/service-error-classification": "^2.1.5", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "node_modules/@smithy/util-retry/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", + "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", + "node_modules/@smithy/util-stream/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-uri-escape": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", + "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", + "node_modules/@smithy/util-uri-escape/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "node_modules/@smithy/util-utf8/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/@smithy/util-waiter": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.2.0.tgz", + "integrity": "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==", "dev": true, "dependencies": { - "defer-to-connect": "^1.0.1" + "@smithy/abort-controller": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" + "node": ">=14.0.0" } }, + "node_modules/@smithy/util-waiter/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/@tokenizer/token": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", @@ -4809,6 +5202,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.1.0.tgz", "integrity": "sha512-baFOhanb/hxmcOd1Uey2TfFg43kTSmM6py1Eo7Rjbv/ivcl7PXLhY0QgXGf50Hx/eskGCFqPfhs/7IZLb15C5g==", + "dev": true, "dependencies": { "@types/glob": "*" } @@ -4912,6 +5306,7 @@ "version": "3.2.3", "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.2.3.tgz", "integrity": "sha512-nZRhpSxm3PYianRBcRExcHxDvEzYHUPfGCnRL5Fe4/fSEZbtxrRNJ7okzCans3lXxj2t298EynFHGTnTC2f1Iw==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -4919,7 +5314,8 @@ "node_modules/@types/dockerode/node_modules/@types/node": { "version": "14.14.37", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", + "dev": true }, "node_modules/@types/express": { "version": "4.17.12", @@ -4946,6 +5342,7 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, "dependencies": { "@types/minimatch": "*", "@types/node": "*" @@ -4954,7 +5351,8 @@ "node_modules/@types/glob/node_modules/@types/node": { "version": "14.14.37", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", + "dev": true }, "node_modules/@types/graceful-fs": { "version": "4.1.5", @@ -5191,7 +5589,8 @@ "node_modules/@types/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==" + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "dev": true }, "node_modules/@types/minimist": { "version": "1.2.1", @@ -5219,9 +5618,9 @@ "dev": true }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "node_modules/@types/pg": { @@ -5296,9 +5695,9 @@ } }, "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, "node_modules/@types/serve-static": { @@ -5320,6 +5719,7 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz", "integrity": "sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA==", + "dev": true, "dependencies": { "@types/node": "*" } @@ -5327,7 +5727,8 @@ "node_modules/@types/ssh2-streams/node_modules/@types/node": { "version": "14.14.37", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==" + "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", + "dev": true }, "node_modules/@types/stack-utils": { "version": "2.0.0", @@ -5475,62 +5876,12 @@ } }, "node_modules/ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "dependencies": { - "string-width": "^3.0.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "string-width": "^4.1.0" } }, "node_modules/ansi-escapes": { @@ -5584,7 +5935,8 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true }, "node_modules/anymatch": { "version": "2.0.0", @@ -5642,6 +5994,7 @@ "version": "5.3.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", + "dev": true, "dependencies": { "archiver-utils": "^2.1.0", "async": "^3.2.3", @@ -5659,6 +6012,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "dev": true, "dependencies": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", @@ -5679,6 +6033,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -5692,12 +6047,14 @@ "node_modules/archiver-utils/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/archiver/node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true }, "node_modules/arg": { "version": "4.1.3", @@ -5751,6 +6108,15 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, + "node_modules/array-unflat-js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/array-unflat-js/-/array-unflat-js-0.1.3.tgz", + "integrity": "sha512-8pljkLj4vfz2i7Tf3yB31tRrszjP8/kwIyABGfcZ1GcHlvdUB0Sbx0WzQkOPMqUBxa/bu4+/NAyHEpDtZJzlJw==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -5760,15 +6126,6 @@ "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", @@ -5791,6 +6148,7 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, "dependencies": { "safer-buffer": "~2.1.0" } @@ -6028,12 +6386,28 @@ } }, "node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, "node_modules/babel-jest": { @@ -6201,7 +6575,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base": { "version": "0.11.2", @@ -6294,6 +6669,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, "dependencies": { "tweetnacl": "^0.14.3" } @@ -6311,6 +6687,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -6321,6 +6698,7 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -6353,113 +6731,147 @@ "dev": true }, "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", "dev": true, "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "engines": { + "node": ">=14.16" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, "engines": { - "node": ">=7.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6578,16 +6990,11 @@ "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "dev": true, "engines": { "node": "*" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=", - "dev": true - }, "node_modules/buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -6604,6 +7011,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", + "dev": true, "optional": true, "engines": { "node": ">=10.0.0" @@ -6631,6 +7039,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -6664,48 +7073,6 @@ "node": ">=10.6.0" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cachedir": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", @@ -6727,12 +7094,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "dev": true - }, "node_modules/caller-callsite": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", @@ -6977,7 +7338,8 @@ "node_modules/chownr": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, "node_modules/ci-info": { "version": "2.0.0", @@ -7019,12 +7381,12 @@ } }, "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7428,6 +7790,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", + "dev": true, "dependencies": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.1", @@ -7441,24 +7804,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", - "dev": true, - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true }, "node_modules/content-disposition": { "version": "0.5.4", @@ -7570,7 +7917,8 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true }, "node_modules/cosmiconfig": { "version": "5.2.1", @@ -7604,6 +7952,7 @@ "version": "0.0.4", "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "dev": true, "hasInstallScript": true, "optional": true, "dependencies": { @@ -7618,12 +7967,14 @@ "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, "optional": true }, "node_modules/crc-32": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dev": true, "dependencies": { "exit-on-epipe": "~1.0.1", "printj": "~1.1.0" @@ -7639,6 +7990,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "dev": true, "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -7653,16 +8005,15 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" }, "node_modules/cron-parser": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-2.18.0.tgz", - "integrity": "sha512-s4odpheTyydAbTBQepsqd2rNWGa2iV3cyo8g7zbI2QQYGLVsfbhmwukayS1XHppe02Oy1fg7mg6xoaraVJeEcg==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, "dependencies": { - "is-nan": "^1.3.0", - "moment-timezone": "^0.5.31" + "luxon": "^3.2.1" }, "engines": { - "node": ">=0.8" + "node": ">=12.0.0" } }, "node_modules/cross-env": { @@ -7758,15 +8109,6 @@ "node": ">=4.8" } }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -7791,13 +8133,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/cuid": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/cuid/-/cuid-2.1.8.tgz", - "integrity": "sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==", - "deprecated": "Cuid and other k-sortable and non-cryptographic ids (Ulid, ObjectId, KSUID, all UUIDs) are all insecure. Use @paralleldrive/cuid2 instead.", - "dev": true - }, "node_modules/cycle": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", @@ -7867,6 +8202,7 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -7944,18 +8280,6 @@ "node": ">=4" } }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/decompress-tar": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", @@ -8134,15 +8458,6 @@ "node": ">=4" } }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -8170,12 +8485,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, "node_modules/deferred": { "version": "0.7.11", "resolved": "https://registry.npmjs.org/deferred/-/deferred-0.7.11.tgz", @@ -8198,18 +8507,6 @@ "node": ">=8" } }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", @@ -8271,13 +8568,19 @@ } }, "node_modules/denque": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-1.5.0.tgz", - "integrity": "sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", "engines": { "node": ">=0.10" } }, + "node_modules/desm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/desm/-/desm-1.3.1.tgz", + "integrity": "sha512-vgTAOosB1aHrmzjGnzFCbjvXbk8QAOC/36JxJhcBkeAuUy8QwRFxAWBHemiDpUB3cbrBruFUdzpUS21aocvaWg==", + "dev": true + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -8320,6 +8623,7 @@ "version": "0.23.6", "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.6.tgz", "integrity": "sha512-y3Q8MkwG862rNqkvEQG59/7Fi2/fzs3NYDCvqUAAD+z0WGs2qcJ9hRcn34hWgWv9ouPkFqe3Vwca0h+4bIIRWw==", + "dev": true, "engines": { "node": ">= 6.0.0" } @@ -8328,6 +8632,7 @@ "version": "3.3.4", "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.4.tgz", "integrity": "sha512-3EUwuXnCU+RUlQEheDjmBE0B7q66PV9Rw5NiH1sXwINq0M9c5ERP9fxgkw36ZHOtzf4AGEEYySnkx/sACC9EgQ==", + "dev": true, "dependencies": { "@balena/dockerignore": "^1.0.2", "docker-modem": "^3.0.0", @@ -8341,6 +8646,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.6.tgz", "integrity": "sha512-h0Ow21gclbYsZ3mkHDfsYNDqtRhXS8fXr51bU0qr1dxgTMJj0XufbzX+jhNOvA8KuEEzn6JbvLVhXyv+fny9Uw==", + "dev": true, "dependencies": { "debug": "^4.1.1", "readable-stream": "^3.5.0", @@ -8355,12 +8661,14 @@ "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, "optional": true }, "node_modules/dockerode/node_modules/ssh2": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "dev": true, "hasInstallScript": true, "dependencies": { "asn1": "^0.2.4", @@ -8378,6 +8686,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -8454,12 +8763,6 @@ "integrity": "sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ==", "dev": true }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, "node_modules/duration": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", @@ -8470,14 +8773,11 @@ "es5-ext": "~0.10.46" } }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, "node_modules/electron-to-chromium": { "version": "1.3.749", @@ -8515,6 +8815,7 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, "dependencies": { "once": "^1.4.0" } @@ -8528,63 +8829,32 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/es-abstract": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0.tgz", - "integrity": "sha512-LJzK7MrQa8TS0ja2w3YNLzUgJCGPdPOV1yVvezjNnS89D+VR08+Szt2mz3YB2Dck/+w5tfIq/RoUAFqJJGM2yw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "is-callable": "^1.2.3", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.2", - "is-string": "^1.0.5", - "object-inspect": "^1.9.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10" } }, - "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "node_modules/es5-ext/node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "next-tick": "^1.1.0" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, "engines": { "node": ">=0.10" @@ -8649,15 +8919,6 @@ "node": ">=6" } }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -8758,12 +9019,6 @@ "es5-ext": "~0.10.14" } }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, "node_modules/events": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", @@ -8809,6 +9064,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true, "engines": { "node": ">=0.8" } @@ -9199,19 +9455,25 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", - "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", "dev": true, + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } }, "node_modules/fastest-levenshtein": { @@ -9383,9 +9645,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "dev": true, "funding": [ { @@ -9458,7 +9720,8 @@ "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true }, "node_modules/fs-extra": { "version": "9.1.0", @@ -9523,7 +9786,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true }, "node_modules/fs2": { "version": "0.3.9", @@ -9614,6 +9878,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true, "engines": { "node": ">=8" }, @@ -9683,6 +9948,7 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -9692,62 +9958,10 @@ "path-is-absolute": "^1.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dev": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-parent/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "node_modules/global-dirs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", - "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", - "dev": true, - "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "engines": { - "node": ">=10" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { @@ -10030,15 +10244,6 @@ "node": ">= 0.4.0" } }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -10112,15 +10317,6 @@ "node": ">=0.10.0" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -10316,9 +10512,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -10359,15 +10555,6 @@ "node": ">=4" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", @@ -10479,6 +10666,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -10636,15 +10824,6 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, - "node_modules/is-bigint": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.1.tgz", - "integrity": "sha512-J0ELF4yHFxHy0cmSxZuheDOz2luOdVvqjwmEcj8H/L1JHeuEDSDbeRP+Dk9kFVk5RTFzbucJ2Kb9F7ixY2QaCg==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", @@ -10657,21 +10836,6 @@ "node": ">=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.0.tgz", - "integrity": "sha512-a7Uprx8UtD+HWdyYwnD1+ExtTgqQtD2k/1yJgtXP6wnMm8byhkoTZRl+95LLThpzNZJ5aEvi46cdH+ayMFRwmA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", @@ -10737,18 +10901,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", @@ -10858,17 +11010,34 @@ "node": ">=0.10.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10883,47 +11052,19 @@ "node": ">=8" } }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", "dev": true }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10941,18 +11082,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-number-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.4.tgz", - "integrity": "sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number/node_modules/kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -10974,15 +11103,6 @@ "node": ">=8" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -11021,22 +11141,6 @@ "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" }, - "node_modules/is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -11046,33 +11150,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-text-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", @@ -11142,12 +11219,6 @@ "node": ">=8" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -12910,6 +12981,15 @@ "node": ">=6" } }, + "node_modules/jest-serial-runner": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-serial-runner/-/jest-serial-runner-1.2.1.tgz", + "integrity": "sha512-d59fF+7HdjNvQEL7B4WyFE+f8q5tGzlNUqtOnxTrT1ofun7O6/Lgm/j255BBgCY2fmSue/34M7Xy9+VWRByP0Q==", + "dev": true, + "peerDependencies": { + "jest-runner": "24.x - 29.x" + } + }, "node_modules/jest-serializer": { "version": "26.6.2", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", @@ -13655,6 +13735,15 @@ "node": ">= 0.6.0" } }, + "node_modules/jose": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.2.4.tgz", + "integrity": "sha512-6ScbIk2WWCeXkmzF6bRPmEuaqy1m8SbsRFMa/FLrSCkGIhj8OLVG/IH+XHVmNMx/KUo8cVWEE6oKR4dJ+S0Rkg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-string-escape": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/js-string-escape/-/js-string-escape-1.0.1.tgz", @@ -13754,12 +13843,6 @@ "node": ">=4" } }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=", - "dev": true - }, "node_modules/json-colorizer": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-2.2.2.tgz", @@ -13859,18 +13942,22 @@ ] }, "node_modules/jsonpath-plus": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-5.0.7.tgz", - "integrity": "sha512-7TS6wsiw1s2UMK/A6nA4n0aUJuirCVhJ87nWX5je5MPOl0z5VTr2qs7nMP8NZ2ed3rlt6kePTqddgVPE9F0i0w==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-8.1.0.tgz", + "integrity": "sha512-qVTiuKztFGw0dGhYi3WNqvddx3/SHtyDT0xJaeyz4uP0d1tkpG+0y5uYQ4OcIo1TLAz3PE/qDOW9F0uDt3+CTw==", "dev": true, + "bin": { + "jsonpath": "bin/jsonpath-cli.js", + "jsonpath-plus": "bin/jsonpath-cli.js" + }, "engines": { - "node": ">=10.0.0" + "node": ">=14.0.0" } }, "node_modules/jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.1.tgz", + "integrity": "sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==", "dev": true, "engines": { "node": "*" @@ -13892,28 +13979,6 @@ "node": "*" } }, - "node_modules/jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "dev": true, - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -13953,42 +14018,12 @@ "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", "dev": true }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "dev": true, - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "dev": true, - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/jwt-decode": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==", "dev": true }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -14053,22 +14088,11 @@ "uuid": "bin/uuid" } }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", + "dev": true, "dependencies": { "readable-stream": "^2.0.5" }, @@ -14080,6 +14104,7 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -14093,7 +14118,8 @@ "node_modules/lazystream/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/leven": { "version": "3.1.0", @@ -14171,17 +14197,20 @@ "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=" + "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=", + "dev": true }, "node_modules/lodash.difference": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", - "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=" + "integrity": "sha1-nMtOUF1Ia5FlE0V3KIWi3yf9AXw=", + "dev": true }, "node_modules/lodash.flatten": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=", + "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", @@ -14189,45 +14218,16 @@ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=", - "dev": true - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=", - "dev": true - }, "node_modules/lodash.isfunction": { "version": "3.0.9", "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", "dev": true }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=", - "dev": true - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=", - "dev": true - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", "dev": true }, "node_modules/lodash.kebabcase": { @@ -14248,12 +14248,6 @@ "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", "dev": true }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=", - "dev": true - }, "node_modules/lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", @@ -14269,7 +14263,8 @@ "node_modules/lodash.union": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", - "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=" + "integrity": "sha1-SLtQiECfFvGCFmZkHETdGqrjzYg=", + "dev": true }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -14437,9 +14432,9 @@ "dev": true }, "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", + "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/long-timeout": { "version": "0.1.1", @@ -14447,19 +14442,11 @@ "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", "dev": true }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -14477,12 +14464,12 @@ } }, "node_modules/luxon": { - "version": "1.28.1", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.28.1.tgz", - "integrity": "sha512-gYHAa180mKrNIUJCbwpmD0aTu9kV0dREDrwNnuyFAsO1Wt0EVYSZelPnJlbj9HplzXX/YWXHFTL45kvZ53M0pw==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, "node_modules/make-dir": { @@ -14523,18 +14510,6 @@ "tmpl": "1.0.x" } }, - "node_modules/map-age-cleaner": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", - "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -14553,44 +14528,19 @@ "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mem": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/mem/-/mem-6.1.1.tgz", - "integrity": "sha512-Ci6bIfq/UgcxPTYa8dQQ5FY3BzKkT894bwXWXxC/zqs0XgMO2cT20CGkOqda7gZNkmK5VP4x89IGZ6K7hfbn3Q==", - "dev": true, - "dependencies": { - "map-age-cleaner": "^0.1.3", - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sindresorhus/mem?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mem/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/memoizee": { @@ -14947,6 +14897,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -14955,9 +14906,9 @@ } }, "node_modules/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15051,7 +15002,8 @@ "node_modules/mkdirp-classic": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true }, "node_modules/mnemonist": { "version": "0.38.3", @@ -15070,22 +15022,11 @@ "node": "*" } }, - "node_modules/moment-timezone": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.40.tgz", - "integrity": "sha512-tWfmNkRYmBkPJz5mr9GVDn9vRlVZOTe6yqY92rFxiOdWXbjaR0+9LwQnZGGuNR63X456NqmEkbskte8tWL5ePg==", - "dev": true, - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/mute-stream": { "version": "0.0.8", @@ -15094,16 +15035,16 @@ "dev": true }, "node_modules/mysql2": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-2.2.5.tgz", - "integrity": "sha512-XRqPNxcZTpmFdXbJqb+/CtYVLCx14x1RTeNMD4954L331APu75IC74GDqnZMEt1kwaXy6TySo55rF2F3YJS78g==", + "version": "3.9.7", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", + "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", "dependencies": { - "denque": "^1.4.1", + "denque": "^2.1.0", "generate-function": "^2.3.1", - "iconv-lite": "^0.6.2", - "long": "^4.0.0", - "lru-cache": "^6.0.0", - "named-placeholders": "^1.1.2", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru-cache": "^8.0.0", + "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" }, @@ -15111,31 +15052,33 @@ "node": ">= 8.0" } }, + "node_modules/mysql2/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", + "engines": { + "node": ">=16.14" + } + }, "node_modules/named-placeholders": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.2.tgz", - "integrity": "sha512-wiFWqxoLL3PGVReSZpjLVxyJ1bRqe+KKJVbr4hGs1KWfTZTQyezHFBbuKj9hsizHyGV2ne7EMjHdxEGAybD5SA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", "dependencies": { - "lru-cache": "^4.1.3" + "lru-cache": "^7.14.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" } }, "node_modules/named-placeholders/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" } }, - "node_modules/named-placeholders/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, "node_modules/nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -15343,14 +15286,17 @@ "dev": true }, "node_modules/node-schedule": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-1.3.3.tgz", - "integrity": "sha512-uF9Ubn6luOPrcAYKfsXWimcJ1tPFtQ8I85wb4T3NgJQrXazEzojcFZVk46ZlLHby3eEJChgkV/0T689IsXh2Gw==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", "dev": true, "dependencies": { - "cron-parser": "^2.18.0", + "cron-parser": "^4.2.0", "long-timeout": "0.1.1", "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" } }, "node_modules/normalize-package-data": { @@ -15369,17 +15315,9 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, "node_modules/npm-registry-utilities": { @@ -15498,15 +15436,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -15519,42 +15448,6 @@ "node": ">=0.10.0" } }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.4.tgz", - "integrity": "sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2", - "has": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", @@ -15577,6 +15470,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, "dependencies": { "wrappy": "1" } @@ -15747,24 +15641,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", - "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-each-series": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", @@ -15832,66 +15708,60 @@ } }, "node_modules/p-memoize": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-4.0.1.tgz", - "integrity": "sha512-km0sP12uE0dOZ5qP+s7kGVf07QngxyG0gS8sYFvFWhqlgzOsSy+m71aUejf/0akxj5W7gE//2G74qTv6b4iMog==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-memoize/-/p-memoize-7.1.1.tgz", + "integrity": "sha512-DZ/bONJILHkQ721hSr/E9wMz5Am/OTJ9P6LhLFo2Tu+jL8044tgc9LwHO8g4PiaYePnlVVRAJcKmgy8J9MVFrA==", "dev": true, "dependencies": { - "mem": "^6.0.1", - "mimic-fn": "^3.0.0" + "mimic-fn": "^4.0.0", + "type-fest": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sindresorhus/p-memoize?sponsor=1" } }, "node_modules/p-memoize/node_modules/mimic-fn": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-3.1.0.tgz", - "integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-queue": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", - "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", + "node_modules/p-memoize/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.5.0.tgz", - "integrity": "sha512-5Hwh4aVQSu6BEP+w2zKlVXtFAaYQe1qWuVADSgoeVlLjwe/Q/AMSoRR4MDeaAfu8llT+YNbEijWu/YF3m6avkg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", "dev": true, "dependencies": { - "@types/retry": "^0.12.0", - "retry": "^0.12.0" + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/p-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, - "engines": { - "node": ">= 4" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-timeout": { @@ -15906,52 +15776,6 @@ "node": ">=8" } }, - "node_modules/package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/package-json/node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/package-json/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -16012,12 +15836,6 @@ "node": ">=0.10.0" } }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -16031,6 +15849,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -16137,6 +15956,12 @@ "node": ">=4" } }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -16217,38 +16042,6 @@ "semver-compare": "^1.0.0" } }, - "node_modules/portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "dependencies": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "engines": { - "node": ">= 0.12.0" - } - }, - "node_modules/portfinder/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/portfinder/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, "node_modules/posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -16302,15 +16095,6 @@ "node": ">= 0.8.0" } }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", @@ -16374,6 +16158,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "dev": true, "bin": { "printj": "bin/printj.njs" }, @@ -16384,7 +16169,8 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true }, "node_modules/process-utils": { "version": "4.0.0", @@ -16423,10 +16209,11 @@ "node": ">= 6" } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/psl": { "version": "1.8.0", @@ -16438,6 +16225,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -16448,18 +16236,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, - "node_modules/pupa": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", - "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", - "dev": true, - "dependencies": { - "escape-goat": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -16532,21 +16308,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -16557,6 +16318,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -16586,6 +16348,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "dev": true, "dependencies": { "minimatch": "^3.0.4" } @@ -16633,30 +16396,6 @@ "node": ">=0.10.0" } }, - "node_modules/registry-auth-token": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", - "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", @@ -16785,15 +16524,6 @@ "deprecated": "https://github.com/lydell/resolve-url#deprecated", "dev": true }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -16816,6 +16546,15 @@ "node": ">=0.12" } }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -17034,27 +16773,6 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "dev": true, - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", @@ -17133,97 +16851,55 @@ } }, "node_modules/serverless-offline": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-6.9.0.tgz", - "integrity": "sha512-toKcyXUv0rFM7nGk/0QcCxP1Zlv/37IAf3vQiUlOh5XHPl6pFWfHUVF4HelMkosAeWJqJt1SngNmK38uiAsLtg==", - "dev": true, - "dependencies": { - "@hapi/boom": "^7.4.11", - "@hapi/h2o2": "^8.3.2", - "@hapi/hapi": "^18.4.1", - "aws-sdk": "^2.834.0", - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "cuid": "^2.1.8", - "execa": "^5.0.0", - "extend": "^3.0.2", - "fs-extra": "^9.1.0", + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-13.3.3.tgz", + "integrity": "sha512-KVw+khABJumgHsOrddtRvjKY5CDPCShOS4SYPvXXvmOrsOcS/upLEPdgcExXgAaF3OUBRsrHmroqXiLko06cbw==", + "dev": true, + "dependencies": { + "@aws-sdk/client-lambda": "^3.496.0", + "@hapi/boom": "^10.0.1", + "@hapi/h2o2": "^10.0.4", + "@hapi/hapi": "^21.3.2", + "@serverless/utils": "^6.15.0", + "array-unflat-js": "^0.1.3", + "boxen": "^7.1.1", + "chalk": "^5.3.0", + "desm": "^1.3.1", + "execa": "^8.0.1", + "fs-extra": "^11.2.0", + "is-wsl": "^3.1.0", "java-invoke-local": "0.0.6", - "js-string-escape": "^1.0.1", - "jsonpath-plus": "^5.0.2", - "jsonschema": "^1.4.0", - "jsonwebtoken": "^8.5.1", - "jszip": "^3.5.0", - "luxon": "^1.25.0", - "node-fetch": "^2.6.1", - "node-schedule": "^1.3.3", - "object.fromentries": "^2.0.3", - "p-memoize": "^4.0.1", - "p-queue": "^6.6.2", - "p-retry": "^4.3.0", - "please-upgrade-node": "^3.2.0", - "portfinder": "^1.0.28", - "semver": "^7.3.4", - "update-notifier": "^5.0.1", - "velocityjs": "^2.0.3", - "ws": "^7.4.2" - }, - "engines": { - "node": ">=10.13.0" - }, - "peerDependencies": { - "serverless": ">=1.60.0" - } - }, - "node_modules/serverless-offline/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "jose": "^5.2.0", + "js-string-escape": "^1.0.1", + "jsonpath-plus": "^8.0.0", + "jsonschema": "^1.4.1", + "jszip": "^3.10.1", + "luxon": "^3.4.4", + "node-schedule": "^2.1.1", + "p-memoize": "^7.1.1", + "p-retry": "^6.2.0", + "velocityjs": "^2.0.6", + "ws": "^8.16.0" }, "engines": { - "node": ">=8" + "node": ">=18.12.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "serverless": "^3.2.0" } }, "node_modules/serverless-offline/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/serverless-offline/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/serverless-offline/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/serverless-offline/node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -17239,101 +16915,163 @@ } }, "node_modules/serverless-offline/node_modules/execa": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.0.0.tgz", - "integrity": "sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/serverless-offline/node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, "node_modules/serverless-offline/node_modules/get-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.0.tgz", - "integrity": "sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serverless-offline/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/serverless-offline/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=16.17.0" } }, - "node_modules/serverless-offline/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/serverless-offline/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serverless-offline/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/serverless-offline/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serverless-offline/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/serverless-offline/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/serverless-offline/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serverless-offline/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/serverless-offline/node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serverless-offline/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/serverless-offline/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "mimic-fn": "^4.0.0" }, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serverless-offline/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=8" } }, "node_modules/serverless-offline/node_modules/shebang-command": { @@ -17357,185 +17095,133 @@ "node": ">=8" } }, - "node_modules/serverless-offline/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/serverless-offline/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" - } - }, - "node_modules/serverless-offline/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "node": ">=14" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/serverless-plugin-tracing": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/serverless-plugin-tracing/-/serverless-plugin-tracing-2.0.0.tgz", - "integrity": "sha512-cndG6QC5ZFHSwmylOqxOzy/M9TAKtUl+wnpqdmqZ5sFfWjcUi4BLV7MkQnsIdKPKJcCv19tpNONYmGPmw6tXIg==", + "node_modules/serverless-offline/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, "engines": { - "node": ">=4.0" - } - }, - "node_modules/serverless-plugin-typescript": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/serverless-plugin-typescript/-/serverless-plugin-typescript-1.1.9.tgz", - "integrity": "sha512-OmZrD1uArNx+1MPrXck39zsa76k/H7QYOOAg/Uz9xpLGJPUsvW0pXRSE9NN7LRid6IuM/WpY3VWkD5DPusY4cA==", - "dev": true, - "dependencies": { - "fs-extra": "^7.0.1", - "globby": "^9.2.0", - "lodash": "^4.17.11" + "node": ">=12" }, - "peerDependencies": { - "typescript": ">=2.2.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serverless-plugin-typescript/node_modules/@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "node_modules/serverless-offline/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { - "node": ">= 6" + "node": ">= 10.0.0" } }, - "node_modules/serverless-plugin-typescript/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "node_modules/serverless-offline/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { - "array-uniq": "^1.0.1" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/serverless-plugin-typescript/node_modules/dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "dependencies": { - "path-type": "^3.0.0" + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/serverless-plugin-typescript/node_modules/fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "node_modules/serverless-offline/node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", "dev": true, - "dependencies": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/serverless-plugin-typescript/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "node": ">=10.0.0" }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/serverless-plugin-typescript/node_modules/globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "engines": { - "node": ">=6" - } - }, - "node_modules/serverless-plugin-typescript/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true, - "engines": { - "node": ">= 4" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/serverless-plugin-typescript/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/serverless-plugin-tracing": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/serverless-plugin-tracing/-/serverless-plugin-tracing-2.0.0.tgz", + "integrity": "sha512-cndG6QC5ZFHSwmylOqxOzy/M9TAKtUl+wnpqdmqZ5sFfWjcUi4BLV7MkQnsIdKPKJcCv19tpNONYmGPmw6tXIg==", "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=4.0" } }, - "node_modules/serverless-plugin-typescript/node_modules/path-type/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "node_modules/serverless-plugin-typescript": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/serverless-plugin-typescript/-/serverless-plugin-typescript-2.1.5.tgz", + "integrity": "sha512-7OO6eJzv57dvfz0v9huU1JVBgdzgvvz+6GCwwkR2bfdVHKs1tifx+fSgjbQcBpXNNHf8Dx2Mo7evtYTkA/TDDA==", "dev": true, + "dependencies": { + "fs-extra": "^7.0.1", + "globby": "^10.0.2", + "lodash": "^4.17.21" + }, "engines": { - "node": ">=4" + "node": ">=10.0" + }, + "peerDependencies": { + "serverless": "2 || 3", + "typescript": ">=2.2.2" } }, - "node_modules/serverless-plugin-typescript/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/serverless-plugin-typescript/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, "engines": { - "node": ">=6" + "node": ">=6 <7 || >=8" } }, - "node_modules/serverless-plugin-typescript/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/serverless-plugin-typescript/node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, "node_modules/serverless/node_modules/ansi-styles": { @@ -17956,6 +17642,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "engines": { "node": ">=8" } @@ -18230,7 +17917,8 @@ "node_modules/split-ca": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=" + "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=", + "dev": true }, "node_modules/split-string": { "version": "3.1.0", @@ -18279,6 +17967,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/ssh-remote-port-forward/-/ssh-remote-port-forward-1.0.4.tgz", "integrity": "sha512-x0LV1eVDwjf1gmG7TTnfqIzf+3VPRz7vrNIjX6oYLbeCrf/PeVY6hkT68Mg+q02qXxQhrLjB0jfgvhevoCRmLQ==", + "dev": true, "dependencies": { "@types/ssh2": "^0.5.48", "ssh2": "^1.4.0" @@ -18288,6 +17977,7 @@ "version": "0.5.52", "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-0.5.52.tgz", "integrity": "sha512-lbLLlXxdCZOSJMCInKH2+9V/77ET2J6NPQHpFI0kda61Dd1KglJs+fPQBchizmzYSOJBgdTajhPqBO1xxLywvg==", + "dev": true, "dependencies": { "@types/node": "*", "@types/ssh2-streams": "*" @@ -18297,12 +17987,14 @@ "version": "2.17.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true, "optional": true }, "node_modules/ssh-remote-port-forward/node_modules/ssh2": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "dev": true, "hasInstallScript": true, "dependencies": { "asn1": "^0.2.4", @@ -18394,6 +18086,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "dev": true, "dependencies": { "any-promise": "^1.1.0" } @@ -18402,6 +18095,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.0" } @@ -18409,7 +18103,8 @@ "node_modules/string_decoder/node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/string-length": { "version": "4.0.2", @@ -18438,32 +18133,6 @@ "node": ">=8" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -18515,15 +18184,6 @@ "node": ">=8" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -18664,9 +18324,9 @@ "dev": true }, "node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "dependencies": { "chownr": "^2.0.0", @@ -18684,6 +18344,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -18695,6 +18356,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", @@ -18761,6 +18423,7 @@ "version": "7.6.2", "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-7.6.2.tgz", "integrity": "sha512-mRjshuowSLPiNSp+ogPMe1UcWlD8T/KCasmDRSmJIQWG8j2ifPnBkbU8Atw8Ot1ARN9K0d6F59zs0+LO1LlIrw==", + "dev": true, "dependencies": { "@types/archiver": "^5.1.0", "@types/dockerode": "^3.2.1", @@ -18865,15 +18528,6 @@ "node": ">=0.10.0" } }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", @@ -19236,7 +18890,8 @@ "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true }, "node_modules/type": { "version": "2.7.2", @@ -19295,21 +18950,6 @@ "node": ">=4.2.0" } }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/unbzip2-stream": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", @@ -19368,18 +19008,6 @@ "node": ">=0.10.0" } }, - "node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -19446,119 +19074,6 @@ "node": ">=8" } }, - "node_modules/update-notifier": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", - "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", - "dev": true, - "dependencies": { - "boxen": "^5.0.0", - "chalk": "^4.1.0", - "configstore": "^5.0.1", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.4.0", - "is-npm": "^5.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.1.0", - "pupa": "^2.1.1", - "semver": "^7.3.4", - "semver-diff": "^3.1.1", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/update-notifier/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/update-notifier/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -19603,18 +19118,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -19639,7 +19142,8 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true }, "node_modules/uuid": { "version": "8.3.2", @@ -19703,10 +19207,13 @@ "dev": true }, "node_modules/velocityjs": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-2.0.3.tgz", - "integrity": "sha512-sUkygY7HwvbKZvS3naiI7t2o4RTqui6efSwTXLb03igdvPKm3SwCpnqA2kU4/jLD2f0eHB9xPoiza9XAkpuU+g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/velocityjs/-/velocityjs-2.0.6.tgz", + "integrity": "sha512-QMYLeYLBX6eqekCin3OPmDAHapaUx3foNFE264ml1/yxRZ8TUUlI1+u6rtN4E8tKNqwzpRPeNgJtjLbgRNK4fw==", "dev": true, + "dependencies": { + "debug": "^4.3.3" + }, "bin": { "velocity": "bin/velocity" }, @@ -19833,22 +19340,6 @@ "which": "bin/which" } }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -19869,15 +19360,68 @@ } }, "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, "dependencies": { - "string-width": "^4.0.0" + "string-width": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/winston": { @@ -19958,7 +19502,8 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -19993,15 +19538,6 @@ } } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", @@ -20060,7 +19596,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", @@ -20152,6 +19689,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.0.tgz", "integrity": "sha512-zshzwQW7gG7hjpBlgeQP9RuyPGNxvJdzR8SUM3QhxCnLjWN2E7j3dOvpeDcQoETfHx0urRS7EtmVToql7YpU4A==", + "dev": true, "dependencies": { "archiver-utils": "^2.1.0", "compress-commons": "^4.1.0", diff --git a/package.json b/package.json index 799d904..21da6b2 100644 --- a/package.json +++ b/package.json @@ -18,12 +18,13 @@ "build:dev": "node_modules/typescript/bin/tsc && npm run build:copy", "build:copy": "find src -type f \\( -name \"*.yml\" -or -name \"*.json\" \\) | cpio -pdm .build && find tests -type f \\( -name \"*.yml\" -or -name \"*.json\" -or -name \"*.base64\" \\) | cpio -pdm .build", "build:docker": "docker-compose -f docker-compose.yml up -d --build", - "test": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local AWS_XRAY_CONTEXT_MISSING=LOG_ERROR jest --testMatch=\"**/*.unitTest.ts\" --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/!(*conversion).{js,ts}\"", - "test-i": "cross-env SQS_BUCKET=local AWS_REGION=local USE_CONTAINERIZED_DATABASE=0 BRANCH=local jest --testMatch=\"**/integration.allIntTest.ts\" --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/*conversion.{js,ts}\"", - "test-local-i": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local USE_CONTAINERIZED_DATABASE=1 jest --testMatch=\"**/integration.allIntTest.ts\" --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/*conversion.{js,ts}\"", + "test-all": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local USE_CONTAINERIZED_DATABASE=1 AWS_XRAY_CONTEXT_MISSING=LOG_ERROR jest --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/!(*conversion).{js,ts}\"", + "test": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local AWS_XRAY_CONTEXT_MISSING=LOG_ERROR jest --selectProjects UNIT --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/!(*conversion).{js,ts}\"", + "test-i": "cross-env SQS_BUCKET=local AWS_REGION=local USE_CONTAINERIZED_DATABASE=0 BRANCH=local jest --selectProjects INTEGRATION --runInBand", + "test-local-i": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local USE_CONTAINERIZED_DATABASE=1 jest --selectProjects INTEGRATION --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/!(*conversion).{js,ts}\"", "lint": "tslint src/**/*.ts tests/**/*.ts -q", "prettier": "prettier --write ./**/*.{js,ts}", - "prepush": "npm test && npm run build && npm run test-local-i", + "prepush": "npm run build && npm run test-local-i", "sonar-scanner": "sonar-scanner", "audit": "npm audit --omit=dev", "package": "mkdir -p ${ZIP_NAME} && cp package.json package-lock.json ${ZIP_NAME}/ && cp -r .build/src/* ${ZIP_NAME}/ && cd ${ZIP_NAME} && npm ci --production && rm package.json package-lock.json && zip -qr ../${ZIP_NAME}.zip .", @@ -59,15 +60,14 @@ "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", - "mysql2": "2.2.5", + "mysql2": "3.9.7", "prettier": "2.2.1", "reflect-metadata": "0.1.13", - "testcontainers": "7.6.2", "ts-node-register": "1.0.0", "uuid": "8.3.2" }, "devDependencies": { - "@aws-sdk/client-dynamodb": "3.266.0", + "@aws-sdk/client-dynamodb": "3.554.0", "@aws-sdk/util-dynamodb": "3.266.0", "@commitlint/cli": "12.1.4", "@commitlint/config-conventional": "12.1.4", @@ -85,14 +85,16 @@ "husky": "3.0.9", "jest": "26.0.0", "jest-plugin-context": "2.9.0", + "jest-serial-runner": "1.2.1", "jest-sonar-reporter": "2.0.0", "lambda-tester": "3.5.0", "serverless": "3.33.0", - "serverless-offline": "6.9.0", + "serverless-offline": "13.3.3", "serverless-plugin-tracing": "2.0.0", - "serverless-plugin-typescript": "1.1.9", + "serverless-plugin-typescript": "2.1.5", "sinon": "7.5.0", "sonar-scanner": "3.1.0", + "testcontainers": "7.6.2", "ts-jest": "26.5.1", "tslint": "5.20.0", "tslint-no-unused-expression-chai": "0.1.4", @@ -112,7 +114,7 @@ "husky": { "hooks": { "commit-msg": "commitlint -E HUSKY_GIT_PARAMS", - "pre-commit": "npm run security-checks && npm run audit && npm run lint && npm run prettier", + "pre-commit": "npm test && npm run security-checks && npm run audit && npm run lint && npm run prettier", "pre-push": "npm run prepush" } } diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index 2a9895e..fad8e09 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -11,615 +11,614 @@ import { getConnectionPoolOptions } from "../../src/services/connection-pool-opt useLocalDb(); -export const authIntoServiceDocumentConversion = () => - describe("convertTechRecordDocument() integration tests", () => { - let container: StartedTestContainer; - - beforeAll(async () => { - jest.setTimeout(60_000); - jest.restoreAllMocks(); - - // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - container = await getContainerizedDatabase(); - } else { - (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", - }); - } - }); +describe("convertTechRecordDocument() integration tests", () => { + let container: StartedTestContainer; + + beforeAll(async () => { + jest.setTimeout(60_000); + jest.restoreAllMocks(); + + // see README for why this environment variable exists + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + container = await getContainerizedDatabase(); + } else { + (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ + host: "localhost", + port: "3306", + user: "root", + password: "12345", + database: "CVSBNOP", + }); + } + }); - afterAll(async () => { - await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - await container.stop(); - } - }); + afterAll(async () => { + await destroyConnectionPool(); + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + await container.stop(); + } + }); - describe("when adding a new vehicle with an authIntoService having some null properties.", () => { - it("should insert into auth_into_service", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1a" }; - techRecordDocumentJsonNew.vin = { S: "VIN1a" }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { - M: { - cocIssueDate: { - S: "2020-01-01", - }, - dateAuthorised: { - // @ts-ignore - NULL: true, - }, - datePending: { - S: "2020-03-03", - }, - dateReceived: { - // @ts-ignore - NULL: true, - }, - dateRejected: { - S: "2020-05-05", - }, + describe("when adding a new vehicle with an authIntoService having some null properties.", () => { + it("should insert into auth_into_service", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1a" }; + techRecordDocumentJsonNew.vin = { S: "VIN1a" }; + techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { + M: { + cocIssueDate: { + S: "2020-01-01", + }, + dateAuthorised: { + // @ts-ignore + NULL: true, }, - }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1a" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1a"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`cocIssueDate\`, - \`dateReceived\`, - \`datePending\`, - \`dateAuthorised\`, - \`dateRejected\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(1); - expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(authIntoServiceResultSet.rows[0].dateReceived).toBeNull(); - expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); - expect(authIntoServiceResultSet.rows[0].dateAuthorised).toBeNull(); - expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + datePending: { + S: "2020-03-03", + }, + dateReceived: { + // @ts-ignore + NULL: true, + }, + dateRejected: { + S: "2020-05-05", + }, + }, + }; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should update auth_into_service when the vehicle is updated with an authIntoService having some null properties", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1a" }; - techRecordDocumentJsonNew.vin = { S: "VIN1a" }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { - M: { - cocIssueDate: { - // @ts-ignore - NULL: true, - }, - dateAuthorised: { - S: "2020-02-02", - }, - datePending: { - // @ts-ignore - NULL: true, - }, - dateReceived: { - S: "2020-04-04", - }, - dateRejected: { - // @ts-ignore - NULL: true, - }, + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1a" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1a"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`cocIssueDate\`, + \`dateReceived\`, + \`datePending\`, + \`dateAuthorised\`, + \`dateRejected\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect( + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect(authIntoServiceResultSet.rows[0].dateReceived).toBeNull(); + expect( + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() + ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + expect(authIntoServiceResultSet.rows[0].dateAuthorised).toBeNull(); + expect( + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() + ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + }); + + it("should update auth_into_service when the vehicle is updated with an authIntoService having some null properties", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1a" }; + techRecordDocumentJsonNew.vin = { S: "VIN1a" }; + techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { + M: { + cocIssueDate: { + // @ts-ignore + NULL: true, + }, + dateAuthorised: { + S: "2020-02-02", + }, + datePending: { + // @ts-ignore + NULL: true, + }, + dateReceived: { + S: "2020-04-04", + }, + dateRejected: { + // @ts-ignore + NULL: true, }, - }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1a" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1a"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`cocIssueDate\`, - \`dateReceived\`, - \`datePending\`, - \`dateAuthorised\`, - \`dateRejected\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(1); - expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect(authIntoServiceResultSet.rows[0].cocIssueDate).toBeNull(); - expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); - expect(authIntoServiceResultSet.rows[0].datePending).toBeNull(); - expect( - (authIntoServiceResultSet.rows[0] - .dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); - expect(authIntoServiceResultSet.rows[0].dateRejected).toBeNull(); + }, + }; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); + + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1a" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1a"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`cocIssueDate\`, + \`dateReceived\`, + \`datePending\`, + \`dateAuthorised\`, + \`dateRejected\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect(authIntoServiceResultSet.rows[0].cocIssueDate).toBeNull(); + expect( + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() + ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + expect(authIntoServiceResultSet.rows[0].datePending).toBeNull(); + expect( + (authIntoServiceResultSet.rows[0] + .dateAuthorised as Date).toUTCString() + ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + expect(authIntoServiceResultSet.rows[0].dateRejected).toBeNull(); }); + }); + + describe("when adding a new vehicle with an empty authIntoService.", () => { + it("should not insert into auth_into_service", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; + techRecordDocumentJsonNew.vin = { S: "VIN1b" }; + techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; - describe("when adding a new vehicle with an empty authIntoService.", () => { - it("should not insert into auth_into_service", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; - techRecordDocumentJsonNew.vin = { S: "VIN1b" }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1b" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`id\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(0); + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should insert into auth_into_service when the vehicle is updated with an authIntoService", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; - techRecordDocumentJsonNew.vin = { S: "VIN1b" }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1b" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`cocIssueDate\`, - \`dateReceived\`, - \`datePending\`, - \`dateAuthorised\`, - \`dateRejected\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(1); - expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0] - .dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1b" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`id\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(0); + }); + + it("should insert into auth_into_service when the vehicle is updated with an authIntoService", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; + techRecordDocumentJsonNew.vin = { S: "VIN1b" }; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should remove auth_into_service when the vehicle if updated and authIntoService is empty", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; - techRecordDocumentJsonNew.vin = { S: "VIN1b" }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1b" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`id\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(0); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1b" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`cocIssueDate\`, + \`dateReceived\`, + \`datePending\`, + \`dateAuthorised\`, + \`dateRejected\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect( + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() + ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() + ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0] + .dateAuthorised as Date).toUTCString() + ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() + ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + }); + + it("should remove auth_into_service when the vehicle if updated and authIntoService is empty", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; + techRecordDocumentJsonNew.vin = { S: "VIN1b" }; + techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); + + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1b" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`id\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(0); }); + }); - describe("when adding a new vehicle and authIntoService is not present.", () => { - it("should not insert into auth_into_service", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; - techRecordDocumentJsonNew.vin = { S: "VIN1c" }; - delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1c" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`cocIssueDate\`, - \`dateReceived\`, - \`datePending\`, - \`dateAuthorised\`, - \`dateRejected\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(0); + describe("when adding a new vehicle and authIntoService is not present.", () => { + it("should not insert into auth_into_service", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; + techRecordDocumentJsonNew.vin = { S: "VIN1c" }; + delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should insert into auth_into_service when the vehicle is updated with an authIntoService", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; - techRecordDocumentJsonNew.vin = { S: "VIN1c" }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1c" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`cocIssueDate\`, - \`dateReceived\`, - \`datePending\`, - \`dateAuthorised\`, - \`dateRejected\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(1); - expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0] - .dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1c" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`cocIssueDate\`, + \`dateReceived\`, + \`datePending\`, + \`dateAuthorised\`, + \`dateRejected\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(0); + }); + + it("should insert into auth_into_service when the vehicle is updated with an authIntoService", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; + techRecordDocumentJsonNew.vin = { S: "VIN1c" }; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should remove auth_into_service when the vehicle if updated and authIntoService is not present", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; - techRecordDocumentJsonNew.vin = { S: "VIN1c" }; - delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` - ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1c" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); - const vehicleId = vehicleResultSet.rows[0].id; - - const technicalRecordSet = await executeSql( - `SELECT \`id\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - const technicalRecordId = technicalRecordSet.rows[0].id; - - const authIntoServiceResultSet = await executeSql( - `SELECT \`id\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - - expect(authIntoServiceResultSet.rows.length).toEqual(0); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1c" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`cocIssueDate\`, + \`dateReceived\`, + \`datePending\`, + \`dateAuthorised\`, + \`dateRejected\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect( + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() + ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() + ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0] + .dateAuthorised as Date).toUTCString() + ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() + ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + }); + + it("should remove auth_into_service when the vehicle if updated and authIntoService is not present", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; + techRecordDocumentJsonNew.vin = { S: "VIN1c" }; + delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); + + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-1c" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); + const vehicleId = vehicleResultSet.rows[0].id; + + const technicalRecordSet = await executeSql( + `SELECT \`id\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + const technicalRecordId = technicalRecordSet.rows[0].id; + + const authIntoServiceResultSet = await executeSql( + `SELECT \`id\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + + expect(authIntoServiceResultSet.rows.length).toEqual(0); }); }); +}); diff --git a/tests/integration/integration.allIntTest.ts b/tests/integration/integration.allIntTest.ts deleted file mode 100644 index ac73e73..0000000 --- a/tests/integration/integration.allIntTest.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { authIntoServiceDocumentConversion } from "./auth-into-service-document-conversion.intTest"; -import { techRecordDocumentConversion } from "./tech-record-document-conversion.intTest"; -import { testResultsConversionWithDelete } from "./test-results-conversion-with-delete.intTest"; -import { testResultsConversionWithUpsert } from "./test-results-conversion-with-upsert.intTest"; - -describe("convert TechRecord document integration tests", () => { - techRecordDocumentConversion(); -}); -describe("convert authIntoService document integration tests", () => { - authIntoServiceDocumentConversion(); -}); -describe("convert TestResults integration tests", () => { - testResultsConversionWithDelete(); - testResultsConversionWithUpsert(); -}); diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index b070bf9..4a7e729 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -11,36 +11,596 @@ import { getConnectionPoolOptions } from "../../src/services/connection-pool-opt useLocalDb(); -export const techRecordDocumentConversion = () => - describe("convertTechRecordDocument() integration tests", () => { - let container: StartedTestContainer; - - beforeAll(async () => { - jest.setTimeout(60_000); - jest.restoreAllMocks(); - - // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - container = await getContainerizedDatabase(); - } else { - (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", - }); - } - }); +describe("convertTechRecordDocument() integration tests", () => { + let container: StartedTestContainer; + + beforeAll(async () => { + jest.setTimeout(60_000); + jest.restoreAllMocks(); + + // see README for why this environment variable exists + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + container = await getContainerizedDatabase(); + } else { + (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ + host: "localhost", + port: "3306", + user: "root", + password: "12345", + database: "CVSBNOP", + }); + } + }); - afterAll(async () => { - await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - await container.stop(); - } + afterAll(async () => { + await destroyConnectionPool(); + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + await container.stop(); + } + }); + + it("should correctly convert a DynamoDB event into Aurora rows", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJson, + }, + }), + }, + ], + }; + + // array of arrays: event contains array of records, each with array of tech record entities + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should correctly convert a DynamoDB event into Aurora rows", async () => { + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1"` + ); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual("SYSTEM-NUMBER-1"); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN1"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-1"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); // todo This returns null + + const vehicleId = vehicleResultSet.rows[0].id; + const technicalRecordSet = await executeSql( + `SELECT \`make_model_id\`, \`vehicle_class_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, \`applicant_detail_id\`, \`purchaser_detail_id\`, \`manufacturer_detail_id\`, \`id\`, \`createdAt\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + ); + + expect(technicalRecordSet.rows.length).toEqual(1); + expect( + (technicalRecordSet.rows[0].createdAt as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.055Z"); + + const { + make_model_id, + vehicle_class_id, + createdBy_Id, + lastUpdatedBy_Id, + applicant_detail_id, + purchaser_detail_id, + manufacturer_detail_id, + } = technicalRecordSet.rows[0]; + + const technicalRecordId = technicalRecordSet.rows[0].id; + + const makeModelResultSet = await executeSql( + `SELECT \`make\`, + \`model\`, + \`chassisMake\`, + \`chassisModel\`, + \`bodyMake\`, + \`bodyModel\`, + \`modelLiteral\`, + \`bodyTypeCode\`, + \`bodyTypeDescription\`, + \`fuelPropulsionSystem\`, + \`dtpCode\` + FROM \`make_model\` + WHERE \`make_model\`.\`id\` = ${make_model_id}` + ); + expect(makeModelResultSet.rows.length).toEqual(1); + expect(makeModelResultSet.rows[0].make).toEqual("MAKE"); + expect(makeModelResultSet.rows[0].model).toEqual("MODEL"); + expect(makeModelResultSet.rows[0].chassisMake).toEqual("CHASSIS-MAKE"); + expect(makeModelResultSet.rows[0].chassisModel).toEqual("CHASSIS-MODEL"); + expect(makeModelResultSet.rows[0].bodyMake).toEqual("BODY-MAKE"); + expect(makeModelResultSet.rows[0].bodyModel).toEqual("BODY-MODEL"); + expect(makeModelResultSet.rows[0].modelLiteral).toEqual("MODEL-LITERAL"); + expect(makeModelResultSet.rows[0].bodyTypeCode).toEqual("a"); + expect(makeModelResultSet.rows[0].bodyTypeDescription).toEqual( + "articulated" + ); + expect(makeModelResultSet.rows[0].fuelPropulsionSystem).toEqual( + "DieselPetrol" + ); + expect(makeModelResultSet.rows[0].dtpCode).toEqual(null); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("small"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-2"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-2"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-2" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-2" + ); + + const contactDetailsResultSet = await executeSql( + `SELECT \`name\`, + \`address1\`, + \`address2\`, + \`postTown\`, + \`address3\`, + \`postCode\`, + \`emailAddress\`, + \`telephoneNumber\`, + \`faxNumber\` + FROM \`contact_details\` + WHERE \`contact_details\`.\`id\` = ${applicant_detail_id}` + ); + + const contactIds = [ + applicant_detail_id, + manufacturer_detail_id, + purchaser_detail_id, + ]; + expect(contactIds.every((id) => contactIds[0] === id)).toBe(true); + + expect(contactDetailsResultSet.rows.length).toEqual(1); + expect(contactDetailsResultSet.rows[0].name).toEqual("NAME"); + expect(contactDetailsResultSet.rows[0].address1).toEqual("ADDRESS-1"); + expect(contactDetailsResultSet.rows[0].address2).toEqual("ADDRESS-2"); + expect(contactDetailsResultSet.rows[0].postTown).toEqual("POST-TOWN"); + expect(contactDetailsResultSet.rows[0].address3).toEqual("ADDRESS-3"); + expect(contactDetailsResultSet.rows[0].postCode).toEqual("POST-CODE"); + expect(contactDetailsResultSet.rows[0].emailAddress).toEqual( + "EMAIL-ADDRESS" + ); + expect(contactDetailsResultSet.rows[0].telephoneNumber).toEqual( + "TELEPHONE-NUMBER" + ); + expect(contactDetailsResultSet.rows[0].faxNumber).toEqual("FAX-NUMBER"); + + const techRecordResultSet = await executeSql( + `SELECT \`vehicle_id\`, + \`recordCompleteness\`, + \`createdAt\`, + \`lastUpdatedAt\`, + \`make_model_id\`, + \`functionCode\`, + \`offRoad\`, + \`numberOfWheelsDriven\`, + \`regnDate\`, + \`unladenWeight\`, + \`emissionsLimit\`, + \`departmentalVehicleMarker\`, + \`alterationMarker\`, + \`vehicle_class_id\`, + \`variantVersionNumber\`, + \`grossEecWeight\`, + \`trainEecWeight\`, + \`maxTrainEecWeight\`, + \`applicant_detail_id\`, + \`purchaser_detail_id\`, + \`manufacturer_detail_id\`, + \`manufactureYear\`, + \`firstUseDate\`, + \`coifDate\`, + \`ntaNumber\`, + \`coifSerialNumber\`, + \`coifCertifierName\`, + \`approvalType\`, + \`approvalTypeNumber\`, + \`variantNumber\`, + \`conversionRefNo\`, + \`seatsLowerDeck\`, + \`seatsUpperDeck\`, + \`standingCapacity\`, + \`speedRestriction\`, + \`speedLimiterMrk\`, + \`tachoExemptMrk\`, + \`dispensations\`, + \`remarks\`, + \`reasonForCreation\`, + \`statusCode\`, + \`grossKerbWeight\`, + \`grossLadenWeight\`, + \`grossGbWeight\`, + \`grossDesignWeight\`, + \`trainGbWeight\`, + \`trainDesignWeight\`, + \`maxTrainGbWeight\`, + \`maxTrainDesignWeight\`, + \`maxLoadOnCoupling\`, + \`frameDescription\`, + \`tyreUseCode\`, + \`roadFriendly\`, + \`drawbarCouplingFitted\`, + \`euroStandard\`, + \`suspensionType\`, + \`couplingType\`, + \`length\`, + \`height\`, + \`width\`, + \`frontAxleTo5thWheelMin\`, + \`frontAxleTo5thWheelMax\`, + \`frontVehicleTo5thWheelCouplingMin\`, + \`frontVehicleTo5thWheelCouplingMax\`, + \`frontAxleToRearAxle\`, + \`rearAxleToRearTrl\`, + \`couplingCenterToRearAxleMin\`, + \`couplingCenterToRearAxleMax\`, + \`couplingCenterToRearTrlMin\`, + \`couplingCenterToRearTrlMax\`, + \`centreOfRearmostAxleToRearOfTrl\`, + \`notes\`, + \`purchaserNotes\`, + \`manufacturerNotes\`, + \`noOfAxles\`, + \`brakeCode\`, + \`brakes_dtpNumber\`, + \`brakes_loadSensingValve\`, + \`brakes_antilockBrakingSystem\`, + \`createdBy_Id\`, + \`lastUpdatedBy_Id\`, + \`updateType\`, + \`numberOfSeatbelts\`, + \`seatbeltInstallationApprovalDate\` + FROM \`technical_record\` + WHERE \`technical_record\`.\`id\` = ${technicalRecordId}` + ); + // check a few fields of different types here + expect(techRecordResultSet.rows[0].vehicle_id).toEqual(vehicleId); + expect(techRecordResultSet.rows[0].recordCompleteness).toEqual( + "88888888" + ); + expect( + (techRecordResultSet.rows[0].createdAt as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect( + (techRecordResultSet.rows[0].lastUpdatedAt as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect(techRecordResultSet.rows[0].make_model_id).toEqual(1); + expect(techRecordResultSet.rows[0].functionCode).toEqual("1"); + expect(techRecordResultSet.rows[0].offRoad).toEqual(1); + expect(techRecordResultSet.rows[0].numberOfWheelsDriven).toEqual(1); + expect( + (techRecordResultSet.rows[0].regnDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect(techRecordResultSet.rows[0].unladenWeight).toEqual(1); + expect(techRecordResultSet.rows[0].emissionsLimit).toEqual("1"); + expect(techRecordResultSet.rows[0].departmentalVehicleMarker).toEqual(1); + expect(techRecordResultSet.rows[0].alterationMarker).toEqual(1); + expect(techRecordResultSet.rows[0].vehicle_class_id).toEqual( + vehicle_class_id + ); + expect(techRecordResultSet.rows[0].variantVersionNumber).toEqual("1"); + expect(techRecordResultSet.rows[0].grossEecWeight).toEqual(1); + expect(techRecordResultSet.rows[0].trainEecWeight).toEqual(1); + expect(techRecordResultSet.rows[0].maxTrainEecWeight).toEqual(1); + expect(techRecordResultSet.rows[0].applicant_detail_id).toEqual(1); + expect(techRecordResultSet.rows[0].purchaser_detail_id).toEqual(1); + expect(techRecordResultSet.rows[0].manufacturer_detail_id).toEqual(1); + expect(techRecordResultSet.rows[0].manufactureYear).toEqual(2020); + expect( + (techRecordResultSet.rows[0].firstUseDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect( + (techRecordResultSet.rows[0].coifDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect(techRecordResultSet.rows[0].ntaNumber).toEqual("NTA-NUMBER"); + expect(techRecordResultSet.rows[0].coifSerialNumber).toEqual("88888888"); + expect(techRecordResultSet.rows[0].coifCertifierName).toEqual( + "COIF-CERTIFIER-NAME" + ); + expect(techRecordResultSet.rows[0].approvalType).toEqual("NTA"); + expect(techRecordResultSet.rows[0].approvalTypeNumber).toEqual("1"); + expect(techRecordResultSet.rows[0].variantNumber).toEqual("1"); + expect(techRecordResultSet.rows[0].conversionRefNo).toEqual("1010101010"); + expect(techRecordResultSet.rows[0].seatsLowerDeck).toEqual(1); + expect(techRecordResultSet.rows[0].seatsUpperDeck).toEqual(1); + expect(techRecordResultSet.rows[0].standingCapacity).toEqual(1); + expect(techRecordResultSet.rows[0].speedRestriction).toEqual(1); + expect(techRecordResultSet.rows[0].speedLimiterMrk).toEqual(1); + expect(techRecordResultSet.rows[0].tachoExemptMrk).toEqual(1); + expect(techRecordResultSet.rows[0].dispensations).toEqual( + "DISPENSATIONS" + ); + expect(techRecordResultSet.rows[0].remarks).toEqual("REMARKS"); + expect(techRecordResultSet.rows[0].reasonForCreation).toEqual( + "REASON-FOR-CREATION" + ); + expect(techRecordResultSet.rows[0].statusCode).toEqual("STATUS-CODE"); + expect(techRecordResultSet.rows[0].grossKerbWeight).toEqual(1); + expect(techRecordResultSet.rows[0].grossLadenWeight).toEqual(1); + expect(techRecordResultSet.rows[0].grossGbWeight).toEqual(1); + expect(techRecordResultSet.rows[0].grossDesignWeight).toEqual(1); + expect(techRecordResultSet.rows[0].trainGbWeight).toEqual(1); + expect(techRecordResultSet.rows[0].trainDesignWeight).toEqual(1); + expect(techRecordResultSet.rows[0].maxTrainGbWeight).toEqual(1); + expect(techRecordResultSet.rows[0].maxTrainDesignWeight).toEqual(1); + expect(techRecordResultSet.rows[0].maxLoadOnCoupling).toEqual(1); + expect(techRecordResultSet.rows[0].frameDescription).toEqual( + "Channel section" + ); + expect(techRecordResultSet.rows[0].tyreUseCode).toEqual("22"); + expect(techRecordResultSet.rows[0].roadFriendly).toEqual(1); + expect(techRecordResultSet.rows[0].drawbarCouplingFitted).toEqual(1); + expect(techRecordResultSet.rows[0].euroStandard).toEqual("euroStd"); + expect(techRecordResultSet.rows[0].suspensionType).toEqual("1"); + expect(techRecordResultSet.rows[0].couplingType).toEqual("1"); + expect(techRecordResultSet.rows[0].length).toEqual(1); + expect(techRecordResultSet.rows[0].height).toEqual(1); + expect(techRecordResultSet.rows[0].width).toEqual(1); + expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMin).toEqual(1); + expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMax).toEqual(1); + expect( + techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMin + ).toEqual(1); + expect( + techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMax + ).toEqual(1); + expect(techRecordResultSet.rows[0].frontAxleToRearAxle).toEqual(1); + expect(techRecordResultSet.rows[0].rearAxleToRearTrl).toEqual(1); + expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMin).toEqual( + 1 + ); + expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMax).toEqual( + 1 + ); + expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMin).toEqual(1); + expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMax).toEqual(1); + expect( + techRecordResultSet.rows[0].centreOfRearmostAxleToRearOfTrl + ).toEqual(1); + expect(techRecordResultSet.rows[0].notes).toEqual("NOTES"); + expect(techRecordResultSet.rows[0].purchaserNotes).toEqual( + "PURCHASER-NOTES" + ); + expect(techRecordResultSet.rows[0].manufacturerNotes).toEqual( + "MANUFACTURER-NOTES" + ); + expect(techRecordResultSet.rows[0].noOfAxles).toEqual(1); + expect(techRecordResultSet.rows[0].brakeCode).toEqual("1"); + expect(techRecordResultSet.rows[0].brakes_dtpNumber).toEqual("666666"); + expect(techRecordResultSet.rows[0].brakes_loadSensingValve).toEqual(1); + expect(techRecordResultSet.rows[0].brakes_antilockBrakingSystem).toEqual( + 1 + ); + expect(techRecordResultSet.rows[0].updateType).toEqual("adrUpdate"); + expect(techRecordResultSet.rows[0].numberOfSeatbelts).toEqual( + "NUMBER-OF-SEATBELTS" + ); + expect( + (techRecordResultSet.rows[0] + .seatbeltInstallationApprovalDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + + const brakesResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`brakeCodeOriginal\`, + \`brakeCode\`, + \`dataTrBrakeOne\`, + \`dataTrBrakeTwo\`, + \`dataTrBrakeThree\`, + \`retarderBrakeOne\`, + \`retarderBrakeTwo\`, + \`serviceBrakeForceA\`, + \`secondaryBrakeForceA\`, + \`parkingBrakeForceA\`, + \`serviceBrakeForceB\`, + \`secondaryBrakeForceB\`, + \`parkingBrakeForceB\` + FROM \`psv_brakes\` + WHERE \`psv_brakes\`.\`technical_record_id\` = ${technicalRecordId}` + ); + expect(brakesResultSet.rows.length).toEqual(1); + expect(brakesResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect(brakesResultSet.rows[0].brakeCodeOriginal).toEqual("333"); + expect(brakesResultSet.rows[0].brakeCode).toEqual("666666"); + expect(brakesResultSet.rows[0].dataTrBrakeOne).toEqual( + "DATA-TR-BRAKE-ONE" + ); + expect(brakesResultSet.rows[0].dataTrBrakeTwo).toEqual( + "DATA-TR-BRAKE-TWO" + ); + expect(brakesResultSet.rows[0].dataTrBrakeThree).toEqual( + "DATA-TR-BRAKE-THREE" + ); + expect(brakesResultSet.rows[0].retarderBrakeOne).toEqual("electric"); + expect(brakesResultSet.rows[0].retarderBrakeTwo).toEqual("electric"); + expect(brakesResultSet.rows[0].serviceBrakeForceA).toEqual(1); + expect(brakesResultSet.rows[0].secondaryBrakeForceA).toEqual(1); + expect(brakesResultSet.rows[0].parkingBrakeForceA).toEqual(1); + expect(brakesResultSet.rows[0].serviceBrakeForceB).toEqual(1); + expect(brakesResultSet.rows[0].secondaryBrakeForceB).toEqual(1); + expect(brakesResultSet.rows[0].parkingBrakeForceB).toEqual(1); + + const axleSpacingResultSet = await executeSql( + `SELECT \`technical_record_id\`, \`axles\`, \`value\` + FROM \`axle_spacing\` + WHERE \`axle_spacing\`.\`id\` IN ( + SELECT \`id\` + FROM \`axle_spacing\` + WHERE \`axle_spacing\`.\`technical_record_id\` = ${technicalRecordId} + )` + ); + expect(axleSpacingResultSet.rows.length).toEqual(1); + expect(axleSpacingResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect(axleSpacingResultSet.rows[0].axles).toEqual("1-2"); + expect(axleSpacingResultSet.rows[0].value).toEqual(1); + + const microfilmResultSet = await executeSql( + `SELECT \`technical_record_id\`, \`microfilmDocumentType\`, \`microfilmRollNumber\`, \`microfilmSerialNumber\` + FROM \`microfilm\` + WHERE \`microfilm\`.\`technical_record_id\` = ${technicalRecordId}` + ); + expect(microfilmResultSet.rows.length).toEqual(1); + expect(microfilmResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect(microfilmResultSet.rows[0].microfilmDocumentType).toEqual( + "PSV Miscellaneous" + ); + expect(microfilmResultSet.rows[0].microfilmRollNumber).toEqual("1"); + expect(microfilmResultSet.rows[0].microfilmSerialNumber).toEqual("1"); + + const platesResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`plateSerialNumber\`, + \`plateIssueDate\`, + \`plateReasonForIssue\`, + \`plateIssuer\` + FROM \`plate\` + WHERE \`plate\`.\`id\` IN ( + SELECT \`id\` + FROM \`plate\` + WHERE \`plate\`.\`technical_record_id\` = ${technicalRecordId} + )` + ); + expect(platesResultSet.rows.length).toEqual(1); + expect(platesResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect(platesResultSet.rows[0].plateSerialNumber).toEqual("1"); + expect( + (platesResultSet.rows[0].plateIssueDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect(platesResultSet.rows[0].plateReasonForIssue).toEqual( + "Free replacement" + ); + expect(platesResultSet.rows[0].plateIssuer).toEqual("PLATE-ISSUER"); + + const axlesResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`tyre_id\`, + \`axleNumber\`, + \`parkingBrakeMrk\`, + \`kerbWeight\`, + \`ladenWeight\`, + \`gbWeight\`, + \`eecWeight\`, + \`designWeight\`, + \`brakeActuator\`, + \`leverLength\`, + \`springBrakeParking\` + FROM \`axles\` + WHERE \`axles\`.\`id\` IN ( + SELECT \`id\` + FROM \`axles\` + WHERE \`axles\`.\`technical_record_id\` = ${technicalRecordId} + )` + ); + expect(axlesResultSet.rows.length).toEqual(1); + expect(axlesResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect(axlesResultSet.rows[0].tyre_id).toEqual(technicalRecordId); + expect(axlesResultSet.rows[0].axleNumber).toEqual(1); + expect(axlesResultSet.rows[0].parkingBrakeMrk).toEqual(1); + expect(axlesResultSet.rows[0].kerbWeight).toEqual(1); + expect(axlesResultSet.rows[0].ladenWeight).toEqual(1); + expect(axlesResultSet.rows[0].gbWeight).toEqual(1); + expect(axlesResultSet.rows[0].eecWeight).toEqual(1); + expect(axlesResultSet.rows[0].designWeight).toEqual(1); + expect(axlesResultSet.rows[0].brakeActuator).toEqual(1); + expect(axlesResultSet.rows[0].leverLength).toEqual(1); + expect(axlesResultSet.rows[0].springBrakeParking).toEqual(1); + + const authIntoServiceResultSet = await executeSql( + `SELECT \`technical_record_id\`, + \`cocIssueDate\`, + \`dateReceived\`, + \`datePending\`, + \`dateAuthorised\`, + \`dateRejected\` + FROM \`auth_into_service\` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + ); + expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( + technicalRecordId + ); + expect( + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() + ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() + ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() + ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateAuthorised as Date).toUTCString() + ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + expect( + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() + ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + }); + + describe("when adding a new vehicle and changing VRM to a new value, VRM should change on existing vehicle.", () => { + it("A new vehicle is present", async () => { + // arrange - create a record so we can later query for it and assert for is existence + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) + ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-2" }; + techRecordDocumentJsonNew.vin = { S: "VIN2" }; + techRecordDocumentJsonNew.primaryVrm = { S: "VRM7777" }; + const event = { Records: [ { @@ -49,640 +609,79 @@ export const techRecordDocumentConversion = () => "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", eventName: "INSERT", dynamodb: { - NewImage: techRecordDocumentJson, + NewImage: techRecordDocumentJsonNew, }, }), }, ], }; - // array of arrays: event contains array of records, each with array of tech record entities await processStreamEvent(event, exampleContext(), () => { return; }); const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1"` + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\` + FROM \`vehicle\` + WHERE \`system_number\` = "SYSTEM-NUMBER-2"` ); + expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual("SYSTEM-NUMBER-1"); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-1"); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-2" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN2"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM7777"); expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); expect( (vehicleResultSet.rows[0].createdAt as Date).toUTCString() ).not.toBeNull(); // todo This returns null + }); - const vehicleId = vehicleResultSet.rows[0].id; - const technicalRecordSet = await executeSql( - `SELECT \`make_model_id\`, \`vehicle_class_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, \`applicant_detail_id\`, \`purchaser_detail_id\`, \`manufacturer_detail_id\`, \`id\`, \`createdAt\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` - ); - - expect(technicalRecordSet.rows.length).toEqual(1); - expect( - (technicalRecordSet.rows[0].createdAt as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.055Z"); - - const { - make_model_id, - vehicle_class_id, - createdBy_Id, - lastUpdatedBy_Id, - applicant_detail_id, - purchaser_detail_id, - manufacturer_detail_id, - } = technicalRecordSet.rows[0]; - - const technicalRecordId = technicalRecordSet.rows[0].id; - - const makeModelResultSet = await executeSql( - `SELECT \`make\`, - \`model\`, - \`chassisMake\`, - \`chassisModel\`, - \`bodyMake\`, - \`bodyModel\`, - \`modelLiteral\`, - \`bodyTypeCode\`, - \`bodyTypeDescription\`, - \`fuelPropulsionSystem\`, - \`dtpCode\` - FROM \`make_model\` - WHERE \`make_model\`.\`id\` = ${make_model_id}` - ); - expect(makeModelResultSet.rows.length).toEqual(1); - expect(makeModelResultSet.rows[0].make).toEqual("MAKE"); - expect(makeModelResultSet.rows[0].model).toEqual("MODEL"); - expect(makeModelResultSet.rows[0].chassisMake).toEqual("CHASSIS-MAKE"); - expect(makeModelResultSet.rows[0].chassisModel).toEqual("CHASSIS-MODEL"); - expect(makeModelResultSet.rows[0].bodyMake).toEqual("BODY-MAKE"); - expect(makeModelResultSet.rows[0].bodyModel).toEqual("BODY-MODEL"); - expect(makeModelResultSet.rows[0].modelLiteral).toEqual("MODEL-LITERAL"); - expect(makeModelResultSet.rows[0].bodyTypeCode).toEqual("a"); - expect(makeModelResultSet.rows[0].bodyTypeDescription).toEqual( - "articulated" - ); - expect(makeModelResultSet.rows[0].fuelPropulsionSystem).toEqual( - "DieselPetrol" - ); - expect(makeModelResultSet.rows[0].dtpCode).toEqual(null); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("small"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-2"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-2"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-2" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-2" + it("VRM has changed", async () => { + // arrange - create a record with existing pair of (SystemNumber, VIN) and new VRM so we can later query for it and assert its value + const techRecordDocumentJsonNew = JSON.parse( + JSON.stringify(techRecordDocumentJson) ); + techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-2" }; + techRecordDocumentJsonNew.vin = { S: "VIN2" }; + techRecordDocumentJsonNew.primaryVrm = { S: "VRM888NEW" }; - const contactDetailsResultSet = await executeSql( - `SELECT \`name\`, - \`address1\`, - \`address2\`, - \`postTown\`, - \`address3\`, - \`postCode\`, - \`emailAddress\`, - \`telephoneNumber\`, - \`faxNumber\` - FROM \`contact_details\` - WHERE \`contact_details\`.\`id\` = ${applicant_detail_id}` - ); + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }, + ], + }; + // array of arrays: event contains array of records, each with array of tech record entities + await processStreamEvent(event, exampleContext(), () => { + return; + }); - const contactIds = [ - applicant_detail_id, - manufacturer_detail_id, - purchaser_detail_id, - ]; - expect(contactIds.every((id) => contactIds[0] === id)).toBe(true); - - expect(contactDetailsResultSet.rows.length).toEqual(1); - expect(contactDetailsResultSet.rows[0].name).toEqual("NAME"); - expect(contactDetailsResultSet.rows[0].address1).toEqual("ADDRESS-1"); - expect(contactDetailsResultSet.rows[0].address2).toEqual("ADDRESS-2"); - expect(contactDetailsResultSet.rows[0].postTown).toEqual("POST-TOWN"); - expect(contactDetailsResultSet.rows[0].address3).toEqual("ADDRESS-3"); - expect(contactDetailsResultSet.rows[0].postCode).toEqual("POST-CODE"); - expect(contactDetailsResultSet.rows[0].emailAddress).toEqual( - "EMAIL-ADDRESS" - ); - expect(contactDetailsResultSet.rows[0].telephoneNumber).toEqual( - "TELEPHONE-NUMBER" - ); - expect(contactDetailsResultSet.rows[0].faxNumber).toEqual("FAX-NUMBER"); - - const techRecordResultSet = await executeSql( - `SELECT \`vehicle_id\`, - \`recordCompleteness\`, - \`createdAt\`, - \`lastUpdatedAt\`, - \`make_model_id\`, - \`functionCode\`, - \`offRoad\`, - \`numberOfWheelsDriven\`, - \`regnDate\`, - \`unladenWeight\`, - \`emissionsLimit\`, - \`departmentalVehicleMarker\`, - \`alterationMarker\`, - \`vehicle_class_id\`, - \`variantVersionNumber\`, - \`grossEecWeight\`, - \`trainEecWeight\`, - \`maxTrainEecWeight\`, - \`applicant_detail_id\`, - \`purchaser_detail_id\`, - \`manufacturer_detail_id\`, - \`manufactureYear\`, - \`firstUseDate\`, - \`coifDate\`, - \`ntaNumber\`, - \`coifSerialNumber\`, - \`coifCertifierName\`, - \`approvalType\`, - \`approvalTypeNumber\`, - \`variantNumber\`, - \`conversionRefNo\`, - \`seatsLowerDeck\`, - \`seatsUpperDeck\`, - \`standingCapacity\`, - \`speedRestriction\`, - \`speedLimiterMrk\`, - \`tachoExemptMrk\`, - \`dispensations\`, - \`remarks\`, - \`reasonForCreation\`, - \`statusCode\`, - \`grossKerbWeight\`, - \`grossLadenWeight\`, - \`grossGbWeight\`, - \`grossDesignWeight\`, - \`trainGbWeight\`, - \`trainDesignWeight\`, - \`maxTrainGbWeight\`, - \`maxTrainDesignWeight\`, - \`maxLoadOnCoupling\`, - \`frameDescription\`, - \`tyreUseCode\`, - \`roadFriendly\`, - \`drawbarCouplingFitted\`, - \`euroStandard\`, - \`suspensionType\`, - \`couplingType\`, - \`length\`, - \`height\`, - \`width\`, - \`frontAxleTo5thWheelMin\`, - \`frontAxleTo5thWheelMax\`, - \`frontVehicleTo5thWheelCouplingMin\`, - \`frontVehicleTo5thWheelCouplingMax\`, - \`frontAxleToRearAxle\`, - \`rearAxleToRearTrl\`, - \`couplingCenterToRearAxleMin\`, - \`couplingCenterToRearAxleMax\`, - \`couplingCenterToRearTrlMin\`, - \`couplingCenterToRearTrlMax\`, - \`centreOfRearmostAxleToRearOfTrl\`, - \`notes\`, - \`purchaserNotes\`, - \`manufacturerNotes\`, - \`noOfAxles\`, - \`brakeCode\`, - \`brakes_dtpNumber\`, - \`brakes_loadSensingValve\`, - \`brakes_antilockBrakingSystem\`, - \`createdBy_Id\`, - \`lastUpdatedBy_Id\`, - \`updateType\`, - \`numberOfSeatbelts\`, - \`seatbeltInstallationApprovalDate\` - FROM \`technical_record\` - WHERE \`technical_record\`.\`id\` = ${technicalRecordId}` - ); - // check a few fields of different types here - expect(techRecordResultSet.rows[0].vehicle_id).toEqual(vehicleId); - expect(techRecordResultSet.rows[0].recordCompleteness).toEqual( - "88888888" - ); - expect( - (techRecordResultSet.rows[0].createdAt as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect( - (techRecordResultSet.rows[0].lastUpdatedAt as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(techRecordResultSet.rows[0].make_model_id).toEqual(1); - expect(techRecordResultSet.rows[0].functionCode).toEqual("1"); - expect(techRecordResultSet.rows[0].offRoad).toEqual(1); - expect(techRecordResultSet.rows[0].numberOfWheelsDriven).toEqual(1); - expect( - (techRecordResultSet.rows[0].regnDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(techRecordResultSet.rows[0].unladenWeight).toEqual(1); - expect(techRecordResultSet.rows[0].emissionsLimit).toEqual("1"); - expect(techRecordResultSet.rows[0].departmentalVehicleMarker).toEqual(1); - expect(techRecordResultSet.rows[0].alterationMarker).toEqual(1); - expect(techRecordResultSet.rows[0].vehicle_class_id).toEqual( - vehicle_class_id - ); - expect(techRecordResultSet.rows[0].variantVersionNumber).toEqual("1"); - expect(techRecordResultSet.rows[0].grossEecWeight).toEqual(1); - expect(techRecordResultSet.rows[0].trainEecWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxTrainEecWeight).toEqual(1); - expect(techRecordResultSet.rows[0].applicant_detail_id).toEqual(1); - expect(techRecordResultSet.rows[0].purchaser_detail_id).toEqual(1); - expect(techRecordResultSet.rows[0].manufacturer_detail_id).toEqual(1); - expect(techRecordResultSet.rows[0].manufactureYear).toEqual(2020); - expect( - (techRecordResultSet.rows[0].firstUseDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect( - (techRecordResultSet.rows[0].coifDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(techRecordResultSet.rows[0].ntaNumber).toEqual("NTA-NUMBER"); - expect(techRecordResultSet.rows[0].coifSerialNumber).toEqual("88888888"); - expect(techRecordResultSet.rows[0].coifCertifierName).toEqual( - "COIF-CERTIFIER-NAME" - ); - expect(techRecordResultSet.rows[0].approvalType).toEqual("NTA"); - expect(techRecordResultSet.rows[0].approvalTypeNumber).toEqual("1"); - expect(techRecordResultSet.rows[0].variantNumber).toEqual("1"); - expect(techRecordResultSet.rows[0].conversionRefNo).toEqual("1010101010"); - expect(techRecordResultSet.rows[0].seatsLowerDeck).toEqual(1); - expect(techRecordResultSet.rows[0].seatsUpperDeck).toEqual(1); - expect(techRecordResultSet.rows[0].standingCapacity).toEqual(1); - expect(techRecordResultSet.rows[0].speedRestriction).toEqual(1); - expect(techRecordResultSet.rows[0].speedLimiterMrk).toEqual(1); - expect(techRecordResultSet.rows[0].tachoExemptMrk).toEqual(1); - expect(techRecordResultSet.rows[0].dispensations).toEqual( - "DISPENSATIONS" - ); - expect(techRecordResultSet.rows[0].remarks).toEqual("REMARKS"); - expect(techRecordResultSet.rows[0].reasonForCreation).toEqual( - "REASON-FOR-CREATION" - ); - expect(techRecordResultSet.rows[0].statusCode).toEqual("STATUS-CODE"); - expect(techRecordResultSet.rows[0].grossKerbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].grossLadenWeight).toEqual(1); - expect(techRecordResultSet.rows[0].grossGbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].grossDesignWeight).toEqual(1); - expect(techRecordResultSet.rows[0].trainGbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].trainDesignWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxTrainGbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxTrainDesignWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxLoadOnCoupling).toEqual(1); - expect(techRecordResultSet.rows[0].frameDescription).toEqual( - "Channel section" - ); - expect(techRecordResultSet.rows[0].tyreUseCode).toEqual("22"); - expect(techRecordResultSet.rows[0].roadFriendly).toEqual(1); - expect(techRecordResultSet.rows[0].drawbarCouplingFitted).toEqual(1); - expect(techRecordResultSet.rows[0].euroStandard).toEqual("euroStd"); - expect(techRecordResultSet.rows[0].suspensionType).toEqual("1"); - expect(techRecordResultSet.rows[0].couplingType).toEqual("1"); - expect(techRecordResultSet.rows[0].length).toEqual(1); - expect(techRecordResultSet.rows[0].height).toEqual(1); - expect(techRecordResultSet.rows[0].width).toEqual(1); - expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMin).toEqual(1); - expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMax).toEqual(1); - expect( - techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMin - ).toEqual(1); - expect( - techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMax - ).toEqual(1); - expect(techRecordResultSet.rows[0].frontAxleToRearAxle).toEqual(1); - expect(techRecordResultSet.rows[0].rearAxleToRearTrl).toEqual(1); - expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMin).toEqual( - 1 - ); - expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMax).toEqual( - 1 - ); - expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMin).toEqual(1); - expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMax).toEqual(1); - expect( - techRecordResultSet.rows[0].centreOfRearmostAxleToRearOfTrl - ).toEqual(1); - expect(techRecordResultSet.rows[0].notes).toEqual("NOTES"); - expect(techRecordResultSet.rows[0].purchaserNotes).toEqual( - "PURCHASER-NOTES" - ); - expect(techRecordResultSet.rows[0].manufacturerNotes).toEqual( - "MANUFACTURER-NOTES" - ); - expect(techRecordResultSet.rows[0].noOfAxles).toEqual(1); - expect(techRecordResultSet.rows[0].brakeCode).toEqual("1"); - expect(techRecordResultSet.rows[0].brakes_dtpNumber).toEqual("666666"); - expect(techRecordResultSet.rows[0].brakes_loadSensingValve).toEqual(1); - expect(techRecordResultSet.rows[0].brakes_antilockBrakingSystem).toEqual( - 1 - ); - expect(techRecordResultSet.rows[0].updateType).toEqual("adrUpdate"); - expect(techRecordResultSet.rows[0].numberOfSeatbelts).toEqual( - "NUMBER-OF-SEATBELTS" - ); - expect( - (techRecordResultSet.rows[0] - .seatbeltInstallationApprovalDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - - const brakesResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`brakeCodeOriginal\`, - \`brakeCode\`, - \`dataTrBrakeOne\`, - \`dataTrBrakeTwo\`, - \`dataTrBrakeThree\`, - \`retarderBrakeOne\`, - \`retarderBrakeTwo\`, - \`serviceBrakeForceA\`, - \`secondaryBrakeForceA\`, - \`parkingBrakeForceA\`, - \`serviceBrakeForceB\`, - \`secondaryBrakeForceB\`, - \`parkingBrakeForceB\` - FROM \`psv_brakes\` - WHERE \`psv_brakes\`.\`technical_record_id\` = ${technicalRecordId}` - ); - expect(brakesResultSet.rows.length).toEqual(1); - expect(brakesResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect(brakesResultSet.rows[0].brakeCodeOriginal).toEqual("333"); - expect(brakesResultSet.rows[0].brakeCode).toEqual("666666"); - expect(brakesResultSet.rows[0].dataTrBrakeOne).toEqual( - "DATA-TR-BRAKE-ONE" - ); - expect(brakesResultSet.rows[0].dataTrBrakeTwo).toEqual( - "DATA-TR-BRAKE-TWO" - ); - expect(brakesResultSet.rows[0].dataTrBrakeThree).toEqual( - "DATA-TR-BRAKE-THREE" - ); - expect(brakesResultSet.rows[0].retarderBrakeOne).toEqual("electric"); - expect(brakesResultSet.rows[0].retarderBrakeTwo).toEqual("electric"); - expect(brakesResultSet.rows[0].serviceBrakeForceA).toEqual(1); - expect(brakesResultSet.rows[0].secondaryBrakeForceA).toEqual(1); - expect(brakesResultSet.rows[0].parkingBrakeForceA).toEqual(1); - expect(brakesResultSet.rows[0].serviceBrakeForceB).toEqual(1); - expect(brakesResultSet.rows[0].secondaryBrakeForceB).toEqual(1); - expect(brakesResultSet.rows[0].parkingBrakeForceB).toEqual(1); - - const axleSpacingResultSet = await executeSql( - `SELECT \`technical_record_id\`, \`axles\`, \`value\` - FROM \`axle_spacing\` - WHERE \`axle_spacing\`.\`id\` IN ( - SELECT \`id\` - FROM \`axle_spacing\` - WHERE \`axle_spacing\`.\`technical_record_id\` = ${technicalRecordId} - )` - ); - expect(axleSpacingResultSet.rows.length).toEqual(1); - expect(axleSpacingResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\` + FROM \`vehicle\` + WHERE \`system_number\` = "SYSTEM-NUMBER-2"` ); - expect(axleSpacingResultSet.rows[0].axles).toEqual("1-2"); - expect(axleSpacingResultSet.rows[0].value).toEqual(1); - const microfilmResultSet = await executeSql( - `SELECT \`technical_record_id\`, \`microfilmDocumentType\`, \`microfilmRollNumber\`, \`microfilmSerialNumber\` - FROM \`microfilm\` - WHERE \`microfilm\`.\`technical_record_id\` = ${technicalRecordId}` - ); - expect(microfilmResultSet.rows.length).toEqual(1); - expect(microfilmResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect(microfilmResultSet.rows[0].microfilmDocumentType).toEqual( - "PSV Miscellaneous" - ); - expect(microfilmResultSet.rows[0].microfilmRollNumber).toEqual("1"); - expect(microfilmResultSet.rows[0].microfilmSerialNumber).toEqual("1"); - - const platesResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`plateSerialNumber\`, - \`plateIssueDate\`, - \`plateReasonForIssue\`, - \`plateIssuer\` - FROM \`plate\` - WHERE \`plate\`.\`id\` IN ( - SELECT \`id\` - FROM \`plate\` - WHERE \`plate\`.\`technical_record_id\` = ${technicalRecordId} - )` - ); - expect(platesResultSet.rows.length).toEqual(1); - expect(platesResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect(platesResultSet.rows[0].plateSerialNumber).toEqual("1"); - expect( - (platesResultSet.rows[0].plateIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(platesResultSet.rows[0].plateReasonForIssue).toEqual( - "Free replacement" - ); - expect(platesResultSet.rows[0].plateIssuer).toEqual("PLATE-ISSUER"); - - const axlesResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`tyre_id\`, - \`axleNumber\`, - \`parkingBrakeMrk\`, - \`kerbWeight\`, - \`ladenWeight\`, - \`gbWeight\`, - \`eecWeight\`, - \`designWeight\`, - \`brakeActuator\`, - \`leverLength\`, - \`springBrakeParking\` - FROM \`axles\` - WHERE \`axles\`.\`id\` IN ( - SELECT \`id\` - FROM \`axles\` - WHERE \`axles\`.\`technical_record_id\` = ${technicalRecordId} - )` - ); - expect(axlesResultSet.rows.length).toEqual(1); - expect(axlesResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId - ); - expect(axlesResultSet.rows[0].tyre_id).toEqual(technicalRecordId); - expect(axlesResultSet.rows[0].axleNumber).toEqual(1); - expect(axlesResultSet.rows[0].parkingBrakeMrk).toEqual(1); - expect(axlesResultSet.rows[0].kerbWeight).toEqual(1); - expect(axlesResultSet.rows[0].ladenWeight).toEqual(1); - expect(axlesResultSet.rows[0].gbWeight).toEqual(1); - expect(axlesResultSet.rows[0].eecWeight).toEqual(1); - expect(axlesResultSet.rows[0].designWeight).toEqual(1); - expect(axlesResultSet.rows[0].brakeActuator).toEqual(1); - expect(axlesResultSet.rows[0].leverLength).toEqual(1); - expect(axlesResultSet.rows[0].springBrakeParking).toEqual(1); - - const authIntoServiceResultSet = await executeSql( - `SELECT \`technical_record_id\`, - \`cocIssueDate\`, - \`dateReceived\`, - \`datePending\`, - \`dateAuthorised\`, - \`dateRejected\` - FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` - ); - expect(authIntoServiceResultSet.rows.length).toEqual(1); - expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-2" ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN2"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM888NEW"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); - expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); - }); - - describe("when adding a new vehicle and changing VRM to a new value, VRM should change on existing vehicle.", () => { - it("A new vehicle is present", async () => { - // arrange - create a record so we can later query for it and assert for is existence - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-2" }; - techRecordDocumentJsonNew.vin = { S: "VIN2" }; - techRecordDocumentJsonNew.primaryVrm = { S: "VRM7777" }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - // array of arrays: event contains array of records, each with array of tech record entities - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\` - FROM \`vehicle\` - WHERE \`system_number\` = "SYSTEM-NUMBER-2"` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-2" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN2"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM7777"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); // todo This returns null - }); - - it("VRM has changed", async () => { - // arrange - create a record with existing pair of (SystemNumber, VIN) and new VRM so we can later query for it and assert its value - const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) - ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-2" }; - techRecordDocumentJsonNew.vin = { S: "VIN2" }; - techRecordDocumentJsonNew.primaryVrm = { S: "VRM888NEW" }; - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }, - ], - }; - // array of arrays: event contains array of records, each with array of tech record entities - await processStreamEvent(event, exampleContext(), () => { - return; - }); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\` - FROM \`vehicle\` - WHERE \`system_number\` = "SYSTEM-NUMBER-2"` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-2" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN2"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM888NEW"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); // todo This returns null - }); + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); // todo This returns null }); }); +}); diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index 2956024..f7d40d1 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -11,1798 +11,1797 @@ import { marshall, unmarshall } from "@aws-sdk/util-dynamodb"; useLocalDb(); -export const testResultsConversionWithDelete = () => - describe("convertTestResults() integration tests with delete", async () => { - let container: StartedTestContainer; - const testResultsJson = JSON.parse( - JSON.stringify(require("../resources/dynamodb-image-test-results.json")) - ); - const testResultsJsonWithTestTypes = JSON.parse( - JSON.stringify( - require("../resources/dynamodb-image-test-results-with-testtypes.json") - ) - ); - const testResultsJsonWithNoSystemNumber = JSON.parse( - JSON.stringify( - require("../resources/dynamodb-image-test-results-with-no-systemNumber.json") - ) - ); - const testResultsJsonWithoutTestTypes = JSON.parse( - JSON.stringify( - require("../resources/dynamodb-image-test-results-without-testtypes.json") - ) - ); - testResultsJson.testResultId.S = testResultsJson.testResultId.S + "-D"; - testResultsJson.systemNumber.S = testResultsJson.systemNumber.S + "-D"; - testResultsJsonWithTestTypes.testResultId.S = - testResultsJsonWithTestTypes.testResultId.S + "-D"; - testResultsJsonWithTestTypes.systemNumber.S = - testResultsJsonWithTestTypes.systemNumber.S + "-D"; - testResultsJsonWithNoSystemNumber.testResultId.S = - testResultsJsonWithNoSystemNumber.testResultId.S + "-D"; - testResultsJsonWithoutTestTypes.testResultId.S = - testResultsJsonWithoutTestTypes.testResultId.S + "-D"; - testResultsJsonWithoutTestTypes.systemNumber.S = - testResultsJsonWithoutTestTypes.systemNumber.S + "-D"; - - beforeAll(async () => { - delete process.env.DISABLE_DELETE_ON_UPDATE; - jest.setTimeout(60_000); - jest.restoreAllMocks(); - - // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - container = await getContainerizedDatabase(); - } else { - (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", - }); - } - }); +describe("convertTestResults() integration tests with delete", () => { + let container: StartedTestContainer; + const testResultsJson = JSON.parse( + JSON.stringify(require("../resources/dynamodb-image-test-results.json")) + ); + const testResultsJsonWithTestTypes = JSON.parse( + JSON.stringify( + require("../resources/dynamodb-image-test-results-with-testtypes.json") + ) + ); + const testResultsJsonWithNoSystemNumber = JSON.parse( + JSON.stringify( + require("../resources/dynamodb-image-test-results-with-no-systemNumber.json") + ) + ); + const testResultsJsonWithoutTestTypes = JSON.parse( + JSON.stringify( + require("../resources/dynamodb-image-test-results-without-testtypes.json") + ) + ); + testResultsJson.testResultId.S = testResultsJson.testResultId.S + "-D"; + testResultsJson.systemNumber.S = testResultsJson.systemNumber.S + "-D"; + testResultsJsonWithTestTypes.testResultId.S = + testResultsJsonWithTestTypes.testResultId.S + "-D"; + testResultsJsonWithTestTypes.systemNumber.S = + testResultsJsonWithTestTypes.systemNumber.S + "-D"; + testResultsJsonWithNoSystemNumber.testResultId.S = + testResultsJsonWithNoSystemNumber.testResultId.S + "-D"; + testResultsJsonWithoutTestTypes.testResultId.S = + testResultsJsonWithoutTestTypes.testResultId.S + "-D"; + testResultsJsonWithoutTestTypes.systemNumber.S = + testResultsJsonWithoutTestTypes.systemNumber.S + "-D"; + + beforeAll(async () => { + delete process.env.DISABLE_DELETE_ON_UPDATE; + jest.setTimeout(60_000); + jest.restoreAllMocks(); + + // see README for why this environment variable exists + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + container = await getContainerizedDatabase(); + } else { + (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ + host: "localhost", + port: "3306", + user: "root", + password: "12345", + database: "CVSBNOP", + }); + } + }); - afterAll(async () => { - await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - await container.stop(); - } + afterAll(async () => { + await destroyConnectionPool(); + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + await container.stop(); + } + }); + + it("should correctly convert a DynamoDB event into Aurora rows", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }), + }, + ], + }; + + // array of arrays: event contains array of records, each with array of test result entities + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should correctly convert a DynamoDB event into Aurora rows", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }), - }, - ], - }; - - // array of arrays: event contains array of records, each with array of test result entities - await processStreamEvent(event, exampleContext(), () => { - return; - }); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" - ); - expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); - expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" - ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" - ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" - ); - - expect(testResultSet.rows.length).toEqual(1); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); - }); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-D" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); - it("should correctly convert a DynamoDB event into Aurora rows when processed a second time", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }), - }, - ], - }; - - const consoleSpy = jest - .spyOn(global.console, "error") - .mockImplementation(); - await processStreamEvent(event, exampleContext(), () => { - return; - }); + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("333"); + expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "2ND-CERTIFICATE-NO" + ); + expect( + (testResultSet.rows[0].testExpiryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.023Z"); + expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); + expect(testResultSet.rows[0].testResult).toEqual("fail"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual( + "PARTICULATE-TRAP-FITTED" + ); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( + "PARTICULATE-TRAP-SERIAL-NUMBER" + ); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "SMOKE-TEST-K-LIMIT-APPLIED" + ); - expect(consoleSpy).toBeCalledTimes(0); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" - ); - expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); - expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" - ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" - ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" - ); - - expect(testResultSet.rows.length).toEqual(1); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); - }); + expect(testResultSet.rows.length).toEqual(1); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); - it("should correctly update when non-unique attributes changed", async () => { - const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testCode = "444"; - deserializedJson.testTypes[0].certificateNumber = "W323232"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-01"; - deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; - - const serializedJSONb = marshall(deserializedJson); - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("444"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W323232"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" - ); - expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-01") - ); - expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-01") - ); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" - ); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(1); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("should correctly convert a DynamoDB event into Aurora rows when processed a second time", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }), + }, + ], + }; + + const consoleSpy = jest + .spyOn(global.console, "error") + .mockImplementation(); + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should correctly insert when unique attributes changed", async () => { - const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testNumber = "NewTestNumber"; - deserializedJson.testTypes[0].testCode = "555"; - deserializedJson.testTypes[0].certificateNumber = "W43434343"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-02"; - deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; - deserializedJson.testTypes[0].defects[0].imDescription = - "IM-DESCRIPTION-5a"; - - const serializedJSONb = marshall(deserializedJson); - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); + expect(consoleSpy).toBeCalledTimes(0); + + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-D" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("333"); + expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "2ND-CERTIFICATE-NO" + ); + expect( + (testResultSet.rows[0].testExpiryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.023Z"); + expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); + expect(testResultSet.rows[0].testResult).toEqual("fail"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual( + "PARTICULATE-TRAP-FITTED" + ); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( + "PARTICULATE-TRAP-SERIAL-NUMBER" + ); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "SMOKE-TEST-K-LIMIT-APPLIED" + ); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("555"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W43434343"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" - ); - expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-02") - ); - expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-02") - ); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); - expect( - (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" - ); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(2); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual( - "IM-DESCRIPTION-5a" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + expect(testResultSet.rows.length).toEqual(1); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(1); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("should correctly update when non-unique attributes changed", async () => { + const deserializedJson = unmarshall(testResultsJson); + deserializedJson.testTypes[0].testCode = "444"; + deserializedJson.testTypes[0].certificateNumber = "W323232"; + deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; + deserializedJson.testTypes[0].testExpiryDate = "2022-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].testAnniversaryDate = + "2022-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].testTypeStartTimestamp = + "2021-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = + "2021-01-01"; + deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; + deserializedJson.testTypes[0].testResult = "pass"; + deserializedJson.testTypes[0].reasonForAbandoning = + "NEW-REASON-FOR-ABANDONING"; + deserializedJson.testTypes[0].additionalNotesRecorded = + "NEW-ADDITIONAL-NOTES-RECORDED"; + deserializedJson.testTypes[0].additionalCommentsForAbandon = + "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; + deserializedJson.testTypes[0].particulateTrapFitted = "t"; + deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; + deserializedJson.testTypes[0].modificationTypeUsed = + "NEW-MODIFICATION-TYPE-USED"; + deserializedJson.testTypes[0].smokeTestKLimitApplied = + "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; + + const serializedJSONb = marshall(deserializedJson); + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("A new Test Result with two TestTypes is inserted correctly", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-D" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("444"); + expect(testResultSet.rows[0].certificateNumber).toEqual("W323232"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "111111" + ); + expect(testResultSet.rows[0].testExpiryDate).toEqual( + new Date("2022-01-01") + ); + expect(testResultSet.rows[0].testAnniversaryDate).toEqual( + new Date("2022-01-01") + ); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2021-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0] + .lastSeatbeltInstallationCheckDate as Date).toISOString() + ).toEqual("2021-01-01T00:00:00.000Z"); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); + expect(testResultSet.rows[0].testResult).toEqual("pass"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "NEW-REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "NEW-ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "NEW-MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + ); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(1); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithTestTypes.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-3-D" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN3"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-3"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-3"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` - ); - - expect(testResultSet.rows.length).toEqual(2); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-3-D"); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" - ); - expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2020-01-01") - ); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2020-01-01T16:54:44.123Z"); - expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" - ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" - ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" - ); - - expect(testResultSet.rows[1].testResultId).toEqual("TEST-RESULT-ID-3-D"); - expect(testResultSet.rows[1].testCode).toEqual("aav"); - expect(testResultSet.rows[1].certificateNumber).toEqual("W123123"); - expect(testResultSet.rows[1].secondaryCertificateNumber).toBeNull(); - expect(testResultSet.rows[1].testExpiryDate).toEqual( - new Date(2022, 5, 30) - ); - expect(testResultSet.rows[1].testAnniversaryDate).toEqual( - new Date(2022, 5, 30) - ); - expect( - (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:07:22.000Z"); - expect( - (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:59:07.000Z"); - expect( - testResultSet.rows[1].lastSeatbeltInstallationCheckDate - ).toBeNull(); - expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[1].testResult).toEqual("pass"); - expect(testResultSet.rows[1].reasonForAbandoning).toBeNull(); - expect(testResultSet.rows[1].additionalNotesRecorded).toEqual( - "No emission plate default 0.70" - ); - expect(testResultSet.rows[1].particulateTrapFitted).toBeNull(); - expect(testResultSet.rows[1].particulateTrapSerialNumber).toBeNull(); - expect(testResultSet.rows[1].modificationTypeUsed).toBeNull(); - expect(testResultSet.rows[1].smokeTestKLimitApplied).toBeNull(); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-3"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-3"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-3"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-3" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-3"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-3"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-3"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-3" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-3" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - const testDefectLastIndex = testDefectResultSet.rows.length - 1; - - expect( - testDefectResultSet.rows[testDefectLastIndex].test_result_id - ).toEqual(id); - expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toEqual( - 3 - ); - expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toEqual( - 1 - ); - expect(testDefectResultSet.rows[testDefectLastIndex].notes).toEqual( - "NOTES" - ); - expect(testDefectResultSet.rows[testDefectLastIndex].prs).toEqual(1); - expect( - testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued - ).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(3); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-3"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-3" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-3"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-3" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def3"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-3"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-3"); + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("should correctly insert when unique attributes changed", async () => { + const deserializedJson = unmarshall(testResultsJson); + deserializedJson.testTypes[0].testNumber = "NewTestNumber"; + deserializedJson.testTypes[0].testCode = "555"; + deserializedJson.testTypes[0].certificateNumber = "W43434343"; + deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; + deserializedJson.testTypes[0].testExpiryDate = "2022-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].testAnniversaryDate = + "2022-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].testTypeStartTimestamp = + "2021-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = + "2021-01-02"; + deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; + deserializedJson.testTypes[0].testResult = "pass"; + deserializedJson.testTypes[0].reasonForAbandoning = + "NEW-REASON-FOR-ABANDONING"; + deserializedJson.testTypes[0].additionalNotesRecorded = + "NEW-ADDITIONAL-NOTES-RECORDED"; + deserializedJson.testTypes[0].additionalCommentsForAbandon = + "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; + deserializedJson.testTypes[0].particulateTrapFitted = "t"; + deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; + deserializedJson.testTypes[0].modificationTypeUsed = + "NEW-MODIFICATION-TYPE-USED"; + deserializedJson.testTypes[0].smokeTestKLimitApplied = + "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; + deserializedJson.testTypes[0].defects[0].imDescription = + "IM-DESCRIPTION-5a"; + + const serializedJSONb = marshall(deserializedJson); + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("A new Test Result with no systemNumber throws an error", async () => { - const event = { - Records: [ - { - messageId: "faf41ab1-5b42-462c-b242-c4450e15c724", - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, - }), - }, - ], - }; - - const consoleSpy = jest - .spyOn(global.console, "error") - .mockImplementation(); - const returnValue = await processStreamEvent( - event, - exampleContext(), - () => { - return; - } - ); - - const expectedValue = { - batchItemFailures: [ - { itemIdentifier: "faf41ab1-5b42-462c-b242-c4450e15c724" }, - ], - }; - - expect(returnValue).toEqual(expectedValue); - expect(consoleSpy).nthCalledWith( - 1, - "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", - [ - "messageId: faf41ab1-5b42-462c-b242-c4450e15c724", - new Error("result is missing required field 'systemNumber'"), - ] - ); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-D" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("555"); + expect(testResultSet.rows[0].certificateNumber).toEqual("W43434343"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "111111" + ); + expect(testResultSet.rows[0].testExpiryDate).toEqual( + new Date("2022-01-02") + ); + expect(testResultSet.rows[0].testAnniversaryDate).toEqual( + new Date("2022-01-02") + ); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2021-01-02T00:00:00.000Z"); + expect( + (testResultSet.rows[0] + .lastSeatbeltInstallationCheckDate as Date).toISOString() + ).toEqual("2021-01-02T00:00:00.000Z"); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); + expect(testResultSet.rows[0].testResult).toEqual("pass"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "NEW-REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "NEW-ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "NEW-MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + ); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(2); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual( + "IM-DESCRIPTION-5a" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("A new Test Result with two TestTypes is inserted correctly", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("A new Test Result with no TestTypes is inserted correctly", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithTestTypes.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-3-D" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN3"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-3"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-3"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} + ORDER BY id ASC` + ); + + expect(testResultSet.rows.length).toEqual(2); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-3-D"); + expect(testResultSet.rows[0].testCode).toEqual("333"); + expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "2ND-CERTIFICATE-NO" + ); + expect(testResultSet.rows[0].testExpiryDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].testAnniversaryDate).toEqual( + new Date("2020-01-01") + ); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString() + ).toEqual("2020-01-01T16:54:44.123Z"); + expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); + expect(testResultSet.rows[0].testResult).toEqual("fail"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual( + "PARTICULATE-TRAP-FITTED" + ); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( + "PARTICULATE-TRAP-SERIAL-NUMBER" + ); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "SMOKE-TEST-K-LIMIT-APPLIED" + ); + + expect(testResultSet.rows[1].testResultId).toEqual("TEST-RESULT-ID-3-D"); + expect(testResultSet.rows[1].testCode).toEqual("aav"); + expect(testResultSet.rows[1].certificateNumber).toEqual("W123123"); + expect(testResultSet.rows[1].secondaryCertificateNumber).toBeNull(); + expect(testResultSet.rows[1].testExpiryDate).toEqual( + new Date(2022, 5, 30) + ); + expect(testResultSet.rows[1].testAnniversaryDate).toEqual( + new Date(2022, 5, 30) + ); + expect( + (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2021-06-21T12:07:22.000Z"); + expect( + (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString() + ).toEqual("2021-06-21T12:59:07.000Z"); + expect( + testResultSet.rows[1].lastSeatbeltInstallationCheckDate + ).toBeNull(); + expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toEqual(0); + expect(testResultSet.rows[1].testResult).toEqual("pass"); + expect(testResultSet.rows[1].reasonForAbandoning).toBeNull(); + expect(testResultSet.rows[1].additionalNotesRecorded).toEqual( + "No emission plate default 0.70" + ); + expect(testResultSet.rows[1].particulateTrapFitted).toBeNull(); + expect(testResultSet.rows[1].particulateTrapSerialNumber).toBeNull(); + expect(testResultSet.rows[1].modificationTypeUsed).toBeNull(); + expect(testResultSet.rows[1].smokeTestKLimitApplied).toBeNull(); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-3"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-3"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("999999998"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-3"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-3" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("v"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "heavy goods vehicle" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-3"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-3"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-3"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-3" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-3" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + const testDefectLastIndex = testDefectResultSet.rows.length - 1; + + expect( + testDefectResultSet.rows[testDefectLastIndex].test_result_id + ).toEqual(id); + expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toEqual( + 3 + ); + expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toEqual( + 1 + ); + expect(testDefectResultSet.rows[testDefectLastIndex].notes).toEqual( + "NOTES" + ); + expect(testDefectResultSet.rows[testDefectLastIndex].prs).toEqual(1); + expect( + testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued + ).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(3); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-3"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-3" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-3"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-3" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def3"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-3"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-3"); + }); + + it("A new Test Result with no systemNumber throws an error", async () => { + const event = { + Records: [ + { + messageId: "faf41ab1-5b42-462c-b242-c4450e15c724", + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, + }), + }, + ], + }; + + const consoleSpy = jest + .spyOn(global.console, "error") + .mockImplementation(); + const returnValue = await processStreamEvent( + event, + exampleContext(), + () => { return; - }); + } + ); + + const expectedValue = { + batchItemFailures: [ + { itemIdentifier: "faf41ab1-5b42-462c-b242-c4450e15c724" }, + ], + }; + + expect(returnValue).toEqual(expectedValue); + expect(consoleSpy).nthCalledWith( + 1, + "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", + [ + "messageId: faf41ab1-5b42-462c-b242-c4450e15c724", + new Error("result is missing required field 'systemNumber'"), + ] + ); + }); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithoutTestTypes.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-4-D" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN4"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-4"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-4"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` - ); - - expect(testResultSet.rows.length).toEqual(1); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-4-D"); - expect(testResultSet.rows[0].testCode).toBeNull(); - expect(testResultSet.rows[0].certificateNumber).toBeNull(); - expect(testResultSet.rows[0].secondaryCertificateNumber).toBeNull(); - expect(testResultSet.rows[0].testExpiryDate).toBeNull(); - expect(testResultSet.rows[0].testAnniversaryDate).toBeNull(); - expect(testResultSet.rows[0].testTypeStartTimestamp).toBeNull(); - expect(testResultSet.rows[0].testTypeEndTimestamp).toBeNull(); - expect( - testResultSet.rows[0].lastSeatbeltInstallationCheckDate - ).toBeNull(); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBeNull(); - expect(testResultSet.rows[0].testResult).toBeNull(); - expect(testResultSet.rows[0].reasonForAbandoning).toBeNull(); - expect(testResultSet.rows[0].additionalNotesRecorded).toBeNull(); - expect(testResultSet.rows[0].particulateTrapFitted).toBeNull(); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toBeNull(); - expect(testResultSet.rows[0].modificationTypeUsed).toBeNull(); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toBeNull(); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-4"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-4"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-4"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-4" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-4"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-4"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-4"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-4" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-4" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(0); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(0); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - expect(testDefectResultSet.rows.length).toEqual(0); + it("A new Test Result with no TestTypes is inserted correctly", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("After all tests the database has all the expected data", async () => { - const testResultResultSet = await executeSql( - `SELECT id FROM test_result - WHERE testResultId like '%-D';` - ); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithoutTestTypes.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-4-D" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN4"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-4"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-4"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} + ORDER BY id ASC` + ); + + expect(testResultSet.rows.length).toEqual(1); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-4-D"); + expect(testResultSet.rows[0].testCode).toBeNull(); + expect(testResultSet.rows[0].certificateNumber).toBeNull(); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBeNull(); + expect(testResultSet.rows[0].testExpiryDate).toBeNull(); + expect(testResultSet.rows[0].testAnniversaryDate).toBeNull(); + expect(testResultSet.rows[0].testTypeStartTimestamp).toBeNull(); + expect(testResultSet.rows[0].testTypeEndTimestamp).toBeNull(); + expect( + testResultSet.rows[0].lastSeatbeltInstallationCheckDate + ).toBeNull(); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBeNull(); + expect(testResultSet.rows[0].testResult).toBeNull(); + expect(testResultSet.rows[0].reasonForAbandoning).toBeNull(); + expect(testResultSet.rows[0].additionalNotesRecorded).toBeNull(); + expect(testResultSet.rows[0].particulateTrapFitted).toBeNull(); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBeNull(); + expect(testResultSet.rows[0].modificationTypeUsed).toBeNull(); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBeNull(); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-4"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-4"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("999999998"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-4"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-4" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("v"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "heavy goods vehicle" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-4"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-4"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-4"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-4" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-4" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(0); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(0); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + expect(testDefectResultSet.rows.length).toEqual(0); + }); - expect(testResultResultSet.rows.length).toEqual(4); + it("After all tests the database has all the expected data", async () => { + const testResultResultSet = await executeSql( + `SELECT id FROM test_result + WHERE testResultId like '%-D';` + ); - const customDefectResultSet = await executeSql( - `SELECT DISTINCT cd.id FROM custom_defect cd - INNER JOIN test_result tr ON cd.test_result_id = tr.id - WHERE testResultId like '%-D';` - ); + expect(testResultResultSet.rows.length).toEqual(4); - expect(customDefectResultSet.rows.length).toEqual(2); + const customDefectResultSet = await executeSql( + `SELECT DISTINCT cd.id FROM custom_defect cd + INNER JOIN test_result tr ON cd.test_result_id = tr.id + WHERE testResultId like '%-D';` + ); - const testTypeResultSet = await executeSql( - `SELECT DISTINCT tt.id FROM test_type tt - JOIN test_result tr ON tt.id = tr.test_type_id - WHERE testResultId like '%-D';` - ); + expect(customDefectResultSet.rows.length).toEqual(2); - expect(testTypeResultSet.rows.length).toEqual(2); + const testTypeResultSet = await executeSql( + `SELECT DISTINCT tt.id FROM test_type tt + JOIN test_result tr ON tt.id = tr.test_type_id + WHERE testResultId like '%-D';` + ); - const testDefectResultSet = await executeSql( - `SELECT DISTINCT td.id FROM test_defect td - INNER JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-D';` - ); + expect(testTypeResultSet.rows.length).toEqual(2); - expect(testDefectResultSet.rows.length).toEqual(2); + const testDefectResultSet = await executeSql( + `SELECT DISTINCT td.id FROM test_defect td + INNER JOIN test_result tr ON td.test_result_id = tr.id + WHERE testResultId like '%-D';` + ); - const defectResultSet = await executeSql( - `SELECT DISTINCT d.id FROM defect d - JOIN test_defect td ON d.id = td.defect_id - JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-D';` - ); + expect(testDefectResultSet.rows.length).toEqual(2); - expect(defectResultSet.rows.length).toEqual(2); - }); + const defectResultSet = await executeSql( + `SELECT DISTINCT d.id FROM defect d + JOIN test_defect td ON d.id = td.defect_id + JOIN test_result tr ON td.test_result_id = tr.id + WHERE testResultId like '%-D';` + ); + + expect(defectResultSet.rows.length).toEqual(2); }); +}); diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index c832caf..8f4f0f6 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -11,1798 +11,1797 @@ import { marshall, unmarshall } from "@aws-sdk/util-dynamodb"; useLocalDb(); -export const testResultsConversionWithUpsert = () => - describe("convertTestResults() integration tests with upsert", () => { - let container: StartedTestContainer; - const testResultsJson = JSON.parse( - JSON.stringify(require("../resources/dynamodb-image-test-results.json")) - ); - const testResultsJsonWithTestTypes = JSON.parse( - JSON.stringify( - require("../resources/dynamodb-image-test-results-with-testtypes.json") - ) - ); - const testResultsJsonWithNoSystemNumber = JSON.parse( - JSON.stringify( - require("../resources/dynamodb-image-test-results-with-no-systemNumber.json") - ) - ); - const testResultsJsonWithoutTestTypes = JSON.parse( - JSON.stringify( - require("../resources/dynamodb-image-test-results-without-testtypes.json") - ) - ); - testResultsJson.testResultId.S = testResultsJson.testResultId.S + "-U"; - testResultsJson.systemNumber.S = testResultsJson.systemNumber.S + "-U"; - testResultsJsonWithTestTypes.testResultId.S = - testResultsJsonWithTestTypes.testResultId.S + "-U"; - testResultsJsonWithTestTypes.systemNumber.S = - testResultsJsonWithTestTypes.systemNumber.S + "-U"; - testResultsJsonWithNoSystemNumber.testResultId.S = - testResultsJsonWithNoSystemNumber.testResultId.S + "-U"; - testResultsJsonWithoutTestTypes.testResultId.S = - testResultsJsonWithoutTestTypes.testResultId.S + "-U"; - testResultsJsonWithoutTestTypes.systemNumber.S = - testResultsJsonWithoutTestTypes.systemNumber.S + "-U"; - - beforeAll(async () => { - process.env.DISABLE_DELETE_ON_UPDATE = "true"; - jest.setTimeout(60_000); - jest.restoreAllMocks(); - - // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - container = await getContainerizedDatabase(); - } else { - (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", - }); - } - }); +describe("convertTestResults() integration tests with upsert", () => { + let container: StartedTestContainer; + const testResultsJson = JSON.parse( + JSON.stringify(require("../resources/dynamodb-image-test-results.json")) + ); + const testResultsJsonWithTestTypes = JSON.parse( + JSON.stringify( + require("../resources/dynamodb-image-test-results-with-testtypes.json") + ) + ); + const testResultsJsonWithNoSystemNumber = JSON.parse( + JSON.stringify( + require("../resources/dynamodb-image-test-results-with-no-systemNumber.json") + ) + ); + const testResultsJsonWithoutTestTypes = JSON.parse( + JSON.stringify( + require("../resources/dynamodb-image-test-results-without-testtypes.json") + ) + ); + testResultsJson.testResultId.S = testResultsJson.testResultId.S + "-U"; + testResultsJson.systemNumber.S = testResultsJson.systemNumber.S + "-U"; + testResultsJsonWithTestTypes.testResultId.S = + testResultsJsonWithTestTypes.testResultId.S + "-U"; + testResultsJsonWithTestTypes.systemNumber.S = + testResultsJsonWithTestTypes.systemNumber.S + "-U"; + testResultsJsonWithNoSystemNumber.testResultId.S = + testResultsJsonWithNoSystemNumber.testResultId.S + "-U"; + testResultsJsonWithoutTestTypes.testResultId.S = + testResultsJsonWithoutTestTypes.testResultId.S + "-U"; + testResultsJsonWithoutTestTypes.systemNumber.S = + testResultsJsonWithoutTestTypes.systemNumber.S + "-U"; + + beforeAll(async () => { + process.env.DISABLE_DELETE_ON_UPDATE = "true"; + jest.setTimeout(60_000); + jest.restoreAllMocks(); + + // see README for why this environment variable exists + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + container = await getContainerizedDatabase(); + } else { + (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ + host: "localhost", + port: "3306", + user: "root", + password: "12345", + database: "CVSBNOP", + }); + } + }); - afterAll(async () => { - await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { - await container.stop(); - } + afterAll(async () => { + await destroyConnectionPool(); + if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + await container.stop(); + } + }); + + it("should correctly convert a DynamoDB event into Aurora rows", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }), + }, + ], + }; + + // array of arrays: event contains array of records, each with array of test result entities + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should correctly convert a DynamoDB event into Aurora rows", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }), - }, - ], - }; - - // array of arrays: event contains array of records, each with array of test result entities - await processStreamEvent(event, exampleContext(), () => { - return; - }); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" - ); - expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); - expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" - ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" - ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" - ); - - expect(testResultSet.rows.length).toEqual(1); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); - }); + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-U" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); - it("should correctly convert a DynamoDB event into Aurora rows when processed a second time", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }), - }, - ], - }; - - const consoleSpy = jest - .spyOn(global.console, "error") - .mockImplementation(); - await processStreamEvent(event, exampleContext(), () => { - return; - }); + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("333"); + expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "2ND-CERTIFICATE-NO" + ); + expect( + (testResultSet.rows[0].testExpiryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.023Z"); + expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); + expect(testResultSet.rows[0].testResult).toEqual("fail"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual( + "PARTICULATE-TRAP-FITTED" + ); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( + "PARTICULATE-TRAP-SERIAL-NUMBER" + ); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "SMOKE-TEST-K-LIMIT-APPLIED" + ); - expect(consoleSpy).toBeCalledTimes(0); - - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" - ); - expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); - expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" - ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" - ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" - ); - - expect(testResultSet.rows.length).toEqual(1); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); - }); + expect(testResultSet.rows.length).toEqual(1); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); - it("should correctly update when non-unique attributes changed", async () => { - const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testCode = "444"; - deserializedJson.testTypes[0].certificateNumber = "W323232"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-01"; - deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; - - const serializedJSONb = marshall(deserializedJson); - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("444"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W323232"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" - ); - expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-01") - ); - expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-01") - ); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" - ); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(1); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("should correctly convert a DynamoDB event into Aurora rows when processed a second time", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }), + }, + ], + }; + + const consoleSpy = jest + .spyOn(global.console, "error") + .mockImplementation(); + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("should correctly insert when unique attributes changed", async () => { - const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testNumber = "NewTestNumber"; - deserializedJson.testTypes[0].testCode = "555"; - deserializedJson.testTypes[0].certificateNumber = "W43434343"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-02"; - deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; - deserializedJson.testTypes[0].defects[0].imDescription = - "IM-DESCRIPTION-5a"; - - const serializedJSONb = marshall(deserializedJson); - - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); + expect(consoleSpy).toBeCalledTimes(0); + + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-U" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("333"); + expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "2ND-CERTIFICATE-NO" + ); + expect( + (testResultSet.rows[0].testExpiryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.023Z"); + expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); + expect(testResultSet.rows[0].testResult).toEqual("fail"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual( + "PARTICULATE-TRAP-FITTED" + ); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( + "PARTICULATE-TRAP-SERIAL-NUMBER" + ); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "SMOKE-TEST-K-LIMIT-APPLIED" + ); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` - ); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(2); - expect(testResultSet.rows[0].testCode).toEqual("555"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W43434343"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" - ); - expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-02") - ); - expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-02") - ); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); - expect( - (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" - ); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - expect(testDefectResultSet.rows.length).toEqual(1); - expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(2); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual( - "IM-DESCRIPTION-5a" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + expect(testResultSet.rows.length).toEqual(1); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(1); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("should correctly update when non-unique attributes changed", async () => { + const deserializedJson = unmarshall(testResultsJson); + deserializedJson.testTypes[0].testCode = "444"; + deserializedJson.testTypes[0].certificateNumber = "W323232"; + deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; + deserializedJson.testTypes[0].testExpiryDate = "2022-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].testAnniversaryDate = + "2022-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].testTypeStartTimestamp = + "2021-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = + "2021-01-01"; + deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; + deserializedJson.testTypes[0].testResult = "pass"; + deserializedJson.testTypes[0].reasonForAbandoning = + "NEW-REASON-FOR-ABANDONING"; + deserializedJson.testTypes[0].additionalNotesRecorded = + "NEW-ADDITIONAL-NOTES-RECORDED"; + deserializedJson.testTypes[0].additionalCommentsForAbandon = + "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; + deserializedJson.testTypes[0].particulateTrapFitted = "t"; + deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; + deserializedJson.testTypes[0].modificationTypeUsed = + "NEW-MODIFICATION-TYPE-USED"; + deserializedJson.testTypes[0].smokeTestKLimitApplied = + "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; + + const serializedJSONb = marshall(deserializedJson); + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("A new Test Result with two TestTypes is inserted correctly", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { - return; - }); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-U" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); + expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows[0].testCode).toEqual("444"); + expect(testResultSet.rows[0].certificateNumber).toEqual("W323232"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "111111" + ); + expect(testResultSet.rows[0].testExpiryDate).toEqual( + new Date("2022-01-01") + ); + expect(testResultSet.rows[0].testAnniversaryDate).toEqual( + new Date("2022-01-01") + ); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2021-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0] + .lastSeatbeltInstallationCheckDate as Date).toISOString() + ).toEqual("2021-01-01T00:00:00.000Z"); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); + expect(testResultSet.rows[0].testResult).toEqual("pass"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "NEW-REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "NEW-ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "NEW-MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + ); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(1); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithTestTypes.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-3-U" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN3"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-3"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-3"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` - ); - - expect(testResultSet.rows.length).toEqual(2); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-3-U"); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" - ); - expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2020-01-01") - ); - expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); - expect( - (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2020-01-01T16:54:44.123Z"); - expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") - ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" - ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" - ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" - ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" - ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" - ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" - ); - - expect(testResultSet.rows[1].testResultId).toEqual("TEST-RESULT-ID-3-U"); - expect(testResultSet.rows[1].testCode).toEqual("aav"); - expect(testResultSet.rows[1].certificateNumber).toEqual("W123123"); - expect(testResultSet.rows[1].secondaryCertificateNumber).toBeNull(); - expect(testResultSet.rows[1].testExpiryDate).toEqual( - new Date(2022, 5, 30) - ); - expect(testResultSet.rows[1].testAnniversaryDate).toEqual( - new Date(2022, 5, 30) - ); - expect( - (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:07:22.000Z"); - expect( - (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:59:07.000Z"); - expect( - testResultSet.rows[1].lastSeatbeltInstallationCheckDate - ).toBeNull(); - expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[1].testResult).toEqual("pass"); - expect(testResultSet.rows[1].reasonForAbandoning).toBeNull(); - expect(testResultSet.rows[1].additionalNotesRecorded).toEqual( - "No emission plate default 0.70" - ); - expect(testResultSet.rows[1].particulateTrapFitted).toBeNull(); - expect(testResultSet.rows[1].particulateTrapSerialNumber).toBeNull(); - expect(testResultSet.rows[1].modificationTypeUsed).toBeNull(); - expect(testResultSet.rows[1].smokeTestKLimitApplied).toBeNull(); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-3"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-3"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-3"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-3" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-3"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-3"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-3"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-3" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-3" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" - ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" - ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" - ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - - const testDefectLastIndex = testDefectResultSet.rows.length - 1; - - expect( - testDefectResultSet.rows[testDefectLastIndex].test_result_id - ).toEqual(id); - expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toEqual( - 3 - ); - expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toEqual( - 1 - ); - expect(testDefectResultSet.rows[testDefectLastIndex].notes).toEqual( - "NOTES" - ); - expect(testDefectResultSet.rows[testDefectLastIndex].prs).toEqual(1); - expect( - testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued - ).toEqual(1); - - const defectResultSet = await executeSql( - `SELECT \`imNumber\`, - \`imDescription\`, - \`itemNumber\`, - \`itemDescription\`, - \`deficiencyRef\`, - \`deficiencyId\`, - \`deficiencySubId\`, - \`deficiencyCategory\`, - \`deficiencyText\`, - \`stdForProhibition\` - FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}` - ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(3); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-3"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-3" - ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-3"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-3" - ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - - const customDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` - FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` - ); - - const customDefectLastIndex = customDefectResultSet.rows.length - 1; - - expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id - ).toEqual(id); - expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def3"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-3"); - expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-3"); + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("should correctly insert when unique attributes changed", async () => { + const deserializedJson = unmarshall(testResultsJson); + deserializedJson.testTypes[0].testNumber = "NewTestNumber"; + deserializedJson.testTypes[0].testCode = "555"; + deserializedJson.testTypes[0].certificateNumber = "W43434343"; + deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; + deserializedJson.testTypes[0].testExpiryDate = "2022-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].testAnniversaryDate = + "2022-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].testTypeStartTimestamp = + "2021-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = + "2021-01-02"; + deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; + deserializedJson.testTypes[0].testResult = "pass"; + deserializedJson.testTypes[0].reasonForAbandoning = + "NEW-REASON-FOR-ABANDONING"; + deserializedJson.testTypes[0].additionalNotesRecorded = + "NEW-ADDITIONAL-NOTES-RECORDED"; + deserializedJson.testTypes[0].additionalCommentsForAbandon = + "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; + deserializedJson.testTypes[0].particulateTrapFitted = "t"; + deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; + deserializedJson.testTypes[0].modificationTypeUsed = + "NEW-MODIFICATION-TYPE-USED"; + deserializedJson.testTypes[0].smokeTestKLimitApplied = + "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; + deserializedJson.testTypes[0].defects[0].imDescription = + "IM-DESCRIPTION-5a"; + + const serializedJSONb = marshall(deserializedJson); + + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("A new Test Result with no systemNumber throws an error", async () => { - const event = { - Records: [ - { - messageId: "faf41ab1-5b42-462c-b242-c4450e15c724", - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, - }), - }, - ], - }; - - const consoleSpy = jest - .spyOn(global.console, "error") - .mockImplementation(); - const returnValue = await processStreamEvent( - event, - exampleContext(), - () => { - return; - } - ); - - const expectedValue = { - batchItemFailures: [ - { itemIdentifier: "faf41ab1-5b42-462c-b242-c4450e15c724" }, - ], - }; - - expect(returnValue).toEqual(expectedValue); - expect(consoleSpy).nthCalledWith( - 1, - "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", - [ - "messageId: faf41ab1-5b42-462c-b242-c4450e15c724", - new Error("result is missing required field 'systemNumber'"), - ] - ); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-5-U" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + ); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); + expect(testResultSet.rows.length).toEqual(2); + expect(testResultSet.rows[0].testCode).toEqual("555"); + expect(testResultSet.rows[0].certificateNumber).toEqual("W43434343"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "111111" + ); + expect(testResultSet.rows[0].testExpiryDate).toEqual( + new Date("2022-01-02") + ); + expect(testResultSet.rows[0].testAnniversaryDate).toEqual( + new Date("2022-01-02") + ); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2021-01-02T00:00:00.000Z"); + expect( + (testResultSet.rows[0] + .lastSeatbeltInstallationCheckDate as Date).toISOString() + ).toEqual("2021-01-02T00:00:00.000Z"); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); + expect(testResultSet.rows[0].testResult).toEqual("pass"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "NEW-REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "NEW-ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "NEW-MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + ); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-5" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("2"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "motorbikes over 200cc or with a sidecar" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-5" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-5" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); + expect(testDefectResultSet.rows[0].defect_id).toEqual(2); + expect(testDefectResultSet.rows[0].location_id).toEqual(1); + expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); + expect(testDefectResultSet.rows[0].prs).toEqual(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(5); + expect(defectResultSet.rows[0].imDescription).toEqual( + "IM-DESCRIPTION-5a" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-5" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-5" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-5"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-5"); + }); + + it("A new Test Result with two TestTypes is inserted correctly", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("A new Test Result with no TestTypes is inserted correctly", async () => { - const event = { - Records: [ - { - body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, - }), - }, - ], - }; - - await processStreamEvent(event, exampleContext(), () => { + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithTestTypes.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-3-U" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN3"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-3"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-3"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} + ORDER BY id ASC` + ); + + expect(testResultSet.rows.length).toEqual(2); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-3-U"); + expect(testResultSet.rows[0].testCode).toEqual("333"); + expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); + expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( + "2ND-CERTIFICATE-NO" + ); + expect(testResultSet.rows[0].testExpiryDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].testAnniversaryDate).toEqual( + new Date("2020-01-01") + ); + expect( + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2020-01-01T00:00:00.000Z"); + expect( + (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString() + ).toEqual("2020-01-01T16:54:44.123Z"); + expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( + new Date("2020-01-01") + ); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); + expect(testResultSet.rows[0].testResult).toEqual("fail"); + expect(testResultSet.rows[0].reasonForAbandoning).toEqual( + "REASON-FOR-ABANDONING" + ); + expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( + "ADDITIONAL-NOTES-RECORDED" + ); + expect(testResultSet.rows[0].particulateTrapFitted).toEqual( + "PARTICULATE-TRAP-FITTED" + ); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( + "PARTICULATE-TRAP-SERIAL-NUMBER" + ); + expect(testResultSet.rows[0].modificationTypeUsed).toEqual( + "MODIFICATION-TYPE-USED" + ); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( + "SMOKE-TEST-K-LIMIT-APPLIED" + ); + + expect(testResultSet.rows[1].testResultId).toEqual("TEST-RESULT-ID-3-U"); + expect(testResultSet.rows[1].testCode).toEqual("aav"); + expect(testResultSet.rows[1].certificateNumber).toEqual("W123123"); + expect(testResultSet.rows[1].secondaryCertificateNumber).toBeNull(); + expect(testResultSet.rows[1].testExpiryDate).toEqual( + new Date(2022, 5, 30) + ); + expect(testResultSet.rows[1].testAnniversaryDate).toEqual( + new Date(2022, 5, 30) + ); + expect( + (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString() + ).toEqual("2021-06-21T12:07:22.000Z"); + expect( + (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString() + ).toEqual("2021-06-21T12:59:07.000Z"); + expect( + testResultSet.rows[1].lastSeatbeltInstallationCheckDate + ).toBeNull(); + expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toEqual(0); + expect(testResultSet.rows[1].testResult).toEqual("pass"); + expect(testResultSet.rows[1].reasonForAbandoning).toBeNull(); + expect(testResultSet.rows[1].additionalNotesRecorded).toEqual( + "No emission plate default 0.70" + ); + expect(testResultSet.rows[1].particulateTrapFitted).toBeNull(); + expect(testResultSet.rows[1].particulateTrapSerialNumber).toBeNull(); + expect(testResultSet.rows[1].modificationTypeUsed).toBeNull(); + expect(testResultSet.rows[1].smokeTestKLimitApplied).toBeNull(); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-3"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-3"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("999999998"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-3"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-3" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("v"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "heavy goods vehicle" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-3"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-3"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-3"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-3" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-3" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); + expect(fuelEmissionResultSet.rows[0].description).toEqual( + "particulate trap" + ); + expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( + "0.10 g/kWh Euro 3 PM" + ); + expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( + "2323232323232323232323" + ); + expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + + const testDefectLastIndex = testDefectResultSet.rows.length - 1; + + expect( + testDefectResultSet.rows[testDefectLastIndex].test_result_id + ).toEqual(id); + expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toEqual( + 3 + ); + expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toEqual( + 1 + ); + expect(testDefectResultSet.rows[testDefectLastIndex].notes).toEqual( + "NOTES" + ); + expect(testDefectResultSet.rows[testDefectLastIndex].prs).toEqual(1); + expect( + testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued + ).toEqual(1); + + const defectResultSet = await executeSql( + `SELECT \`imNumber\`, + \`imDescription\`, + \`itemNumber\`, + \`itemDescription\`, + \`deficiencyRef\`, + \`deficiencyId\`, + \`deficiencySubId\`, + \`deficiencyCategory\`, + \`deficiencyText\`, + \`stdForProhibition\` + FROM \`defect\` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}` + ); + expect(defectResultSet.rows.length).toEqual(1); + expect(defectResultSet.rows[0].imNumber).toEqual(3); + expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-3"); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemDescription).toEqual( + "ITEM-DESCRIPTION-3" + ); + expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-3"); + expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); + expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); + expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); + expect(defectResultSet.rows[0].deficiencyText).toEqual( + "DEFICIENCY-TEXT-3" + ); + expect(defectResultSet.rows[0].itemNumber).toEqual(1); + + const customDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` + FROM \`custom_defect\` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + ); + + const customDefectLastIndex = customDefectResultSet.rows.length - 1; + + expect( + customDefectResultSet.rows[customDefectLastIndex].test_result_id + ).toEqual(id); + expect( + customDefectResultSet.rows[customDefectLastIndex].referenceNumber + ).toEqual("def3"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectName + ).toEqual("DEFECT-NAME-3"); + expect( + customDefectResultSet.rows[customDefectLastIndex].defectNotes + ).toEqual("DEFECT-NOTES-3"); + }); + + it("A new Test Result with no systemNumber throws an error", async () => { + const event = { + Records: [ + { + messageId: "faf41ab1-5b42-462c-b242-c4450e15c724", + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, + }), + }, + ], + }; + + const consoleSpy = jest + .spyOn(global.console, "error") + .mockImplementation(); + const returnValue = await processStreamEvent( + event, + exampleContext(), + () => { return; - }); + } + ); + + const expectedValue = { + batchItemFailures: [ + { itemIdentifier: "faf41ab1-5b42-462c-b242-c4450e15c724" }, + ], + }; + + expect(returnValue).toEqual(expectedValue); + expect(consoleSpy).nthCalledWith( + 1, + "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", + [ + "messageId: faf41ab1-5b42-462c-b242-c4450e15c724", + new Error("result is missing required field 'systemNumber'"), + ] + ); + }); - const vehicleResultSet = await executeSql( - `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`id\` IN ( - SELECT \`id\` - FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithoutTestTypes.systemNumber.S}" - )` - ); - - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-4-U" - ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN4"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-4"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-4"); - expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() - ).not.toBeNull(); - - const testResultSet = await executeSql( - `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, - \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, - \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, - \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, - \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` - FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` - ); - - expect(testResultSet.rows.length).toEqual(1); - - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-4-U"); - expect(testResultSet.rows[0].testCode).toBeNull(); - expect(testResultSet.rows[0].certificateNumber).toBeNull(); - expect(testResultSet.rows[0].secondaryCertificateNumber).toBeNull(); - expect(testResultSet.rows[0].testExpiryDate).toBeNull(); - expect(testResultSet.rows[0].testAnniversaryDate).toBeNull(); - expect(testResultSet.rows[0].testTypeStartTimestamp).toBeNull(); - expect(testResultSet.rows[0].testTypeEndTimestamp).toBeNull(); - expect( - testResultSet.rows[0].lastSeatbeltInstallationCheckDate - ).toBeNull(); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBeNull(); - expect(testResultSet.rows[0].testResult).toBeNull(); - expect(testResultSet.rows[0].reasonForAbandoning).toBeNull(); - expect(testResultSet.rows[0].additionalNotesRecorded).toBeNull(); - expect(testResultSet.rows[0].particulateTrapFitted).toBeNull(); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toBeNull(); - expect(testResultSet.rows[0].modificationTypeUsed).toBeNull(); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toBeNull(); - - const { - test_station_id, - tester_id, - vehicle_class_id, - preparer_id, - createdBy_Id, - lastUpdatedBy_Id, - fuel_emission_id, - test_type_id, - id, - } = testResultSet.rows[0]; - - const testStationResultSet = await executeSql( - `SELECT \`pNumber\`, \`name\`, \`type\` - FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` - ); - - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-4"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-4"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); - - const testerResultSet = await executeSql( - `SELECT \`staffId\`, \`name\`, \`email_address\` - FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` - ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-4"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-4" - ); - - const vehicleClassResultSet = await executeSql( - `SELECT \`code\`, - \`description\`, - \`vehicleType\`, - \`vehicleSize\`, - \`vehicleConfiguration\`, - \`euVehicleCategory\` - FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` - ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" - ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" - ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); - - const preparerResultSet = await executeSql( - `SELECT \`preparerId\`, \`name\` - FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` - ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-4"); - - const createdByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` - ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-4"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-4"); - - const lastUpdatedByResultSet = await executeSql( - `SELECT \`identityId\`, \`name\` - FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` - ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-4" - ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-4" - ); - - const fuelEmissionResultSet = await executeSql( - `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` - FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` - ); - expect(fuelEmissionResultSet.rows.length).toEqual(0); - - const testTypeResultSet = await executeSql( - `SELECT \`testTypeClassification\`, \`testTypeName\` - FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` - ); - expect(testTypeResultSet.rows.length).toEqual(0); - - const testDefectResultSet = await executeSql( - `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` - FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` - ); - expect(testDefectResultSet.rows.length).toEqual(0); + it("A new Test Result with no TestTypes is inserted correctly", async () => { + const event = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, + }), + }, + ], + }; + + await processStreamEvent(event, exampleContext(), () => { + return; }); - it("After all tests the database has all the expected data", async () => { - const testResultResultSet = await executeSql( - `SELECT id FROM test_result - WHERE testResultId like '%-U';` - ); + const vehicleResultSet = await executeSql( + `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`id\` IN ( + SELECT \`id\` + FROM \`vehicle\` + WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithoutTestTypes.systemNumber.S}" + )` + ); + + expect(vehicleResultSet.rows.length).toEqual(1); + expect(vehicleResultSet.rows[0].system_number).toEqual( + "SYSTEM-NUMBER-4-U" + ); + expect(vehicleResultSet.rows[0].vin).toEqual("VIN4"); + expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-4"); + expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-4"); + expect( + (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + ).not.toBeNull(); + + const testResultSet = await executeSql( + `SELECT \`test_station_id\`, \`tester_id\`, \`vehicle_class_id\`, \`preparer_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, + \`fuel_emission_id\`, \`test_type_id\`, \`id\`, \`testResultId\`, \`testCode\`, \`certificateNumber\`, \`secondaryCertificateNumber\`, + \`testExpiryDate\`, \`testAnniversaryDate\`, \`testTypeStartTimestamp\`, \`numberOfSeatbeltsFitted\`, \`lastSeatbeltInstallationCheckDate\`, + \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, + \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` + FROM \`test_result\` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} + ORDER BY id ASC` + ); + + expect(testResultSet.rows.length).toEqual(1); + + expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-4-U"); + expect(testResultSet.rows[0].testCode).toBeNull(); + expect(testResultSet.rows[0].certificateNumber).toBeNull(); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBeNull(); + expect(testResultSet.rows[0].testExpiryDate).toBeNull(); + expect(testResultSet.rows[0].testAnniversaryDate).toBeNull(); + expect(testResultSet.rows[0].testTypeStartTimestamp).toBeNull(); + expect(testResultSet.rows[0].testTypeEndTimestamp).toBeNull(); + expect( + testResultSet.rows[0].lastSeatbeltInstallationCheckDate + ).toBeNull(); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBeNull(); + expect(testResultSet.rows[0].testResult).toBeNull(); + expect(testResultSet.rows[0].reasonForAbandoning).toBeNull(); + expect(testResultSet.rows[0].additionalNotesRecorded).toBeNull(); + expect(testResultSet.rows[0].particulateTrapFitted).toBeNull(); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBeNull(); + expect(testResultSet.rows[0].modificationTypeUsed).toBeNull(); + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBeNull(); + + const { + test_station_id, + tester_id, + vehicle_class_id, + preparer_id, + createdBy_Id, + lastUpdatedBy_Id, + fuel_emission_id, + test_type_id, + id, + } = testResultSet.rows[0]; + + const testStationResultSet = await executeSql( + `SELECT \`pNumber\`, \`name\`, \`type\` + FROM \`test_station\` + WHERE \`test_station\`.\`id\` = ${test_station_id}` + ); + + expect(testStationResultSet.rows.length).toEqual(1); + expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-4"); + expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-4"); + expect(testStationResultSet.rows[0].type).toEqual("atf"); + + const testerResultSet = await executeSql( + `SELECT \`staffId\`, \`name\`, \`email_address\` + FROM \`tester\` + WHERE \`tester\`.\`id\` = ${tester_id}` + ); + expect(testerResultSet.rows.length).toEqual(1); + expect(testerResultSet.rows[0].staffId).toEqual("999999998"); + expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-4"); + expect(testerResultSet.rows[0].email_address).toEqual( + "TESTER-EMAIL-ADDRESS-4" + ); + + const vehicleClassResultSet = await executeSql( + `SELECT \`code\`, + \`description\`, + \`vehicleType\`, + \`vehicleSize\`, + \`vehicleConfiguration\`, + \`euVehicleCategory\` + FROM \`vehicle_class\` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + ); + expect(vehicleClassResultSet.rows.length).toEqual(1); + expect(vehicleClassResultSet.rows[0].code).toEqual("v"); + expect(vehicleClassResultSet.rows[0].description).toEqual( + "heavy goods vehicle" + ); + expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); + expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( + "rigid" + ); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + + const preparerResultSet = await executeSql( + `SELECT \`preparerId\`, \`name\` + FROM \`preparer\` + WHERE \`preparer\`.\`id\` = ${preparer_id}` + ); + expect(preparerResultSet.rows.length).toEqual(1); + expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); + expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-4"); + + const createdByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${createdBy_Id}` + ); + expect(createdByResultSet.rows.length).toEqual(1); + expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-4"); + expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-4"); + + const lastUpdatedByResultSet = await executeSql( + `SELECT \`identityId\`, \`name\` + FROM \`identity\` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + ); + expect(lastUpdatedByResultSet.rows.length).toEqual(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( + "LAST-UPDATED-BY-ID-4" + ); + expect(lastUpdatedByResultSet.rows[0].name).toEqual( + "LAST-UPDATED-BY-NAME-4" + ); + + const fuelEmissionResultSet = await executeSql( + `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` + FROM \`fuel_emission\` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + ); + expect(fuelEmissionResultSet.rows.length).toEqual(0); + + const testTypeResultSet = await executeSql( + `SELECT \`testTypeClassification\`, \`testTypeName\` + FROM \`test_type\` + WHERE \`test_type\`.\`id\` = ${test_type_id}` + ); + expect(testTypeResultSet.rows.length).toEqual(0); + + const testDefectResultSet = await executeSql( + `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` + FROM \`test_defect\` + WHERE \`test_defect\`.\`test_result_id\` = ${id}` + ); + expect(testDefectResultSet.rows.length).toEqual(0); + }); - expect(testResultResultSet.rows.length).toEqual(5); + it("After all tests the database has all the expected data", async () => { + const testResultResultSet = await executeSql( + `SELECT id FROM test_result + WHERE testResultId like '%-U';` + ); - const customDefectResultSet = await executeSql( - `SELECT DISTINCT cd.id FROM custom_defect cd - INNER JOIN test_result tr ON cd.test_result_id = tr.id - WHERE testResultId like '%-U';` - ); + expect(testResultResultSet.rows.length).toEqual(5); - expect(customDefectResultSet.rows.length).toEqual(5); + const customDefectResultSet = await executeSql( + `SELECT DISTINCT cd.id FROM custom_defect cd + INNER JOIN test_result tr ON cd.test_result_id = tr.id + WHERE testResultId like '%-U';` + ); - const testTypeResultSet = await executeSql( - `SELECT DISTINCT tt.id FROM test_type tt - JOIN test_result tr ON tt.id = tr.test_type_id - WHERE testResultId like '%-U';` - ); + expect(customDefectResultSet.rows.length).toEqual(5); - expect(testTypeResultSet.rows.length).toEqual(2); + const testTypeResultSet = await executeSql( + `SELECT DISTINCT tt.id FROM test_type tt + JOIN test_result tr ON tt.id = tr.test_type_id + WHERE testResultId like '%-U';` + ); - const testDefectResultSet = await executeSql( - `SELECT DISTINCT td.id FROM test_defect td - INNER JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-U';` - ); + expect(testTypeResultSet.rows.length).toEqual(2); - expect(testDefectResultSet.rows.length).toEqual(3); + const testDefectResultSet = await executeSql( + `SELECT DISTINCT td.id FROM test_defect td + INNER JOIN test_result tr ON td.test_result_id = tr.id + WHERE testResultId like '%-U';` + ); - const defectResultSet = await executeSql( - `SELECT DISTINCT d.id FROM defect d - JOIN test_defect td ON d.id = td.defect_id - JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-U';` - ); + expect(testDefectResultSet.rows.length).toEqual(3); - expect(defectResultSet.rows.length).toEqual(3); - }); + const defectResultSet = await executeSql( + `SELECT DISTINCT d.id FROM defect d + JOIN test_defect td ON d.id = td.defect_id + JOIN test_result tr ON td.test_result_id = tr.id + WHERE testResultId like '%-U';` + ); + + expect(defectResultSet.rows.length).toEqual(3); }); +}); diff --git a/tsconfig.json b/tsconfig.json index cf02692..55ca1cc 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -61,6 +61,6 @@ "experimentalDecorators": true /* Enables experimental support for ES7 decorators. */, "emitDecoratorMetadata": true /* Enables experimental support for emitting type metadata for decorators. */, "resolveJsonModule": true, - "types": [] + "types": ["jest"] } } From 9b0c23de469e335775d2e71aa665ebb55b40e4e6 Mon Sep 17 00:00:00 2001 From: "Shivangi Das (CVS)" Date: Wed, 8 May 2024 11:15:55 +0100 Subject: [PATCH 02/20] chore(cb2-11268): upgrade aws-sdk to v3 (#97) * chore(cb2-11268): upgrade aws-sdk to v3 * chore(cb2-11268): lint * chore(cb2-11268): typescript --- package-lock.json | 1509 ++++++++++++----- package.json | 8 +- src/handler.ts | 20 +- src/services/dynamodb-images.ts | 8 +- src/services/secrets-manager.ts | 14 +- src/services/sql-operations.ts | 2 +- .../process-stream-event.unitTest.ts | 2 +- tests/unit/handler.unitTest.ts | 46 - .../unit/services/secrets-manager.unitTest.ts | 32 +- .../unit/services/sql-operations.unitTest.ts | 3 +- tests/utils.ts | 4 +- 11 files changed, 1139 insertions(+), 509 deletions(-) delete mode 100644 tests/unit/handler.unitTest.ts diff --git a/package-lock.json b/package-lock.json index c0c415a..a13c9a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,11 @@ "version": "0.0.1", "license": "ISC", "dependencies": { + "@aws-sdk/client-dynamodb-streams": "3.565.0", + "@aws-sdk/client-secrets-manager": "3.565.0", "@types/lambda-tester": "3.6.0", - "aws-lambda": "1.0.6", - "aws-sdk": "2.1354.0", - "aws-xray-sdk": "2.5.0", + "aws-lambda": "1.0.7", + "aws-xray-sdk": "3.6.0", "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", @@ -36,6 +37,7 @@ "@types/uuid": "8.3.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", + "aws-sdk-client-mock": "4.0.0", "commitlint": "17.0.0", "cross-env": "7.0.3", "husky": "3.0.9", @@ -76,7 +78,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -85,7 +86,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -101,7 +101,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -112,7 +111,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -121,25 +119,571 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", - "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", + "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-endpoint-discovery": "3.535.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.565.0.tgz", + "integrity": "sha512-1T4XbpIH01qJdc1/k+azlKwZsvIaNqeFgslkzw6p7uE+K3xJZ+x9Y3vv2vOCQk7lAkhK+WJUvduum4Ubu0JuBQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", + "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", + "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", + "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", + "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "dependencies": { + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", + "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", + "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.565.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", + "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "dependencies": { + "@aws-sdk/client-sso": "3.556.0", + "@aws-sdk/token-providers": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", + "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/token-providers": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", + "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-lambda": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", + "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/eventstream-serde-browser": "^2.2.0", + "@smithy/eventstream-serde-config-resolver": "^2.2.0", + "@smithy/eventstream-serde-node": "^2.2.0", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-stream": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/client-secrets-manager": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.565.0.tgz", + "integrity": "sha512-C31ZIoY6d0Fz+U12ygXkemjbp2CsMZzQd34i2PYb+AzsuGeNukvAs+LnumJ0if5HM7rfaC9m68Qw+NRMn9lRLA==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", + "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", + "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", - "@aws-sdk/middleware-endpoint-discovery": "3.535.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", @@ -174,44 +718,22 @@ "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", - "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", + "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", @@ -223,9 +745,6 @@ "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", "@smithy/core": "^1.4.2", - "@smithy/eventstream-serde-browser": "^2.2.0", - "@smithy/eventstream-serde-config-resolver": "^2.2.0", - "@smithy/eventstream-serde-node": "^2.2.0", "@smithy/fetch-http-handler": "^2.5.0", "@smithy/hash-node": "^2.2.0", "@smithy/invalid-dependency": "^2.2.0", @@ -248,20 +767,143 @@ "@smithy/util-endpoints": "^1.2.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", - "@smithy/util-stream": "^2.2.0", "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", + "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "dependencies": { + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", + "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", + "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.565.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", + "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "dependencies": { + "@aws-sdk/client-sso": "3.556.0", + "@aws-sdk/token-providers": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", + "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", + "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } }, "node_modules/@aws-sdk/client-sso": { "version": "3.554.0", @@ -463,7 +1105,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -477,14 +1118,12 @@ "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.552.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/fetch-http-handler": "^2.5.0", @@ -503,8 +1142,7 @@ "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.554.0", @@ -567,7 +1205,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -582,8 +1219,7 @@ "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.554.0", @@ -677,7 +1313,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -691,14 +1326,12 @@ "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -711,14 +1344,12 @@ "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -732,14 +1363,12 @@ "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@aws-sdk/util-endpoints": "3.540.0", @@ -754,14 +1383,12 @@ "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -777,8 +1404,7 @@ "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/token-providers": { "version": "3.554.0", @@ -807,7 +1433,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -819,8 +1444,7 @@ "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-dynamodb": { "version": "3.266.0", @@ -844,7 +1468,6 @@ "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -858,14 +1481,12 @@ "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -876,14 +1497,12 @@ "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -894,14 +1513,12 @@ "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -923,14 +1540,12 @@ "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "dependencies": { "tslib": "^2.3.1" } @@ -938,8 +1553,7 @@ "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@babel/code-frame": { "version": "7.24.2", @@ -4250,16 +4864,15 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, "node_modules/@smithy/abort-controller": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4271,14 +4884,12 @@ "node_modules/@smithy/abort-controller/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/config-resolver": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -4293,14 +4904,12 @@ "node_modules/@smithy/config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/core": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", - "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-retry": "^2.3.1", @@ -4318,14 +4927,12 @@ "node_modules/@smithy/core/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/credential-provider-imds": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -4340,8 +4947,7 @@ "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/eventstream-codec": { "version": "2.2.0", @@ -4444,7 +5050,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", - "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", @@ -4456,14 +5061,12 @@ "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/hash-node": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", @@ -4477,14 +5080,12 @@ "node_modules/@smithy/hash-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/invalid-dependency": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4493,14 +5094,12 @@ "node_modules/@smithy/invalid-dependency/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4511,14 +5110,12 @@ "node_modules/@smithy/is-array-buffer/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-content-length": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", - "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", @@ -4531,14 +5128,12 @@ "node_modules/@smithy/middleware-content-length/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-endpoint": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", - "dev": true, "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", @@ -4555,14 +5150,12 @@ "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-retry": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", @@ -4581,14 +5174,12 @@ "node_modules/@smithy/middleware-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -4601,7 +5192,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4613,14 +5203,12 @@ "node_modules/@smithy/middleware-serde/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4632,14 +5220,12 @@ "node_modules/@smithy/middleware-stack/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/node-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", - "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -4653,14 +5239,12 @@ "node_modules/@smithy/node-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/node-http-handler": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", - "dev": true, "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", @@ -4675,14 +5259,12 @@ "node_modules/@smithy/node-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/property-provider": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4694,14 +5276,12 @@ "node_modules/@smithy/property-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/protocol-http": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4713,14 +5293,12 @@ "node_modules/@smithy/protocol-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/querystring-builder": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", @@ -4733,14 +5311,12 @@ "node_modules/@smithy/querystring-builder/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/querystring-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4752,14 +5328,12 @@ "node_modules/@smithy/querystring-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/service-error-classification": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0" }, @@ -4771,7 +5345,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4783,14 +5356,12 @@ "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/signature-v4": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", - "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "@smithy/types": "^2.12.0", @@ -4807,14 +5378,12 @@ "node_modules/@smithy/signature-v4/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/smithy-client": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", - "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", @@ -4830,14 +5399,12 @@ "node_modules/@smithy/smithy-client/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/types": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4848,14 +5415,12 @@ "node_modules/@smithy/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/url-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", - "dev": true, "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", @@ -4865,14 +5430,12 @@ "node_modules/@smithy/url-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-base64": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", @@ -4885,14 +5448,12 @@ "node_modules/@smithy/util-base64/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-body-length-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", - "dev": true, "dependencies": { "tslib": "^2.6.2" } @@ -4900,14 +5461,12 @@ "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-body-length-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4918,14 +5477,12 @@ "node_modules/@smithy/util-body-length-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -4937,14 +5494,12 @@ "node_modules/@smithy/util-buffer-from/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4955,14 +5510,12 @@ "node_modules/@smithy/util-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", - "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", @@ -4977,14 +5530,12 @@ "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-defaults-mode-node": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", - "dev": true, "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", @@ -5001,14 +5552,12 @@ "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-endpoints": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -5021,14 +5570,12 @@ "node_modules/@smithy/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-hex-encoding": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5039,14 +5586,12 @@ "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-middleware": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5058,14 +5603,12 @@ "node_modules/@smithy/util-middleware/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-retry": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", - "dev": true, "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", @@ -5078,14 +5621,12 @@ "node_modules/@smithy/util-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", - "dev": true, "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", @@ -5103,14 +5644,12 @@ "node_modules/@smithy/util-stream/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-uri-escape": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5121,14 +5660,12 @@ "node_modules/@smithy/util-uri-escape/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -5140,8 +5677,7 @@ "node_modules/@smithy/util-utf8/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-waiter": { "version": "2.2.0", @@ -5260,9 +5796,9 @@ "dev": true }, "node_modules/@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5286,18 +5822,18 @@ "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", "dev": true }, - "node_modules/@types/connect": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "node_modules/@types/cls-hooked": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.8.tgz", + "integrity": "sha512-tf/7H883gFA6MPlWI15EQtfNZ+oPL0gLKkOlx9UHFrun1fC/FkuyNBpTKq1B5E3T4fbvjId6WifHUdSGsMMuPg==", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/continuation-local-storage": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@types/continuation-local-storage/-/continuation-local-storage-3.2.3.tgz", - "integrity": "sha512-4LYeWblV+6puK9tFGM7Zr4OLZkVXmaL7hUK6/wHwbfwM+q7v+HZyBWTXkNOiC9GqOxv7ehhi5TMCbebZWeVYtw==", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } @@ -5318,24 +5854,25 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz", - "integrity": "sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.20.tgz", - "integrity": "sha512-8qqFN4W53IEWa9bdmuVrUcVkFemQWnt5DKPQ/oa8xKDYgtjCr2OO6NX5TIK49NLFr3mPYU2cLh92DQquC3oWWQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/glob": { @@ -5369,6 +5906,11 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -5582,9 +6124,9 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/minimatch": { "version": "3.0.4", @@ -5599,9 +6141,9 @@ "dev": true }, "node_modules/@types/mysql": { - "version": "2.15.18", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.18.tgz", - "integrity": "sha512-JW74Nh3P/RDAnaP8uXe1qmRpoFBO84SiWvWoSju/F5+2S1kVBi1FbbDoqK/sTZrCCxySaOJnRATvWD+bLcJjAg==", + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", "dependencies": { "@types/node": "*" } @@ -5624,13 +6166,13 @@ "dev": true }, "node_modules/@types/pg": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.0.tgz", - "integrity": "sha512-3JXFrsl8COoqVB1+2Pqelx6soaiFVXzkT3fkuSNe7GB40ysfT0FHphZFPiqIXpMyTHSFRdLTyZzrFBrJRPAArA==", + "version": "8.11.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.5.tgz", + "integrity": "sha512-2xMjVviMxneZHDHX5p5S6tsRRs7TpDHeeK7kTTMe/kAC/mRRNjWHjZg0rkiY+e17jXSZV3zJYDxXV8Cy72/Vuw==", "dependencies": { "@types/node": "*", "pg-protocol": "*", - "pg-types": "^2.2.0" + "pg-types": "^4.0.1" } }, "node_modules/@types/prettier": { @@ -5640,14 +6182,14 @@ "dev": true }, "node_modules/@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/request": { "version": "2.48.5", @@ -5700,21 +6242,37 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, - "node_modules/@types/serve-static": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", - "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, "node_modules/@types/sinon": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.0.tgz", "integrity": "sha512-NyzhuSBy97B/zE58cDw4NyGvByQbAHNP9069KVSgnXt/sc0T6MFRh0InKAeBVHJWdSXG1S3+PxgVIgKo9mTHbw==", "dev": true }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true + }, "node_modules/@types/ssh2-streams": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz", @@ -6162,21 +6720,15 @@ "node": ">=0.10.0" } }, - "node_modules/async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" - }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "node_modules/async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" + "stack-chain": "^1.3.7" }, "engines": { - "node": "<=0.11.8 || >0.11.10" + "node": "^4.7 || >=6.9 || >=7.3" } }, "node_modules/asynckit": { @@ -6209,7 +6761,7 @@ "node_modules/atomic-batcher": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", - "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" + "integrity": "sha512-EFGCRj4kLX1dHv1cDzTk+xbjBFj1GnJDpui52YmEcxxHHEWjYyT6l51U7n6WQ28osZH4S9gSybxe56Vm7vB61Q==" }, "node_modules/audit-filter": { "version": "0.5.0", @@ -6235,13 +6787,13 @@ } }, "node_modules/aws-lambda": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.6.tgz", - "integrity": "sha512-Z9lmZBiDYejzjMWuQSDXuZWAqAun6vGt7WApB1r0f8tLNf0IlTGsH30qENfP1kXeTbbMgPpt1bPEeMZjYDTXxQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", + "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", "dependencies": { - "aws-sdk": "*", + "aws-sdk": "^2.814.0", "commander": "^3.0.2", - "js-yaml": "^3.13.1", + "js-yaml": "^3.14.1", "watchpack": "^2.0.0-beta.10" }, "bin": { @@ -6297,6 +6849,152 @@ "node": ">= 10.0.0" } }, + "node_modules/aws-sdk-client-mock": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.0.0.tgz", + "integrity": "sha512-/rxo+pzCFaUozK7TyCqo3GYwzdBGn9Ai6EsT8ytXDoUXlD/Q5hw9hj2lOkCAyubECzGJFHMmQg9GZ1GOGlN/qQ==", + "dev": true, + "dependencies": { + "@types/sinon": "^10.0.10", + "sinon": "^16.1.3", + "tslib": "^2.1.0" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@types/sinon": { + "version": "10.0.20", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", + "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true + }, + "node_modules/aws-sdk-client-mock/node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true + }, + "node_modules/aws-sdk-client-mock/node_modules/sinon": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", + "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/aws-sdk/node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -6306,83 +7004,89 @@ } }, "node_modules/aws-xray-sdk": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-2.5.0.tgz", - "integrity": "sha512-KBTF9QUq0zu24t+gFh3VATYDNx295VzZUUjpZ1OmIEbcs3Zqmox5L6VAqjCgGfJeLaCUAWPLkduxau3LuDpqcw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.6.0.tgz", + "integrity": "sha512-ID2R0U94wEMPLAkmQ7+TZuzvMjp2fe0dqqUQb6BniIDWXdvV5bphrMhsHzp/0PDRjGqsVSrZ1V1qRmq8bhEl1A==", "dependencies": { - "aws-xray-sdk-core": "^2.5.0", - "aws-xray-sdk-express": "^2.5.0", - "aws-xray-sdk-mysql": "^2.5.0", - "aws-xray-sdk-postgres": "^2.5.0", - "pkginfo": "^0.4.0" + "aws-xray-sdk-core": "3.6.0", + "aws-xray-sdk-express": "3.6.0", + "aws-xray-sdk-mysql": "3.6.0", + "aws-xray-sdk-postgres": "3.6.0" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" } }, "node_modules/aws-xray-sdk-core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-2.5.0.tgz", - "integrity": "sha512-qe60bv0kn5KY6gAIF88TPCOIdu/A3dTmcKISj+kE4OH02eF6kMm1ctL7OgoBAasnsDNSn0VMLhIaA1izgoWuxA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.6.0.tgz", + "integrity": "sha512-+UnYmVEni9NNJvE6aFY1dbvMtFquXSYAj+HYfm+90icoGKYvvLD71R7PHyFFnYct5of4NFpEXJtUJrWMv8e4mQ==", "dependencies": { - "@types/continuation-local-storage": "*", + "@aws-sdk/types": "^3.4.1", + "@smithy/service-error-classification": "^2.0.4", + "@types/cls-hooked": "^4.3.3", "atomic-batcher": "^1.0.2", - "aws-sdk": "^2.304.0", - "continuation-local-storage": "^3.2.0", - "date-fns": "^1.29.0", - "pkginfo": "^0.4.0", - "semver": "^5.3.0", - "winston": "^2.4.4" + "cls-hooked": "^4.2.2", + "semver": "^7.5.3" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" } }, - "node_modules/aws-xray-sdk-core/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + "node_modules/aws-xray-sdk-core/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/aws-xray-sdk-express": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-2.5.0.tgz", - "integrity": "sha512-VfUXlxFlI+gr6ImMF+3000fqPRTBS9MbAywdtC8dt/U57WQbLFDjPW+V6oJowTwrkgKwpOKSXncQDfBs8QHvIw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.6.0.tgz", + "integrity": "sha512-vIHk+qpmLhI2JWiqgjhHZYerNo9jbjifJ6qIb+l5CCAqe00CIjnlnLF9LKLi4UhVT9xyAp46aCpWMEl+XeXSYA==", "dependencies": { "@types/express": "*" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^2.5.0" + "aws-xray-sdk-core": "^3.6.0" } }, "node_modules/aws-xray-sdk-mysql": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-2.5.0.tgz", - "integrity": "sha512-OI3cDkVcKTiWytwoOE1Oj0D2UbchOVHkiQNXWktDk9QYzqbOz+GNEwD5QneqyxFu0z0bQieClBM+0okUprFBXQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.6.0.tgz", + "integrity": "sha512-DNZEe8Q331tzqc0dLM1Zy0d2GNFoks7BIX3Lop/+lGLytO6a4sdZ/NIXZX6pngG1sBYlsoTSFCFi470UD6Q6AA==", "dependencies": { "@types/mysql": "*" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^2.5.0" + "aws-xray-sdk-core": "^3.6.0" } }, "node_modules/aws-xray-sdk-postgres": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-2.5.0.tgz", - "integrity": "sha512-8LcXTjr272gKMSg9a+QSGQPjAabQb87SA0c4ZlVcPqzoG7nAd3pULR6/HDtujeukbRAb6rEoxzKvPX0s18NyFw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.6.0.tgz", + "integrity": "sha512-jQ4pNWq0RdVVZJ8XVqD7Rc6YS6bYqxCV0IQW2SBAhnW6S5yCLRekYgxbj0D35VZgLyqZQX98kdOV7ZqrWRyAyw==", "dependencies": { "@types/pg": "*" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^2.5.0" + "aws-xray-sdk-core": "^3.6.0" } }, "node_modules/axios": { @@ -6727,8 +7431,7 @@ "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, "node_modules/boxen": { "version": "7.1.1", @@ -7518,6 +8221,19 @@ "mimic-response": "^1.0.0" } }, + "node_modules/cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "dependencies": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -7568,14 +8284,6 @@ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -7819,15 +8527,6 @@ "node": ">= 0.6" } }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, "node_modules/conventional-changelog-angular": { "version": "5.0.12", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", @@ -8133,14 +8832,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -9348,14 +10039,6 @@ "node": ">=0.10.0" } }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", - "engines": { - "node": "> 0.1.90" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9458,7 +10141,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "dev": true, "funding": [ { "type": "paypal", @@ -11248,11 +11930,6 @@ "ws": "*" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, "node_modules/istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", @@ -14446,7 +15123,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -15466,6 +16142,11 @@ "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", "dev": true }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -15936,24 +16617,34 @@ "node": ">=4.0.0" } }, + "node_modules/pg-numeric": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "engines": { + "node": ">=4" + } + }, "node_modules/pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" }, "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz", + "integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==", "dependencies": { "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" + "pg-numeric": "1.0.2", + "postgres-array": "~3.0.1", + "postgres-bytea": "~3.0.0", + "postgres-date": "~2.1.0", + "postgres-interval": "^3.0.0", + "postgres-range": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/picocolors": { @@ -16025,14 +16716,6 @@ "node": ">= 6" } }, - "node_modules/pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -16052,40 +16735,45 @@ } }, "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", + "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "dependencies": { + "obuf": "~1.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", + "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, + "node_modules/postgres-range": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz", + "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==" + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -18008,13 +18696,10 @@ "nan": "^2.16.0" } }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "engines": { - "node": "*" - } + "node_modules/stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" }, "node_modules/stack-utils": { "version": "2.0.3", @@ -18199,8 +18884,7 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, "node_modules/strtok3": { "version": "6.3.0", @@ -18803,8 +19487,7 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/tslint": { "version": "5.20.0", @@ -19424,22 +20107,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/winston": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", - "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", - "dependencies": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -19580,6 +20247,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "engines": { "node": ">=0.4" } @@ -19596,8 +20264,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index 21da6b2..4e1553b 100644 --- a/package.json +++ b/package.json @@ -53,10 +53,11 @@ "author": "", "license": "ISC", "dependencies": { + "@aws-sdk/client-dynamodb-streams": "3.565.0", + "@aws-sdk/client-secrets-manager": "3.565.0", "@types/lambda-tester": "3.6.0", - "aws-lambda": "1.0.6", - "aws-sdk": "2.1354.0", - "aws-xray-sdk": "2.5.0", + "aws-lambda": "1.0.7", + "aws-xray-sdk": "3.6.0", "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", @@ -80,6 +81,7 @@ "@types/uuid": "8.3.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", + "aws-sdk-client-mock": "4.0.0", "commitlint": "17.0.0", "cross-env": "7.0.3", "husky": "3.0.9", diff --git a/src/handler.ts b/src/handler.ts index d656574..156ba5e 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -1,14 +1,24 @@ +import { + PutSecretValueCommand, + SecretsManagerClient, +} from "@aws-sdk/client-secrets-manager"; import { processStreamEvent } from "./functions/process-stream-event"; -import { config as AWSConfig } from "aws-sdk"; const isOffline: boolean = !process.env.BRANCH || process.env.BRANCH === "local"; if (isOffline) { - AWSConfig.credentials = { - accessKeyId: "accessKey1", - secretAccessKey: "verySecretKey1", - }; + const SMC = new SecretsManagerClient({}); + + const command = new PutSecretValueCommand({ + SecretId: "secretid1", + SecretString: JSON.stringify({ + accessKeyId: "accessKey1", + secretAccessKey: "verySecretKey1", + }), + }); + + SMC.send(command); } export { processStreamEvent as handler }; diff --git a/src/services/dynamodb-images.ts b/src/services/dynamodb-images.ts index a9ff3a6..992c92c 100644 --- a/src/services/dynamodb-images.ts +++ b/src/services/dynamodb-images.ts @@ -1,4 +1,4 @@ -import { AttributeValue } from "aws-sdk/clients/dynamodbstreams"; +import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; import { parseISO } from "date-fns"; import { Maybe } from "../models/optionals"; import { padWithZeros } from "../utils/padwithzeros"; @@ -38,7 +38,7 @@ export class DynamoDbImage { * This is the only way to instantiate this class. * @param image */ - public static parse(image: { [key: string]: AttributeValue }): DynamoDbImage { + public static parse(image: { [key: string]: NativeAttributeValue }): DynamoDbImage { const fields: DynamoDbField[] = []; const fieldKeys = Object.keys(image); @@ -176,7 +176,7 @@ export class DynamoDbImage { let index = 0; return new DynamoDbImage( v - .map((e: AttributeValue) => typeValuePair(e)) + .map((e: NativeAttributeValue) => typeValuePair(e)) .map(([type, value]: [DynamoDbType, any]) => { return { key: "" + index++, @@ -276,7 +276,7 @@ const verifyType = ( } }; -const typeValuePair = (value: AttributeValue): [DynamoDbType, any] => { +const typeValuePair = (value: NativeAttributeValue): [DynamoDbType, any] => { const typeKeys = Object.keys(value); if (typeKeys.length !== 1) { diff --git a/src/services/secrets-manager.ts b/src/services/secrets-manager.ts index 03ef255..77d5448 100644 --- a/src/services/secrets-manager.ts +++ b/src/services/secrets-manager.ts @@ -1,17 +1,19 @@ -import { SecretsManager } from "aws-sdk"; +import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; import { debugLog } from "./logger"; export const getSecretValue = async (secretName: string): Promise => { // This constructor is inside the function for testability (Jest hoisting is a pain). // It's only called once per lambda execution, so this shouldn't affect performance. // Please refactor if the above is ever not the case :) - const secretsManager: SecretsManager = new SecretsManager(); + const secretsManager = new SecretsManagerClient(); debugLog(`Fetching secret '${secretName}' from AWS Secrets Manager`); - const secretValue = await secretsManager - .getSecretValue({ SecretId: secretName }) - .promise(); + const secretValue = await secretsManager.send( + new GetSecretValueCommand({ + SecretId: secretName, + }), + ); if (!secretValue) { throw new Error(`secret '${secretName}' does not exist`); @@ -20,7 +22,7 @@ export const getSecretValue = async (secretName: string): Promise => { if (secretValue.SecretString) { return secretValue.SecretString; } else if (secretValue.SecretBinary) { - return secretValue.SecretBinary.toString("utf-8"); + return secretValue.SecretBinary.toString(); } throw new Error( diff --git a/src/services/sql-operations.ts b/src/services/sql-operations.ts index 11f0088..0e365ec 100644 --- a/src/services/sql-operations.ts +++ b/src/services/sql-operations.ts @@ -1,4 +1,4 @@ -import { OperationType } from "aws-sdk/clients/dynamodbstreams"; +import { OperationType } from "@aws-sdk/client-dynamodb-streams"; export type SqlOperation = "INSERT" | "UPDATE" | "DELETE"; diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index c64fc3d..6dc423f 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -4,7 +4,7 @@ import { } from "../../../src/functions/process-stream-event"; import { convert } from "../../../src/services/entity-conversion"; import { exampleContext } from "../../utils"; -import { mocked } from "ts-jest"; +import { mocked } from 'ts-jest/utils' jest.mock("../../../src/services/entity-conversion", () => ({ convert: jest.fn(), diff --git a/tests/unit/handler.unitTest.ts b/tests/unit/handler.unitTest.ts deleted file mode 100644 index 339a718..0000000 --- a/tests/unit/handler.unitTest.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { processStreamEvent } from "../../src/functions/process-stream-event"; -import { handler } from "../../src/handler"; -import { config } from "aws-sdk"; -import { CredentialsOptions } from "aws-sdk/lib/credentials"; - -describe("handler", () => { - const oldEnv = process.env; - const oldCredentials: CredentialsOptions = config.credentials as CredentialsOptions; - - beforeEach(() => { - jest.resetModules(); - process.env = { ...oldEnv }; - config.credentials = { ...oldCredentials }; - }); - - afterEach(() => { - process.env = oldEnv; - config.credentials = oldCredentials; - }); - - it("should use local credentials when BRANCH is undefined", () => { - (processStreamEvent as jest.Mock) = jest.fn(); - - // @ts-ignore - handler(null, null, null); - - const credentials = config.credentials; - - expect(credentials?.accessKeyId).toEqual("accessKey1"); - expect(credentials?.secretAccessKey).toEqual("verySecretKey1"); - }); - - it("should use local credentials when BRANCH is 'local'", () => { - process.env.BRANCH = "local"; - - (processStreamEvent as jest.Mock) = jest.fn(); - - // @ts-ignore - handler(null, null, null); - - const credentials = config.credentials; - - expect(credentials?.accessKeyId).toEqual("accessKey1"); - expect(credentials?.secretAccessKey).toEqual("verySecretKey1"); - }); -}); diff --git a/tests/unit/services/secrets-manager.unitTest.ts b/tests/unit/services/secrets-manager.unitTest.ts index fc36720..d02bf9f 100644 --- a/tests/unit/services/secrets-manager.unitTest.ts +++ b/tests/unit/services/secrets-manager.unitTest.ts @@ -1,12 +1,20 @@ import { getSecretValue } from "../../../src/services/secrets-manager"; -import { SecretsManager } from "aws-sdk"; - -jest.mock("aws-sdk"); - +import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; +import { mockClient } from "aws-sdk-client-mock"; + +const mockSecretsManager = mockClient(SecretsManagerClient) +const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { + mockSecretsManager.on(GetSecretValueCommand).callsFake((actualSecretKey) => { + if (expectedSecretKey === actualSecretKey?.SecretId) { + return Promise.resolve(secretValue); + } + return Promise.resolve(undefined); + }); +}; describe("getSecretValue()", () => { beforeEach(() => { // @ts-ignore - SecretsManager.mockClear(); + mockSecretsManager.reset(); }); it("should fail on non-existent secret", async () => { @@ -44,18 +52,4 @@ describe("getSecretValue()", () => { SecretBinary: Buffer.from(secretValue, "utf-8"), }); }; - - const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { - // @ts-ignore - SecretsManager.mockImplementation(() => ({ - getSecretValue: jest.fn().mockImplementation((actualSecretKey) => ({ - promise: jest.fn().mockImplementation(() => { - if (expectedSecretKey === actualSecretKey?.SecretId) { - return Promise.resolve(secretValue); - } - return Promise.resolve(undefined); - }), - })), - })); - }; }); diff --git a/tests/unit/services/sql-operations.unitTest.ts b/tests/unit/services/sql-operations.unitTest.ts index c2f2e79..4f42765 100644 --- a/tests/unit/services/sql-operations.unitTest.ts +++ b/tests/unit/services/sql-operations.unitTest.ts @@ -1,3 +1,4 @@ +import { OperationType } from "@aws-sdk/client-dynamodb-streams"; import { deriveSqlOperation } from "../../../src/services/sql-operations"; describe("deriveSqlOperation()", () => { @@ -14,6 +15,6 @@ describe("deriveSqlOperation()", () => { }); it("should throw error on unrecognized operation", () => { - expect(() => deriveSqlOperation("any-unknown")).toThrowError(); + expect(() => deriveSqlOperation("any-unknown" as unknown as OperationType)).toThrowError(); }); }); diff --git a/tests/utils.ts b/tests/utils.ts index 02af65e..a534c16 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,4 +1,4 @@ -import { AttributeValue } from "aws-sdk/clients/dynamodbstreams"; +import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; import path from "path"; import { getSecretValue } from "../src/services/secrets-manager"; import { SecretsManagerConfig } from "../src/models/aws-sm-config"; @@ -13,7 +13,7 @@ export const pathToResources = (): string => { export const castToImageShape = ( json: any -): { [key: string]: AttributeValue } => { +): { [key: string]: NativeAttributeValue } => { return json as any; }; From e48fc891e3e9b693c76fba4d7778a8c419d8b73e Mon Sep 17 00:00:00 2001 From: "Shivangi Das (CVS)" Date: Wed, 8 May 2024 13:53:49 +0100 Subject: [PATCH 03/20] Revert "chore(cb2-11268): upgrade aws-sdk to v3 (#97)" (#98) This reverts commit 9b0c23de469e335775d2e71aa665ebb55b40e4e6. --- package-lock.json | 1519 +++++------------ package.json | 8 +- src/handler.ts | 20 +- src/services/dynamodb-images.ts | 8 +- src/services/secrets-manager.ts | 14 +- src/services/sql-operations.ts | 2 +- .../process-stream-event.unitTest.ts | 2 +- tests/unit/handler.unitTest.ts | 46 + .../unit/services/secrets-manager.unitTest.ts | 32 +- .../unit/services/sql-operations.unitTest.ts | 3 +- tests/utils.ts | 4 +- 11 files changed, 514 insertions(+), 1144 deletions(-) create mode 100644 tests/unit/handler.unitTest.ts diff --git a/package-lock.json b/package-lock.json index a13c9a2..c0c415a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,11 +9,10 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@aws-sdk/client-dynamodb-streams": "3.565.0", - "@aws-sdk/client-secrets-manager": "3.565.0", "@types/lambda-tester": "3.6.0", - "aws-lambda": "1.0.7", - "aws-xray-sdk": "3.6.0", + "aws-lambda": "1.0.6", + "aws-sdk": "2.1354.0", + "aws-xray-sdk": "2.5.0", "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", @@ -37,7 +36,6 @@ "@types/uuid": "8.3.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", - "aws-sdk-client-mock": "4.0.0", "commitlint": "17.0.0", "cross-env": "7.0.3", "husky": "3.0.9", @@ -78,6 +76,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -86,6 +85,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dev": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -101,6 +101,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dev": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -111,6 +112,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -118,572 +120,26 @@ "node_modules/@aws-crypto/util": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", - "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", - "@aws-sdk/middleware-endpoint-discovery": "3.535.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.565.0.tgz", - "integrity": "sha512-1T4XbpIH01qJdc1/k+azlKwZsvIaNqeFgslkzw6p7uE+K3xJZ+x9Y3vv2vOCQk7lAkhK+WJUvduum4Ubu0JuBQ==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", - "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", - "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", - "peer": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", - "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", - "peer": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", - "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", - "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", - "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", - "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.565.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", - "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", - "dependencies": { - "@aws-sdk/client-sso": "3.556.0", - "@aws-sdk/token-providers": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", - "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/token-providers": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", - "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.565.0" - } - }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", - "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", - "dev": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/eventstream-serde-browser": "^2.2.0", - "@smithy/eventstream-serde-config-resolver": "^2.2.0", - "@smithy/eventstream-serde-node": "^2.2.0", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-stream": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.565.0.tgz", - "integrity": "sha512-C31ZIoY6d0Fz+U12ygXkemjbp2CsMZzQd34i2PYb+AzsuGeNukvAs+LnumJ0if5HM7rfaC9m68Qw+NRMn9lRLA==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", - "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", - "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", - "peer": true, + "node_modules/@aws-sdk/client-dynamodb": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", + "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", + "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-endpoint-discovery": "3.535.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", @@ -718,22 +174,44 @@ "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", - "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", - "peer": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-lambda": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", + "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", + "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", @@ -745,6 +223,9 @@ "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", "@smithy/core": "^1.4.2", + "@smithy/eventstream-serde-browser": "^2.2.0", + "@smithy/eventstream-serde-config-resolver": "^2.2.0", + "@smithy/eventstream-serde-node": "^2.2.0", "@smithy/fetch-http-handler": "^2.5.0", "@smithy/hash-node": "^2.2.0", "@smithy/invalid-dependency": "^2.2.0", @@ -767,143 +248,20 @@ "@smithy/util-endpoints": "^1.2.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", + "@smithy/util-stream": "^2.2.0", "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", - "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", - "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", - "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", - "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.565.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", - "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", - "dependencies": { - "@aws-sdk/client-sso": "3.556.0", - "@aws-sdk/token-providers": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", - "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", - "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", - "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.565.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/tslib": { + "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/client-sso": { "version": "3.554.0", @@ -1105,6 +463,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -1118,12 +477,14 @@ "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.552.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/fetch-http-handler": "^2.5.0", @@ -1142,7 +503,8 @@ "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.554.0", @@ -1205,6 +567,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -1219,7 +582,8 @@ "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.554.0", @@ -1313,6 +677,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -1326,12 +691,14 @@ "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -1344,12 +711,14 @@ "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -1363,12 +732,14 @@ "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@aws-sdk/util-endpoints": "3.540.0", @@ -1383,12 +754,14 @@ "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -1404,7 +777,8 @@ "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/token-providers": { "version": "3.554.0", @@ -1433,6 +807,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -1444,7 +819,8 @@ "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-dynamodb": { "version": "3.266.0", @@ -1468,6 +844,7 @@ "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -1481,12 +858,14 @@ "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -1497,12 +876,14 @@ "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -1513,12 +894,14 @@ "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -1540,12 +923,14 @@ "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, "dependencies": { "tslib": "^2.3.1" } @@ -1553,7 +938,8 @@ "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@babel/code-frame": { "version": "7.24.2", @@ -4864,15 +4250,16 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, "node_modules/@smithy/abort-controller": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4884,12 +4271,14 @@ "node_modules/@smithy/abort-controller/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/config-resolver": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -4904,12 +4293,14 @@ "node_modules/@smithy/config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/core": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", + "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-retry": "^2.3.1", @@ -4927,12 +4318,14 @@ "node_modules/@smithy/core/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/credential-provider-imds": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -4947,7 +4340,8 @@ "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/eventstream-codec": { "version": "2.2.0", @@ -5050,6 +4444,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", + "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", @@ -5061,12 +4456,14 @@ "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/hash-node": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", @@ -5080,12 +4477,14 @@ "node_modules/@smithy/hash-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/invalid-dependency": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5094,12 +4493,14 @@ "node_modules/@smithy/invalid-dependency/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5110,12 +4511,14 @@ "node_modules/@smithy/is-array-buffer/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-content-length": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", @@ -5128,12 +4531,14 @@ "node_modules/@smithy/middleware-content-length/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-endpoint": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", + "dev": true, "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", @@ -5150,12 +4555,14 @@ "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-retry": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", @@ -5174,12 +4581,14 @@ "node_modules/@smithy/middleware-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -5192,6 +4601,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5203,12 +4613,14 @@ "node_modules/@smithy/middleware-serde/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5220,12 +4632,14 @@ "node_modules/@smithy/middleware-stack/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/node-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", + "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -5239,12 +4653,14 @@ "node_modules/@smithy/node-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/node-http-handler": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", + "dev": true, "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", @@ -5259,12 +4675,14 @@ "node_modules/@smithy/node-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/property-provider": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5276,12 +4694,14 @@ "node_modules/@smithy/property-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/protocol-http": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5293,12 +4713,14 @@ "node_modules/@smithy/protocol-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/querystring-builder": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", @@ -5311,12 +4733,14 @@ "node_modules/@smithy/querystring-builder/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/querystring-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5328,12 +4752,14 @@ "node_modules/@smithy/querystring-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/service-error-classification": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0" }, @@ -5345,6 +4771,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5356,12 +4783,14 @@ "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/signature-v4": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", + "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "@smithy/types": "^2.12.0", @@ -5378,12 +4807,14 @@ "node_modules/@smithy/signature-v4/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/smithy-client": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", + "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", @@ -5399,12 +4830,14 @@ "node_modules/@smithy/smithy-client/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/types": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5415,12 +4848,14 @@ "node_modules/@smithy/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/url-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", + "dev": true, "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", @@ -5430,12 +4865,14 @@ "node_modules/@smithy/url-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-base64": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", @@ -5448,12 +4885,14 @@ "node_modules/@smithy/util-base64/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-body-length-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", + "dev": true, "dependencies": { "tslib": "^2.6.2" } @@ -5461,12 +4900,14 @@ "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-body-length-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5477,12 +4918,14 @@ "node_modules/@smithy/util-body-length-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -5494,12 +4937,14 @@ "node_modules/@smithy/util-buffer-from/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5510,12 +4955,14 @@ "node_modules/@smithy/util-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", + "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", @@ -5530,12 +4977,14 @@ "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-defaults-mode-node": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", + "dev": true, "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", @@ -5552,12 +5001,14 @@ "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-endpoints": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -5570,12 +5021,14 @@ "node_modules/@smithy/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-hex-encoding": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5586,12 +5039,14 @@ "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-middleware": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5603,12 +5058,14 @@ "node_modules/@smithy/util-middleware/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-retry": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", + "dev": true, "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", @@ -5621,12 +5078,14 @@ "node_modules/@smithy/util-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", + "dev": true, "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", @@ -5644,12 +5103,14 @@ "node_modules/@smithy/util-stream/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-uri-escape": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5660,12 +5121,14 @@ "node_modules/@smithy/util-uri-escape/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -5677,7 +5140,8 @@ "node_modules/@smithy/util-utf8/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-waiter": { "version": "2.2.0", @@ -5796,9 +5260,9 @@ "dev": true }, "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5822,18 +5286,18 @@ "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", "dev": true }, - "node_modules/@types/cls-hooked": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.8.tgz", - "integrity": "sha512-tf/7H883gFA6MPlWI15EQtfNZ+oPL0gLKkOlx9UHFrun1fC/FkuyNBpTKq1B5E3T4fbvjId6WifHUdSGsMMuPg==", + "node_modules/@types/connect": { + "version": "3.4.34", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", + "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "node_modules/@types/continuation-local-storage": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@types/continuation-local-storage/-/continuation-local-storage-3.2.3.tgz", + "integrity": "sha512-4LYeWblV+6puK9tFGM7Zr4OLZkVXmaL7hUK6/wHwbfwM+q7v+HZyBWTXkNOiC9GqOxv7ehhi5TMCbebZWeVYtw==", "dependencies": { "@types/node": "*" } @@ -5854,25 +5318,24 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz", + "integrity": "sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", + "@types/express-serve-static-core": "^4.17.18", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.20.tgz", + "integrity": "sha512-8qqFN4W53IEWa9bdmuVrUcVkFemQWnt5DKPQ/oa8xKDYgtjCr2OO6NX5TIK49NLFr3mPYU2cLh92DQquC3oWWQ==", "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "@types/range-parser": "*" } }, "node_modules/@types/glob": { @@ -5906,11 +5369,6 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" - }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -6124,9 +5582,9 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "node_modules/@types/minimatch": { "version": "3.0.4", @@ -6141,9 +5599,9 @@ "dev": true }, "node_modules/@types/mysql": { - "version": "2.15.26", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", - "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "version": "2.15.18", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.18.tgz", + "integrity": "sha512-JW74Nh3P/RDAnaP8uXe1qmRpoFBO84SiWvWoSju/F5+2S1kVBi1FbbDoqK/sTZrCCxySaOJnRATvWD+bLcJjAg==", "dependencies": { "@types/node": "*" } @@ -6166,13 +5624,13 @@ "dev": true }, "node_modules/@types/pg": { - "version": "8.11.5", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.5.tgz", - "integrity": "sha512-2xMjVviMxneZHDHX5p5S6tsRRs7TpDHeeK7kTTMe/kAC/mRRNjWHjZg0rkiY+e17jXSZV3zJYDxXV8Cy72/Vuw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.0.tgz", + "integrity": "sha512-3JXFrsl8COoqVB1+2Pqelx6soaiFVXzkT3fkuSNe7GB40ysfT0FHphZFPiqIXpMyTHSFRdLTyZzrFBrJRPAArA==", "dependencies": { "@types/node": "*", "pg-protocol": "*", - "pg-types": "^4.0.1" + "pg-types": "^2.2.0" } }, "node_modules/@types/prettier": { @@ -6182,14 +5640,14 @@ "dev": true }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + "version": "6.9.6", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", + "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" }, "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", + "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" }, "node_modules/@types/request": { "version": "2.48.5", @@ -6242,37 +5700,21 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "node_modules/@types/serve-static": { + "version": "1.13.9", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", + "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, "node_modules/@types/sinon": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.0.tgz", "integrity": "sha512-NyzhuSBy97B/zE58cDw4NyGvByQbAHNP9069KVSgnXt/sc0T6MFRh0InKAeBVHJWdSXG1S3+PxgVIgKo9mTHbw==", "dev": true }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", - "dev": true - }, "node_modules/@types/ssh2-streams": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz", @@ -6720,15 +6162,21 @@ "node": ">=0.10.0" } }, - "node_modules/async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "node_modules/async": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", + "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" + }, + "node_modules/async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", "dependencies": { - "stack-chain": "^1.3.7" + "semver": "^5.3.0", + "shimmer": "^1.1.0" }, "engines": { - "node": "^4.7 || >=6.9 || >=7.3" + "node": "<=0.11.8 || >0.11.10" } }, "node_modules/asynckit": { @@ -6761,7 +6209,7 @@ "node_modules/atomic-batcher": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", - "integrity": "sha512-EFGCRj4kLX1dHv1cDzTk+xbjBFj1GnJDpui52YmEcxxHHEWjYyT6l51U7n6WQ28osZH4S9gSybxe56Vm7vB61Q==" + "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" }, "node_modules/audit-filter": { "version": "0.5.0", @@ -6787,13 +6235,13 @@ } }, "node_modules/aws-lambda": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", - "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.6.tgz", + "integrity": "sha512-Z9lmZBiDYejzjMWuQSDXuZWAqAun6vGt7WApB1r0f8tLNf0IlTGsH30qENfP1kXeTbbMgPpt1bPEeMZjYDTXxQ==", "dependencies": { - "aws-sdk": "^2.814.0", + "aws-sdk": "*", "commander": "^3.0.2", - "js-yaml": "^3.14.1", + "js-yaml": "^3.13.1", "watchpack": "^2.0.0-beta.10" }, "bin": { @@ -6849,152 +6297,6 @@ "node": ">= 10.0.0" } }, - "node_modules/aws-sdk-client-mock": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.0.0.tgz", - "integrity": "sha512-/rxo+pzCFaUozK7TyCqo3GYwzdBGn9Ai6EsT8ytXDoUXlD/Q5hw9hj2lOkCAyubECzGJFHMmQg9GZ1GOGlN/qQ==", - "dev": true, - "dependencies": { - "@types/sinon": "^10.0.10", - "sinon": "^16.1.3", - "tslib": "^2.1.0" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/@types/sinon": { - "version": "10.0.20", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", - "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", - "dev": true, - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true - }, - "node_modules/aws-sdk-client-mock/node_modules/nise": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", - "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/text-encoding": "^0.7.2", - "just-extend": "^6.2.0", - "path-to-regexp": "^6.2.1" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/nise/node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "dev": true - }, - "node_modules/aws-sdk-client-mock/node_modules/sinon": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", - "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.4", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aws-sdk-client-mock/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, "node_modules/aws-sdk/node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -7004,89 +6306,83 @@ } }, "node_modules/aws-xray-sdk": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.6.0.tgz", - "integrity": "sha512-ID2R0U94wEMPLAkmQ7+TZuzvMjp2fe0dqqUQb6BniIDWXdvV5bphrMhsHzp/0PDRjGqsVSrZ1V1qRmq8bhEl1A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-2.5.0.tgz", + "integrity": "sha512-KBTF9QUq0zu24t+gFh3VATYDNx295VzZUUjpZ1OmIEbcs3Zqmox5L6VAqjCgGfJeLaCUAWPLkduxau3LuDpqcw==", "dependencies": { - "aws-xray-sdk-core": "3.6.0", - "aws-xray-sdk-express": "3.6.0", - "aws-xray-sdk-mysql": "3.6.0", - "aws-xray-sdk-postgres": "3.6.0" + "aws-xray-sdk-core": "^2.5.0", + "aws-xray-sdk-express": "^2.5.0", + "aws-xray-sdk-mysql": "^2.5.0", + "aws-xray-sdk-postgres": "^2.5.0", + "pkginfo": "^0.4.0" }, "engines": { - "node": ">= 14.x" + "node": ">= 4.x" } }, "node_modules/aws-xray-sdk-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.6.0.tgz", - "integrity": "sha512-+UnYmVEni9NNJvE6aFY1dbvMtFquXSYAj+HYfm+90icoGKYvvLD71R7PHyFFnYct5of4NFpEXJtUJrWMv8e4mQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-2.5.0.tgz", + "integrity": "sha512-qe60bv0kn5KY6gAIF88TPCOIdu/A3dTmcKISj+kE4OH02eF6kMm1ctL7OgoBAasnsDNSn0VMLhIaA1izgoWuxA==", "dependencies": { - "@aws-sdk/types": "^3.4.1", - "@smithy/service-error-classification": "^2.0.4", - "@types/cls-hooked": "^4.3.3", + "@types/continuation-local-storage": "*", "atomic-batcher": "^1.0.2", - "cls-hooked": "^4.2.2", - "semver": "^7.5.3" + "aws-sdk": "^2.304.0", + "continuation-local-storage": "^3.2.0", + "date-fns": "^1.29.0", + "pkginfo": "^0.4.0", + "semver": "^5.3.0", + "winston": "^2.4.4" }, "engines": { - "node": ">= 14.x" + "node": ">= 4.x" } }, - "node_modules/aws-xray-sdk-core/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } + "node_modules/aws-xray-sdk-core/node_modules/date-fns": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", + "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" }, "node_modules/aws-xray-sdk-express": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.6.0.tgz", - "integrity": "sha512-vIHk+qpmLhI2JWiqgjhHZYerNo9jbjifJ6qIb+l5CCAqe00CIjnlnLF9LKLi4UhVT9xyAp46aCpWMEl+XeXSYA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-2.5.0.tgz", + "integrity": "sha512-VfUXlxFlI+gr6ImMF+3000fqPRTBS9MbAywdtC8dt/U57WQbLFDjPW+V6oJowTwrkgKwpOKSXncQDfBs8QHvIw==", "dependencies": { "@types/express": "*" }, "engines": { - "node": ">= 14.x" + "node": ">= 4.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.6.0" + "aws-xray-sdk-core": "^2.5.0" } }, "node_modules/aws-xray-sdk-mysql": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.6.0.tgz", - "integrity": "sha512-DNZEe8Q331tzqc0dLM1Zy0d2GNFoks7BIX3Lop/+lGLytO6a4sdZ/NIXZX6pngG1sBYlsoTSFCFi470UD6Q6AA==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-2.5.0.tgz", + "integrity": "sha512-OI3cDkVcKTiWytwoOE1Oj0D2UbchOVHkiQNXWktDk9QYzqbOz+GNEwD5QneqyxFu0z0bQieClBM+0okUprFBXQ==", "dependencies": { "@types/mysql": "*" }, "engines": { - "node": ">= 14.x" + "node": ">= 4.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.6.0" + "aws-xray-sdk-core": "^2.5.0" } }, "node_modules/aws-xray-sdk-postgres": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.6.0.tgz", - "integrity": "sha512-jQ4pNWq0RdVVZJ8XVqD7Rc6YS6bYqxCV0IQW2SBAhnW6S5yCLRekYgxbj0D35VZgLyqZQX98kdOV7ZqrWRyAyw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-2.5.0.tgz", + "integrity": "sha512-8LcXTjr272gKMSg9a+QSGQPjAabQb87SA0c4ZlVcPqzoG7nAd3pULR6/HDtujeukbRAb6rEoxzKvPX0s18NyFw==", "dependencies": { "@types/pg": "*" }, "engines": { - "node": ">= 14.x" + "node": ">= 4.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.6.0" + "aws-xray-sdk-core": "^2.5.0" } }, "node_modules/axios": { @@ -7431,7 +6727,8 @@ "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true }, "node_modules/boxen": { "version": "7.1.1", @@ -8221,19 +7518,6 @@ "mimic-response": "^1.0.0" } }, - "node_modules/cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "dependencies": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" - } - }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -8284,6 +7568,14 @@ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -8527,6 +7819,15 @@ "node": ">= 0.6" } }, + "node_modules/continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "dependencies": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, "node_modules/conventional-changelog-angular": { "version": "5.0.12", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", @@ -8832,6 +8133,14 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, + "node_modules/cycle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", + "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -10039,6 +9348,14 @@ "node": ">=0.10.0" } }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", + "engines": { + "node": "> 0.1.90" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -10141,6 +9458,7 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "dev": true, "funding": [ { "type": "paypal", @@ -11930,6 +11248,11 @@ "ws": "*" } }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, "node_modules/istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", @@ -15123,6 +14446,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -16142,11 +15466,6 @@ "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", "dev": true }, - "node_modules/obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -16617,34 +15936,24 @@ "node": ">=4.0.0" } }, - "node_modules/pg-numeric": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", - "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", - "engines": { - "node": ">=4" - } - }, "node_modules/pg-protocol": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", - "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", + "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" }, "node_modules/pg-types": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz", - "integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", + "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", "dependencies": { "pg-int8": "1.0.1", - "pg-numeric": "1.0.2", - "postgres-array": "~3.0.1", - "postgres-bytea": "~3.0.0", - "postgres-date": "~2.1.0", - "postgres-interval": "^3.0.0", - "postgres-range": "^1.1.1" + "postgres-array": "~2.0.0", + "postgres-bytea": "~1.0.0", + "postgres-date": "~1.0.4", + "postgres-interval": "^1.1.0" }, "engines": { - "node": ">=10" + "node": ">=4" } }, "node_modules/picocolors": { @@ -16716,6 +16025,14 @@ "node": ">= 6" } }, + "node_modules/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -16735,45 +16052,40 @@ } }, "node_modules/postgres-array": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", - "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", + "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", "engines": { - "node": ">=12" + "node": ">=4" } }, "node_modules/postgres-bytea": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", - "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", - "dependencies": { - "obuf": "~1.1.2" - }, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", + "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", "engines": { - "node": ">= 6" + "node": ">=0.10.0" } }, "node_modules/postgres-date": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", - "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", + "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, "node_modules/postgres-interval": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", - "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", + "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", + "dependencies": { + "xtend": "^4.0.0" + }, "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/postgres-range": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz", - "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==" - }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -18696,10 +18008,13 @@ "nan": "^2.16.0" } }, - "node_modules/stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" + "node_modules/stack-trace": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", + "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", + "engines": { + "node": "*" + } }, "node_modules/stack-utils": { "version": "2.0.3", @@ -18884,7 +18199,8 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "dev": true }, "node_modules/strtok3": { "version": "6.3.0", @@ -19487,7 +18803,8 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tslint": { "version": "5.20.0", @@ -20107,6 +19424,22 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/winston": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", + "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", + "dependencies": { + "async": "~1.0.0", + "colors": "1.0.x", + "cycle": "1.0.x", + "eyes": "0.1.x", + "isstream": "0.1.x", + "stack-trace": "0.0.x" + }, + "engines": { + "node": ">= 0.10.0" + } + }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -20247,7 +19580,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, "engines": { "node": ">=0.4" } @@ -20264,7 +19596,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index 4e1553b..21da6b2 100644 --- a/package.json +++ b/package.json @@ -53,11 +53,10 @@ "author": "", "license": "ISC", "dependencies": { - "@aws-sdk/client-dynamodb-streams": "3.565.0", - "@aws-sdk/client-secrets-manager": "3.565.0", "@types/lambda-tester": "3.6.0", - "aws-lambda": "1.0.7", - "aws-xray-sdk": "3.6.0", + "aws-lambda": "1.0.6", + "aws-sdk": "2.1354.0", + "aws-xray-sdk": "2.5.0", "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", @@ -81,7 +80,6 @@ "@types/uuid": "8.3.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", - "aws-sdk-client-mock": "4.0.0", "commitlint": "17.0.0", "cross-env": "7.0.3", "husky": "3.0.9", diff --git a/src/handler.ts b/src/handler.ts index 156ba5e..d656574 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -1,24 +1,14 @@ -import { - PutSecretValueCommand, - SecretsManagerClient, -} from "@aws-sdk/client-secrets-manager"; import { processStreamEvent } from "./functions/process-stream-event"; +import { config as AWSConfig } from "aws-sdk"; const isOffline: boolean = !process.env.BRANCH || process.env.BRANCH === "local"; if (isOffline) { - const SMC = new SecretsManagerClient({}); - - const command = new PutSecretValueCommand({ - SecretId: "secretid1", - SecretString: JSON.stringify({ - accessKeyId: "accessKey1", - secretAccessKey: "verySecretKey1", - }), - }); - - SMC.send(command); + AWSConfig.credentials = { + accessKeyId: "accessKey1", + secretAccessKey: "verySecretKey1", + }; } export { processStreamEvent as handler }; diff --git a/src/services/dynamodb-images.ts b/src/services/dynamodb-images.ts index 992c92c..a9ff3a6 100644 --- a/src/services/dynamodb-images.ts +++ b/src/services/dynamodb-images.ts @@ -1,4 +1,4 @@ -import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; +import { AttributeValue } from "aws-sdk/clients/dynamodbstreams"; import { parseISO } from "date-fns"; import { Maybe } from "../models/optionals"; import { padWithZeros } from "../utils/padwithzeros"; @@ -38,7 +38,7 @@ export class DynamoDbImage { * This is the only way to instantiate this class. * @param image */ - public static parse(image: { [key: string]: NativeAttributeValue }): DynamoDbImage { + public static parse(image: { [key: string]: AttributeValue }): DynamoDbImage { const fields: DynamoDbField[] = []; const fieldKeys = Object.keys(image); @@ -176,7 +176,7 @@ export class DynamoDbImage { let index = 0; return new DynamoDbImage( v - .map((e: NativeAttributeValue) => typeValuePair(e)) + .map((e: AttributeValue) => typeValuePair(e)) .map(([type, value]: [DynamoDbType, any]) => { return { key: "" + index++, @@ -276,7 +276,7 @@ const verifyType = ( } }; -const typeValuePair = (value: NativeAttributeValue): [DynamoDbType, any] => { +const typeValuePair = (value: AttributeValue): [DynamoDbType, any] => { const typeKeys = Object.keys(value); if (typeKeys.length !== 1) { diff --git a/src/services/secrets-manager.ts b/src/services/secrets-manager.ts index 77d5448..03ef255 100644 --- a/src/services/secrets-manager.ts +++ b/src/services/secrets-manager.ts @@ -1,19 +1,17 @@ -import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; +import { SecretsManager } from "aws-sdk"; import { debugLog } from "./logger"; export const getSecretValue = async (secretName: string): Promise => { // This constructor is inside the function for testability (Jest hoisting is a pain). // It's only called once per lambda execution, so this shouldn't affect performance. // Please refactor if the above is ever not the case :) - const secretsManager = new SecretsManagerClient(); + const secretsManager: SecretsManager = new SecretsManager(); debugLog(`Fetching secret '${secretName}' from AWS Secrets Manager`); - const secretValue = await secretsManager.send( - new GetSecretValueCommand({ - SecretId: secretName, - }), - ); + const secretValue = await secretsManager + .getSecretValue({ SecretId: secretName }) + .promise(); if (!secretValue) { throw new Error(`secret '${secretName}' does not exist`); @@ -22,7 +20,7 @@ export const getSecretValue = async (secretName: string): Promise => { if (secretValue.SecretString) { return secretValue.SecretString; } else if (secretValue.SecretBinary) { - return secretValue.SecretBinary.toString(); + return secretValue.SecretBinary.toString("utf-8"); } throw new Error( diff --git a/src/services/sql-operations.ts b/src/services/sql-operations.ts index 0e365ec..11f0088 100644 --- a/src/services/sql-operations.ts +++ b/src/services/sql-operations.ts @@ -1,4 +1,4 @@ -import { OperationType } from "@aws-sdk/client-dynamodb-streams"; +import { OperationType } from "aws-sdk/clients/dynamodbstreams"; export type SqlOperation = "INSERT" | "UPDATE" | "DELETE"; diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 6dc423f..c64fc3d 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -4,7 +4,7 @@ import { } from "../../../src/functions/process-stream-event"; import { convert } from "../../../src/services/entity-conversion"; import { exampleContext } from "../../utils"; -import { mocked } from 'ts-jest/utils' +import { mocked } from "ts-jest"; jest.mock("../../../src/services/entity-conversion", () => ({ convert: jest.fn(), diff --git a/tests/unit/handler.unitTest.ts b/tests/unit/handler.unitTest.ts new file mode 100644 index 0000000..339a718 --- /dev/null +++ b/tests/unit/handler.unitTest.ts @@ -0,0 +1,46 @@ +import { processStreamEvent } from "../../src/functions/process-stream-event"; +import { handler } from "../../src/handler"; +import { config } from "aws-sdk"; +import { CredentialsOptions } from "aws-sdk/lib/credentials"; + +describe("handler", () => { + const oldEnv = process.env; + const oldCredentials: CredentialsOptions = config.credentials as CredentialsOptions; + + beforeEach(() => { + jest.resetModules(); + process.env = { ...oldEnv }; + config.credentials = { ...oldCredentials }; + }); + + afterEach(() => { + process.env = oldEnv; + config.credentials = oldCredentials; + }); + + it("should use local credentials when BRANCH is undefined", () => { + (processStreamEvent as jest.Mock) = jest.fn(); + + // @ts-ignore + handler(null, null, null); + + const credentials = config.credentials; + + expect(credentials?.accessKeyId).toEqual("accessKey1"); + expect(credentials?.secretAccessKey).toEqual("verySecretKey1"); + }); + + it("should use local credentials when BRANCH is 'local'", () => { + process.env.BRANCH = "local"; + + (processStreamEvent as jest.Mock) = jest.fn(); + + // @ts-ignore + handler(null, null, null); + + const credentials = config.credentials; + + expect(credentials?.accessKeyId).toEqual("accessKey1"); + expect(credentials?.secretAccessKey).toEqual("verySecretKey1"); + }); +}); diff --git a/tests/unit/services/secrets-manager.unitTest.ts b/tests/unit/services/secrets-manager.unitTest.ts index d02bf9f..fc36720 100644 --- a/tests/unit/services/secrets-manager.unitTest.ts +++ b/tests/unit/services/secrets-manager.unitTest.ts @@ -1,20 +1,12 @@ import { getSecretValue } from "../../../src/services/secrets-manager"; -import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; -import { mockClient } from "aws-sdk-client-mock"; - -const mockSecretsManager = mockClient(SecretsManagerClient) -const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { - mockSecretsManager.on(GetSecretValueCommand).callsFake((actualSecretKey) => { - if (expectedSecretKey === actualSecretKey?.SecretId) { - return Promise.resolve(secretValue); - } - return Promise.resolve(undefined); - }); -}; +import { SecretsManager } from "aws-sdk"; + +jest.mock("aws-sdk"); + describe("getSecretValue()", () => { beforeEach(() => { // @ts-ignore - mockSecretsManager.reset(); + SecretsManager.mockClear(); }); it("should fail on non-existent secret", async () => { @@ -52,4 +44,18 @@ describe("getSecretValue()", () => { SecretBinary: Buffer.from(secretValue, "utf-8"), }); }; + + const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { + // @ts-ignore + SecretsManager.mockImplementation(() => ({ + getSecretValue: jest.fn().mockImplementation((actualSecretKey) => ({ + promise: jest.fn().mockImplementation(() => { + if (expectedSecretKey === actualSecretKey?.SecretId) { + return Promise.resolve(secretValue); + } + return Promise.resolve(undefined); + }), + })), + })); + }; }); diff --git a/tests/unit/services/sql-operations.unitTest.ts b/tests/unit/services/sql-operations.unitTest.ts index 4f42765..c2f2e79 100644 --- a/tests/unit/services/sql-operations.unitTest.ts +++ b/tests/unit/services/sql-operations.unitTest.ts @@ -1,4 +1,3 @@ -import { OperationType } from "@aws-sdk/client-dynamodb-streams"; import { deriveSqlOperation } from "../../../src/services/sql-operations"; describe("deriveSqlOperation()", () => { @@ -15,6 +14,6 @@ describe("deriveSqlOperation()", () => { }); it("should throw error on unrecognized operation", () => { - expect(() => deriveSqlOperation("any-unknown" as unknown as OperationType)).toThrowError(); + expect(() => deriveSqlOperation("any-unknown")).toThrowError(); }); }); diff --git a/tests/utils.ts b/tests/utils.ts index a534c16..02af65e 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,4 +1,4 @@ -import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; +import { AttributeValue } from "aws-sdk/clients/dynamodbstreams"; import path from "path"; import { getSecretValue } from "../src/services/secrets-manager"; import { SecretsManagerConfig } from "../src/models/aws-sm-config"; @@ -13,7 +13,7 @@ export const pathToResources = (): string => { export const castToImageShape = ( json: any -): { [key: string]: NativeAttributeValue } => { +): { [key: string]: AttributeValue } => { return json as any; }; From 5e72cd2439ca12c68bd67cd40d7875f72c2d8ead Mon Sep 17 00:00:00 2001 From: Pete Mallam Date: Wed, 8 May 2024 17:08:10 +0100 Subject: [PATCH 04/20] try sudo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 21da6b2..64fa425 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "audit": "npm audit --omit=dev", "package": "mkdir -p ${ZIP_NAME} && cp package.json package-lock.json ${ZIP_NAME}/ && cp -r .build/src/* ${ZIP_NAME}/ && cd ${ZIP_NAME} && npm ci --production && rm package.json package-lock.json && zip -qr ../${ZIP_NAME}.zip .", "security-checks": "git secrets --register-aws && git secrets --scan", - "tools-setup": "liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" + "tools-setup": "sudo liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" }, "nyc": { "include": [ From 2974e4f39eea98e66aa182318338d3f2f2c31166 Mon Sep 17 00:00:00 2001 From: Pete Mallam Date: Wed, 8 May 2024 17:41:21 +0100 Subject: [PATCH 05/20] no sudo --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64fa425..21da6b2 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "audit": "npm audit --omit=dev", "package": "mkdir -p ${ZIP_NAME} && cp package.json package-lock.json ${ZIP_NAME}/ && cp -r .build/src/* ${ZIP_NAME}/ && cd ${ZIP_NAME} && npm ci --production && rm package.json package-lock.json && zip -qr ../${ZIP_NAME}.zip .", "security-checks": "git secrets --register-aws && git secrets --scan", - "tools-setup": "sudo liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" + "tools-setup": "liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" }, "nyc": { "include": [ From 9ecf5d2874c9781a451b341b2d60cfba1175c5a4 Mon Sep 17 00:00:00 2001 From: Pete Mallam Date: Thu, 9 May 2024 09:43:25 +0100 Subject: [PATCH 06/20] Revert "no sudo" This reverts commit 2974e4f39eea98e66aa182318338d3f2f2c31166. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 21da6b2..64fa425 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "audit": "npm audit --omit=dev", "package": "mkdir -p ${ZIP_NAME} && cp package.json package-lock.json ${ZIP_NAME}/ && cp -r .build/src/* ${ZIP_NAME}/ && cd ${ZIP_NAME} && npm ci --production && rm package.json package-lock.json && zip -qr ../${ZIP_NAME}.zip .", "security-checks": "git secrets --register-aws && git secrets --scan", - "tools-setup": "liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" + "tools-setup": "sudo liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" }, "nyc": { "include": [ From 6753c89ef5bf78f3d8b54030afc46c507eadb0e4 Mon Sep 17 00:00:00 2001 From: Pete Mallam Date: Thu, 9 May 2024 09:43:36 +0100 Subject: [PATCH 07/20] Revert "try sudo" This reverts commit 5e72cd2439ca12c68bd67cd40d7875f72c2d8ead. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 64fa425..21da6b2 100644 --- a/package.json +++ b/package.json @@ -29,7 +29,7 @@ "audit": "npm audit --omit=dev", "package": "mkdir -p ${ZIP_NAME} && cp package.json package-lock.json ${ZIP_NAME}/ && cp -r .build/src/* ${ZIP_NAME}/ && cd ${ZIP_NAME} && npm ci --production && rm package.json package-lock.json && zip -qr ../${ZIP_NAME}.zip .", "security-checks": "git secrets --register-aws && git secrets --scan", - "tools-setup": "sudo liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" + "tools-setup": "liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" }, "nyc": { "include": [ From 8ee9f4b90bba542f40196a29a99eab40e85ae7e8 Mon Sep 17 00:00:00 2001 From: "Shivangi Das (CVS)" Date: Fri, 10 May 2024 15:23:16 +0100 Subject: [PATCH 08/20] chore(cb2-11268): upgrade aws-sdk to v3 (#99) * chore(cb2-11268): upgrade aws-sdk to v3 * chore(cb2-11268): lint * chore(cb2-11268): typescript * Add updated local workflow * chore(cb2-11268): update mysql version * Add updated local workflow * Always build * Always build (cherry picked from commit d200755f2694f8db57e8d800c30cb8ebaf25ebfb) * feat(cb2-11268): run docker mysql image * Use IP * That's not supposed to be there * Revert "feat(cb2-11268): run docker mysql image" This reverts commit 7cb5d970e4a4590e30cfbb8bdc8f17db3145e88b. --------- Co-authored-by: Pete Mallam --- .github/workflows/build-and-test.yaml | 118 +- README.md | 2 +- package-lock.json | 1509 ++++++++++++----- package.json | 8 +- sonar-project.properties | 2 +- src/handler.ts | 20 +- src/services/dynamodb-images.ts | 8 +- src/services/secrets-manager.ts | 14 +- src/services/sql-operations.ts | 2 +- ...nto-service-document-conversion.intTest.ts | 2 +- tests/integration/cvsbnop-container.ts | 2 +- ...tech-record-document-conversion.intTest.ts | 2 +- ...-results-conversion-with-delete.intTest.ts | 2 +- ...-results-conversion-with-upsert.intTest.ts | 2 +- tests/resources/Dockerfile | 2 +- .../process-stream-event.unitTest.ts | 2 +- tests/unit/handler.unitTest.ts | 46 - .../unit/services/secrets-manager.unitTest.ts | 32 +- .../unit/services/sql-operations.unitTest.ts | 3 +- tests/utils.ts | 6 +- 20 files changed, 1191 insertions(+), 593 deletions(-) delete mode 100644 tests/unit/handler.unitTest.ts diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index 93401e9..bf674eb 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -1,8 +1,9 @@ name: 🧱 Build and Test -run-name: 🧱 Build and Test ${{ github.repository }}@${{ github.ref_name }} +run-name: 🧱 Build and Test ${{ github.ref_name }} env: bucket-name: cvs-services on: + workflow_call: workflow_dispatch: inputs: ignore-test-failures: @@ -10,6 +11,10 @@ on: description: Ignore Test Failures default: false +concurrency: + group: ${{ github.workflow }}-${{ github.ref_name }} + cancel-in-progress: true + permissions: id-token: write contents: write @@ -19,11 +24,20 @@ jobs: name: 🧹 Prepare Environment runs-on: ubuntu-latest outputs: - version-number: ${{ steps.version.outputs.version }} environment-name: ${{ steps.environment.outputs.environment-name }} environment-type: ${{ steps.environment.outputs.environment-type }} + github-branch: ${{ steps.environment.outputs.github-branch }} + commit: ${{ steps.commit.outputs.commit }} + package-name: ${{ steps.name.outputs.package-name }} steps: + - name: Generate Package Name + id: name + run: | + repo=${{ github.repository }} + echo "package-name=${repo#dvsa/}" >> $GITHUB_OUTPUT + echo "Package Name: ${repo#dvsa/}" >> $GITHUB_STEP_SUMMARY + - name: 🪪 Get Credentials uses: aws-actions/configure-aws-credentials@v4 with: @@ -42,11 +56,21 @@ jobs: with: environment: ${{ github.ref_name }} - build-services: - name: 🧱 Build ${{ github.ref_name }} - runs-on: [self-hosted, X64] - needs: environment + - name: Get Commit SHA + id: commit + run: | + # Get the branch Commit ID + commit_id=$(git rev-parse HEAD) + echo "commit=${commit_id}" + echo "commit=${commit_id}" >> $GITHUB_OUTPUT + echo "Commit ID: ${commit_id}" >> $GITHUB_STEP_SUMMARY + build-service: + name: 🧱 Build ${{ needs.environment.outputs.package-name }} + runs-on: + - ${{ needs.environment.outputs.package-name }} + + needs: environment steps: - name: 🪪 Get Credentials uses: aws-actions/configure-aws-credentials@v4 @@ -57,36 +81,27 @@ jobs: - name: 📥 Get Codebase uses: actions/checkout@v4 - with: - token: ${{ secrets.GH_TOKEN }} - ref: ${{ github.ref_name }} - - - name: Get Commit SHA - id: commit - run: | - # Get the branch Commit ID - commit_id=$(git rev-parse HEAD) - echo "commit=${commit_id}" - echo "commit=${commit_id}" >> $GITHUB_OUTPUT - echo "Commit ID: ${commit_id}" >> $GITHUB_STEP_SUMMARY - name: 🗒️ Process Manifest Data id: manifest run: | # Generate Manifest Outputs & Identify Build Requirements - echo "package-name=$(jq -r '.name' manifest.json)" >> $GITHUB_OUTPUT - echo "language=$(jq -r '.language' manifest.json)" >> $GITHUB_OUTPUT - echo "liquibase=$(jq -r '.liquibase' manifest.json)" >> $GITHUB_OUTPUT - - # Generate Output File - jq -c '. += {"sha":"${{ steps.commit.outputs.commit }}","repository":"${{ github.repository }}"' manifest.json > outputs.json + hash_files="[]" + if [[ -f "manifest.json" ]]; then + package=$(jq -r '.name' manifest.json) + echo "package=$(jq -r '.name' manifest.json)" >> $GITHUB_OUTPUT + echo "language=$(jq -r '.language' manifest.json)" >> $GITHUB_OUTPUT + echo "liquibase=$(jq -r '.liquibase' manifest.json)" >> $GITHUB_OUTPUT + fi - name: 🏗️ Build Node Function uses: dvsa/cvs-github-actions/build-node-function@develop if: ${{ steps.manifest.outputs.language == 'node' }} + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} with: - commit-sha: ${{ steps.commit.outputs.commit }} - branch: ${{ github.ref_name }} + commit-sha: ${{ needs.environment.outputs.commit }} + branch: ${{needs.environment.outputs.github-branch }} mysql_liquibase: ${{ steps.manifest.outputs.liquibase }} mysql_user: ${{ secrets.MYSQL_USER }} mysql_password: ${{ secrets.MYSQL_PASS }} @@ -99,53 +114,6 @@ jobs: - name: 📤 Upload Artifact uses: actions/upload-artifact@v4 with: + name: ${{ needs.environment.outputs.package-name }} path: | - outputs.json - ${{ steps.commit.outputs.commit }}*.zip - - upload-functions: - # Runs as a separate job because we don't want to push anything if any one of the services fails to build - name: 🎯 Upload ${{ github.ref_name }} - runs-on: ubuntu-latest - needs: [environment, build-services] - steps: - - name: 🪪 Get Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - role-to-assume: ${{ secrets.CVS_MGMT_AWS_ROLE }} - aws-region: ${{ vars.DVSA_AWS_REGION }} - role-session-name: GHA_BuildServices - - - name: 📥 Download Artifact - uses: actions/download-artifact@v4 - - - name: 🗒️ Get Manifest Data - id: manifest - run: | - # Get information from Manifest File - echo "package-name=$(jq -r '.name' outputs.json)" >> $GITHUB_OUTPUT - echo "mono-repo=$(jq -r '.monorepo' outputs.json)" >> $GITHUB_OUTPUT - echo "sha=$(jq -r '.sha' outputs.json)" >> $GITHUB_OUTPUT - echo "build-package=$(jq -r '.build' outputs.json)" >> $GITHUB_OUTPUT - echo "hash-files=$(jq -r '.hash_files' outputs.json)" >> $GITHUB_OUTPUT - - echo "package-name=$(jq -r '.name' outputs.json)" >> $GITHUB_STEP_SUMMARY - echo "mono-repo=$(jq -r '.monorepo' outputs.json)" >> $GITHUB_STEP_SUMMARY - echo "sha=$(jq -r '.sha' outputs.json)" >> $GITHUB_STEP_SUMMARY - echo "build-package=$(jq -r '.build' outputs.json)" >> $GITHUB_STEP_SUMMARY - echo "hash-files=$(jq -r '.hash_files' outputs.json)" >> $GITHUB_STEP_SUMMARY - - - name: Create Hash Files - uses: dvsa/cvs-github-actions/hash-create@develop - with: - commit-id: ${{ steps.manifest.outputs.sha }} - environment-name: ${{ needs.environment.outputs.environment-name }} - hash-files: ${{ steps.manifest.outputs.hash-files }} - - - name: 📤 Upload hash zip to S3 - uses: dvsa/cvs-github-actions/hash-upload@develop - with: - commit-id: ${{ steps.manifest.outputs.sha }} - package-name: ${{ steps.manifest.outputs.package-name }} - environment-name: ${{ needs.environment.outputs.environment-name }} - version-number: ${{ needs.environment.outputs.version-number }} + ${{ needs.environment.outputs.commit }}*.zip diff --git a/README.md b/README.md index 43b2a25..20de93a 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,7 @@ On Windows, you will need to manually run: * Confirm: `echo %USE_CONTAINERIZED_DATABASE%` should return `1`before the above, or run these tests with an IntelliJ configuration which sets the right environment variable for you. On Tanio Artino's advice, there is a distinction between running integration tests locally, and running them on Jenkins. -* `USE_CONTAINERIZED_DATABASE=0` will attempt to talk to `localhost:3306`. This only works if you manually start a DB or, in the case of Jenkins, if there is a pre-existing DB running on port `3306`. +* `USE_CONTAINERIZED_DATABASE=0` will attempt to talk to `127.0.0.1:3306`. This only works if you manually start a DB or, in the case of Jenkins, if there is a pre-existing DB running on port `3306`. * `USE_CONTAINERIZED_DATABASE=1` will spin up a TC container as described above. To run the "Jenkins" version, e.g. `USE_CONTAINERIZED_DATABASE=0`, use: diff --git a/package-lock.json b/package-lock.json index c0c415a..a13c9a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,11 @@ "version": "0.0.1", "license": "ISC", "dependencies": { + "@aws-sdk/client-dynamodb-streams": "3.565.0", + "@aws-sdk/client-secrets-manager": "3.565.0", "@types/lambda-tester": "3.6.0", - "aws-lambda": "1.0.6", - "aws-sdk": "2.1354.0", - "aws-xray-sdk": "2.5.0", + "aws-lambda": "1.0.7", + "aws-xray-sdk": "3.6.0", "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", @@ -36,6 +37,7 @@ "@types/uuid": "8.3.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", + "aws-sdk-client-mock": "4.0.0", "commitlint": "17.0.0", "cross-env": "7.0.3", "husky": "3.0.9", @@ -76,7 +78,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -85,7 +86,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", - "dev": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -101,7 +101,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", - "dev": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -112,7 +111,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", - "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -121,25 +119,571 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", - "dev": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", - "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", + "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-endpoint-discovery": "3.535.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.565.0.tgz", + "integrity": "sha512-1T4XbpIH01qJdc1/k+azlKwZsvIaNqeFgslkzw6p7uE+K3xJZ+x9Y3vv2vOCQk7lAkhK+WJUvduum4Ubu0JuBQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", + "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", + "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", + "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", + "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "dependencies": { + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", + "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", + "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.565.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", + "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "dependencies": { + "@aws-sdk/client-sso": "3.556.0", + "@aws-sdk/token-providers": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", + "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/token-providers": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", + "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@aws-sdk/client-lambda": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", + "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/eventstream-serde-browser": "^2.2.0", + "@smithy/eventstream-serde-config-resolver": "^2.2.0", + "@smithy/eventstream-serde-node": "^2.2.0", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-stream": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/client-secrets-manager": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.565.0.tgz", + "integrity": "sha512-C31ZIoY6d0Fz+U12ygXkemjbp2CsMZzQd34i2PYb+AzsuGeNukvAs+LnumJ0if5HM7rfaC9m68Qw+NRMn9lRLA==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", + "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", + "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", - "@aws-sdk/middleware-endpoint-discovery": "3.535.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", @@ -174,44 +718,22 @@ "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", - "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", + "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", + "peer": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", "@aws-sdk/middleware-host-header": "3.535.0", "@aws-sdk/middleware-logger": "3.535.0", "@aws-sdk/middleware-recursion-detection": "3.535.0", @@ -223,9 +745,6 @@ "@aws-sdk/util-user-agent-node": "3.535.0", "@smithy/config-resolver": "^2.2.0", "@smithy/core": "^1.4.2", - "@smithy/eventstream-serde-browser": "^2.2.0", - "@smithy/eventstream-serde-config-resolver": "^2.2.0", - "@smithy/eventstream-serde-node": "^2.2.0", "@smithy/fetch-http-handler": "^2.5.0", "@smithy/hash-node": "^2.2.0", "@smithy/invalid-dependency": "^2.2.0", @@ -248,20 +767,143 @@ "@smithy/util-endpoints": "^1.2.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", - "@smithy/util-stream": "^2.2.0", "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", + "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "dependencies": { + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", + "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", + "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.565.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", + "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "dependencies": { + "@aws-sdk/client-sso": "3.556.0", + "@aws-sdk/token-providers": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", + "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", + "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.565.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } }, "node_modules/@aws-sdk/client-sso": { "version": "3.554.0", @@ -463,7 +1105,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -477,14 +1118,12 @@ "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.552.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/fetch-http-handler": "^2.5.0", @@ -503,8 +1142,7 @@ "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.554.0", @@ -567,7 +1205,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -582,8 +1219,7 @@ "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.554.0", @@ -677,7 +1313,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -691,14 +1326,12 @@ "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -711,14 +1344,12 @@ "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -732,14 +1363,12 @@ "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@aws-sdk/util-endpoints": "3.540.0", @@ -754,14 +1383,12 @@ "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -777,8 +1404,7 @@ "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/token-providers": { "version": "3.554.0", @@ -807,7 +1433,6 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -819,8 +1444,7 @@ "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-dynamodb": { "version": "3.266.0", @@ -844,7 +1468,6 @@ "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -858,14 +1481,12 @@ "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -876,14 +1497,12 @@ "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-user-agent-browser": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -894,14 +1513,12 @@ "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", - "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -923,14 +1540,12 @@ "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dev": true, "dependencies": { "tslib": "^2.3.1" } @@ -938,8 +1553,7 @@ "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@babel/code-frame": { "version": "7.24.2", @@ -4250,16 +4864,15 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, "node_modules/@smithy/abort-controller": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4271,14 +4884,12 @@ "node_modules/@smithy/abort-controller/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/config-resolver": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -4293,14 +4904,12 @@ "node_modules/@smithy/config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/core": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", - "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-retry": "^2.3.1", @@ -4318,14 +4927,12 @@ "node_modules/@smithy/core/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/credential-provider-imds": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -4340,8 +4947,7 @@ "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/eventstream-codec": { "version": "2.2.0", @@ -4444,7 +5050,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", - "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", @@ -4456,14 +5061,12 @@ "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/hash-node": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", @@ -4477,14 +5080,12 @@ "node_modules/@smithy/hash-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/invalid-dependency": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4493,14 +5094,12 @@ "node_modules/@smithy/invalid-dependency/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4511,14 +5110,12 @@ "node_modules/@smithy/is-array-buffer/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-content-length": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", - "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", @@ -4531,14 +5128,12 @@ "node_modules/@smithy/middleware-content-length/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-endpoint": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", - "dev": true, "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", @@ -4555,14 +5150,12 @@ "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-retry": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", @@ -4581,14 +5174,12 @@ "node_modules/@smithy/middleware-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-retry/node_modules/uuid": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" @@ -4601,7 +5192,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4613,14 +5203,12 @@ "node_modules/@smithy/middleware-serde/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/middleware-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4632,14 +5220,12 @@ "node_modules/@smithy/middleware-stack/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/node-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", - "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -4653,14 +5239,12 @@ "node_modules/@smithy/node-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/node-http-handler": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", - "dev": true, "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", @@ -4675,14 +5259,12 @@ "node_modules/@smithy/node-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/property-provider": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4694,14 +5276,12 @@ "node_modules/@smithy/property-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/protocol-http": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4713,14 +5293,12 @@ "node_modules/@smithy/protocol-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/querystring-builder": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", @@ -4733,14 +5311,12 @@ "node_modules/@smithy/querystring-builder/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/querystring-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4752,14 +5328,12 @@ "node_modules/@smithy/querystring-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/service-error-classification": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0" }, @@ -4771,7 +5345,6 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -4783,14 +5356,12 @@ "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/signature-v4": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", - "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "@smithy/types": "^2.12.0", @@ -4807,14 +5378,12 @@ "node_modules/@smithy/signature-v4/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/smithy-client": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", - "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", @@ -4830,14 +5399,12 @@ "node_modules/@smithy/smithy-client/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/types": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4848,14 +5415,12 @@ "node_modules/@smithy/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/url-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", - "dev": true, "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", @@ -4865,14 +5430,12 @@ "node_modules/@smithy/url-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-base64": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", @@ -4885,14 +5448,12 @@ "node_modules/@smithy/util-base64/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-body-length-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", - "dev": true, "dependencies": { "tslib": "^2.6.2" } @@ -4900,14 +5461,12 @@ "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-body-length-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4918,14 +5477,12 @@ "node_modules/@smithy/util-body-length-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-buffer-from": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -4937,14 +5494,12 @@ "node_modules/@smithy/util-buffer-from/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -4955,14 +5510,12 @@ "node_modules/@smithy/util-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", - "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", @@ -4977,14 +5530,12 @@ "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-defaults-mode-node": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", - "dev": true, "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", @@ -5001,14 +5552,12 @@ "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-endpoints": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", - "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -5021,14 +5570,12 @@ "node_modules/@smithy/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-hex-encoding": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5039,14 +5586,12 @@ "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-middleware": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", - "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -5058,14 +5603,12 @@ "node_modules/@smithy/util-middleware/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-retry": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", - "dev": true, "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", @@ -5078,14 +5621,12 @@ "node_modules/@smithy/util-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", - "dev": true, "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", @@ -5103,14 +5644,12 @@ "node_modules/@smithy/util-stream/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-uri-escape": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", - "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5121,14 +5660,12 @@ "node_modules/@smithy/util-uri-escape/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -5140,8 +5677,7 @@ "node_modules/@smithy/util-utf8/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/@smithy/util-waiter": { "version": "2.2.0", @@ -5260,9 +5796,9 @@ "dev": true }, "node_modules/@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -5286,18 +5822,18 @@ "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", "dev": true }, - "node_modules/@types/connect": { - "version": "3.4.34", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.34.tgz", - "integrity": "sha512-ePPA/JuI+X0vb+gSWlPKOY0NdNAie/rPUqX2GUPpbZwiKTkSPhjXWuee47E4MtE54QVzGCQMQkAL6JhV2E1+cQ==", + "node_modules/@types/cls-hooked": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.8.tgz", + "integrity": "sha512-tf/7H883gFA6MPlWI15EQtfNZ+oPL0gLKkOlx9UHFrun1fC/FkuyNBpTKq1B5E3T4fbvjId6WifHUdSGsMMuPg==", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/continuation-local-storage": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@types/continuation-local-storage/-/continuation-local-storage-3.2.3.tgz", - "integrity": "sha512-4LYeWblV+6puK9tFGM7Zr4OLZkVXmaL7hUK6/wHwbfwM+q7v+HZyBWTXkNOiC9GqOxv7ehhi5TMCbebZWeVYtw==", + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dependencies": { "@types/node": "*" } @@ -5318,24 +5854,25 @@ "dev": true }, "node_modules/@types/express": { - "version": "4.17.12", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.12.tgz", - "integrity": "sha512-pTYas6FrP15B1Oa0bkN5tQMNqOcVXa9j4FTFtO8DWI9kppKib+6NJtfTOOLcwxuuYvcX2+dVG6et1SxW/Kc17Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", + "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.20", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.20.tgz", - "integrity": "sha512-8qqFN4W53IEWa9bdmuVrUcVkFemQWnt5DKPQ/oa8xKDYgtjCr2OO6NX5TIK49NLFr3mPYU2cLh92DQquC3oWWQ==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dependencies": { "@types/node": "*", "@types/qs": "*", - "@types/range-parser": "*" + "@types/range-parser": "*", + "@types/send": "*" } }, "node_modules/@types/glob": { @@ -5369,6 +5906,11 @@ "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", "dev": true }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", @@ -5582,9 +6124,9 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/minimatch": { "version": "3.0.4", @@ -5599,9 +6141,9 @@ "dev": true }, "node_modules/@types/mysql": { - "version": "2.15.18", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.18.tgz", - "integrity": "sha512-JW74Nh3P/RDAnaP8uXe1qmRpoFBO84SiWvWoSju/F5+2S1kVBi1FbbDoqK/sTZrCCxySaOJnRATvWD+bLcJjAg==", + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", "dependencies": { "@types/node": "*" } @@ -5624,13 +6166,13 @@ "dev": true }, "node_modules/@types/pg": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.0.tgz", - "integrity": "sha512-3JXFrsl8COoqVB1+2Pqelx6soaiFVXzkT3fkuSNe7GB40ysfT0FHphZFPiqIXpMyTHSFRdLTyZzrFBrJRPAArA==", + "version": "8.11.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.5.tgz", + "integrity": "sha512-2xMjVviMxneZHDHX5p5S6tsRRs7TpDHeeK7kTTMe/kAC/mRRNjWHjZg0rkiY+e17jXSZV3zJYDxXV8Cy72/Vuw==", "dependencies": { "@types/node": "*", "pg-protocol": "*", - "pg-types": "^2.2.0" + "pg-types": "^4.0.1" } }, "node_modules/@types/prettier": { @@ -5640,14 +6182,14 @@ "dev": true }, "node_modules/@types/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-0/HnwIfW4ki2D8L8c9GVcG5I72s9jP5GSLVF0VIXDW00kmIpA6O33G7a8n59Tmh7Nz0WUC3rSb7PTY/sdW2JzA==" + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" }, "node_modules/@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/request": { "version": "2.48.5", @@ -5700,21 +6242,37 @@ "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", "dev": true }, - "node_modules/@types/serve-static": { - "version": "1.13.9", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.9.tgz", - "integrity": "sha512-ZFqF6qa48XsPdjXV5Gsz0Zqmux2PerNd3a/ktL45mHpa19cuMi/cL8tcxdAx497yRh+QtYPuofjT9oWw9P7nkA==", + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dependencies": { "@types/mime": "^1", "@types/node": "*" } }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, "node_modules/@types/sinon": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.0.tgz", "integrity": "sha512-NyzhuSBy97B/zE58cDw4NyGvByQbAHNP9069KVSgnXt/sc0T6MFRh0InKAeBVHJWdSXG1S3+PxgVIgKo9mTHbw==", "dev": true }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "dev": true + }, "node_modules/@types/ssh2-streams": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz", @@ -6162,21 +6720,15 @@ "node": ">=0.10.0" } }, - "node_modules/async": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async/-/async-1.0.0.tgz", - "integrity": "sha1-+PwEyjoTeErenhZBr5hXjPvWR6k=" - }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "node_modules/async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" + "stack-chain": "^1.3.7" }, "engines": { - "node": "<=0.11.8 || >0.11.10" + "node": "^4.7 || >=6.9 || >=7.3" } }, "node_modules/asynckit": { @@ -6209,7 +6761,7 @@ "node_modules/atomic-batcher": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", - "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" + "integrity": "sha512-EFGCRj4kLX1dHv1cDzTk+xbjBFj1GnJDpui52YmEcxxHHEWjYyT6l51U7n6WQ28osZH4S9gSybxe56Vm7vB61Q==" }, "node_modules/audit-filter": { "version": "0.5.0", @@ -6235,13 +6787,13 @@ } }, "node_modules/aws-lambda": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.6.tgz", - "integrity": "sha512-Z9lmZBiDYejzjMWuQSDXuZWAqAun6vGt7WApB1r0f8tLNf0IlTGsH30qENfP1kXeTbbMgPpt1bPEeMZjYDTXxQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", + "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", "dependencies": { - "aws-sdk": "*", + "aws-sdk": "^2.814.0", "commander": "^3.0.2", - "js-yaml": "^3.13.1", + "js-yaml": "^3.14.1", "watchpack": "^2.0.0-beta.10" }, "bin": { @@ -6297,6 +6849,152 @@ "node": ">= 10.0.0" } }, + "node_modules/aws-sdk-client-mock": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.0.0.tgz", + "integrity": "sha512-/rxo+pzCFaUozK7TyCqo3GYwzdBGn9Ai6EsT8ytXDoUXlD/Q5hw9hj2lOkCAyubECzGJFHMmQg9GZ1GOGlN/qQ==", + "dev": true, + "dependencies": { + "@types/sinon": "^10.0.10", + "sinon": "^16.1.3", + "tslib": "^2.1.0" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/@types/sinon": { + "version": "10.0.20", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", + "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", + "dev": true, + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true + }, + "node_modules/aws-sdk-client-mock/node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/path-to-regexp": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "dev": true + }, + "node_modules/aws-sdk-client-mock/node_modules/sinon": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", + "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/aws-sdk-client-mock/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, "node_modules/aws-sdk/node_modules/uuid": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", @@ -6306,83 +7004,89 @@ } }, "node_modules/aws-xray-sdk": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-2.5.0.tgz", - "integrity": "sha512-KBTF9QUq0zu24t+gFh3VATYDNx295VzZUUjpZ1OmIEbcs3Zqmox5L6VAqjCgGfJeLaCUAWPLkduxau3LuDpqcw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.6.0.tgz", + "integrity": "sha512-ID2R0U94wEMPLAkmQ7+TZuzvMjp2fe0dqqUQb6BniIDWXdvV5bphrMhsHzp/0PDRjGqsVSrZ1V1qRmq8bhEl1A==", "dependencies": { - "aws-xray-sdk-core": "^2.5.0", - "aws-xray-sdk-express": "^2.5.0", - "aws-xray-sdk-mysql": "^2.5.0", - "aws-xray-sdk-postgres": "^2.5.0", - "pkginfo": "^0.4.0" + "aws-xray-sdk-core": "3.6.0", + "aws-xray-sdk-express": "3.6.0", + "aws-xray-sdk-mysql": "3.6.0", + "aws-xray-sdk-postgres": "3.6.0" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" } }, "node_modules/aws-xray-sdk-core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-2.5.0.tgz", - "integrity": "sha512-qe60bv0kn5KY6gAIF88TPCOIdu/A3dTmcKISj+kE4OH02eF6kMm1ctL7OgoBAasnsDNSn0VMLhIaA1izgoWuxA==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.6.0.tgz", + "integrity": "sha512-+UnYmVEni9NNJvE6aFY1dbvMtFquXSYAj+HYfm+90icoGKYvvLD71R7PHyFFnYct5of4NFpEXJtUJrWMv8e4mQ==", "dependencies": { - "@types/continuation-local-storage": "*", + "@aws-sdk/types": "^3.4.1", + "@smithy/service-error-classification": "^2.0.4", + "@types/cls-hooked": "^4.3.3", "atomic-batcher": "^1.0.2", - "aws-sdk": "^2.304.0", - "continuation-local-storage": "^3.2.0", - "date-fns": "^1.29.0", - "pkginfo": "^0.4.0", - "semver": "^5.3.0", - "winston": "^2.4.4" + "cls-hooked": "^4.2.2", + "semver": "^7.5.3" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" } }, - "node_modules/aws-xray-sdk-core/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==" + "node_modules/aws-xray-sdk-core/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/aws-xray-sdk-express": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-2.5.0.tgz", - "integrity": "sha512-VfUXlxFlI+gr6ImMF+3000fqPRTBS9MbAywdtC8dt/U57WQbLFDjPW+V6oJowTwrkgKwpOKSXncQDfBs8QHvIw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.6.0.tgz", + "integrity": "sha512-vIHk+qpmLhI2JWiqgjhHZYerNo9jbjifJ6qIb+l5CCAqe00CIjnlnLF9LKLi4UhVT9xyAp46aCpWMEl+XeXSYA==", "dependencies": { "@types/express": "*" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^2.5.0" + "aws-xray-sdk-core": "^3.6.0" } }, "node_modules/aws-xray-sdk-mysql": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-2.5.0.tgz", - "integrity": "sha512-OI3cDkVcKTiWytwoOE1Oj0D2UbchOVHkiQNXWktDk9QYzqbOz+GNEwD5QneqyxFu0z0bQieClBM+0okUprFBXQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.6.0.tgz", + "integrity": "sha512-DNZEe8Q331tzqc0dLM1Zy0d2GNFoks7BIX3Lop/+lGLytO6a4sdZ/NIXZX6pngG1sBYlsoTSFCFi470UD6Q6AA==", "dependencies": { "@types/mysql": "*" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^2.5.0" + "aws-xray-sdk-core": "^3.6.0" } }, "node_modules/aws-xray-sdk-postgres": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-2.5.0.tgz", - "integrity": "sha512-8LcXTjr272gKMSg9a+QSGQPjAabQb87SA0c4ZlVcPqzoG7nAd3pULR6/HDtujeukbRAb6rEoxzKvPX0s18NyFw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.6.0.tgz", + "integrity": "sha512-jQ4pNWq0RdVVZJ8XVqD7Rc6YS6bYqxCV0IQW2SBAhnW6S5yCLRekYgxbj0D35VZgLyqZQX98kdOV7ZqrWRyAyw==", "dependencies": { "@types/pg": "*" }, "engines": { - "node": ">= 4.x" + "node": ">= 14.x" }, "peerDependencies": { - "aws-xray-sdk-core": "^2.5.0" + "aws-xray-sdk-core": "^3.6.0" } }, "node_modules/axios": { @@ -6727,8 +7431,7 @@ "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "dev": true + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, "node_modules/boxen": { "version": "7.1.1", @@ -7518,6 +8221,19 @@ "mimic-response": "^1.0.0" } }, + "node_modules/cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "dependencies": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -7568,14 +8284,6 @@ "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", "dev": true }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=", - "engines": { - "node": ">=0.1.90" - } - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -7819,15 +8527,6 @@ "node": ">= 0.6" } }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, "node_modules/conventional-changelog-angular": { "version": "5.0.12", "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", @@ -8133,14 +8832,6 @@ "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", "dev": true }, - "node_modules/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha1-IegLK+hYD5i0aPN5QwZisEbDStI=", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -9348,14 +10039,6 @@ "node": ">=0.10.0" } }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha1-Ys8SAjTGg3hdkCNIqADvPgzCC8A=", - "engines": { - "node": "> 0.1.90" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -9458,7 +10141,6 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "dev": true, "funding": [ { "type": "paypal", @@ -11248,11 +11930,6 @@ "ws": "*" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, "node_modules/istanbul-lib-coverage": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", @@ -14446,7 +15123,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -15466,6 +16142,11 @@ "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", "dev": true }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -15936,24 +16617,34 @@ "node": ">=4.0.0" } }, + "node_modules/pg-numeric": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pg-numeric/-/pg-numeric-1.0.2.tgz", + "integrity": "sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==", + "engines": { + "node": ">=4" + } + }, "node_modules/pg-protocol": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", - "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.6.1.tgz", + "integrity": "sha512-jPIlvgoD63hrEuihvIg+tJhoGjUsLPn6poJY9N5CnlPd91c2T18T/9zBtLxZSb1EhYxBRoZJtzScCaWlYLtktg==" }, "node_modules/pg-types": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", - "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-4.0.2.tgz", + "integrity": "sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==", "dependencies": { "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" + "pg-numeric": "1.0.2", + "postgres-array": "~3.0.1", + "postgres-bytea": "~3.0.0", + "postgres-date": "~2.1.0", + "postgres-interval": "^3.0.0", + "postgres-range": "^1.1.1" }, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/picocolors": { @@ -16025,14 +16716,6 @@ "node": ">= 6" } }, - "node_modules/pkginfo": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", - "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8=", - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -16052,40 +16735,45 @@ } }, "node_modules/postgres-array": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", - "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.2.tgz", + "integrity": "sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==", "engines": { - "node": ">=4" + "node": ">=12" } }, "node_modules/postgres-bytea": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", - "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-3.0.0.tgz", + "integrity": "sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==", + "dependencies": { + "obuf": "~1.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, "node_modules/postgres-date": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", - "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-2.1.0.tgz", + "integrity": "sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, "node_modules/postgres-interval": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", - "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", - "dependencies": { - "xtend": "^4.0.0" - }, + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-3.0.0.tgz", + "integrity": "sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==", "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, + "node_modules/postgres-range": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/postgres-range/-/postgres-range-1.1.4.tgz", + "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==" + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -18008,13 +18696,10 @@ "nan": "^2.16.0" } }, - "node_modules/stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=", - "engines": { - "node": "*" - } + "node_modules/stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" }, "node_modules/stack-utils": { "version": "2.0.3", @@ -18199,8 +18884,7 @@ "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", - "dev": true + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" }, "node_modules/strtok3": { "version": "6.3.0", @@ -18803,8 +19487,7 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/tslint": { "version": "5.20.0", @@ -19424,22 +20107,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/winston": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.5.tgz", - "integrity": "sha512-TWoamHt5yYvsMarGlGEQE59SbJHqGsZV8/lwC+iCcGeAe0vUaOh+Lv6SYM17ouzC/a/LB1/hz/7sxFBtlu1l4A==", - "dependencies": { - "async": "~1.0.0", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -19580,6 +20247,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, "engines": { "node": ">=0.4" } @@ -19596,8 +20264,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", diff --git a/package.json b/package.json index 21da6b2..4e1553b 100644 --- a/package.json +++ b/package.json @@ -53,10 +53,11 @@ "author": "", "license": "ISC", "dependencies": { + "@aws-sdk/client-dynamodb-streams": "3.565.0", + "@aws-sdk/client-secrets-manager": "3.565.0", "@types/lambda-tester": "3.6.0", - "aws-lambda": "1.0.6", - "aws-sdk": "2.1354.0", - "aws-xray-sdk": "2.5.0", + "aws-lambda": "1.0.7", + "aws-xray-sdk": "3.6.0", "date-fns": "2.21.2", "liquibase": "1.0.1", "moment": "2.29.4", @@ -80,6 +81,7 @@ "@types/uuid": "8.3.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", + "aws-sdk-client-mock": "4.0.0", "commitlint": "17.0.0", "cross-env": "7.0.3", "husky": "3.0.9", diff --git a/sonar-project.properties b/sonar-project.properties index 586da52..e1a9dc7 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -5,7 +5,7 @@ sonar.projectKey=org.sonarqube:cvs-tsk-update-store # this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1. sonar.projectName=cvs-tsk-update-store -sonar.host.url=http://localhost:9000 +sonar.host.url=http://127.0.0.1:9000 sonar.projectVersion=1.0 sonar.sourceEncoding=UTF-8 diff --git a/src/handler.ts b/src/handler.ts index d656574..156ba5e 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -1,14 +1,24 @@ +import { + PutSecretValueCommand, + SecretsManagerClient, +} from "@aws-sdk/client-secrets-manager"; import { processStreamEvent } from "./functions/process-stream-event"; -import { config as AWSConfig } from "aws-sdk"; const isOffline: boolean = !process.env.BRANCH || process.env.BRANCH === "local"; if (isOffline) { - AWSConfig.credentials = { - accessKeyId: "accessKey1", - secretAccessKey: "verySecretKey1", - }; + const SMC = new SecretsManagerClient({}); + + const command = new PutSecretValueCommand({ + SecretId: "secretid1", + SecretString: JSON.stringify({ + accessKeyId: "accessKey1", + secretAccessKey: "verySecretKey1", + }), + }); + + SMC.send(command); } export { processStreamEvent as handler }; diff --git a/src/services/dynamodb-images.ts b/src/services/dynamodb-images.ts index a9ff3a6..992c92c 100644 --- a/src/services/dynamodb-images.ts +++ b/src/services/dynamodb-images.ts @@ -1,4 +1,4 @@ -import { AttributeValue } from "aws-sdk/clients/dynamodbstreams"; +import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; import { parseISO } from "date-fns"; import { Maybe } from "../models/optionals"; import { padWithZeros } from "../utils/padwithzeros"; @@ -38,7 +38,7 @@ export class DynamoDbImage { * This is the only way to instantiate this class. * @param image */ - public static parse(image: { [key: string]: AttributeValue }): DynamoDbImage { + public static parse(image: { [key: string]: NativeAttributeValue }): DynamoDbImage { const fields: DynamoDbField[] = []; const fieldKeys = Object.keys(image); @@ -176,7 +176,7 @@ export class DynamoDbImage { let index = 0; return new DynamoDbImage( v - .map((e: AttributeValue) => typeValuePair(e)) + .map((e: NativeAttributeValue) => typeValuePair(e)) .map(([type, value]: [DynamoDbType, any]) => { return { key: "" + index++, @@ -276,7 +276,7 @@ const verifyType = ( } }; -const typeValuePair = (value: AttributeValue): [DynamoDbType, any] => { +const typeValuePair = (value: NativeAttributeValue): [DynamoDbType, any] => { const typeKeys = Object.keys(value); if (typeKeys.length !== 1) { diff --git a/src/services/secrets-manager.ts b/src/services/secrets-manager.ts index 03ef255..77d5448 100644 --- a/src/services/secrets-manager.ts +++ b/src/services/secrets-manager.ts @@ -1,17 +1,19 @@ -import { SecretsManager } from "aws-sdk"; +import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; import { debugLog } from "./logger"; export const getSecretValue = async (secretName: string): Promise => { // This constructor is inside the function for testability (Jest hoisting is a pain). // It's only called once per lambda execution, so this shouldn't affect performance. // Please refactor if the above is ever not the case :) - const secretsManager: SecretsManager = new SecretsManager(); + const secretsManager = new SecretsManagerClient(); debugLog(`Fetching secret '${secretName}' from AWS Secrets Manager`); - const secretValue = await secretsManager - .getSecretValue({ SecretId: secretName }) - .promise(); + const secretValue = await secretsManager.send( + new GetSecretValueCommand({ + SecretId: secretName, + }), + ); if (!secretValue) { throw new Error(`secret '${secretName}' does not exist`); @@ -20,7 +22,7 @@ export const getSecretValue = async (secretName: string): Promise => { if (secretValue.SecretString) { return secretValue.SecretString; } else if (secretValue.SecretBinary) { - return secretValue.SecretBinary.toString("utf-8"); + return secretValue.SecretBinary.toString(); } throw new Error( diff --git a/src/services/sql-operations.ts b/src/services/sql-operations.ts index 11f0088..0e365ec 100644 --- a/src/services/sql-operations.ts +++ b/src/services/sql-operations.ts @@ -1,4 +1,4 @@ -import { OperationType } from "aws-sdk/clients/dynamodbstreams"; +import { OperationType } from "@aws-sdk/client-dynamodb-streams"; export type SqlOperation = "INSERT" | "UPDATE" | "DELETE"; diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index fad8e09..91f0f2f 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -23,7 +23,7 @@ describe("convertTechRecordDocument() integration tests", () => { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", + host: "127.0.0.1", port: "3306", user: "root", password: "12345", diff --git a/tests/integration/cvsbnop-container.ts b/tests/integration/cvsbnop-container.ts index 027e749..1c4e642 100644 --- a/tests/integration/cvsbnop-container.ts +++ b/tests/integration/cvsbnop-container.ts @@ -36,7 +36,7 @@ export const getContainerizedDatabase = async (): Promise "--password", "12345", "--url", - `jdbc:mysql://localhost:${hostPort}/${databaseName}`, + `jdbc:mysql://127.0.0.1:${hostPort}/${databaseName}`, "--classpath", `${pathToResources()}/mysql-connector-java-8.0.23.jar`, "update", diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index 4a7e729..0dc1d43 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -23,7 +23,7 @@ describe("convertTechRecordDocument() integration tests", () => { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", + host: "127.0.0.1", port: "3306", user: "root", password: "12345", diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index f7d40d1..1aea437 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -54,7 +54,7 @@ describe("convertTestResults() integration tests with delete", () => { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", + host: "127.0.0.1", port: "3306", user: "root", password: "12345", diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index 8f4f0f6..3566c9f 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -54,7 +54,7 @@ describe("convertTestResults() integration tests with upsert", () => { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "localhost", + host: "127.0.0.1", port: "3306", user: "root", password: "12345", diff --git a/tests/resources/Dockerfile b/tests/resources/Dockerfile index b6d6a32..0bd324b 100644 --- a/tests/resources/Dockerfile +++ b/tests/resources/Dockerfile @@ -1,5 +1,5 @@ # Match Aurora MySQL version as closely as possible -FROM mysql:5.7.12 +FROM mysql:8.4.0 ENV MYSQL_DATABASE=CVSBNOP \ MYSQL_ROOT_PASSWORD=12345 diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index c64fc3d..6dc423f 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -4,7 +4,7 @@ import { } from "../../../src/functions/process-stream-event"; import { convert } from "../../../src/services/entity-conversion"; import { exampleContext } from "../../utils"; -import { mocked } from "ts-jest"; +import { mocked } from 'ts-jest/utils' jest.mock("../../../src/services/entity-conversion", () => ({ convert: jest.fn(), diff --git a/tests/unit/handler.unitTest.ts b/tests/unit/handler.unitTest.ts deleted file mode 100644 index 339a718..0000000 --- a/tests/unit/handler.unitTest.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { processStreamEvent } from "../../src/functions/process-stream-event"; -import { handler } from "../../src/handler"; -import { config } from "aws-sdk"; -import { CredentialsOptions } from "aws-sdk/lib/credentials"; - -describe("handler", () => { - const oldEnv = process.env; - const oldCredentials: CredentialsOptions = config.credentials as CredentialsOptions; - - beforeEach(() => { - jest.resetModules(); - process.env = { ...oldEnv }; - config.credentials = { ...oldCredentials }; - }); - - afterEach(() => { - process.env = oldEnv; - config.credentials = oldCredentials; - }); - - it("should use local credentials when BRANCH is undefined", () => { - (processStreamEvent as jest.Mock) = jest.fn(); - - // @ts-ignore - handler(null, null, null); - - const credentials = config.credentials; - - expect(credentials?.accessKeyId).toEqual("accessKey1"); - expect(credentials?.secretAccessKey).toEqual("verySecretKey1"); - }); - - it("should use local credentials when BRANCH is 'local'", () => { - process.env.BRANCH = "local"; - - (processStreamEvent as jest.Mock) = jest.fn(); - - // @ts-ignore - handler(null, null, null); - - const credentials = config.credentials; - - expect(credentials?.accessKeyId).toEqual("accessKey1"); - expect(credentials?.secretAccessKey).toEqual("verySecretKey1"); - }); -}); diff --git a/tests/unit/services/secrets-manager.unitTest.ts b/tests/unit/services/secrets-manager.unitTest.ts index fc36720..d02bf9f 100644 --- a/tests/unit/services/secrets-manager.unitTest.ts +++ b/tests/unit/services/secrets-manager.unitTest.ts @@ -1,12 +1,20 @@ import { getSecretValue } from "../../../src/services/secrets-manager"; -import { SecretsManager } from "aws-sdk"; - -jest.mock("aws-sdk"); - +import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; +import { mockClient } from "aws-sdk-client-mock"; + +const mockSecretsManager = mockClient(SecretsManagerClient) +const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { + mockSecretsManager.on(GetSecretValueCommand).callsFake((actualSecretKey) => { + if (expectedSecretKey === actualSecretKey?.SecretId) { + return Promise.resolve(secretValue); + } + return Promise.resolve(undefined); + }); +}; describe("getSecretValue()", () => { beforeEach(() => { // @ts-ignore - SecretsManager.mockClear(); + mockSecretsManager.reset(); }); it("should fail on non-existent secret", async () => { @@ -44,18 +52,4 @@ describe("getSecretValue()", () => { SecretBinary: Buffer.from(secretValue, "utf-8"), }); }; - - const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { - // @ts-ignore - SecretsManager.mockImplementation(() => ({ - getSecretValue: jest.fn().mockImplementation((actualSecretKey) => ({ - promise: jest.fn().mockImplementation(() => { - if (expectedSecretKey === actualSecretKey?.SecretId) { - return Promise.resolve(secretValue); - } - return Promise.resolve(undefined); - }), - })), - })); - }; }); diff --git a/tests/unit/services/sql-operations.unitTest.ts b/tests/unit/services/sql-operations.unitTest.ts index c2f2e79..4f42765 100644 --- a/tests/unit/services/sql-operations.unitTest.ts +++ b/tests/unit/services/sql-operations.unitTest.ts @@ -1,3 +1,4 @@ +import { OperationType } from "@aws-sdk/client-dynamodb-streams"; import { deriveSqlOperation } from "../../../src/services/sql-operations"; describe("deriveSqlOperation()", () => { @@ -14,6 +15,6 @@ describe("deriveSqlOperation()", () => { }); it("should throw error on unrecognized operation", () => { - expect(() => deriveSqlOperation("any-unknown")).toThrowError(); + expect(() => deriveSqlOperation("any-unknown" as unknown as OperationType)).toThrowError(); }); }); diff --git a/tests/utils.ts b/tests/utils.ts index 02af65e..7fe0725 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,4 +1,4 @@ -import { AttributeValue } from "aws-sdk/clients/dynamodbstreams"; +import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; import path from "path"; import { getSecretValue } from "../src/services/secrets-manager"; import { SecretsManagerConfig } from "../src/models/aws-sm-config"; @@ -13,7 +13,7 @@ export const pathToResources = (): string => { export const castToImageShape = ( json: any -): { [key: string]: AttributeValue } => { +): { [key: string]: NativeAttributeValue } => { return json as any; }; @@ -25,7 +25,7 @@ export const useLocalDb = (): void => { username: "root", password: "12345", engine: "", - host: "localhost", + host: "127.0.0.1", port: 3306, dbname: "", dbClusterIdentifier: "", From 7738d8ae45f1ae809528422aa1f859ddfe7870a9 Mon Sep 17 00:00:00 2001 From: "Shivangi Das (CVS)" Date: Tue, 28 May 2024 16:10:40 +0100 Subject: [PATCH 09/20] chore(cb2-12277): update packages and eslint (#100) * fix(cb2-12277): update packages and eslint * fix(cb2-12277): update packages and eslint * fix(cb2-12277): lint script * chore(cb2-12277): update husky scripts * chore(cb2-12277): lint errors * chore(cb2-12277): tslint not used * chore(cb2-12277): minor updates since last commit --- .eslintignore | 8 + .eslintrc.js | 27 + .husky/commit-msg | 4 + .husky/pre-commit | 4 + .husky/pre-push | 4 + package-lock.json | 26491 +++++++++------- package.json | 85 +- src/functions/process-stream-event.ts | 71 +- src/handler.ts | 13 +- src/models/adr-details.ts | 104 +- src/models/applicant-details-properties.ts | 22 +- src/models/auth-into-service.ts | 16 +- src/models/axles.ts | 80 +- src/models/body-type.ts | 58 +- src/models/brakes.ts | 56 +- src/models/dda.ts | 28 +- src/models/defects.ts | 88 +- src/models/dimensions.ts | 18 +- src/models/letters-of-auth.ts | 14 +- src/models/manufacturer-details.ts | 26 +- src/models/microfilm.ts | 120 +- src/models/mod-type.ts | 16 +- src/models/plates.ts | 24 +- src/models/purchaser-details.ts | 26 +- src/models/shared-enums.ts | 62 +- src/models/tech-record-document.ts | 24 +- src/models/tech-record.ts | 312 +- src/models/test-results.ts | 128 +- src/models/test-types.ts | 122 +- src/models/vehicle-class.ts | 58 +- src/services/connection-pool-options.ts | 6 +- src/services/connection-pool.ts | 39 +- src/services/dynamodb-images.ts | 88 +- src/services/entity-conversion.ts | 48 +- src/services/secrets-manager.ts | 8 +- src/services/sql-execution.ts | 44 +- src/services/sql-generation.ts | 95 +- src/services/sql-operations.ts | 19 +- src/services/table-details.ts | 568 +- .../tech-record-document-conversion.ts | 203 +- src/services/test-result-record-conversion.ts | 196 +- src/utils/cleanser.ts | 9 +- src/utils/padwithzeros.ts | 2 +- ...nto-service-document-conversion.intTest.ts | 361 +- tests/integration/cvsbnop-container.ts | 44 +- tests/integration/database-teardown.ts | 9 +- ...tech-record-document-conversion.intTest.ts | 581 +- ...-results-conversion-with-delete.intTest.ts | 1511 +- ...-results-conversion-with-upsert.intTest.ts | 1513 +- .../process-stream-event.unitTest.ts | 123 +- .../unit/models/auth-into-service.unitTest.ts | 121 +- .../models/tech-record-document.unitTest.ts | 122 +- tests/unit/models/test-result.unitTest.ts | 32 +- .../unit/services/connection-pool.unitTest.ts | 70 +- .../unit/services/dynamodb-images.unitTest.ts | 160 +- .../services/entity-conversion.unitTest.ts | 64 +- .../unit/services/secrets-manager.unitTest.ts | 43 +- tests/unit/services/sql-execution.unitTest.ts | 72 +- .../unit/services/sql-generation.unitTest.ts | 74 +- .../unit/services/sql-operations.unitTest.ts | 16 +- tests/unit/updateStore.unitTest.ts | 4 +- tests/utils.ts | 82 +- tests/utils/cleanser.unitTest.ts | 36 +- tests/utils/padwithtwos.unitTest.ts | 18 +- tslint.json | 30 - 65 files changed, 18826 insertions(+), 15694 deletions(-) create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100755 .husky/commit-msg create mode 100755 .husky/pre-commit create mode 100755 .husky/pre-push delete mode 100644 tslint.json diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..97b9e77 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,8 @@ +node_modules +.serverless +.vscode +*.config.js +**/config/*.ts +**/*.js +.build, +jest.config.ts \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..26670c8 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,27 @@ +module.exports = { + root: true, + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint', 'jest'], + extends: [ + '@dvsa/eslint-config-ts', + ], + rules: { + 'jest/no-disabled-tests': 'warn', + 'jest/no-commented-out-tests': 'warn', + 'jest/no-focused-tests': 'error', + 'jest/no-identical-title': 'error', + 'jest/prefer-to-have-length': 'warn', + 'jest/valid-expect': 'error', + '@typescript-eslint/no-unsafe-member-access': 'off', + '@typescript-eslint/no-unsafe-argument': 'off', + '@typescript-eslint/no-unsafe-assignment': 'off', + '@typescript-eslint/no-unsafe-call': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/naming-convention': 'off', + '@typescript-eslint/no-unused-vars': 'off', + '@typescript-eslint/no-unsafe-return': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/no-floating-promises': 'off', + 'no-restricted-syntax': 'off' + }, + }; \ No newline at end of file diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100755 index 0000000..e810522 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npx --no -- commitlint --edit $1 diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100755 index 0000000..b320cbb --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm test && npm run security-checks && npm run audit && npm run lint diff --git a/.husky/pre-push b/.husky/pre-push new file mode 100755 index 0000000..93d79b4 --- /dev/null +++ b/.husky/pre-push @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run prepush diff --git a/package-lock.json b/package-lock.json index a13c9a2..6e8ca51 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,60 +9,85 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@aws-sdk/client-dynamodb-streams": "3.565.0", + "@aws-sdk/client-dynamodb": "3.577.0", + "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", - "@types/lambda-tester": "3.6.0", + "@aws-sdk/util-dynamodb": "3.577.0", + "@types/lambda-tester": "4.0.3", "aws-lambda": "1.0.7", "aws-xray-sdk": "3.6.0", - "date-fns": "2.21.2", - "liquibase": "1.0.1", - "moment": "2.29.4", - "mysql2": "3.9.7", - "prettier": "2.2.1", - "reflect-metadata": "0.1.13", + "date-fns": "3.6.0", + "liquibase": "4.27.0", + "moment": "2.30.1", + "mysql2": "3.9.8", + "reflect-metadata": "0.2.2", "ts-node-register": "1.0.0", - "uuid": "8.3.2" + "uuid": "9.0.1" }, "devDependencies": { - "@aws-sdk/client-dynamodb": "3.554.0", - "@aws-sdk/util-dynamodb": "3.266.0", - "@commitlint/cli": "12.1.4", - "@commitlint/config-conventional": "12.1.4", - "@types/aws-lambda": "8.10.34", - "@types/jest": "26.0.0", - "@types/jest-plugin-context": "2.9.2", - "@types/node": "12.20.7", - "@types/request-promise": "4.1.44", - "@types/sinon": "7.5.0", - "@types/uuid": "8.3.0", + "@commitlint/cli": "19.3.0", + "@commitlint/config-conventional": "19.2.2", + "@dvsa/eslint-config-ts": "3.0.1", + "@types/aws-lambda": "8.10.138", + "@types/jest": "29.5.12", + "@types/jest-plugin-context": "2.9.7", + "@types/node": "20.12.12", + "@types/request-promise": "4.1.51", + "@types/sinon": "17.0.3", + "@types/uuid": "9.0.8", + "@typescript-eslint/eslint-plugin": "7.11.0", + "@typescript-eslint/parser": "7.11.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", "aws-sdk-client-mock": "4.0.0", - "commitlint": "17.0.0", + "commitlint": "19.3.0", "cross-env": "7.0.3", - "husky": "3.0.9", - "jest": "26.0.0", + "husky": "9.0.11", + "jest": "29.7.0", + "jest-mock": "29.7.0", "jest-plugin-context": "2.9.0", "jest-serial-runner": "1.2.1", "jest-sonar-reporter": "2.0.0", - "lambda-tester": "3.5.0", - "serverless": "3.33.0", - "serverless-offline": "13.3.3", + "lambda-tester": "4.0.1", + "prettier": "3.2.5", + "serverless": "3.38.0", + "serverless-offline": "13.6.0", "serverless-plugin-tracing": "2.0.0", "serverless-plugin-typescript": "2.1.5", - "sinon": "7.5.0", + "sinon": "18.0.0", "sonar-scanner": "3.1.0", - "testcontainers": "7.6.2", - "ts-jest": "26.5.1", - "tslint": "5.20.0", - "tslint-no-unused-expression-chai": "0.1.4", - "typescript": "3.9.9" + "testcontainers": "10.9.0", + "ts-jest": "29.1.4", + "typescript": "5.4.5" }, "engines": { "node": "18.*", "npm": "9.*" } }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@ampproject/remapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, "node_modules/@aws-crypto/crc32": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", @@ -125,5091 +150,5525 @@ "tslib": "^1.11.1" } }, - "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.554.0.tgz", - "integrity": "sha512-w1Bepf3r8tTSymBiXqDHfzDc7J9b0sRbQeRtFUmCI9HFiQkLhDigGBkorNkJohCzwO1Pxh6Z4/a0mWZ7d8f1Zw==", + "node_modules/@aws-sdk/client-cloudformation": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.583.0.tgz", + "integrity": "sha512-jMuxCtJq85I+sXkxS07tGJvJsDb12TFjKCTaR5Q6ucMfmSng9nPSwclkOiCO2xscWUHV4OEHreIDpkB3nz4tGg==", "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", - "@aws-sdk/middleware-endpoint-discovery": "3.535.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", + "@aws-sdk/client-sso-oidc": "3.583.0", + "@aws-sdk/client-sts": "3.583.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/credential-provider-node": "3.583.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", "tslib": "^2.6.2", "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.565.0.tgz", - "integrity": "sha512-1T4XbpIH01qJdc1/k+azlKwZsvIaNqeFgslkzw6p7uE+K3xJZ+x9Y3vv2vOCQk7lAkhK+WJUvduum4Ubu0JuBQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sso": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.583.0.tgz", + "integrity": "sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw==", + "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", - "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.583.0.tgz", + "integrity": "sha512-LO3wmrFXPi2kNE46lD1XATfRrvdNxXd4DlTFouoWmr7lvqoUkcbmtkV2r/XChZA2z0HiDauphC1e8b8laJVeSg==", + "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-sdk/client-sts": "3.583.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/credential-provider-node": "3.583.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", - "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", - "peer": true, + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sts": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.583.0.tgz", + "integrity": "sha512-xDMxiemPDWr9dY2Q4AyixkRnk/hvS6fs6OWxuVCz1WO47YhaAfOsEGAgQMgDLLaOfj/oLU5D14uTNBEPGh4rBA==", + "dev": true, "dependencies": { "@aws-crypto/sha256-browser": "3.0.0", "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-sdk/client-sso-oidc": "3.583.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/credential-provider-node": "3.583.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", - "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", - "peer": true, + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/core": { + "version": "3.582.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.582.0.tgz", + "integrity": "sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw==", + "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/core": "^2.0.1", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "fast-xml-parser": "4.2.5", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", - "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", + "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", + "dev": true, "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "fast-xml-parser": "4.2.5", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", - "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.582.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.582.0.tgz", + "integrity": "sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q==", + "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/types": "3.577.0", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", - "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.583.0.tgz", + "integrity": "sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ==", + "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.565.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.583.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.583.0" + } + }, + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.583.0.tgz", + "integrity": "sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw==", + "dev": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-http": "3.582.0", + "@aws-sdk/credential-provider-ini": "3.583.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.583.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", - "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", + "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", + "dev": true, "dependencies": { - "@aws-sdk/client-sso": "3.556.0", - "@aws-sdk/token-providers": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", - "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.583.0.tgz", + "integrity": "sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/client-sso": "3.583.0", + "@aws-sdk/token-providers": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/token-providers": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", - "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", + "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.565.0" + "@aws-sdk/client-sts": "^3.577.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", + "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-logger": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", + "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", + "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", - "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.583.0.tgz", + "integrity": "sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw==", "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/credential-provider-node": "3.554.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/eventstream-serde-browser": "^2.2.0", - "@smithy/eventstream-serde-config-resolver": "^2.2.0", - "@smithy/eventstream-serde-node": "^2.2.0", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-stream": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "@smithy/util-waiter": "^2.2.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", + "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", + "dev": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.565.0.tgz", - "integrity": "sha512-C31ZIoY6d0Fz+U12ygXkemjbp2CsMZzQd34i2PYb+AzsuGeNukvAs+LnumJ0if5HM7rfaC9m68Qw+NRMn9lRLA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/token-providers": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", + "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", + "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.577.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", - "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/types": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.565.0.tgz", - "integrity": "sha512-uMdjTRa8cPGo+7JPjEkesh6jNEZG8uJS44cWeskTHTVhHWcdwXvjSwQWmeXlkYVhHQSwG9Ps3pq12Vpw9oFrxg==", - "peer": true, + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-endpoints": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.583.0.tgz", + "integrity": "sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ==", + "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.565.0.tgz", - "integrity": "sha512-c2T20tz+Akn9uBgmZPPK3VLpgzYGVuHxKNisLwGtGL5NdQSoZZ6HNT08PY3KB12Ou8VcZLv8cvUz2Nivqhg4RA==", - "peer": true, + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", + "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", + "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", - "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", + "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", + "dev": true, "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "fast-xml-parser": "4.2.5", + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", - "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", + "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", - "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/config-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", + "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", + "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.565.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", - "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", + "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", + "dev": true, "dependencies": { - "@aws-sdk/client-sso": "3.556.0", - "@aws-sdk/token-providers": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", - "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/credential-provider-imds": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", + "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", - "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/fetch-http-handler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", + "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/hash-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", + "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", + "dev": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/invalid-dependency": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", + "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", + "dev": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.554.0.tgz", - "integrity": "sha512-yj6CgIxCT3UwMumEO481KH4QvwArkAPzD7Xvwe1QKgJATc9bKNEo/FxV8LfnWIJ7nOtMDxbNxYLMXH/Fs1qGaQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-content-length": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", + "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.554.0.tgz", - "integrity": "sha512-M86rkiRqbZBF5VyfTQ/vttry9VSoQkZ1oCqYF+SAGlXmD0Of8587yRSj2M4rYe0Uj7nRQIfSnhDYp1UzsZeRfQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-endpoint": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", + "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.554.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", + "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", + "dev": true, + "dependencies": { + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/service-error-classification": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.554.0.tgz", - "integrity": "sha512-EhaA6T0M0DNg5M8TCF1a7XJI5D/ZxAF3dgVIchyF98iNzjYgl/7U8K6hJay2A11aFvVu70g46xYMpz3Meky4wQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-serde": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", + "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", "dev": true, "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.554.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.554.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/core": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.554.0.tgz", - "integrity": "sha512-JrG7ToTLeNf+/S3IiCUPVw9jEDB0DXl5ho8n/HwOa946mv+QyCepCuV2U/8f/1KAX0mD8Ufm/E4/cbCbFHgbSg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-stack": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", + "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", "dev": true, "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.2.1", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "fast-xml-parser": "4.2.5", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/core/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", - "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/node-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", + "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.552.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", - "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/node-http-handler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", + "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/util-stream": "^2.2.0", + "@smithy/abort-controller": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.554.0.tgz", - "integrity": "sha512-BQenhg43S6TMJHxrdjDVdVF+HH5tA1op9ZYLyJrvV5nn7CCO4kyAkkOuSAv1NkL+RZsIkW0/vHTXwQOQw3cUsg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/property-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", + "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", "dev": true, "dependencies": { - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.554.0", - "@aws-sdk/credential-provider-web-identity": "3.554.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.554.0.tgz", - "integrity": "sha512-poX/+2OE3oxqp4f5MiaJh251p8l+bzcFwgcDBwz0e2rcpvMSYl9jw4AvGnCiG2bmf9yhNJdftBiS1A+KjxV0qA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/protocol-http": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", "dev": true, "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.554.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.554.0", - "@aws-sdk/credential-provider-web-identity": "3.554.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", - "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/querystring-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", + "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.554.0.tgz", - "integrity": "sha512-8QPpwBA31i/fZ7lDZJC4FA9EdxLg5SJ8sPB2qLSjp5UTGTYL2HRl0Eznkb7DXyp/wImsR/HFR1NxuFCCVotLCg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/querystring-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", + "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", "dev": true, "dependencies": { - "@aws-sdk/client-sso": "3.554.0", - "@aws-sdk/token-providers": "3.554.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/service-error-classification": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", + "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", + "dev": true, + "dependencies": { + "@smithy/types": "^3.0.0" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.554.0.tgz", - "integrity": "sha512-HN54DzLjepw5ZWSF9ycGevhFTyg6pjLuLKy5Y8t/f1jFDComzYdGEDe0cdV9YO653W3+PQwZZGz09YVygGYBLg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", + "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", "dev": true, "dependencies": { - "@aws-sdk/client-sts": "3.554.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/endpoint-cache": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.535.0.tgz", - "integrity": "sha512-sPG2l00iVuporK9AmPWq4UBcJURs2RN+vKA8QLRQANmQS3WFHWHamvGltxCjK79izkeqri882V4XlFpZfWhemA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/signature-v4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", + "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", "dev": true, "dependencies": { - "mnemonist": "0.38.3", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/endpoint-cache/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.535.0.tgz", - "integrity": "sha512-+EsqJB5A15RoTf0HxUdknF3hp+2WDg0HWc+QERUctzzYXy9l5LIQjmhQ96cWDyFttKmHE+4h6fjMZjJEeWOeYQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/smithy-client": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", + "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", "dev": true, "dependencies": { - "@aws-sdk/endpoint-cache": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", - "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/url-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", + "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", + "dev": true, + "dependencies": { + "@smithy/querystring-parser": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", - "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/types": "^2.12.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", - "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.540.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", - "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", - "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", - "@smithy/util-config-provider": "^2.3.0", - "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.554.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.554.0.tgz", - "integrity": "sha512-KMMQ5Cw0FUPL9H8g69Lp08xtzRo7r/MK+lBV6LznWBbCP/NwtZ8awVHaPy2P31z00cWtu9MYkUTviWPqJTaBvg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", + "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", "dev": true, "dependencies": { - "@aws-sdk/client-sso-oidc": "3.554.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@aws-sdk/types": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", - "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", + "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "dev": true, "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-dynamodb": { - "version": "3.266.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.266.0.tgz", - "integrity": "sha512-ozlsMwXnfNTFXHFsD/+A9h1ZQNqJ4XTYTVqzpBYiHq4jfECge1UeGp06c3v1tVvszkAvV8TUrUE37eZNzTPl/g==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-endpoints": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", + "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", "dev": true, "dependencies": { - "tslib": "^2.3.1" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-dynamodb/node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.540.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", - "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/types": "^2.12.0", - "@smithy/util-endpoints": "^1.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", - "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", + "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", + "dev": true, "dependencies": { + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", - "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-retry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", + "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/types": "^2.12.0", - "bowser": "^2.11.0", + "@smithy/service-error-classification": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.535.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", - "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", + "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", + "dev": true, "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "dev": true, "dependencies": { - "tslib": "^2.3.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.2", - "picocolors": "^1.0.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", - "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==", - "dev": true - }, - "node_modules/@babel/core": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.15.tgz", - "integrity": "sha512-6GXmNYeNjS2Uz+uls5jalOemgIhnTMeaXo+yBUA72kC2uX/8VW6XyhVIo2L8/q0goKQA3EVKx0KOQpVKSeWadQ==", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-waiter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.0.0.tgz", + "integrity": "sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.15", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.14", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" + "@smithy/abort-controller": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">=16.0.0" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/@aws-sdk/client-cloudformation/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@babel/generator": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", - "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.577.0.tgz", + "integrity": "sha512-jR+rhYz25aPcMQgQy9tyQS9bsZ2bUKf7gaJ89jvhrrt61dcvw2iXzoO++2SCJWTx8WE1nsT6Vcw70RYpc5y71g==", "dependencies": { - "@babel/types": "^7.24.0", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-endpoint-discovery": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.577.0.tgz", + "integrity": "sha512-A4d7a3UCTS1aVmKUtGAENPJS0cHQOVdEJ2Su8jBICWKYDJmKL3lai3O7qRa/yiFmaAdjvfVkGBW5XQBwWH0/jw==", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.13.tgz", - "integrity": "sha512-q1kcdHNZehBwD9jYPh3WyXcsFERi39X4I59I3NadciWtNDyZ6x+GboOxncFK0kXlKIv6BJm5acncehXWUjWQMQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.577.0.tgz", + "integrity": "sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==", "dependencies": { - "@babel/compat-data": "^7.13.12", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.577.0.tgz", + "integrity": "sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.577.0.tgz", + "integrity": "sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==", "dependencies": { - "@babel/types": "^7.22.5" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { + "version": "3.576.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.576.0.tgz", + "integrity": "sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==", + "dependencies": { + "@smithy/core": "^2.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", + "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", "dependencies": { - "@babel/types": "^7.13.12" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.577.0.tgz", + "integrity": "sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==", "dependencies": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" + "@aws-sdk/types": "3.577.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.12.13" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.577.0.tgz", + "integrity": "sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.577.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.577.0.tgz", + "integrity": "sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-http": "3.577.0", + "@aws-sdk/credential-provider-ini": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.577.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", + "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.13.12" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.577.0.tgz", + "integrity": "sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==", + "dependencies": { + "@aws-sdk/client-sso": "3.577.0", + "@aws-sdk/token-providers": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", + "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", "dependencies": { - "@babel/types": "^7.22.5" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", + "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-logger": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", + "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "node_modules/@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", + "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.577.0.tgz", + "integrity": "sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", - "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", + "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/token-providers": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", + "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@aws-sdk/client-sso-oidc": "^3.577.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/types": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-endpoints": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.577.0.tgz", + "integrity": "sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", + "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", + "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/config-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", + "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", + "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/credential-provider-imds": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", + "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/fetch-http-handler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", + "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/hash-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", + "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@smithy/types": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/invalid-dependency": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", + "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", - "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-content-length": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", + "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", "dependencies": { - "@babel/code-frame": "^7.24.1", - "@babel/generator": "^7.24.1", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.24.1", - "@babel/types": "^7.24.0", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", - "dev": true, - "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-endpoint": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", + "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", + "dependencies": { + "@smithy/middleware-serde": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0" } }, - "node_modules/@balena/dockerignore": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", - "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", - "dev": true - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "dependencies": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - }, - "bin": { - "watch": "cli.js" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", + "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", + "dependencies": { + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/service-error-classification": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=0.1.95" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-12.1.4.tgz", - "integrity": "sha512-ZR1WjXLvqEffYyBPT0XdnSxtt3Ty1TMoujEtseW5o3vPnkA1UNashAMjQVg/oELqfaiAMnDw8SERPMN0e/0kLg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-serde": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", + "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", "dependencies": { - "@commitlint/format": "^12.1.4", - "@commitlint/lint": "^12.1.4", - "@commitlint/load": "^12.1.4", - "@commitlint/read": "^12.1.4", - "@commitlint/types": "^12.1.4", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "commitlint": "cli.js" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/ensure": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-12.1.4.tgz", - "integrity": "sha512-MxHIBuAG9M4xl33qUfIeMSasbv3ktK0W+iygldBxZOL4QSYC2Gn66pZAQMnV9o3V+sVFHoAK2XUKqBAYrgbEqw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-stack": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", + "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", "dependencies": { - "@commitlint/types": "^12.1.4", - "lodash": "^4.17.19" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" - } - }, - "node_modules/@commitlint/cli/node_modules/@commitlint/execute-rule": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-12.1.4.tgz", - "integrity": "sha512-h2S1j8SXyNeABb27q2Ok2vD1WfxJiXvOttKuRA9Or7LN6OQoC/KtT3844CIhhWNteNMu/wE0gkTqGxDVAnJiHg==", - "dev": true, - "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/format": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-12.1.4.tgz", - "integrity": "sha512-h28ucMaoRjVvvgS6Bdf85fa/+ZZ/iu1aeWGCpURnQV7/rrVjkhNSjZwGlCOUd5kDV1EnZ5XdI7L18SUpRjs26g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/node-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", + "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", "dependencies": { - "@commitlint/types": "^12.1.4", - "chalk": "^4.0.0" + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/is-ignored": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-12.1.4.tgz", - "integrity": "sha512-uTu2jQU2SKvtIRVLOzMQo3KxDtO+iJ1p0olmncwrqy4AfPLgwoyCP2CiULq5M7xpR3+dE3hBlZXbZTQbD7ycIw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/node-http-handler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", + "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", "dependencies": { - "@commitlint/types": "^12.1.4", - "semver": "7.3.5" + "@smithy/abort-controller": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/lint": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-12.1.4.tgz", - "integrity": "sha512-1kZ8YDp4to47oIPFELUFGLiLumtPNKJigPFDuHt2+f3Q3IKdQ0uk53n3CPl4uoyso/Og/EZvb1mXjFR/Yce4cA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/property-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", + "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", "dependencies": { - "@commitlint/is-ignored": "^12.1.4", - "@commitlint/parse": "^12.1.4", - "@commitlint/rules": "^12.1.4", - "@commitlint/types": "^12.1.4" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/load": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-12.1.4.tgz", - "integrity": "sha512-Keszi0IOjRzKfxT+qES/n+KZyLrxy79RQz8wWgssCboYjKEp+wC+fLCgbiMCYjI5k31CIzIOq/16J7Ycr0C0EA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/protocol-http": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", "dependencies": { - "@commitlint/execute-rule": "^12.1.4", - "@commitlint/resolve-extends": "^12.1.4", - "@commitlint/types": "^12.1.4", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" - } - }, - "node_modules/@commitlint/cli/node_modules/@commitlint/message": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-12.1.4.tgz", - "integrity": "sha512-6QhalEKsKQ/Y16/cTk5NH4iByz26fqws2ub+AinHPtM7Io0jy4e3rym9iE+TkEqiqWZlUigZnTwbPvRJeSUBaA==", - "dev": true, - "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/parse": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-12.1.4.tgz", - "integrity": "sha512-yqKSAsK2V4X/HaLb/yYdrzs6oD/G48Ilt0EJ2Mp6RJeWYxG14w/Out6JrneWnr/cpzemyN5hExOg6+TB19H/Lw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/querystring-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", + "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", "dependencies": { - "@commitlint/types": "^12.1.4", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.0.0" + "@smithy/types": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/read": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-12.1.4.tgz", - "integrity": "sha512-TnPQSJgD8Aod5Xeo9W4SaYKRZmIahukjcCWJ2s5zb3ZYSmj6C85YD9cR5vlRyrZjj78ItLUV/X4FMWWVIS38Jg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/querystring-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", + "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", "dependencies": { - "@commitlint/top-level": "^12.1.4", - "@commitlint/types": "^12.1.4", - "fs-extra": "^9.0.0", - "git-raw-commits": "^2.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/resolve-extends": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-12.1.4.tgz", - "integrity": "sha512-R9CoUtsXLd6KSCfsZly04grsH6JVnWFmVtWgWs1KdDpdV+G3TSs37tColMFqglpkx3dsWu8dsPD56+D9YnJfqg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/service-error-classification": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", + "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", "dependencies": { - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "@smithy/types": "^3.0.0" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/rules": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-12.1.4.tgz", - "integrity": "sha512-W8m6ZSjg7RuIsIfzQiFHa48X5mcPXeKT9yjBxVmjHvYfS2FDBf1VxCQ7vO0JTVIdV4ohjZ0eKg/wxxUuZHJAZg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", + "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", "dependencies": { - "@commitlint/ensure": "^12.1.4", - "@commitlint/message": "^12.1.4", - "@commitlint/to-lines": "^12.1.4", - "@commitlint/types": "^12.1.4" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/to-lines": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-12.1.4.tgz", - "integrity": "sha512-TParumvbi8bdx3EdLXz2MaX+e15ZgoCqNUgqHsRLwyqLUTRbqCVkzrfadG1UcMQk8/d5aMbb327ZKG3Q4BRorw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/signature-v4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", + "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/top-level": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-12.1.4.tgz", - "integrity": "sha512-d4lTJrOT/dXlpY+NIt4CUl77ciEzYeNVc0VFgUQ6VA+b1rqYD2/VWFjBlWVOrklxtSDeKyuEhs36RGrppEFAvg==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0" + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/smithy-client": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", + "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/@commitlint/types": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-12.1.4.tgz", - "integrity": "sha512-KRIjdnWNUx6ywz+SJvjmNCbQKcKP6KArhjZhY2l+CWKxak0d77SOjggkMwFTiSgLODOwmuLTbarR2ZfWPiPMlw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", "dependencies": { - "chalk": "^4.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/url-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", + "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@smithy/querystring-parser": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@commitlint/cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "tslib": "^2.6.2" } }, - "node_modules/@commitlint/cli/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dependencies": { - "color-name": "~1.1.4" + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@commitlint/cli/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", + "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10.0.0" } }, - "node_modules/@commitlint/cli/node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", + "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "dependencies": { + "@smithy/config-resolver": "^3.0.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=4" + "node": ">= 10.0.0" } }, - "node_modules/@commitlint/cli/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-endpoints": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", + "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", + "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", "dependencies": { - "has-flag": "^4.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-retry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", + "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "@smithy/service-error-classification": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/cli/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", + "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", + "dependencies": { + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/config-conventional": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-12.1.4.tgz", - "integrity": "sha512-ZIdzmdy4o4WyqywMEpprRCrehjCSQrHkaRTVZV411GyLigFQHlEBSJITAihLAWe88Qy/8SyoIe5uKvAsV5vRqQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dependencies": { - "conventional-changelog-conventionalcommits": "^4.3.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=v10" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/config-validator": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", - "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@commitlint/types": "^17.4.4", - "ajv": "^8.11.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/ensure": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz", - "integrity": "sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.577.0.tgz", + "integrity": "sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==", "dependencies": { - "@commitlint/types": "^17.4.4", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/execute-rule": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", - "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.577.0.tgz", + "integrity": "sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==", + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/format": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", - "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sts": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.577.0.tgz", + "integrity": "sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==", "dependencies": { - "@commitlint/types": "^17.4.4", - "chalk": "^4.1.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.577.0", + "@aws-sdk/core": "3.576.0", + "@aws-sdk/credential-provider-node": "3.577.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.577.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.0", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.0", + "@smithy/util-defaults-mode-node": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/format/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/core": { + "version": "3.576.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.576.0.tgz", + "integrity": "sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==", "dependencies": { - "color-convert": "^2.0.1" + "@smithy/core": "^2.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/format/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", + "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/format/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.577.0.tgz", + "integrity": "sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==", "dependencies": { - "color-name": "~1.1.4" + "@aws-sdk/types": "3.577.0", + "@smithy/fetch-http-handler": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/format/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@commitlint/format/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.577.0.tgz", + "integrity": "sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.577.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.577.0.tgz", + "integrity": "sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-http": "3.577.0", + "@aws-sdk/credential-provider-ini": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.577.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@commitlint/format/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", + "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", "dependencies": { - "has-flag": "^4.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/is-ignored": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.7.tgz", - "integrity": "sha512-vqyNRqtbq72P2JadaoWiuoLtXIs9SaAWDqdtef6G2zsoXqKFc7vqj1f+thzVgosXG3X/5K9jNp+iYijmvOfc/g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.577.0.tgz", + "integrity": "sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==", "dependencies": { - "@commitlint/types": "^17.4.4", - "semver": "7.5.2" + "@aws-sdk/client-sso": "3.577.0", + "@aws-sdk/token-providers": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/is-ignored/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", + "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" } }, - "node_modules/@commitlint/lint": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.7.tgz", - "integrity": "sha512-TW+AozfuOFMrHn+jdwtz0IWu8REKFp0eryOvoBp2r8IXNc4KihKB1spAiUB6SFyHD6hVVeolz12aHnJ3Mb+xVQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", + "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", "dependencies": { - "@commitlint/is-ignored": "^17.6.7", - "@commitlint/parse": "^17.6.7", - "@commitlint/rules": "^17.6.7", - "@commitlint/types": "^17.4.4" + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.6.7.tgz", - "integrity": "sha512-QZ2rJTbX55BQdYrCm/p6+hh/pFBgC9nTJxfsrK6xRPe2thiQzHN0AQDBqBwAirn6gIkHrjIbCbtAE6kiDYLjrw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-logger": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", + "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/execute-rule": "^17.4.0", - "@commitlint/resolve-extends": "^17.6.7", - "@commitlint/types": "^17.4.4", - "@types/node": "*", - "chalk": "^4.1.0", - "cosmiconfig": "^8.0.0", - "cosmiconfig-typescript-loader": "^4.0.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0", - "resolve-from": "^5.0.0", - "ts-node": "^10.8.1", - "typescript": "^4.6.4 || ^5.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", + "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", "dependencies": { - "color-convert": "^2.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.577.0.tgz", + "integrity": "sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", + "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", "dependencies": { - "color-name": "~1.1.4" + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@commitlint/load/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/token-providers": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", + "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14" + "node": ">=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.577.0" } }, - "node_modules/@commitlint/load/node_modules/cosmiconfig-typescript-loader": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-4.4.0.tgz", - "integrity": "sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==", - "dev": true, - "engines": { - "node": ">=v14.21.3" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/types": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "ts-node": ">=10", - "typescript": ">=4" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-endpoints": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.577.0.tgz", + "integrity": "sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==", + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", + "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", + "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" + "node": ">=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@commitlint/load/node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=4" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/config-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", + "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", "dependencies": { - "argparse": "^2.0.1" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@commitlint/load/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", + "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/load/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/credential-provider-imds": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", + "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", + "dependencies": { + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.17" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/message": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", - "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", - "dev": true, - "engines": { - "node": ">=v14" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/fetch-http-handler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", + "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "dependencies": { + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@commitlint/parse": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.7.tgz", - "integrity": "sha512-ibO03BgEns+JJpohpBZYD49mCdSNMg6fTv7vA5yqzEFWkBQk5NWhEBw2yG+Z1UClStIRkMkAYyI2HzoQG9tCQQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/hash-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", + "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", "dependencies": { - "@commitlint/types": "^17.4.4", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.2.2" + "@smithy/types": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/read": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", - "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/invalid-dependency": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", + "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@commitlint/top-level": "^17.4.0", - "@commitlint/types": "^17.4.4", - "fs-extra": "^11.0.0", - "git-raw-commits": "^2.0.11", - "minimist": "^1.2.6" + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/read/node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-content-length": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", + "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/read/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-endpoint": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", + "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", + "dependencies": { + "@smithy/middleware-serde": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@commitlint/read/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", + "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", + "dependencies": { + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/service-error-classification": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", - "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-serde": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", + "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/types": "^17.4.4", - "import-fresh": "^3.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/resolve-extends/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-stack": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", + "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/resolve-extends/node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/node-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", + "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "dependencies": { + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=4" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/resolve-extends/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/node-http-handler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", + "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "dependencies": { + "@smithy/abort-controller": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.7.tgz", - "integrity": "sha512-x/SDwDTN3w3Gr5xkhrIORu96rlKCc8ZLYEMXRqi9+MB33st2mKcGvKa5uJuigHlbl3xm75bAAubATrodVrjguQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/property-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", + "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", "dependencies": { - "@commitlint/ensure": "^17.6.7", - "@commitlint/message": "^17.4.2", - "@commitlint/to-lines": "^17.4.0", - "@commitlint/types": "^17.4.4", - "execa": "^5.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/protocol-http": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/querystring-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", + "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@smithy/types": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/querystring-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", + "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/service-error-classification": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", + "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", + "dependencies": { + "@smithy/types": "^3.0.0" + }, "engines": { - "node": ">=10.17.0" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", + "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/signature-v4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", + "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/smithy-client": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", + "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", "dependencies": { - "shebang-regex": "^3.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/rules/node_modules/shebang-regex": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/url-parser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", + "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", + "dependencies": { + "@smithy/querystring-parser": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@commitlint/rules/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/to-lines": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", - "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", - "dev": true, - "engines": { - "node": ">=v14" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "dependencies": { + "tslib": "^2.6.2" } }, - "node_modules/@commitlint/top-level": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", - "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dependencies": { - "find-up": "^5.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/types": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", - "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "chalk": "^4.1.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=v14" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dependencies": { - "color-convert": "^2.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", + "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 10.0.0" } }, - "node_modules/@commitlint/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", + "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "dependencies": { + "@smithy/config-resolver": "^3.0.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@commitlint/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@commitlint/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">= 10.0.0" } }, - "node_modules/@commitlint/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-endpoints": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", + "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", "dependencies": { - "has-flag": "^4.0.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/@hapi/accept": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", - "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2" - } - }, - "node_modules/@hapi/ammo": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", - "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^11.0.2" + "node": ">=16.0.0" } }, - "node_modules/@hapi/b64": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", - "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", + "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", "dependencies": { - "@hapi/hoek": "^11.0.2" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/boom": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", - "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-retry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", + "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", "dependencies": { - "@hapi/hoek": "^11.0.2" + "@smithy/service-error-classification": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/bounce": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-stream": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", - "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2" + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", + "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", + "dependencies": { + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/bourne": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-uri-escape": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", - "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", - "dev": true - }, - "node_modules/@hapi/call": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", - "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2" - } - }, - "node_modules/@hapi/catbox": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", - "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2", - "@hapi/podium": "^5.0.0", - "@hapi/validate": "^2.0.1" - } - }, - "node_modules/@hapi/catbox-memory": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", - "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2" - } - }, - "node_modules/@hapi/content": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", - "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.0" - } - }, - "node_modules/@hapi/cryptiles": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", - "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dependencies": { - "@hapi/boom": "^10.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@hapi/file": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-utf8": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", - "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", - "dev": true - }, - "node_modules/@hapi/h2o2": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-10.0.4.tgz", - "integrity": "sha512-dvD8+Y/Okc0fh0blqaYCLIrcy0+1LqIhMr7hjk8elLQZ9mkw2hKFB9dFKuRfWf+1nvHpGlW+PwccqkdebynQbg==", - "dev": true, + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2", - "@hapi/validate": "^2.0.1", - "@hapi/wreck": "^18.0.1" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@hapi/hapi": { - "version": "21.3.9", - "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.9.tgz", - "integrity": "sha512-AT5m+Rb8iSOFG3zWaiEuTJazf4HDYl5UpRpyxMJ3yR+g8tOEmqDv6FmXrLHShdvDOStAAepHGnr1G7egkFSRdw==", - "dev": true, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-waiter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.0.0.tgz", + "integrity": "sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==", "dependencies": { - "@hapi/accept": "^6.0.1", - "@hapi/ammo": "^6.0.1", - "@hapi/boom": "^10.0.1", - "@hapi/bounce": "^3.0.1", - "@hapi/call": "^9.0.1", - "@hapi/catbox": "^12.1.1", - "@hapi/catbox-memory": "^6.0.1", - "@hapi/heavy": "^8.0.1", - "@hapi/hoek": "^11.0.2", - "@hapi/mimos": "^7.0.1", - "@hapi/podium": "^5.0.1", - "@hapi/shot": "^6.0.1", - "@hapi/somever": "^4.1.1", - "@hapi/statehood": "^8.1.1", - "@hapi/subtext": "^8.1.0", - "@hapi/teamwork": "^6.0.0", - "@hapi/topo": "^6.0.1", - "@hapi/validate": "^2.0.1" + "@smithy/abort-controller": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.15.0" + "node": ">=16.0.0" } }, - "node_modules/@hapi/heavy": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", - "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", + "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/client-lambda": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.554.0.tgz", + "integrity": "sha512-KNUAAZKcsCdUOB2/rbWpc96jsSM/ahw3hK5/Ru4RTLfNP27GitxqF0v+mzrVk9lTuj2ChJ3JDV+UfdGsqvZgpw==", "dev": true, "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/hoek": "^11.0.2", - "@hapi/validate": "^2.0.1" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/credential-provider-node": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/eventstream-serde-browser": "^2.2.0", + "@smithy/eventstream-serde-config-resolver": "^2.2.0", + "@smithy/eventstream-serde-node": "^2.2.0", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-stream": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "@smithy/util-waiter": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@hapi/hoek": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", - "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "node_modules/@aws-sdk/client-lambda/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/@hapi/iron": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", - "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.565.0.tgz", + "integrity": "sha512-C31ZIoY6d0Fz+U12ygXkemjbp2CsMZzQd34i2PYb+AzsuGeNukvAs+LnumJ0if5HM7rfaC9m68Qw+NRMn9lRLA==", "dependencies": { - "@hapi/b64": "^6.0.1", - "@hapi/boom": "^10.0.1", - "@hapi/bourne": "^3.0.0", - "@hapi/cryptiles": "^6.0.1", - "@hapi/hoek": "^11.0.2" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/credential-provider-node": "3.565.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@hapi/mimos": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", - "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", + "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", "dependencies": { - "@hapi/hoek": "^11.0.2", - "mime-db": "^1.52.0" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.556.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@hapi/mimos/node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.583.0.tgz", + "integrity": "sha512-LO3wmrFXPi2kNE46lD1XATfRrvdNxXd4DlTFouoWmr7lvqoUkcbmtkV2r/XChZA2z0HiDauphC1e8b8laJVeSg==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.583.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/credential-provider-node": "3.583.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.6" + "node": ">=16.0.0" } }, - "node_modules/@hapi/nigel": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", - "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sso": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.583.0.tgz", + "integrity": "sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw==", + "peer": true, "dependencies": { - "@hapi/hoek": "^11.0.2", - "@hapi/vise": "^5.0.1" + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@hapi/pez": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", - "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/core": { + "version": "3.582.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.582.0.tgz", + "integrity": "sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw==", + "peer": true, "dependencies": { - "@hapi/b64": "^6.0.1", - "@hapi/boom": "^10.0.1", - "@hapi/content": "^6.0.0", - "@hapi/hoek": "^11.0.2", - "@hapi/nigel": "^5.0.1" + "@smithy/core": "^2.0.1", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/podium": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", - "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", + "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", + "peer": true, "dependencies": { - "@hapi/hoek": "^11.0.2", - "@hapi/teamwork": "^6.0.0", - "@hapi/validate": "^2.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/shot": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", - "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.582.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.582.0.tgz", + "integrity": "sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q==", + "peer": true, "dependencies": { - "@hapi/hoek": "^11.0.2", - "@hapi/validate": "^2.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/somever": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", - "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.583.0.tgz", + "integrity": "sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ==", + "peer": true, "dependencies": { - "@hapi/bounce": "^3.0.1", - "@hapi/hoek": "^11.0.2" + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.583.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.583.0" } }, - "node_modules/@hapi/statehood": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", - "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.583.0.tgz", + "integrity": "sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw==", + "peer": true, "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/bounce": "^3.0.1", - "@hapi/bourne": "^3.0.0", - "@hapi/cryptiles": "^6.0.1", - "@hapi/hoek": "^11.0.2", - "@hapi/iron": "^7.0.1", - "@hapi/validate": "^2.0.1" + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-http": "3.582.0", + "@aws-sdk/credential-provider-ini": "3.583.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.583.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/subtext": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", - "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", + "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", + "peer": true, "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/bourne": "^3.0.0", - "@hapi/content": "^6.0.0", - "@hapi/file": "^3.0.0", - "@hapi/hoek": "^11.0.2", - "@hapi/pez": "^6.1.0", - "@hapi/wreck": "^18.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/teamwork": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", - "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.583.0.tgz", + "integrity": "sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg==", + "peer": true, + "dependencies": { + "@aws-sdk/client-sso": "3.583.0", + "@aws-sdk/token-providers": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@hapi/topo": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", - "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", + "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", + "peer": true, "dependencies": { - "@hapi/hoek": "^11.0.2" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" } }, - "node_modules/@hapi/validate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", - "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", + "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", + "peer": true, "dependencies": { - "@hapi/hoek": "^11.0.2", - "@hapi/topo": "^6.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@hapi/vise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", - "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", - "dev": true, - "dependencies": { - "@hapi/hoek": "^11.0.2" - } - }, - "node_modules/@hapi/wreck": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", - "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", - "dev": true, - "dependencies": { - "@hapi/boom": "^10.0.1", - "@hapi/bourne": "^3.0.0", - "@hapi/hoek": "^11.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-logger": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", + "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", + "peer": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", + "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.583.0.tgz", + "integrity": "sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw==", + "peer": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", + "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", + "peer": true, "dependencies": { - "p-locate": "^4.1.0" + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/token-providers": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", + "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", + "peer": true, "dependencies": { - "p-try": "^2.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" + "node": ">=16.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.577.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/types": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "peer": true, "dependencies": { - "p-limit": "^2.2.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-endpoints": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.583.0.tgz", + "integrity": "sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=16.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", + "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", + "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/config-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", + "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", + "peer": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/console/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", + "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/credential-provider-imds": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", + "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/console/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/fetch-http-handler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", + "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/hash-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", + "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/console/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/console/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/invalid-dependency": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", + "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@jest/console/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-content-length": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", + "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-endpoint": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", + "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", + "peer": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "@smithy/middleware-serde": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", + "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/service-error-classification": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-serde": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", + "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", + "peer": true, "dependencies": { - "fill-range": "^7.0.1" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-stack": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", + "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", + "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-http-handler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", + "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "peer": true, + "dependencies": { + "@smithy/abort-controller": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@jest/core/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/property-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", + "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", + "peer": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/has-flag": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/protocol-http": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", + "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.12.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/signature-v4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", + "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", + "peer": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.6" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/smithy-client": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", + "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/core/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "is-number": "^7.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/url-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", + "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", + "peer": true, "dependencies": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" + "@smithy/querystring-parser": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "peer": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "peer": true, "dependencies": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "peer": true, + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", + "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", + "peer": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">= 10.0.0" } }, - "node_modules/@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", + "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "peer": true, "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" + "@smithy/config-resolver": "^3.0.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "node-notifier": "^8.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@jest/reporters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-endpoints": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", + "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", + "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-retry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", + "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@smithy/service-error-classification": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "peer": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@jest/reporters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.583.0.tgz", + "integrity": "sha512-xDMxiemPDWr9dY2Q4AyixkRnk/hvS6fs6OWxuVCz1WO47YhaAfOsEGAgQMgDLLaOfj/oLU5D14uTNBEPGh4rBA==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sso-oidc": "3.583.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/credential-provider-node": "3.583.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/client-sso": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.583.0.tgz", + "integrity": "sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw==", + "peer": true, + "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.582.0", + "@aws-sdk/middleware-host-header": "3.577.0", + "@aws-sdk/middleware-logger": "3.577.0", + "@aws-sdk/middleware-recursion-detection": "3.577.0", + "@aws-sdk/middleware-user-agent": "3.583.0", + "@aws-sdk/region-config-resolver": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@aws-sdk/util-user-agent-browser": "3.577.0", + "@aws-sdk/util-user-agent-node": "3.577.0", + "@smithy/config-resolver": "^3.0.0", + "@smithy/core": "^2.0.1", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/hash-node": "^3.0.0", + "@smithy/invalid-dependency": "^3.0.0", + "@smithy/middleware-content-length": "^3.0.0", + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.1", + "@smithy/util-defaults-mode-node": "^3.0.1", + "@smithy/util-endpoints": "^2.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/reporters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/core": { + "version": "3.582.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.582.0.tgz", + "integrity": "sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/core": "^2.0.1", + "@smithy/protocol-http": "^4.0.0", + "@smithy/signature-v4": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", + "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", + "peer": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/source-map/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.582.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.582.0.tgz", + "integrity": "sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=16.0.0" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.583.0.tgz", + "integrity": "sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ==", + "peer": true, + "dependencies": { + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.583.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.583.0" } }, - "node_modules/@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.583.0.tgz", + "integrity": "sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw==", + "peer": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@aws-sdk/credential-provider-env": "3.577.0", + "@aws-sdk/credential-provider-http": "3.582.0", + "@aws-sdk/credential-provider-ini": "3.583.0", + "@aws-sdk/credential-provider-process": "3.577.0", + "@aws-sdk/credential-provider-sso": "3.583.0", + "@aws-sdk/credential-provider-web-identity": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", + "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", + "peer": true, "dependencies": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.583.0.tgz", + "integrity": "sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg==", + "peer": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@aws-sdk/client-sso": "3.583.0", + "@aws-sdk/token-providers": "3.577.0", + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", + "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@aws-sdk/client-sts": "^3.577.0" } }, - "node_modules/@jest/transform/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", + "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", + "peer": true, "dependencies": { - "fill-range": "^7.0.1" + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-logger": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", + "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", + "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@aws-sdk/types": "3.577.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@jest/transform/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.583.0.tgz", + "integrity": "sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw==", + "peer": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@aws-sdk/types": "3.577.0", + "@aws-sdk/util-endpoints": "3.583.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", + "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/token-providers": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", + "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.12.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.577.0" } }, - "node_modules/@jest/transform/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "peer": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.6" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-endpoints": { + "version": "3.583.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.583.0.tgz", + "integrity": "sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ==", + "peer": true, + "dependencies": { + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "@smithy/util-endpoints": "^2.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/transform/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", + "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@aws-sdk/types": "3.577.0", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@jest/transform/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", + "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", + "peer": true, "dependencies": { - "is-number": "^7.0.0" + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/config-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", + "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", + "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">=16.0.0" } }, - "node_modules/@jest/types/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/core": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", + "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-retry": "^3.0.1", + "@smithy/middleware-serde": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/credential-provider-imds": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", + "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@jest/types/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/fetch-http-handler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", + "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "peer": true, "dependencies": { - "color-name": "~1.1.4" + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/hash-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", + "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jest/types/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/invalid-dependency": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", + "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + } }, - "node_modules/@jest/types/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-content-length": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", + "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", + "peer": true, + "dependencies": { + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jest/types/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-endpoint": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", + "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/middleware-serde": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/url-parser": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", + "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", + "peer": true, "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/service-error-classification": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-retry": "^3.0.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-serde": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", + "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", + "peer": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-stack": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", + "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/node-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", + "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "peer": true, + "dependencies": { + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.0.0" + "node": ">=16.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/node-http-handler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", + "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "peer": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@smithy/abort-controller": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", - "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/property-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", + "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", + "peer": true, "dependencies": { - "debug": "^4.1.1" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", - "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/protocol-http": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", + "peer": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=16.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", + "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "peer": true, + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 8" + "node": ">=16.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/signature-v4": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", + "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", + "peer": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=16.0.0" } }, - "node_modules/@serverless/dashboard-plugin": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-6.2.3.tgz", - "integrity": "sha512-iTZhpZbiVl6G2AyfgoqxemqqpG4pUceWys3GsyZtjimnfnGd2UFBOMVUMTavLhYia7lQc4kQVuXQ+afLlkg+pQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", + "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", + "peer": true, "dependencies": { - "@serverless/event-mocks": "^1.1.1", - "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.8.2", - "child-process-ext": "^2.1.1", - "chokidar": "^3.5.3", - "flat": "^5.0.2", - "fs-extra": "^9.1.0", - "js-yaml": "^4.1.0", - "jszip": "^3.10.1", - "lodash": "^4.17.21", - "memoizee": "^0.4.15", - "ncjsm": "^4.3.2", - "node-dir": "^0.1.17", - "node-fetch": "^2.6.8", - "open": "^7.4.2", - "semver": "^7.3.8", - "simple-git": "^3.16.0", - "type": "^2.7.2", - "uuid": "^8.3.2", - "yamljs": "^0.3.0" + "@smithy/middleware-endpoint": "^3.0.0", + "@smithy/middleware-stack": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-stream": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0" + "node": ">=16.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@serverless/dashboard-plugin/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "argparse": "^2.0.1" + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/url-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", + "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", + "peer": true, "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@smithy/querystring-parser": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "peer": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=16.0.0" } }, - "node_modules/@serverless/event-mocks": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@serverless/event-mocks/-/event-mocks-1.1.1.tgz", - "integrity": "sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "peer": true, "dependencies": { - "@types/lodash": "^4.14.123", - "lodash": "^4.17.11" + "tslib": "^2.6.2" } }, - "node_modules/@serverless/platform-client": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@serverless/platform-client/-/platform-client-4.5.1.tgz", - "integrity": "sha512-XltmO/029X76zi0LUFmhsnanhE2wnqH1xf+WBt5K8gumQA9LnrfwLgPxj+VA+mm6wQhy+PCp7H5SS0ZPu7F2Cw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "peer": true, "dependencies": { - "adm-zip": "^0.5.5", - "archiver": "^5.3.0", - "axios": "^1.6.2", - "fast-glob": "^3.2.7", - "https-proxy-agent": "^5.0.0", - "ignore": "^5.1.8", - "isomorphic-ws": "^4.0.1", - "js-yaml": "^3.14.1", - "jwt-decode": "^2.2.0", - "minimatch": "^3.0.4", - "querystring": "^0.2.1", - "run-parallel-limit": "^1.1.0", - "throat": "^5.0.0", - "traverse": "^0.6.6", - "ws": "^7.5.3" + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" + "node": ">=16.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", + "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", + "peer": true, + "dependencies": { + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.4.x" + "node": ">= 10.0.0" } }, - "node_modules/@serverless/utils": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.15.0.tgz", - "integrity": "sha512-7eDbqKv/OBd11jjdZjUwFGN8sHWkeUqLeHXHQxQ1azja2IM7WIH+z/aLgzR6LhB3/MINNwtjesDpjGqTMj2JKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", + "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "peer": true, "dependencies": { - "archive-type": "^4.0.0", - "chalk": "^4.1.2", - "ci-info": "^3.8.0", - "cli-progress-footer": "^2.3.2", - "content-disposition": "^0.5.4", - "d": "^1.0.1", - "decompress": "^4.2.1", - "event-emitter": "^0.3.5", - "ext": "^1.7.0", - "ext-name": "^5.0.0", - "file-type": "^16.5.4", - "filenamify": "^4.3.0", - "get-stream": "^6.0.1", - "got": "^11.8.6", - "inquirer": "^8.2.5", - "js-yaml": "^4.1.0", - "jwt-decode": "^3.1.2", - "lodash": "^4.17.21", - "log": "^6.3.1", - "log-node": "^8.0.3", - "make-dir": "^4.0.0", - "memoizee": "^0.4.15", - "ms": "^2.1.3", - "ncjsm": "^4.3.2", - "node-fetch": "^2.6.11", - "open": "^8.4.2", - "p-event": "^4.2.0", - "supports-color": "^8.1.1", - "timers-ext": "^0.1.7", - "type": "^2.7.2", - "uni-global": "^1.0.0", - "uuid": "^8.3.2", - "write-file-atomic": "^4.0.2" + "@smithy/config-resolver": "^3.0.0", + "@smithy/credential-provider-imds": "^3.0.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/smithy-client": "^3.0.1", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0" + "node": ">= 10.0.0" } }, - "node_modules/@serverless/utils/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-endpoints": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", + "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", + "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "@smithy/node-config-provider": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@serverless/utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-middleware": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", + "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-retry": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", + "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/service-error-classification": "^3.0.0", + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "peer": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { + "version": "3.556.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", + "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", "dependencies": { - "color-name": "~1.1.4" + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/@serverless/utils/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", + "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=10" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" } }, - "node_modules/@serverless/utils/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", + "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.565.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.565.0", + "@aws-sdk/credential-provider-web-identity": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", + "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", "dependencies": { - "argparse": "^2.0.1" + "@aws-sdk/client-sso": "3.556.0", + "@aws-sdk/token-providers": "3.565.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@serverless/utils/node_modules/jwt-decode": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", - "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", - "dev": true - }, - "node_modules/@serverless/utils/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", + "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", "dependencies": { - "semver": "^7.5.3" + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@aws-sdk/client-sts": "^3.565.0" } }, - "node_modules/@serverless/utils/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "node_modules/@serverless/utils/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { + "version": "3.565.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", + "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.565.0" } }, - "node_modules/@serverless/utils/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", + "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/abort-controller/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "tslib": "^2.6.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=16.0.0" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "peer": true, "dependencies": { - "type-detect": "4.0.8" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-builder": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", + "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", + "peer": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@smithy/types": "^3.0.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@sinonjs/formatio": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-3.2.2.tgz", - "integrity": "sha512-B8SEsgd8gArBLMD6zpRw3juQ2FVSsmdd7qlevyDqzS9WTCtvF55/gAL+h6gue8ZvPYcdiPdvueM/qm//9XzyTQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-builder/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "@sinonjs/commons": "^1", - "@sinonjs/samsam": "^3.1.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@sinonjs/samsam": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-3.3.3.tgz", - "integrity": "sha512-bKCMKZvWIjYD0BLGnNrxVuw4dkWCYsLqFOUWw8VgKF/+5Y+mE7LfHWPIYoDXowH+3a9LsWDMo0uAP8YDosPvHQ==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", + "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", + "peer": true, "dependencies": { - "@sinonjs/commons": "^1.3.0", - "array-from": "^2.1.1", - "lodash": "^4.17.15" + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true - }, - "node_modules/@smithy/abort-controller": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", - "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-parser/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/config-resolver": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", - "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/service-error-classification": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", + "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", + "peer": true, "dependencies": { - "@smithy/node-config-provider": "^2.3.0", - "@smithy/types": "^2.12.0", - "@smithy/util-config-provider": "^2.3.0", - "@smithy/util-middleware": "^2.2.0", - "tslib": "^2.6.2" + "@smithy/types": "^3.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/core": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", - "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/service-error-classification/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/core/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", - "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "peer": true, "dependencies": { - "@smithy/node-config-provider": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/eventstream-codec": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz", - "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "peer": true, "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.12.0", - "@smithy/util-hex-encoding": "^2.2.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.2.0.tgz", - "integrity": "sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "peer": true, "dependencies": { - "@smithy/eventstream-serde-universal": "^2.2.0", - "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.2.0.tgz", - "integrity": "sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", + "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", + "peer": true, "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/fetch-http-handler": "^3.0.1", + "@smithy/node-http-handler": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/fetch-http-handler": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", + "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "peer": true, + "dependencies": { + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.2.0.tgz", - "integrity": "sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/node-http-handler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", + "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "peer": true, "dependencies": { - "@smithy/eventstream-serde-universal": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/abort-controller": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/querystring-builder": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.2.0.tgz", - "integrity": "sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==", - "dev": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/protocol-http": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", + "peer": true, "dependencies": { - "@smithy/eventstream-codec": "^2.2.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", - "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "peer": true, "dependencies": { - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/util-base64": "^2.3.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/hash-node": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", - "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "peer": true, "dependencies": { - "@smithy/types": "^2.12.0", - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/invalid-dependency": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", - "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "peer": true, "dependencies": { - "@smithy/types": "^2.12.0", + "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "peer": true, "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/is-array-buffer/node_modules/tslib": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/middleware-content-length": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", - "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "node_modules/@aws-sdk/client-sso": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.554.0.tgz", + "integrity": "sha512-yj6CgIxCT3UwMumEO481KH4QvwArkAPzD7Xvwe1QKgJATc9bKNEo/FxV8LfnWIJ7nOtMDxbNxYLMXH/Fs1qGaQ==", + "dev": true, "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", - "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.554.0.tgz", + "integrity": "sha512-M86rkiRqbZBF5VyfTQ/vttry9VSoQkZ1oCqYF+SAGlXmD0Of8587yRSj2M4rYe0Uj7nRQIfSnhDYp1UzsZeRfQ==", + "dev": true, "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", "@smithy/node-config-provider": "^2.3.0", - "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.554.0" } }, - "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { + "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/middleware-retry": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", - "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", + "node_modules/@aws-sdk/client-sso/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.554.0.tgz", + "integrity": "sha512-EhaA6T0M0DNg5M8TCF1a7XJI5D/ZxAF3dgVIchyF98iNzjYgl/7U8K6hJay2A11aFvVu70g46xYMpz3Meky4wQ==", + "dev": true, "dependencies": { + "@aws-crypto/sha256-browser": "3.0.0", + "@aws-crypto/sha256-js": "3.0.0", + "@aws-sdk/core": "3.554.0", + "@aws-sdk/middleware-host-header": "3.535.0", + "@aws-sdk/middleware-logger": "3.535.0", + "@aws-sdk/middleware-recursion-detection": "3.535.0", + "@aws-sdk/middleware-user-agent": "3.540.0", + "@aws-sdk/region-config-resolver": "3.535.0", + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@aws-sdk/util-user-agent-browser": "3.535.0", + "@aws-sdk/util-user-agent-node": "3.535.0", + "@smithy/config-resolver": "^2.2.0", + "@smithy/core": "^1.4.2", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/hash-node": "^2.2.0", + "@smithy/invalid-dependency": "^2.2.0", + "@smithy/middleware-content-length": "^2.2.0", + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/middleware-stack": "^2.2.0", "@smithy/node-config-provider": "^2.3.0", + "@smithy/node-http-handler": "^2.5.0", "@smithy/protocol-http": "^3.3.0", - "@smithy/service-error-classification": "^2.1.5", "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-body-length-browser": "^2.2.0", + "@smithy/util-body-length-node": "^2.3.0", + "@smithy/util-defaults-mode-browser": "^2.2.1", + "@smithy/util-defaults-mode-node": "^2.3.1", + "@smithy/util-endpoints": "^1.2.0", "@smithy/util-middleware": "^2.2.0", "@smithy/util-retry": "^2.2.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "@aws-sdk/credential-provider-node": "^3.554.0" } }, - "node_modules/@smithy/middleware-retry/node_modules/tslib": { + "node_modules/@aws-sdk/client-sts/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/middleware-serde": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", - "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", + "node_modules/@aws-sdk/core": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.554.0.tgz", + "integrity": "sha512-JrG7ToTLeNf+/S3IiCUPVw9jEDB0DXl5ho8n/HwOa946mv+QyCepCuV2U/8f/1KAX0mD8Ufm/E4/cbCbFHgbSg==", + "dev": true, "dependencies": { + "@smithy/core": "^1.4.2", + "@smithy/protocol-http": "^3.3.0", + "@smithy/signature-v4": "^2.2.1", + "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", + "fast-xml-parser": "4.2.5", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-serde/node_modules/tslib": { + "node_modules/@aws-sdk/core/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/middleware-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", - "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", + "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, @@ -5217,38 +5676,50 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/middleware-stack/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/node-config-provider": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", - "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.552.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", + "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/node-http-handler": "^2.5.0", "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", + "@smithy/util-stream": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/node-config-provider/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/node-http-handler": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", - "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.554.0.tgz", + "integrity": "sha512-BQenhg43S6TMJHxrdjDVdVF+HH5tA1op9ZYLyJrvV5nn7CCO4kyAkkOuSAv1NkL+RZsIkW0/vHTXwQOQw3cUsg==", + "dev": true, "dependencies": { - "@smithy/abort-controller": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/querystring-builder": "^2.2.0", + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.554.0", + "@aws-sdk/credential-provider-web-identity": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, @@ -5256,16 +5727,28 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/node-http-handler/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/property-provider": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", - "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.554.0.tgz", + "integrity": "sha512-poX/+2OE3oxqp4f5MiaJh251p8l+bzcFwgcDBwz0e2rcpvMSYl9jw4AvGnCiG2bmf9yhNJdftBiS1A+KjxV0qA==", + "dev": true, "dependencies": { + "@aws-sdk/credential-provider-env": "3.535.0", + "@aws-sdk/credential-provider-http": "3.552.0", + "@aws-sdk/credential-provider-ini": "3.554.0", + "@aws-sdk/credential-provider-process": "3.535.0", + "@aws-sdk/credential-provider-sso": "3.554.0", + "@aws-sdk/credential-provider-web-identity": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, @@ -5273,16 +5756,20 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/property-provider/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/protocol-http": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", - "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", + "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, @@ -5290,34 +5777,44 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/protocol-http/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/querystring-builder": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", - "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.554.0.tgz", + "integrity": "sha512-8QPpwBA31i/fZ7lDZJC4FA9EdxLg5SJ8sPB2qLSjp5UTGTYL2HRl0Eznkb7DXyp/wImsR/HFR1NxuFCCVotLCg==", + "dev": true, "dependencies": { + "@aws-sdk/client-sso": "3.554.0", + "@aws-sdk/token-providers": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", "@smithy/types": "^2.12.0", - "@smithy/util-uri-escape": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/querystring-builder/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/querystring-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", - "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.554.0.tgz", + "integrity": "sha512-HN54DzLjepw5ZWSF9ycGevhFTyg6pjLuLKy5Y8t/f1jFDComzYdGEDe0cdV9YO653W3+PQwZZGz09YVygGYBLg==", + "dev": true, "dependencies": { + "@aws-sdk/client-sts": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, @@ -5325,257 +5822,302 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/querystring-parser/node_modules/tslib": { + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/service-error-classification": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", - "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", - "dependencies": { - "@smithy/types": "^2.12.0" - }, - "engines": { - "node": ">=14.0.0" - } + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", - "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", + "node_modules/@aws-sdk/endpoint-cache": { + "version": "3.572.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/endpoint-cache/-/endpoint-cache-3.572.0.tgz", + "integrity": "sha512-CzuRWMj/xtN9p9eP915nlPmlyniTzke732Ow/M60++gGgB3W+RtZyFftw3TEx+NzNhd1tH54dEcGiWdiNaBz3Q==", "dependencies": { - "@smithy/types": "^2.12.0", + "mnemonist": "0.38.3", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { + "node_modules/@aws-sdk/endpoint-cache/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/signature-v4": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", - "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "@smithy/types": "^2.12.0", - "@smithy/util-hex-encoding": "^2.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-uri-escape": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "node_modules/@aws-sdk/middleware-endpoint-discovery": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.577.0.tgz", + "integrity": "sha512-duLI1awiBV7xyi+SQQnFy0J2s9Fhk5miHR5LsyEpk4p4M1Zi9hbBMg3wOdoxGCnNGn56PcP70isD79BfrbWwlA==", + "dependencies": { + "@aws-sdk/endpoint-cache": "3.572.0", + "@aws-sdk/types": "3.577.0", + "@smithy/node-config-provider": "^3.0.0", + "@smithy/protocol-http": "^4.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@aws-sdk/types": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", + "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@smithy/smithy-client": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", - "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/node-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", + "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", "dependencies": { - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/types": "^2.12.0", - "@smithy/util-stream": "^2.2.0", + "@smithy/property-provider": "^3.0.0", + "@smithy/shared-ini-file-loader": "^3.0.0", + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/property-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", + "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } }, - "node_modules/@smithy/types": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", - "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/protocol-http": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", + "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", "dependencies": { + "@smithy/types": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/types/node_modules/tslib": { + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", + "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "dependencies": { + "@smithy/types": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/types": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", + "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/url-parser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", - "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", + "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", "dependencies": { - "@smithy/querystring-parser": "^2.2.0", + "@aws-sdk/types": "3.535.0", + "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@smithy/url-parser/node_modules/tslib": { + "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-base64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", - "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", + "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-sdk/types": "3.535.0", + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/util-base64/node_modules/tslib": { + "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-body-length-browser": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", - "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", + "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-body-length-node": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", - "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.540.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", + "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", "dependencies": { + "@aws-sdk/types": "3.535.0", + "@aws-sdk/util-endpoints": "3.540.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/util-body-length-node/node_modules/tslib": { + "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", + "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", + "@aws-sdk/types": "3.535.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-config-provider": "^2.3.0", + "@smithy/util-middleware": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/util-buffer-from/node_modules/tslib": { + "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-config-provider": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", - "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", + "node_modules/@aws-sdk/token-providers": { + "version": "3.554.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.554.0.tgz", + "integrity": "sha512-KMMQ5Cw0FUPL9H8g69Lp08xtzRo7r/MK+lBV6LznWBbCP/NwtZ8awVHaPy2P31z00cWtu9MYkUTviWPqJTaBvg==", + "dev": true, "dependencies": { + "@aws-sdk/client-sso-oidc": "3.554.0", + "@aws-sdk/types": "3.535.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@smithy/util-config-provider/node_modules/tslib": { + "node_modules/@aws-sdk/token-providers/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", - "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", + "node_modules/@aws-sdk/types": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.535.0.tgz", + "integrity": "sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg==", "dependencies": { - "@smithy/property-provider": "^2.2.0", - "@smithy/smithy-client": "^2.5.1", "@smithy/types": "^2.12.0", - "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { + "node_modules/@aws-sdk/types/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", - "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", + "node_modules/@aws-sdk/util-dynamodb": { + "version": "3.577.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-dynamodb/-/util-dynamodb-3.577.0.tgz", + "integrity": "sha512-GGzUZ1saDcP052jFpZ6HfukMwBM2Jtxq1H0fzfWV1YPLikjNJaXt8j/Eng2cNNH0RUdTkPGVAF+mlHjNirosKA==", "dependencies": { - "@smithy/config-resolver": "^2.2.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-dynamodb": "^3.577.0" } }, - "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { + "node_modules/@aws-sdk/util-dynamodb/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-endpoints": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", - "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.540.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", + "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", "dependencies": { - "@smithy/node-config-provider": "^2.3.0", + "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", + "@smithy/util-endpoints": "^1.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=14.0.0" } }, - "node_modules/@smithy/util-endpoints/node_modules/tslib": { + "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-hex-encoding": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", - "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz", + "integrity": "sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA==", "dependencies": { "tslib": "^2.6.2" }, @@ -5583,4984 +6125,8488 @@ "node": ">=14.0.0" } }, - "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { + "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-middleware": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", - "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", + "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", + "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/types": "^2.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.535.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", + "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", "dependencies": { + "@aws-sdk/types": "3.535.0", + "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@smithy/util-middleware/node_modules/tslib": { + "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@smithy/util-retry": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", - "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", "dependencies": { - "@smithy/service-error-classification": "^2.1.5", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", + "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.24.5", + "@babel/helpers": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", + "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", + "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.24.3", + "@babel/helper-simple-access": "^7.24.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/helper-validator-identifier": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", + "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", + "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", + "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", + "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", + "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.5", + "@babel/types": "^7.24.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", + "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "dev": true, + "peer": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", + "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.24.5", + "@babel/parser": "^7.24.5", + "@babel/types": "^7.24.5", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", + "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.1", + "@babel/helper-validator-identifier": "^7.24.5", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "dev": true + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@commitlint/cli": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.3.0.tgz", + "integrity": "sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==", + "dev": true, + "dependencies": { + "@commitlint/format": "^19.3.0", + "@commitlint/lint": "^19.2.2", + "@commitlint/load": "^19.2.0", + "@commitlint/read": "^19.2.1", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/cli/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/cli/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/cli/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/cli/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@commitlint/cli/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.2.2.tgz", + "integrity": "sha512-mLXjsxUVLYEGgzbxbxicGPggDuyWNkf25Ht23owXIH+zV2pv1eJuzLK3t1gDY5Gp6pxdE60jZnWUY5cvgL3ufw==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.0.3.tgz", + "integrity": "sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/ensure": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.0.3.tgz", + "integrity": "sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz", + "integrity": "sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.3.0.tgz", + "integrity": "sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.2.2.tgz", + "integrity": "sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/is-ignored/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.2.2.tgz", + "integrity": "sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==", + "dev": true, + "dependencies": { + "@commitlint/is-ignored": "^19.2.2", + "@commitlint/parse": "^19.0.3", + "@commitlint/rules": "^19.0.3", + "@commitlint/types": "^19.0.3" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.2.0.tgz", + "integrity": "sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/execute-rule": "^19.0.0", + "@commitlint/resolve-extends": "^19.1.0", + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@commitlint/message": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.0.0.tgz", + "integrity": "sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.0.3.tgz", + "integrity": "sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.2.1.tgz", + "integrity": "sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==", + "dev": true, + "dependencies": { + "@commitlint/top-level": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/read/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/read/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/read/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@commitlint/read/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz", + "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/types": "^19.0.3", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.0.3.tgz", + "integrity": "sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==", + "dev": true, + "dependencies": { + "@commitlint/ensure": "^19.0.3", + "@commitlint/message": "^19.0.0", + "@commitlint/to-lines": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@commitlint/rules/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/@commitlint/rules/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/rules/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@commitlint/rules/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.0.0.tgz", + "integrity": "sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.0.0.tgz", + "integrity": "sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==", + "dev": true, + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz", + "integrity": "sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==", + "dev": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@dvsa/eslint-config-ts": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@dvsa/eslint-config-ts/-/eslint-config-ts-3.0.1.tgz", + "integrity": "sha512-kvXp2oD9o8RfvcIrxHH5Dp2cWxZ65D6POslJZ+tnyExPVhWyxFDJjGehkpsJHPawkpp6/SsXtjv9Qe76XbDk9w==", + "dev": true, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": ">=4.33.0", + "@typescript-eslint/typescript-estree": ">=4.33.0", + "eslint": ">=7.32.0", + "eslint-config-airbnb-base": ">=14.2.0", + "eslint-config-airbnb-typescript": ">=12.3.1", + "eslint-plugin-import": ">=2.24.2", + "eslint-plugin-jest": ">=25.2.4", + "eslint-plugin-jsx-a11y": ">=6.4.1", + "eslint-plugin-react": ">=7.26.1", + "eslint-plugin-react-hooks": ">=4.2.0", + "eslint-plugin-security": ">=2.1.0" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "peer": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "peer": true + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@extra-number/significant-digits": { + "version": "1.3.9", + "resolved": "https://registry.npmjs.org/@extra-number/significant-digits/-/significant-digits-1.3.9.tgz", + "integrity": "sha512-E5PY/bCwrNqEHh4QS6AQBinLZ+sxM1lT8tsSVYk8VwhWIPp6fCU/BMRVq0V8iJ8LwS3FHmaA4vUzb78s4BIIyA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true + }, + "node_modules/@hapi/accept": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@hapi/accept/-/accept-6.0.3.tgz", + "integrity": "sha512-p72f9k56EuF0n3MwlBNThyVE5PXX40g+aQh+C/xbKrfzahM2Oispv3AXmOIU51t3j77zay1qrX7IIziZXspMlw==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/ammo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/ammo/-/ammo-6.0.1.tgz", + "integrity": "sha512-pmL+nPod4g58kXrMcsGLp05O2jF4P2Q3GiL8qYV7nKYEh3cGf+rV4P5Jyi2Uq0agGhVU63GtaSAfBEZOlrJn9w==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/b64": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/b64/-/b64-6.0.1.tgz", + "integrity": "sha512-ZvjX4JQReUmBheeCq+S9YavcnMMHWqx3S0jHNXWIM1kQDxB9cyfSycpVvjfrKcIS8Mh5N3hmu/YKo4Iag9g2Kw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/boom": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@hapi/boom/-/boom-10.0.1.tgz", + "integrity": "sha512-ERcCZaEjdH3OgSJlyjVk8pHIFeus91CjKP3v+MpgBNp5IvGzP2l/bRiD78nqYcKPaZdbKkK5vDBVPd2ohHBlsA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bounce": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@hapi/bounce/-/bounce-3.0.1.tgz", + "integrity": "sha512-G+/Pp9c1Ha4FDP+3Sy/Xwg2O4Ahaw3lIZFSX+BL4uWi64CmiETuZPxhKDUD4xBMOUZbBlzvO8HjiK8ePnhBadA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/bourne": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-3.0.0.tgz", + "integrity": "sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w==", + "dev": true + }, + "node_modules/@hapi/call": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@hapi/call/-/call-9.0.1.tgz", + "integrity": "sha512-uPojQRqEL1GRZR4xXPqcLMujQGaEpyVPRyBlD8Pp5rqgIwLhtveF9PkixiKru2THXvuN8mUrLeet5fqxKAAMGg==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/catbox": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox/-/catbox-12.1.1.tgz", + "integrity": "sha512-hDqYB1J+R0HtZg4iPH3LEnldoaBsar6bYp0EonBmNQ9t5CO+1CqgCul2ZtFveW1ReA5SQuze9GPSU7/aecERhw==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/podium": "^5.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/catbox-memory": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/catbox-memory/-/catbox-memory-6.0.1.tgz", + "integrity": "sha512-sVb+/ZxbZIvaMtJfAbdyY+QJUQg9oKTwamXpEg/5xnfG5WbJLTjvEn4kIGKz9pN3ENNbIL/bIdctmHmqi/AdGA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/content": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/content/-/content-6.0.0.tgz", + "integrity": "sha512-CEhs7j+H0iQffKfe5Htdak5LBOz/Qc8TRh51cF+BFv0qnuph3Em4pjGVzJMkI2gfTDdlJKWJISGWS1rK34POGA==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.0" + } + }, + "node_modules/@hapi/cryptiles": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/cryptiles/-/cryptiles-6.0.1.tgz", + "integrity": "sha512-9GM9ECEHfR8lk5ASOKG4+4ZsEzFqLfhiryIJ2ISePVB92OHLp/yne4m+zn7z9dgvM98TLpiFebjDFQ0UHcqxXQ==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/file": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@hapi/file/-/file-3.0.0.tgz", + "integrity": "sha512-w+lKW+yRrLhJu620jT3y+5g2mHqnKfepreykvdOcl9/6up8GrQQn+l3FRTsjHTKbkbfQFkuksHpdv2EcpKcJ4Q==", + "dev": true + }, + "node_modules/@hapi/h2o2": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@hapi/h2o2/-/h2o2-10.0.4.tgz", + "integrity": "sha512-dvD8+Y/Okc0fh0blqaYCLIrcy0+1LqIhMr7hjk8elLQZ9mkw2hKFB9dFKuRfWf+1nvHpGlW+PwccqkdebynQbg==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1", + "@hapi/wreck": "^18.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/hapi": { + "version": "21.3.9", + "resolved": "https://registry.npmjs.org/@hapi/hapi/-/hapi-21.3.9.tgz", + "integrity": "sha512-AT5m+Rb8iSOFG3zWaiEuTJazf4HDYl5UpRpyxMJ3yR+g8tOEmqDv6FmXrLHShdvDOStAAepHGnr1G7egkFSRdw==", + "dev": true, + "dependencies": { + "@hapi/accept": "^6.0.1", + "@hapi/ammo": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/call": "^9.0.1", + "@hapi/catbox": "^12.1.1", + "@hapi/catbox-memory": "^6.0.1", + "@hapi/heavy": "^8.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/mimos": "^7.0.1", + "@hapi/podium": "^5.0.1", + "@hapi/shot": "^6.0.1", + "@hapi/somever": "^4.1.1", + "@hapi/statehood": "^8.1.1", + "@hapi/subtext": "^8.1.0", + "@hapi/teamwork": "^6.0.0", + "@hapi/topo": "^6.0.1", + "@hapi/validate": "^2.0.1" + }, + "engines": { + "node": ">=14.15.0" + } + }, + "node_modules/@hapi/heavy": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@hapi/heavy/-/heavy-8.0.1.tgz", + "integrity": "sha512-gBD/NANosNCOp6RsYTsjo2vhr5eYA3BEuogk6cxY0QdhllkkTaJFYtTXv46xd6qhBVMbMMqcSdtqey+UQU3//w==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/hoek": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.4.tgz", + "integrity": "sha512-PnsP5d4q7289pS2T2EgGz147BFJ2Jpb4yrEdkpz2IhgEUzos1S7HTl7ezWh1yfYzYlj89KzLdCRkqsP6SIryeQ==", + "dev": true + }, + "node_modules/@hapi/iron": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/iron/-/iron-7.0.1.tgz", + "integrity": "sha512-tEZnrOujKpS6jLKliyWBl3A9PaE+ppuL/+gkbyPPDb/l2KSKQyH4lhMkVb+sBhwN+qaxxlig01JRqB8dk/mPxQ==", + "dev": true, + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/mimos": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@hapi/mimos/-/mimos-7.0.1.tgz", + "integrity": "sha512-b79V+BrG0gJ9zcRx1VGcCI6r6GEzzZUgiGEJVoq5gwzuB2Ig9Cax8dUuBauQCFKvl2YWSWyOc8mZ8HDaJOtkew==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "mime-db": "^1.52.0" + } + }, + "node_modules/@hapi/mimos/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@hapi/nigel": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/nigel/-/nigel-5.0.1.tgz", + "integrity": "sha512-uv3dtYuB4IsNaha+tigWmN8mQw/O9Qzl5U26Gm4ZcJVtDdB1AVJOwX3X5wOX+A07qzpEZnOMBAm8jjSqGsU6Nw==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/vise": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/pez": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@hapi/pez/-/pez-6.1.0.tgz", + "integrity": "sha512-+FE3sFPYuXCpuVeHQ/Qag1b45clR2o54QoonE/gKHv9gukxQ8oJJZPR7o3/ydDTK6racnCJXxOyT1T93FCJMIg==", + "dev": true, + "dependencies": { + "@hapi/b64": "^6.0.1", + "@hapi/boom": "^10.0.1", + "@hapi/content": "^6.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/nigel": "^5.0.1" + } + }, + "node_modules/@hapi/podium": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/podium/-/podium-5.0.1.tgz", + "integrity": "sha512-eznFTw6rdBhAijXFIlBOMJJd+lXTvqbrBIS4Iu80r2KTVIo4g+7fLy4NKp/8+UnSt5Ox6mJtAlKBU/Sf5080TQ==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/teamwork": "^6.0.0", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/shot": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@hapi/shot/-/shot-6.0.1.tgz", + "integrity": "sha512-s5ynMKZXYoDd3dqPw5YTvOR/vjHvMTxc388+0qL0jZZP1+uwXuUD32o9DuuuLsmTlyXCWi02BJl1pBpwRuUrNA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/somever": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@hapi/somever/-/somever-4.1.1.tgz", + "integrity": "sha512-lt3QQiDDOVRatS0ionFDNrDIv4eXz58IibQaZQDOg4DqqdNme8oa0iPWcE0+hkq/KTeBCPtEOjDOBKBKwDumVg==", + "dev": true, + "dependencies": { + "@hapi/bounce": "^3.0.1", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/statehood": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@hapi/statehood/-/statehood-8.1.1.tgz", + "integrity": "sha512-YbK7PSVUA59NArAW5Np0tKRoIZ5VNYUicOk7uJmWZF6XyH5gGL+k62w77SIJb0AoAJ0QdGQMCQ/WOGL1S3Ydow==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bounce": "^3.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/cryptiles": "^6.0.1", + "@hapi/hoek": "^11.0.2", + "@hapi/iron": "^7.0.1", + "@hapi/validate": "^2.0.1" + } + }, + "node_modules/@hapi/subtext": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@hapi/subtext/-/subtext-8.1.0.tgz", + "integrity": "sha512-PyaN4oSMtqPjjVxLny1k0iYg4+fwGusIhaom9B2StinBclHs7v46mIW706Y+Wo21lcgulGyXbQrmT/w4dus6ww==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/content": "^6.0.0", + "@hapi/file": "^3.0.0", + "@hapi/hoek": "^11.0.2", + "@hapi/pez": "^6.1.0", + "@hapi/wreck": "^18.0.1" + } + }, + "node_modules/@hapi/teamwork": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@hapi/teamwork/-/teamwork-6.0.0.tgz", + "integrity": "sha512-05HumSy3LWfXpmJ9cr6HzwhAavrHkJ1ZRCmNE2qJMihdM5YcWreWPfyN0yKT2ZjCM92au3ZkuodjBxOibxM67A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@hapi/topo": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-6.0.2.tgz", + "integrity": "sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/validate": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@hapi/validate/-/validate-2.0.1.tgz", + "integrity": "sha512-NZmXRnrSLK8MQ9y/CMqE9WSspgB9xA41/LlYR0k967aSZebWr4yNrpxIbov12ICwKy4APSlWXZga9jN5p6puPA==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2", + "@hapi/topo": "^6.0.1" + } + }, + "node_modules/@hapi/vise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@hapi/vise/-/vise-5.0.1.tgz", + "integrity": "sha512-XZYWzzRtINQLedPYlIkSkUr7m5Ddwlu99V9elh8CSygXstfv3UnWIXT0QD+wmR0VAG34d2Vx3olqcEhRRoTu9A==", + "dev": true, + "dependencies": { + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@hapi/wreck": { + "version": "18.1.0", + "resolved": "https://registry.npmjs.org/@hapi/wreck/-/wreck-18.1.0.tgz", + "integrity": "sha512-0z6ZRCmFEfV/MQqkQomJ7sl/hyxvcZM7LtuVqN3vdAO4vM9eBbowl0kaqQj9EJJQab+3Uuh1GxbGIBFy4NfJ4w==", + "dev": true, + "dependencies": { + "@hapi/boom": "^10.0.1", + "@hapi/bourne": "^3.0.0", + "@hapi/hoek": "^11.0.2" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "dev": true, + "peer": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true, + "peer": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types/node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz", + "integrity": "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@serverless/dashboard-plugin": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/@serverless/dashboard-plugin/-/dashboard-plugin-7.2.3.tgz", + "integrity": "sha512-Vu4TKJLEQ5F8ZipfCvd8A/LMIdH8kNGe448sX9mT4/Z0JVUaYmMc3BwkQ+zkNIh3QdBKAhocGn45TYjHV6uPWQ==", + "dev": true, + "dependencies": { + "@aws-sdk/client-cloudformation": "^3.410.0", + "@aws-sdk/client-sts": "^3.410.0", + "@serverless/event-mocks": "^1.1.1", + "@serverless/platform-client": "^4.5.1", + "@serverless/utils": "^6.14.0", + "child-process-ext": "^3.0.1", + "chokidar": "^3.5.3", + "flat": "^5.0.2", + "fs-extra": "^9.1.0", + "js-yaml": "^4.1.0", + "jszip": "^3.10.1", + "lodash": "^4.17.21", + "memoizee": "^0.4.15", + "ncjsm": "^4.3.2", + "node-dir": "^0.1.17", + "node-fetch": "^2.6.8", + "open": "^7.4.2", + "semver": "^7.3.8", + "simple-git": "^3.16.0", + "timers-ext": "^0.1.7", + "type": "^2.7.2", + "uuid": "^8.3.2", + "yamljs": "^0.3.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@serverless/dashboard-plugin/node_modules/child-process-ext": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-3.0.2.tgz", + "integrity": "sha512-oBePsLbQpTJFxzwyCvs9yWWF0OEM6vGGepHwt1stqmX7QQqOuDc8j2ywdvAs9Tvi44TT7d9ackqhR4Q10l1u8w==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "es5-ext": "^0.10.62", + "log": "^6.3.1", + "split2": "^3.2.2", + "stream-promise": "^3.2.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/open": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", + "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@serverless/event-mocks": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@serverless/event-mocks/-/event-mocks-1.1.1.tgz", + "integrity": "sha512-YAV5V/y+XIOfd+HEVeXfPWZb8C6QLruFk9tBivoX2roQLWVq145s4uxf8D0QioCueuRzkukHUS4JIj+KVoS34A==", + "dev": true, + "dependencies": { + "@types/lodash": "^4.14.123", + "lodash": "^4.17.11" + } + }, + "node_modules/@serverless/platform-client": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/@serverless/platform-client/-/platform-client-4.5.1.tgz", + "integrity": "sha512-XltmO/029X76zi0LUFmhsnanhE2wnqH1xf+WBt5K8gumQA9LnrfwLgPxj+VA+mm6wQhy+PCp7H5SS0ZPu7F2Cw==", + "dev": true, + "dependencies": { + "adm-zip": "^0.5.5", + "archiver": "^5.3.0", + "axios": "^1.6.2", + "fast-glob": "^3.2.7", + "https-proxy-agent": "^5.0.0", + "ignore": "^5.1.8", + "isomorphic-ws": "^4.0.1", + "js-yaml": "^3.14.1", + "jwt-decode": "^2.2.0", + "minimatch": "^3.0.4", + "querystring": "^0.2.1", + "run-parallel-limit": "^1.1.0", + "throat": "^5.0.0", + "traverse": "^0.6.6", + "ws": "^7.5.3" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@serverless/platform-client/node_modules/querystring": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", + "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/@serverless/utils": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/@serverless/utils/-/utils-6.15.0.tgz", + "integrity": "sha512-7eDbqKv/OBd11jjdZjUwFGN8sHWkeUqLeHXHQxQ1azja2IM7WIH+z/aLgzR6LhB3/MINNwtjesDpjGqTMj2JKQ==", + "dev": true, + "dependencies": { + "archive-type": "^4.0.0", + "chalk": "^4.1.2", + "ci-info": "^3.8.0", + "cli-progress-footer": "^2.3.2", + "content-disposition": "^0.5.4", + "d": "^1.0.1", + "decompress": "^4.2.1", + "event-emitter": "^0.3.5", + "ext": "^1.7.0", + "ext-name": "^5.0.0", + "file-type": "^16.5.4", + "filenamify": "^4.3.0", + "get-stream": "^6.0.1", + "got": "^11.8.6", + "inquirer": "^8.2.5", + "js-yaml": "^4.1.0", + "jwt-decode": "^3.1.2", + "lodash": "^4.17.21", + "log": "^6.3.1", + "log-node": "^8.0.3", + "make-dir": "^4.0.0", + "memoizee": "^0.4.15", + "ms": "^2.1.3", + "ncjsm": "^4.3.2", + "node-fetch": "^2.6.11", + "open": "^8.4.2", + "p-event": "^4.2.0", + "supports-color": "^8.1.1", + "timers-ext": "^0.1.7", + "type": "^2.7.2", + "uni-global": "^1.0.0", + "uuid": "^8.3.2", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=12.0" } }, - "node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/util-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", - "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", + "node_modules/@serverless/utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/types": "^2.12.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-buffer-from": "^2.2.0", - "@smithy/util-hex-encoding": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", - "tslib": "^2.6.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "node_modules/@serverless/utils/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/@smithy/util-uri-escape": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", - "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "node_modules/@serverless/utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "tslib": "^2.6.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "node_modules/@serverless/utils/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, - "node_modules/@smithy/util-utf8/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/@smithy/util-waiter": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.2.0.tgz", - "integrity": "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==", + "node_modules/@serverless/utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@smithy/abort-controller": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=14.0.0" + "node": ">=7.0.0" } }, - "node_modules/@smithy/util-waiter/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "node_modules/@serverless/utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/@serverless/utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" - }, - "node_modules/@types/archiver": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-5.1.0.tgz", - "integrity": "sha512-baFOhanb/hxmcOd1Uey2TfFg43kTSmM6py1Eo7Rjbv/ivcl7PXLhY0QgXGf50Hx/eskGCFqPfhs/7IZLb15C5g==", + "node_modules/@serverless/utils/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "@types/glob": "*" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@types/aws-lambda": { - "version": "8.10.34", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.34.tgz", - "integrity": "sha512-ewsBa0SjQYywUpDwck+4n89T0pXcRtIfIXi0aK/3qIQJNBoGvX7AKqFya9FWKdoG7ZcK3Iarl4QjlJiAW7jgPg==" - }, - "node_modules/@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } + "node_modules/@serverless/utils/node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true }, - "node_modules/@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } + "node_modules/@serverless/utils/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true }, - "node_modules/@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", + "node_modules/@serverless/utils/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@types/babel__traverse": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", - "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", + "node_modules/@serverless/utils/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@types/bluebird": { - "version": "3.5.33", - "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.33.tgz", - "integrity": "sha512-ndEo1xvnYeHxm7I/5sF6tBvnsA4Tdi3zj1keRKRs12SP+2ye2A27NDJ1B6PqkfMbGAcT+mqQVqbZRIrhfOp5PQ==", + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "type-detect": "4.0.8" } }, - "node_modules/@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", - "dev": true - }, - "node_modules/@types/cls-hooked": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.8.tgz", - "integrity": "sha512-tf/7H883gFA6MPlWI15EQtfNZ+oPL0gLKkOlx9UHFrun1fC/FkuyNBpTKq1B5E3T4fbvjId6WifHUdSGsMMuPg==", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, "dependencies": { - "@types/node": "*" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "node_modules/@sinonjs/samsam": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", + "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "dev": true, "dependencies": { - "@types/node": "*" + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" } }, - "node_modules/@types/dockerode": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.2.3.tgz", - "integrity": "sha512-nZRhpSxm3PYianRBcRExcHxDvEzYHUPfGCnRL5Fe4/fSEZbtxrRNJ7okzCans3lXxj2t298EynFHGTnTC2f1Iw==", + "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", "dev": true, "dependencies": { - "@types/node": "*" + "type-detect": "4.0.8" } }, - "node_modules/@types/dockerode/node_modules/@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", "dev": true }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "node_modules/@smithy/abort-controller": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", + "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", - "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } + "node_modules/@smithy/abort-controller/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, + "node_modules/@smithy/config-resolver": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", + "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-config-provider": "^2.3.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/glob/node_modules/@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", - "dev": true + "node_modules/@smithy/config-resolver/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, + "node_modules/@smithy/core": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", + "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", "dependencies": { - "@types/node": "*" + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-retry": "^2.3.1", + "@smithy/middleware-serde": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true + "node_modules/@smithy/core/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + "node_modules/@smithy/credential-provider-imds": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", + "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", + "dependencies": { + "@smithy/node-config-provider": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true + "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "node_modules/@smithy/eventstream-codec": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.2.0.tgz", + "integrity": "sha512-8janZoJw85nJmQZc4L8TuePp2pk1nxLgkxIR0TUjKJ5Dkj5oelB9WtiSSGXCQvNsJl0VSTvK/2ueMXxvpa9GVw==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "*" + "@aws-crypto/crc32": "3.0.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "tslib": "^2.6.2" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "node_modules/@smithy/eventstream-codec/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.2.0.tgz", + "integrity": "sha512-UaPf8jKbcP71BGiO0CdeLmlg+RhWnlN8ipsMSdwvqBFigl5nil3rHOI/5GE3tfiuX8LvY5Z9N0meuU7Rab7jWw==", "dev": true, "dependencies": { - "@types/istanbul-lib-report": "*" + "@smithy/eventstream-serde-universal": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/jest": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.0.tgz", - "integrity": "sha512-/yeMsH9HQ1RLORlXAwoLXe8S98xxvhNtUz3yrgrwbaxYjT+6SFPZZRksmRKRA6L5vsUtSHeN71viDOTTyYAD+g==", + "node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.2.0.tgz", + "integrity": "sha512-RHhbTw/JW3+r8QQH7PrganjNCiuiEZmpi6fYUAetFfPLfZ6EkiA08uN3EFfcyKubXQxOwTeJRZSQmDDCdUshaA==", "dev": true, "dependencies": { - "jest-diff": "^25.2.1", - "pretty-format": "^25.2.1" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/jest-plugin-context": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/@types/jest-plugin-context/-/jest-plugin-context-2.9.2.tgz", - "integrity": "sha512-r8bN9AFdaoaKl1x1IVGC2nsek8KJpQB4FUZjPBSfs6vyHhmdylgJ9qBCydCyRaqmWPB9/5tm4ypl8qvYdWnr1w==", + "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.2.0.tgz", + "integrity": "sha512-zpQMtJVqCUMn+pCSFcl9K/RPNtQE0NuMh8sKpCdEHafhwRsjP50Oq/4kMmvxSRy6d8Jslqd8BLvDngrUtmN9iA==", "dev": true, "dependencies": { - "@types/jest": "*" + "@smithy/eventstream-serde-universal": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/@jest/types": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-25.5.0.tgz", - "integrity": "sha512-OXD0RgQ86Tu3MazKo8bnrkDRaDXXMGUqd+kTtLtK1Zb7CRzQcaSRPPPV37SvYTdevXEBVxe0HXylEjs8ibkmCw==", + "node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.2.0.tgz", + "integrity": "sha512-pvoe/vvJY0mOpuF84BEtyZoYfbehiFj8KKWk1ds2AT0mTLYFVs+7sBJZmioOFdBXKd48lfrx1vumdPdmGlCLxA==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^1.1.1", - "@types/yargs": "^15.0.0", - "chalk": "^3.0.0" + "@smithy/eventstream-codec": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8.3" + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/@types/istanbul-reports": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", - "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", - "dev": true, + "node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", + "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", "dependencies": { - "@types/istanbul-lib-coverage": "*", - "@types/istanbul-lib-report": "*" + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "tslib": "^2.6.2" } }, - "node_modules/@types/jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, + "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/hash-node": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", + "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", "dependencies": { - "color-convert": "^2.0.1" + "@smithy/types": "^2.12.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, + "node_modules/@smithy/hash-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/invalid-dependency": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", + "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/@types/jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, + "node_modules/@smithy/invalid-dependency/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dependencies": { - "color-name": "~1.1.4" + "tslib": "^2.6.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/@smithy/is-array-buffer/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/jest/node_modules/diff-sequences": { - "version": "25.2.6", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-25.2.6.tgz", - "integrity": "sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg==", - "dev": true, + "node_modules/@smithy/middleware-content-length": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", + "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "dependencies": { + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 8.3" + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/@smithy/middleware-content-length/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/jest/node_modules/jest-diff": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-25.5.0.tgz", - "integrity": "sha512-z1kygetuPiREYdNIumRpAHY6RXiGmp70YHptjdaxTWGmA085W3iCnXNx0DhflK3vwrKmrRWyY1wUpkPMVxMK7A==", - "dev": true, + "node_modules/@smithy/middleware-endpoint": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", + "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", "dependencies": { - "chalk": "^3.0.0", - "diff-sequences": "^25.2.6", - "jest-get-type": "^25.2.6", - "pretty-format": "^25.5.0" + "@smithy/middleware-serde": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "@smithy/url-parser": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8.3" + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/jest-get-type": { - "version": "25.2.6", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-25.2.6.tgz", - "integrity": "sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig==", - "dev": true, - "engines": { - "node": ">= 8.3" - } + "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/jest/node_modules/pretty-format": { - "version": "25.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-25.5.0.tgz", - "integrity": "sha512-kbo/kq2LQ/A/is0PQwsEHM7Ca6//bGPPvU6UnsdDRSKTWxT/ru/xb88v4BJf6a69H+uTytOEsTusT9ksd/1iWQ==", - "dev": true, + "node_modules/@smithy/middleware-retry": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", + "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", "dependencies": { - "@jest/types": "^25.5.0", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^16.12.0" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/service-error-classification": "^2.1.5", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-retry": "^2.2.0", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">= 8.3" + "node": ">=14.0.0" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "node_modules/@smithy/middleware-retry/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/@smithy/middleware-serde": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", + "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", "dependencies": { - "has-flag": "^4.0.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/@smithy/middleware-serde/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/lambda-tester": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@types/lambda-tester/-/lambda-tester-3.6.0.tgz", - "integrity": "sha512-gWzruHlQKeOoIyvV9CY71zV0btifW2I1sxGXHuDS+Py9jQJG3j6beYrNUzEU5DsU/JDhzV3Cw2q7UHaMYfhbqA==", + "node_modules/@smithy/middleware-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", + "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", "dependencies": { - "@types/aws-lambda": "*" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/lodash": { - "version": "4.14.196", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.196.tgz", - "integrity": "sha512-22y3o88f4a94mKljsZcanlNWPzO0uBsBdzLAngf2tp533LzZcQzb6+eZPJ+vCTt+bqF2XnvT9gejTLsAcJAJyQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" - }, - "node_modules/@types/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", - "dev": true - }, - "node_modules/@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", - "dev": true + "node_modules/@smithy/middleware-stack/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/mysql": { - "version": "2.15.26", - "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", - "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", + "node_modules/@smithy/node-config-provider": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", + "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", "dependencies": { - "@types/node": "*" + "@smithy/property-provider": "^2.2.0", + "@smithy/shared-ini-file-loader": "^2.4.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/node": { - "version": "12.20.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.7.tgz", - "integrity": "sha512-gWL8VUkg8VRaCAUgG9WmhefMqHmMblxe2rVpMF86nZY/+ZysU+BkAp+3cz03AixWDSSz0ks5WX59yAhv/cDwFA==" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true + "node_modules/@smithy/node-config-provider/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/pg": { - "version": "8.11.5", - "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.5.tgz", - "integrity": "sha512-2xMjVviMxneZHDHX5p5S6tsRRs7TpDHeeK7kTTMe/kAC/mRRNjWHjZg0rkiY+e17jXSZV3zJYDxXV8Cy72/Vuw==", + "node_modules/@smithy/node-http-handler": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", + "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", "dependencies": { - "@types/node": "*", - "pg-protocol": "*", - "pg-types": "^4.0.1" + "@smithy/abort-controller": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/querystring-builder": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/prettier": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz", - "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==", - "dev": true - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + "node_modules/@smithy/node-http-handler/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/request": { - "version": "2.48.5", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", - "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", - "dev": true, + "node_modules/@smithy/property-provider": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", + "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", "dependencies": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/request-promise": { - "version": "4.1.44", - "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.44.tgz", - "integrity": "sha512-RId7eFsUKxfal1LirDDIcOp9u3MM3NXFDBcC3sqIMcmu7f4U6DsCEMD8RbLZtnPrQlN5Jc79di/WPsIEDO4keg==", - "dev": true, + "node_modules/@smithy/property-provider/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/protocol-http": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", + "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", "dependencies": { - "@types/bluebird": "*", - "@types/request": "*" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/request/node_modules/form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, + "node_modules/@smithy/protocol-http/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/querystring-builder": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", + "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "@smithy/types": "^2.12.0", + "@smithy/util-uri-escape": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.12" + "node": ">=14.0.0" } }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, + "node_modules/@smithy/querystring-builder/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/querystring-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", + "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", "dependencies": { - "@types/node": "*" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/retry": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", - "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", - "dev": true + "node_modules/@smithy/querystring-parser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "node_modules/@smithy/service-error-classification": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.5.tgz", + "integrity": "sha512-uBDTIBBEdAQryvHdc5W8sS5YX7RQzF683XrHePVdFmAgKiMofU15FLSM0/HU03hKTnazdNRFa0YHS7+ArwoUSQ==", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@smithy/types": "^2.12.0" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", + "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-NyzhuSBy97B/zE58cDw4NyGvByQbAHNP9069KVSgnXt/sc0T6MFRh0InKAeBVHJWdSXG1S3+PxgVIgKo9mTHbw==", - "dev": true - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", - "dev": true + "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/ssh2-streams": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz", - "integrity": "sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA==", - "dev": true, + "node_modules/@smithy/signature-v4": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", + "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", "dependencies": { - "@types/node": "*" + "@smithy/is-array-buffer": "^2.2.0", + "@smithy/types": "^2.12.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-middleware": "^2.2.0", + "@smithy/util-uri-escape": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/ssh2-streams/node_modules/@types/node": { - "version": "14.14.37", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.37.tgz", - "integrity": "sha512-XYmBiy+ohOR4Lh5jE379fV2IU+6Jn4g5qASinhitfyO71b/sCo6MKsMLF5tc7Zf2CE8hViVQyYSobJNke8OvUw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", - "dev": true + "node_modules/@smithy/signature-v4/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==", - "dev": true + "node_modules/@smithy/smithy-client": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", + "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", + "dependencies": { + "@smithy/middleware-endpoint": "^2.5.1", + "@smithy/middleware-stack": "^2.2.0", + "@smithy/protocol-http": "^3.3.0", + "@smithy/types": "^2.12.0", + "@smithy/util-stream": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, - "node_modules/@types/uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", - "dev": true + "node_modules/@smithy/smithy-client/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "dev": true, + "node_modules/@smithy/types": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.12.0.tgz", + "integrity": "sha512-QwYgloJ0sVNBeBuBs65cIkTbfzV/Q6ZNPCJ99EICFEdJYG50nGIY/uYXp+TbsdJReIuPr0a0kXmCvren3MbRRw==", "dependencies": { - "@types/yargs-parser": "*" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", - "dev": true + "node_modules/@smithy/types/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/2-thenable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz", - "integrity": "sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw==", - "dev": true, + "node_modules/@smithy/url-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", + "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", "dependencies": { - "d": "1", - "es5-ext": "^0.10.47" + "@smithy/querystring-parser": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" } }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true + "node_modules/@smithy/url-parser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", - "bin": { - "acorn": "bin/acorn" + "node_modules/@smithy/util-base64": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", + "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=14.0.0" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, + "node_modules/@smithy/util-base64/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", + "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "tslib": "^2.6.2" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-body-length-node": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", + "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.4.0" + "node": ">=14.0.0" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true, + "node_modules/@smithy/util-body-length-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.4.0" + "node": ">=14.0.0" } }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "dev": true, - "engines": { - "node": ">=6.0" - } + "node_modules/@smithy/util-buffer-from/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, + "node_modules/@smithy/util-config-provider": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", + "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", "dependencies": { - "debug": "4" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6.0.0" + "node": ">=14.0.0" } }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, + "node_modules/@smithy/util-config-provider/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", + "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "@smithy/property-provider": "^2.2.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, + "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", + "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "@smithy/config-resolver": "^2.2.0", + "@smithy/credential-provider-imds": "^2.3.0", + "@smithy/node-config-provider": "^2.3.0", + "@smithy/property-provider": "^2.2.0", + "@smithy/smithy-client": "^2.5.1", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } + "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, + "node_modules/@smithy/util-endpoints": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", + "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", "dependencies": { - "type-fest": "^0.21.3" + "@smithy/node-config-provider": "^2.3.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14.0.0" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@smithy/util-endpoints/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, + "node_modules/@smithy/util-hex-encoding": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", + "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=14.0.0" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, + "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-middleware": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", + "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", "dependencies": { - "color-convert": "^1.9.0" + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=4" + "node": ">=14.0.0" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", - "dev": true + "node_modules/@smithy/util-middleware/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, + "node_modules/@smithy/util-retry": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", + "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" + "@smithy/service-error-classification": "^2.1.5", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" } }, - "node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, + "node_modules/@smithy/util-retry/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", + "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", "dependencies": { - "remove-trailing-separator": "^1.0.1" + "@smithy/fetch-http-handler": "^2.5.0", + "@smithy/node-http-handler": "^2.5.0", + "@smithy/types": "^2.12.0", + "@smithy/util-base64": "^2.3.0", + "@smithy/util-buffer-from": "^2.2.0", + "@smithy/util-hex-encoding": "^2.2.0", + "@smithy/util-utf8": "^2.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.0.0" } }, - "node_modules/app-root-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.2.1.tgz", - "integrity": "sha512-91IFKeKk7FjfmezPKkwtaRvSpnUc4gDwPAjA1YZ9Gn0q0PPeW+vbeUsZuyDwjI7+QTHhcLen2v25fi/AmhvbJA==", - "dev": true, - "engines": { - "node": ">= 6.0.0" - } + "node_modules/@smithy/util-stream/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/archive-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", - "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", - "dev": true, + "node_modules/@smithy/util-uri-escape": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", + "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", "dependencies": { - "file-type": "^4.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=4" + "node": ">=14.0.0" } }, - "node_modules/archive-type/node_modules/file-type": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", - "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/@smithy/util-uri-escape/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, - "node_modules/archiver": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", - "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", - "dev": true, + "node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dependencies": { - "archiver-utils": "^2.1.0", - "async": "^3.2.3", - "buffer-crc32": "^0.2.1", - "readable-stream": "^3.6.0", - "readdir-glob": "^1.0.0", - "tar-stream": "^2.2.0", - "zip-stream": "^4.1.0" + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10" + "node": ">=14.0.0" } }, - "node_modules/archiver-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", - "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", + "node_modules/@smithy/util-utf8/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/@smithy/util-waiter": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.2.0.tgz", + "integrity": "sha512-IHk53BVw6MPMi2Gsn+hCng8rFA3ZmR3Rk7GllxDUW9qFJl/hiSvskn7XldkECapQVkIg/1dHpMAxI9xSTaLLSA==", "dev": true, "dependencies": { - "glob": "^7.1.4", - "graceful-fs": "^4.2.0", - "lazystream": "^1.0.0", - "lodash.defaults": "^4.2.0", - "lodash.difference": "^4.5.0", - "lodash.flatten": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.union": "^4.6.0", - "normalize-path": "^3.0.0", - "readable-stream": "^2.0.0" + "@smithy/abort-controller": "^2.2.0", + "@smithy/types": "^2.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=14.0.0" } }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "node_modules/@smithy/util-waiter/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/archiver-utils/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", "dev": true }, - "node_modules/archiver/node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==" + }, + "node_modules/@types/aws-lambda": { + "version": "8.10.138", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.138.tgz", + "integrity": "sha512-71EHMl70TPWIAsFuHd85NHq6S6T2OOjiisPTrH7RgcjzpJpPh4RQJv7PvVvIxc6PIp8CLV7F9B+TdjcAES5vcA==" + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, "dependencies": { - "sprintf-js": "~1.0.2" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/types": "^7.0.0" } }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "node_modules/@types/babel__traverse": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", + "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@babel/types": "^7.3.0" } }, - "node_modules/array-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", - "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=", + "node_modules/@types/bluebird": { + "version": "3.5.33", + "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.33.tgz", + "integrity": "sha512-ndEo1xvnYeHxm7I/5sF6tBvnsA4Tdi3zj1keRKRs12SP+2ye2A27NDJ1B6PqkfMbGAcT+mqQVqbZRIrhfOp5PQ==", "dev": true }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } }, - "node_modules/array-unflat-js": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/array-unflat-js/-/array-unflat-js-0.1.3.tgz", - "integrity": "sha512-8pljkLj4vfz2i7Tf3yB31tRrszjP8/kwIyABGfcZ1GcHlvdUB0Sbx0WzQkOPMqUBxa/bu4+/NAyHEpDtZJzlJw==", + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", "dev": true, - "engines": { - "node": ">=14.18.0" + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/@types/caseless": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", + "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", + "dev": true + }, + "node_modules/@types/cls-hooked": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.8.tgz", + "integrity": "sha512-tf/7H883gFA6MPlWI15EQtfNZ+oPL0gLKkOlx9UHFrun1fC/FkuyNBpTKq1B5E3T4fbvjId6WifHUdSGsMMuPg==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dependencies": { + "@types/node": "*" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/node": "*" } }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "node_modules/@types/docker-modem": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==", "dev": true, "dependencies": { - "safer-buffer": "~2.1.0" + "@types/node": "*", + "@types/ssh2": "*" } }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "node_modules/@types/dockerode": { + "version": "3.3.29", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.29.tgz", + "integrity": "sha512-5PRRq/yt5OT/Jf77ltIdz4EiR9+VLnPF+HpU4xGFwUqmV24Co2HKBNW3w+slqZ1CYchbcDeqJASHDYWzZCcMiQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/docker-modem": "*", + "@types/node": "*", + "@types/ssh2": "*" } }, - "node_modules/async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dependencies": { - "stack-chain": "^1.3.7" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "node_modules/@types/express-serve-static-core": { + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" + "dependencies": { + "@types/node": "*" } }, - "node_modules/atomic-batcher": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", - "integrity": "sha512-EFGCRj4kLX1dHv1cDzTk+xbjBFj1GnJDpui52YmEcxxHHEWjYyT6l51U7n6WQ28osZH4S9gSybxe56Vm7vB61Q==" + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==" + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", + "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", + "dev": true }, - "node_modules/audit-filter": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/audit-filter/-/audit-filter-0.5.0.tgz", - "integrity": "sha512-YXcxWFWrXfKIzyBbi+8tFz5ApE0ASQWyB4Qu2Lj55+ni7kvIWeaqQlg5EphxKwqLFuebsfW+TGEwg2ywq0laPA==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "dependencies": { - "docopt": "^0.6.2" - }, - "bin": { - "audit-filter": "cli.js" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/aws-lambda": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", - "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", + "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", + "dev": true, "dependencies": { - "aws-sdk": "^2.814.0", - "commander": "^3.0.2", - "js-yaml": "^3.14.1", - "watchpack": "^2.0.0-beta.10" - }, - "bin": { - "lambda": "bin/lambda" + "@types/istanbul-lib-report": "*" } }, - "node_modules/aws-lambda-mock-context": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/aws-lambda-mock-context/-/aws-lambda-mock-context-3.2.1.tgz", - "integrity": "sha512-mBqUustp9Q6yfa7w0L8UT8XJVTlIaeZTtxhvRQEEM3uhZwzQ1/l1NNN9i4F+O6CbYEOu9jDODLMCymV/J7pSYA==", + "node_modules/@types/jest": { + "version": "29.5.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", + "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", "dev": true, "dependencies": { - "moment": "^2.10.5", - "pinkie-defer": "^1.0.0", - "uuid": "^3.0.1" - }, - "engines": { - "node": ">=4" + "expect": "^29.0.0", + "pretty-format": "^29.0.0" } }, - "node_modules/aws-lambda-mock-context/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/@types/jest-plugin-context": { + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/@types/jest-plugin-context/-/jest-plugin-context-2.9.7.tgz", + "integrity": "sha512-olZlorLxJPZwviMXP410fEX34ATv/O4lFR3jymgQvi32I36flNDukZ369n1PEWqa7v26ZiSslVoyT9hdvRyP9w==", "dev": true, - "bin": { - "uuid": "bin/uuid" + "dependencies": { + "@types/jest": "*" } }, - "node_modules/aws-lambda/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "peer": true }, - "node_modules/aws-sdk": { - "version": "2.1354.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1354.0.tgz", - "integrity": "sha512-3aDxvyuOqMB9DqJguCq6p8momdsz0JR1axwkWOOCzHA7a35+Bw+WLmqt3pWwRjR1tGIwkkZ2CvGJObYHsOuw3w==", + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.5.0" - }, - "engines": { - "node": ">= 10.0.0" + "@types/node": "*" } }, - "node_modules/aws-sdk-client-mock": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.0.0.tgz", - "integrity": "sha512-/rxo+pzCFaUozK7TyCqo3GYwzdBGn9Ai6EsT8ytXDoUXlD/Q5hw9hj2lOkCAyubECzGJFHMmQg9GZ1GOGlN/qQ==", - "dev": true, + "node_modules/@types/lambda-tester": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/lambda-tester/-/lambda-tester-4.0.3.tgz", + "integrity": "sha512-En9wYa4KofUIaqO+dNuBZy5a+u5PPDi0NJwVjEfhoeg2z4PppSC6SvwWnoQ5dest5fEhR4UYrOk/Dpx4AmACEw==", "dependencies": { - "@types/sinon": "^10.0.10", - "sinon": "^16.1.3", - "tslib": "^2.1.0" + "@types/aws-lambda": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, + "node_modules/@types/lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" + }, + "node_modules/@types/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==", + "dev": true + }, + "node_modules/@types/mysql": { + "version": "2.15.26", + "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.26.tgz", + "integrity": "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==", "dependencies": { - "type-detect": "4.0.8" + "@types/node": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "dev": true, + "node_modules/@types/node": { + "version": "20.12.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.12.tgz", + "integrity": "sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "undici-types": "~5.26.4" } }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "dev": true, + "node_modules/@types/pg": { + "version": "8.11.5", + "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.11.5.tgz", + "integrity": "sha512-2xMjVviMxneZHDHX5p5S6tsRRs7TpDHeeK7kTTMe/kAC/mRRNjWHjZg0rkiY+e17jXSZV3zJYDxXV8Cy72/Vuw==", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "@types/node": "*", + "pg-protocol": "*", + "pg-types": "^4.0.1" } }, - "node_modules/aws-sdk-client-mock/node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" + }, + "node_modules/@types/request": { + "version": "2.48.5", + "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.5.tgz", + "integrity": "sha512-/LO7xRVnL3DxJ1WkPGDQrp4VTV1reX9RkC85mJ+Qzykj2Bdw+mG15aAfDahc76HtknjzE16SX/Yddn6MxVbmGQ==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "@types/caseless": "*", + "@types/node": "*", + "@types/tough-cookie": "*", + "form-data": "^2.5.0" } }, - "node_modules/aws-sdk-client-mock/node_modules/@types/sinon": { - "version": "10.0.20", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", - "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", + "node_modules/@types/request-promise": { + "version": "4.1.51", + "resolved": "https://registry.npmjs.org/@types/request-promise/-/request-promise-4.1.51.tgz", + "integrity": "sha512-qVcP9Fuzh9oaAh8oPxiSoWMFGnWKkJDknnij66vi09Yiy62bsSDqtd+fG5kIM9wLLgZsRP3Y6acqj9O/v2ZtRw==", "dev": true, "dependencies": { - "@types/sinonjs__fake-timers": "*" + "@types/bluebird": "*", + "@types/request": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "node_modules/@types/request/node_modules/form-data": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, "engines": { - "node": ">=0.3.1" + "node": ">= 0.12" } }, - "node_modules/aws-sdk-client-mock/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@types/responselike": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } }, - "node_modules/aws-sdk-client-mock/node_modules/nise": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", - "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", - "dev": true, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/text-encoding": "^0.7.2", - "just-extend": "^6.2.0", - "path-to-regexp": "^6.2.1" + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/nise/node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "node_modules/@types/sinon": { + "version": "17.0.3", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", + "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", "dev": true, "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@types/sinonjs__fake-timers": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", "dev": true }, - "node_modules/aws-sdk-client-mock/node_modules/sinon": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", - "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", + "node_modules/@types/ssh2": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-YcT8jP5F8NzWeevWvcyrrLB3zcneVjzYY9ZDSMAMboI+2zR1qYWFhwsyOFVzT7Jorn67vqxC0FRiw8YyG9P1ww==", + "dev": true, + "dependencies": { + "@types/node": "^18.11.18" + } + }, + "node_modules/@types/ssh2-streams": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/ssh2-streams/-/ssh2-streams-0.1.8.tgz", + "integrity": "sha512-I7gixRPUvVIyJuCEvnmhr3KvA2dC0639kKswqD4H5b4/FOcnPtNU+qWLiXdKIqqX9twUvi5j0U1mwKE5CUsrfA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^10.3.0", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.4", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" + "@types/node": "*" } }, - "node_modules/aws-sdk-client-mock/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@types/ssh2/node_modules/@types/node": { + "version": "18.19.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.33.tgz", + "integrity": "sha512-NR9+KrpSajr2qBVp/Yt5TU/rp+b5Mayi3+OlMlcg2cVCfRmcG5PWZ7S4+MG9PZ5gWBoc9Pd0BKSRViuBCRPu0A==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "undici-types": "~5.26.4" } }, - "node_modules/aws-sdk-client-mock/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "node_modules/@types/stack-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", + "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", "dev": true }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "bin": { - "uuid": "dist/bin/uuid" - } + "node_modules/@types/tough-cookie": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.0.tgz", + "integrity": "sha512-I99sngh224D0M7XgW1s120zxCt3VYQ3IQsuw3P3jbq5GG4yc79+ZjyKznyOGIQrflfylLgcfekeZW/vk0yng6A==", + "dev": true }, - "node_modules/aws-xray-sdk": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.6.0.tgz", - "integrity": "sha512-ID2R0U94wEMPLAkmQ7+TZuzvMjp2fe0dqqUQb6BniIDWXdvV5bphrMhsHzp/0PDRjGqsVSrZ1V1qRmq8bhEl1A==", + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@types/yargs-parser": { + "version": "20.2.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", + "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.11.0.tgz", + "integrity": "sha512-P+qEahbgeHW4JQ/87FuItjBj8O3MYv5gELDzr8QaQ7fsll1gSMTYb6j87MYyxwf3DtD7uGFB9ShwgmCJB5KmaQ==", + "dev": true, "dependencies": { - "aws-xray-sdk-core": "3.6.0", - "aws-xray-sdk-express": "3.6.0", - "aws-xray-sdk-mysql": "3.6.0", - "aws-xray-sdk-postgres": "3.6.0" + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/type-utils": "7.11.0", + "@typescript-eslint/utils": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">= 14.x" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/aws-xray-sdk-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.6.0.tgz", - "integrity": "sha512-+UnYmVEni9NNJvE6aFY1dbvMtFquXSYAj+HYfm+90icoGKYvvLD71R7PHyFFnYct5of4NFpEXJtUJrWMv8e4mQ==", + "node_modules/@typescript-eslint/parser": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.11.0.tgz", + "integrity": "sha512-yimw99teuaXVWsBcPO1Ais02kwJ1jmNA1KxE7ng0aT7ndr1pT1wqj0OJnsYVGKKlc4QJai86l/025L6z8CljOg==", + "dev": true, "dependencies": { - "@aws-sdk/types": "^3.4.1", - "@smithy/service-error-classification": "^2.0.4", - "@types/cls-hooked": "^4.3.3", - "atomic-batcher": "^1.0.2", - "cls-hooked": "^4.2.2", - "semver": "^7.5.3" + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/typescript-estree": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 14.x" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/aws-xray-sdk-core/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", + "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/aws-xray-sdk-express": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.6.0.tgz", - "integrity": "sha512-vIHk+qpmLhI2JWiqgjhHZYerNo9jbjifJ6qIb+l5CCAqe00CIjnlnLF9LKLi4UhVT9xyAp46aCpWMEl+XeXSYA==", + "node_modules/@typescript-eslint/type-utils": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.11.0.tgz", + "integrity": "sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==", + "dev": true, "dependencies": { - "@types/express": "*" + "@typescript-eslint/typescript-estree": "7.11.0", + "@typescript-eslint/utils": "7.11.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">= 14.x" + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "aws-xray-sdk-core": "^3.6.0" + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/aws-xray-sdk-mysql": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.6.0.tgz", - "integrity": "sha512-DNZEe8Q331tzqc0dLM1Zy0d2GNFoks7BIX3Lop/+lGLytO6a4sdZ/NIXZX6pngG1sBYlsoTSFCFi470UD6Q6AA==", - "dependencies": { - "@types/mysql": "*" - }, + "node_modules/@typescript-eslint/types": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", + "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", + "dev": true, "engines": { - "node": ">= 14.x" + "node": "^18.18.0 || >=20.0.0" }, - "peerDependencies": { - "aws-xray-sdk-core": "^3.6.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/aws-xray-sdk-postgres": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.6.0.tgz", - "integrity": "sha512-jQ4pNWq0RdVVZJ8XVqD7Rc6YS6bYqxCV0IQW2SBAhnW6S5yCLRekYgxbj0D35VZgLyqZQX98kdOV7ZqrWRyAyw==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", + "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", + "dev": true, "dependencies": { - "@types/pg": "*" + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { - "node": ">= 14.x" + "node": "^18.18.0 || >=20.0.0" }, - "peerDependencies": { - "aws-xray-sdk-core": "^3.6.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/axios": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", - "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "balanced-match": "^1.0.0" } }, - "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 10.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=10" } }, - "node_modules/babel-jest/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@typescript-eslint/utils": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", + "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/typescript-estree": "7.11.0" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", + "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@typescript-eslint/types": "7.11.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || >=20.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/babel-jest/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "peer": true + }, + "node_modules/2-thenable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/2-thenable/-/2-thenable-1.0.0.tgz", + "integrity": "sha512-HqiDzaLDFCXkcCO/SwoyhRwqYtINFHF7t9BDRq4x90TOKNAJpiqUt9X5lQ08bwxYzc067HUywDjGySpebHcUpw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "d": "1", + "es5-ext": "^0.10.47" } }, - "node_modules/babel-jest/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/babel-jest/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=6.5" } }, - "node_modules/babel-jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=8" + "node": ">=0.4.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peer": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", + "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6.0" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "debug": "4" }, "engines": { - "node": ">= 10.14.2" + "node": ">= 6.0.0" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - }, - "engines": { - "node": ">= 10.14.2" + "ajv": "^8.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" + "string-width": "^4.1.0" } }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/app-root-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", + "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", + "dev": true, + "engines": { + "node": ">= 6.0.0" + } }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "node_modules/archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", "dev": true, "dependencies": { - "tweetnacl": "^0.14.3" + "file-type": "^4.2.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/archive-type/node_modules/file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/archiver": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz", + "integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "archiver-utils": "^2.1.0", + "async": "^3.2.4", + "buffer-crc32": "^0.2.1", + "readable-stream": "^3.6.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^2.2.0", + "zip-stream": "^4.1.0" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/bl/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "node_modules/archiver-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz", + "integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "glob": "^7.1.4", + "graceful-fs": "^4.2.0", + "lazystream": "^1.0.0", + "lodash.defaults": "^4.2.0", + "lodash.difference": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.union": "^4.6.0", + "normalize-path": "^3.0.0", + "readable-stream": "^2.0.0" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" - }, - "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } + "node_modules/archiver-utils/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node_modules/archiver/node_modules/async": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", + "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "dev": true + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true, + "dependencies": { + "dequal": "^2.0.3" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", "dev": true }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "peer": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/array-unflat-js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/array-unflat-js/-/array-unflat-js-0.1.3.tgz", + "integrity": "sha512-8pljkLj4vfz2i7Tf3yB31tRrszjP8/kwIyABGfcZ1GcHlvdUB0Sbx0WzQkOPMqUBxa/bu4+/NAyHEpDtZJzlJw==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=14.18.0" } }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "peer": true, "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "dependencies": { - "is-extendable": "^0.1.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, + "peer": true, "dependencies": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "bin": { - "browserslist": "cli.js" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, + "peer": true, "dependencies": { - "fast-json-stable-stringify": "2.x" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, + "peer": true, "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" } }, - "node_modules/buffer-alloc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", - "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, + "peer": true, "dependencies": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } - }, - "node_modules/buffer-alloc-unsafe": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", - "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", - "dev": true - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-fill": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", - "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", - "dev": true - }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "node_modules/buildcheck": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.3.tgz", - "integrity": "sha512-pziaA+p/wdVImfcbsZLNF32EiWyujlQLwolMqUQE8xpKNOH7KmZQaY8sXN7DGOEzPAElo9QTaeNRfGnf3iOJbA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10.0.0" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" } }, - "node_modules/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, - "node_modules/byline": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", - "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "safer-buffer": "~2.1.0" } }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, + "peer": true + }, + "node_modules/async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "stack-chain": "^1.3.7" }, "engines": { - "node": ">=0.10.0" + "node": "^4.7 || >=6.9 || >=7.3" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "node_modules/async-lock": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", + "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", "dev": true, "engines": { - "node": ">=10.6.0" + "node": ">= 4.0.0" } }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "node_modules/atomic-batcher": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", + "integrity": "sha512-EFGCRj4kLX1dHv1cDzTk+xbjBFj1GnJDpui52YmEcxxHHEWjYyT6l51U7n6WQ28osZH4S9gSybxe56Vm7vB61Q==" + }, + "node_modules/audit-filter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/audit-filter/-/audit-filter-0.5.0.tgz", + "integrity": "sha512-YXcxWFWrXfKIzyBbi+8tFz5ApE0ASQWyB4Qu2Lj55+ni7kvIWeaqQlg5EphxKwqLFuebsfW+TGEwg2ywq0laPA==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "docopt": "^0.6.2" + }, + "bin": { + "audit-filter": "cli.js" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, + "node_modules/aws-lambda": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", + "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", "dependencies": { - "callsites": "^2.0.0" + "aws-sdk": "^2.814.0", + "commander": "^3.0.2", + "js-yaml": "^3.14.1", + "watchpack": "^2.0.0-beta.10" }, - "engines": { - "node": ">=4" + "bin": { + "lambda": "bin/lambda" } }, - "node_modules/caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "node_modules/aws-lambda-mock-context": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/aws-lambda-mock-context/-/aws-lambda-mock-context-3.2.1.tgz", + "integrity": "sha512-mBqUustp9Q6yfa7w0L8UT8XJVTlIaeZTtxhvRQEEM3uhZwzQ1/l1NNN9i4F+O6CbYEOu9jDODLMCymV/J7pSYA==", "dev": true, "dependencies": { - "caller-callsite": "^2.0.0" + "moment": "^2.10.5", + "pinkie-defer": "^1.0.0", + "uuid": "^3.0.1" }, "engines": { "node": ">=4" } }, - "node_modules/callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "node_modules/aws-lambda-mock-context/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/aws-lambda/node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" + }, + "node_modules/aws-sdk": { + "version": "2.1628.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1628.0.tgz", + "integrity": "sha512-mUjvITHmV46JbCTQR8TovWzJEHZtbC9cTRySXyuIuuYQNjA2RrbfqLXXKR/xru+vPFKnfTLw+QQ/BC2l1/Ln5g==", + "hasInstallScript": true, + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, "engines": { - "node": ">=4" + "node": ">= 10.0.0" } }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/aws-sdk-client-mock": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/aws-sdk-client-mock/-/aws-sdk-client-mock-4.0.0.tgz", + "integrity": "sha512-/rxo+pzCFaUozK7TyCqo3GYwzdBGn9Ai6EsT8ytXDoUXlD/Q5hw9hj2lOkCAyubECzGJFHMmQg9GZ1GOGlN/qQ==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/sinon": "^10.0.10", + "sinon": "^16.1.3", + "tslib": "^2.1.0" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "node_modules/aws-sdk-client-mock/node_modules/@types/sinon": { + "version": "10.0.20", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", + "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/sinonjs__fake-timers": "*" } }, - "node_modules/camelcase-keys/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/aws-sdk-client-mock/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.3.1" } }, - "node_modules/camelcase-keys/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "node_modules/aws-sdk-client-mock/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001235", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001235.tgz", - "integrity": "sha512-zWEwIVqnzPkSAXOUlQnPW2oKoYb2aLQ4Q5ejdjBcnH63rfypaW34CxaeBn1VMya2XaEU3P/R2qHpWyj+l0BT1A==", + "node_modules/aws-sdk-client-mock/node_modules/nise": { + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "node_modules/aws-sdk-client-mock/node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { - "rsvp": "^4.8.4" - }, - "engines": { - "node": "6.* || 8.* || >= 10.*" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/aws-sdk-client-mock/node_modules/sinon": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-16.1.3.tgz", + "integrity": "sha512-mjnWWeyxcAf9nC0bXcPmiDut+oE8HYridTNzBbF98AYVLmWwGRp2ISEpyhYflG1ifILT+eNn3BmKUJPxjXUPlA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^10.3.0", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.1.0", + "nise": "^5.1.4", + "supports-color": "^7.2.0" }, - "engines": { - "node": ">=4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/aws-sdk-client-mock/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/aws-sdk-client-mock/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, - "node_modules/child-process-ext": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", - "integrity": "sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA==", - "dev": true, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/aws-xray-sdk": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.6.0.tgz", + "integrity": "sha512-ID2R0U94wEMPLAkmQ7+TZuzvMjp2fe0dqqUQb6BniIDWXdvV5bphrMhsHzp/0PDRjGqsVSrZ1V1qRmq8bhEl1A==", "dependencies": { - "cross-spawn": "^6.0.5", - "es5-ext": "^0.10.53", - "log": "^6.0.0", - "split2": "^3.1.1", - "stream-promise": "^3.2.0" + "aws-xray-sdk-core": "3.6.0", + "aws-xray-sdk-express": "3.6.0", + "aws-xray-sdk-mysql": "3.6.0", + "aws-xray-sdk-postgres": "3.6.0" + }, + "engines": { + "node": ">= 14.x" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/aws-xray-sdk-core": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.6.0.tgz", + "integrity": "sha512-+UnYmVEni9NNJvE6aFY1dbvMtFquXSYAj+HYfm+90icoGKYvvLD71R7PHyFFnYct5of4NFpEXJtUJrWMv8e4mQ==", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "@aws-sdk/types": "^3.4.1", + "@smithy/service-error-classification": "^2.0.4", + "@types/cls-hooked": "^4.3.3", + "atomic-batcher": "^1.0.2", + "cls-hooked": "^4.2.2", + "semver": "^7.5.3" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">= 14.x" } }, - "node_modules/chokidar/node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, + "node_modules/aws-xray-sdk-core/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, + "node_modules/aws-xray-sdk-express": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.6.0.tgz", + "integrity": "sha512-vIHk+qpmLhI2JWiqgjhHZYerNo9jbjifJ6qIb+l5CCAqe00CIjnlnLF9LKLi4UhVT9xyAp46aCpWMEl+XeXSYA==", "dependencies": { - "fill-range": "^7.0.1" + "@types/express": "*" }, "engines": { - "node": ">=8" + "node": ">= 14.x" + }, + "peerDependencies": { + "aws-xray-sdk-core": "^3.6.0" } }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, + "node_modules/aws-xray-sdk-mysql": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.6.0.tgz", + "integrity": "sha512-DNZEe8Q331tzqc0dLM1Zy0d2GNFoks7BIX3Lop/+lGLytO6a4sdZ/NIXZX6pngG1sBYlsoTSFCFi470UD6Q6AA==", "dependencies": { - "to-regex-range": "^5.0.1" + "@types/mysql": "*" }, "engines": { - "node": ">=8" + "node": ">= 14.x" + }, + "peerDependencies": { + "aws-xray-sdk-core": "^3.6.0" } }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, + "node_modules/aws-xray-sdk-postgres": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.6.0.tgz", + "integrity": "sha512-jQ4pNWq0RdVVZJ8XVqD7Rc6YS6bYqxCV0IQW2SBAhnW6S5yCLRekYgxbj0D35VZgLyqZQX98kdOV7ZqrWRyAyw==", "dependencies": { - "is-glob": "^4.0.1" + "@types/pg": "*" }, "engines": { - "node": ">= 6" + "node": ">= 14.x" + }, + "peerDependencies": { + "aws-xray-sdk-core": "^3.6.0" } }, - "node_modules/chokidar/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, + "peer": true, "engines": { - "node": ">=0.12.0" + "node": ">=4" } }, - "node_modules/chokidar/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/axios": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dev": true, "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "peer": true, + "dependencies": { + "dequal": "^2.0.3" + } }, - "node_modules/cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==", "dev": true }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "is-descriptor": "^0.1.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/cli-color": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.3.tgz", - "integrity": "sha512-OkoZnxyC4ERN3zLzZaY9Emb7f/MhBOIpePv0Ycok0fJYT+Ouo00UBEIwsVsr0yoow++n5YWlSUgST9GKhNHiRQ==", + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.61", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10" + "node": ">=7.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/cli-progress-footer": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/cli-progress-footer/-/cli-progress-footer-2.3.2.tgz", - "integrity": "sha512-uzHGgkKdeA9Kr57eyH1W5HGiNShP8fV1ETq04HDNM1Un6ShXbHhwi/H8LNV9L1fQXKjEw0q5FUkEVNuZ+yZdSw==", + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, "dependencies": { - "cli-color": "^2.0.2", - "d": "^1.0.1", - "es5-ext": "^0.10.61", - "mute-stream": "0.0.8", - "process-utils": "^4.0.0", - "timers-ext": "^0.1.7", - "type": "^2.6.0" + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" }, "engines": { - "node": ">=10.0" + "node": ">=8" } }, - "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/cli-sprintf-format": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cli-sprintf-format/-/cli-sprintf-format-1.1.1.tgz", - "integrity": "sha512-BbEjY9BEdA6wagVwTqPvmAwGB24U93rQPBFZUT8lNCDxXzre5LFHQUTJc70czjgUomVg8u8R5kW8oY9DYRFNeg==", + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "cli-color": "^2.0.1", - "es5-ext": "^0.10.53", - "sprintf-kit": "^2.0.1", - "supports-color": "^6.1.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=6.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/cli-sprintf-format/node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bare-events": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz", + "integrity": "sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ==", + "dev": true, + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.0.tgz", + "integrity": "sha512-TNFqa1B4N99pds2a5NYHR15o0ZpdNKbAeKTE/+G6ED/UeOavv8RY3dr/Fu99HW3zU3pXpo2kDNO8Sjsm2esfOw==", "dev": true, + "optional": true, "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^1.0.0" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/bare-os": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.3.0.tgz", + "integrity": "sha512-oPb8oMM1xZbhRQBngTgpcQ5gXw6kjOaRsSWsIeNyRxGed2w/ARyP7ScBYpWR1qfX2E5rS3gBw6OWcSQo+s+kUg==", "dev": true, - "engines": { - "node": ">= 10" - } + "optional": true }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "node_modules/bare-path": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.2.tgz", + "integrity": "sha512-o7KSt4prEphWUHa3QUwCxUI00R86VdjiuxmJK0iNVDHYPGo+HsDaVCnqCmPbf/MiW1ok8F4p3m8RTHlWk8K2ig==", "dev": true, + "optional": true, "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" + "bare-os": "^2.1.0" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/bare-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-1.0.0.tgz", + "integrity": "sha512-KhNUoDL40iP4gFaLSsoGE479t0jHijfYdIcxRn/XtezA2BaUD0NRf/JGRpsMq6dMNM+SrCrB0YSSo/5wBY4rOQ==", "dev": true, - "engines": { - "node": ">=0.8" + "optional": true, + "dependencies": { + "streamx": "^2.16.1" } }, - "node_modules/clone-response": { + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "dependencies": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" + "tweetnacl": "^0.14.3" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/bl/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "color-name": "1.1.3" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "node_modules/colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" }, "engines": { - "node": ">= 0.8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commitlint": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-17.0.0.tgz", - "integrity": "sha512-9D1oY5UValrpkdpVbaiZ9EIXYJDnFvO5LXK5FztbIbnf3QxnC34A1MmMAzm9Z6Lmf7V4+khV0VE43302pHmwug==", + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "@commitlint/cli": "^17.0.0", - "@commitlint/types": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, "engines": { - "node": ">=v14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/commitlint/node_modules/@commitlint/cli": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.7.tgz", - "integrity": "sha512-nzZmfO5KIOupYppn1MsnYX/80I+KDlxiwkks3CJT0XT+t34UgqGi3eSyEuzgcIjPlORk5/GMaAEiys78iLfGMg==", + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "@commitlint/format": "^17.4.4", - "@commitlint/lint": "^17.6.7", - "@commitlint/load": "^17.6.7", - "@commitlint/read": "^17.5.1", - "@commitlint/types": "^17.4.4", - "execa": "^5.0.0", - "lodash.isfunction": "^3.0.9", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, "engines": { - "node": ">=v14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/commitlint/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, "engines": { - "node": ">= 8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commitlint/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/boxen/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/commitlint/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commitlint/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=10.17.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/commitlint/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/commitlint/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/commitlint/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/commitlint/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/commitlint/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, - "node_modules/commitlint/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/commitlint/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "isexe": "^2.0.0" + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { - "node-which": "bin/node-which" + "browserslist": "cli.js" }, "engines": { - "node": ">= 8" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dev": true, - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "node_modules/compress-commons": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", - "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, "dependencies": { - "buffer-crc32": "^0.2.13", - "crc32-stream": "^4.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^3.6.0" + "fast-json-stable-stringify": "2.x" }, "engines": { - "node": ">= 10" + "node": ">= 6" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" + "node-int64": "^0.4.0" } }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", - "dev": true, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.0.tgz", - "integrity": "sha512-sj9tj3z5cnHaSJCYObA9nISf7eq/YjscLPoq6nmew4SiOjxqL2KRpK20fjnjVbpNDjJ2HR3MoVcWKXwbVvzS0A==", + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", "dev": true, - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/conventional-commits-parser/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", "dev": true, - "dependencies": { - "readable-stream": "3" + "optional": true, + "engines": { + "node": ">=10.0.0" } }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/convert-source-map/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/cookiejar": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", - "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "node_modules/builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", "dev": true }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "node_modules/byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } }, - "node_modules/cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "dev": true, "dependencies": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/cosmiconfig/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "pump": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cpu-features": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.4.tgz", - "integrity": "sha512-fKiZ/zp1mUwQbnzb9IghXtHtDoTMtNeb8oYGx6kX2SYfhnG0HNdBEBIzB9b5KlXu5DQPhfy3mInbBxFcgwAr3A==", + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true, - "hasInstallScript": true, - "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "buildcheck": "0.0.3", - "nan": "^2.15.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/cpu-features/node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "optional": true + "engines": { + "node": ">=6" + } }, - "node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "crc32": "bin/crc32.njs" - }, "engines": { - "node": ">=0.8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/crc32-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", - "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", + "node_modules/caniuse-lite": { + "version": "1.0.30001620", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001620.tgz", + "integrity": "sha512-WJvYsOjd1/BYUY6SNGUosK9DUidBPDTnOARHp3fSmFO1ekdxaY6nKRttEVrfMmYi80ctS0kz1wiWmm14fVc3ew==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^3.4.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">= 10" + "node": ">=4" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - }, - "node_modules/cron-parser": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", - "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "dependencies": { - "luxon": "^3.2.1" - }, "engines": { - "node": ">=12.0.0" + "node": ">=10" } }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/child-process-ext": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", + "integrity": "sha512-0UQ55f51JBkOFa+fvR76ywRzxiPwQS3Xe8oe5bZRphpv+dIMeerW5Zn5e4cUy4COJwVtJyU0R79RMnw+aCqmGA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "cross-spawn": "^6.0.5", + "es5-ext": "^0.10.53", + "log": "^6.0.0", + "split2": "^3.1.1", + "stream-promise": "^3.2.0" } }, - "node_modules/cross-env/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/child-process-ext/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">= 8" + "node": ">=4.8" } }, - "node_modules/cross-env/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/child-process-ext/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/cross-env/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/child-process-ext/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cross-env/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/child-process-ext/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/cross-env/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/child-process-ext/node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "dependencies": { + "readable-stream": "^3.0.0" + } + }, + "node_modules/child-process-ext/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { "isexe": "^2.0.0" }, "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "which": "bin/which" } }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=4.8" + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { "node": ">=8" } }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "node_modules/cjs-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "dev": true, "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" + }, + "engines": { + "node": ">=0.10" } }, - "node_modules/d/node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, "engines": { "node": ">=8" } }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "node_modules/cli-progress-footer": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/cli-progress-footer/-/cli-progress-footer-2.3.3.tgz", + "integrity": "sha512-p+hyTPxSZWG1c3Qy1DLBoGZhpeA3Y6AMlKrtbGpMMSKpezbSLel8gW4e5You4FNlHb3wS/M1JU594OAWe/Totg==", "dev": true, "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" + "cli-color": "^2.0.4", + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "mute-stream": "0.0.8", + "process-utils": "^4.0.0", + "timers-ext": "^0.1.7", + "type": "^2.7.2" }, "engines": { - "node": ">=10" + "node": ">=10.0" } }, - "node_modules/date-fns": { - "version": "2.21.2", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.21.2.tgz", - "integrity": "sha512-FMkG7pIPx64mGIpS2LOb3Wp3O606H/hatoiz7G0oiYWai1izdM4tF1dd7QABv2NogkIDI4wxsfLLFQSuVvDHgA==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, "engines": { - "node": ">=0.11" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dayjs": { - "version": "1.11.9", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", - "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/cli-sprintf-format": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cli-sprintf-format/-/cli-sprintf-format-1.1.1.tgz", + "integrity": "sha512-BbEjY9BEdA6wagVwTqPvmAwGB24U93rQPBFZUT8lNCDxXzre5LFHQUTJc70czjgUomVg8u8R5kW8oY9DYRFNeg==", "dev": true, "dependencies": { - "ms": "2.1.2" + "cli-color": "^2.0.1", + "es5-ext": "^0.10.53", + "sprintf-kit": "^2.0.1", + "supports-color": "^6.1.0" }, "engines": { "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "node_modules/cli-sprintf-format/node_modules/supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { - "node": ">=0.10" + "node": ">=0.8" } }, - "node_modules/decompress": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", - "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "decompress-tar": "^4.0.0", - "decompress-tarbz2": "^4.0.0", - "decompress-targz": "^4.0.0", - "decompress-unzip": "^4.0.1", - "graceful-fs": "^4.1.10", - "make-dir": "^1.0.0", - "pify": "^2.3.0", - "strip-dirs": "^2.0.0" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/decompress-tar": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", - "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", "dev": true, "dependencies": { - "file-type": "^5.2.0", - "is-stream": "^1.1.0", - "tar-stream": "^1.5.2" + "mimic-response": "^1.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/decompress-tar/node_modules/bl": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", - "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", - "dev": true, + "node_modules/cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", "dependencies": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" } }, - "node_modules/decompress-tar/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, "engines": { - "node": ">=4" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/decompress-tar/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "color-name": "1.1.3" } }, - "node_modules/decompress-tar/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/decompress-tar/node_modules/tar-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", - "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, "dependencies": { - "bl": "^1.0.0", - "buffer-alloc": "^1.2.0", - "end-of-stream": "^1.0.0", - "fs-constants": "^1.0.0", - "readable-stream": "^2.3.0", - "to-buffer": "^1.1.1", - "xtend": "^4.0.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8" } }, - "node_modules/decompress-tarbz2": { + "node_modules/commander": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", - "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/commitlint": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-19.3.0.tgz", + "integrity": "sha512-B8eUVQCjz+1ZAjR3LC3+vzKg7c4/qN4QhSxkjp0u0v7Pi79t9CsnGAluvveKmFh56e885zgToPL5ax+l8BHTPg==", "dev": true, "dependencies": { - "decompress-tar": "^4.1.0", - "file-type": "^6.1.0", - "is-stream": "^1.1.0", - "seek-bzip": "^1.0.5", - "unbzip2-stream": "^1.0.9" + "@commitlint/cli": "^19.3.0", + "@commitlint/types": "^19.0.3" + }, + "bin": { + "commitlint": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=v18" } }, - "node_modules/decompress-tarbz2/node_modules/file-type": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", - "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/decompress-targz": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", - "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compress-commons": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.0.tgz", + "integrity": "sha512-ofaaLqfraD1YRTkrRKPCrGJ1pFeDG/MVCkVVV2FNGeWquSlqw5wOrwOfPQ1xF2u+blpeWASie5EubHz+vsNIgA==", "dev": true, "dependencies": { - "decompress-tar": "^4.1.1", - "file-type": "^5.2.0", - "is-stream": "^1.1.0" + "buffer-crc32": "^0.2.13", + "crc32-stream": "^4.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=4" + "node": ">= 10" } }, - "node_modules/decompress-targz/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true, - "engines": { - "node": ">=4" - } + "peer": true }, - "node_modules/decompress-unzip": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", - "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "file-type": "^3.8.0", - "get-stream": "^2.2.0", - "pify": "^2.3.0", - "yauzl": "^2.4.2" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/decompress-unzip/node_modules/file-type": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", - "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/decompress-unzip/node_modules/get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", "dev": true, "dependencies": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=16" } }, - "node_modules/decompress/node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" }, "engines": { - "node": ">=4" + "node": ">=16" } }, - "node_modules/decompress/node_modules/make-dir/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", "dev": true }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/cosmiconfig-typescript-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", + "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", "dev": true, "dependencies": { - "clone": "^1.0.2" + "jiti": "^1.19.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=v16" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=8.2", + "typescript": ">=4" } }, - "node_modules/deferred": { - "version": "0.7.11", - "resolved": "https://registry.npmjs.org/deferred/-/deferred-0.7.11.tgz", - "integrity": "sha512-8eluCl/Blx4YOGwMapBvXRKxHXhA8ejDXYzEaK8+/gtcm8hRMhSLmXSqDmNUKNc/C8HNSmuyyp/hflhqDAvK2A==", + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.50", - "event-emitter": "^0.3.5", - "next-tick": "^1.0.0", - "timers-ext": "^0.1.7" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/cpu-features": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.19.0" + }, "engines": { - "node": ">=8" + "node": ">=10.0.0" } }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "node_modules/crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", "dev": true, "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.8" } }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/crc32-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.2.tgz", + "integrity": "sha512-DxFZ/Hk473b/muq1VJ///PMNLj0ZMnzye9thBpmjpJKCc5eMgB95aK8zCGrGfQ90cWo561Te6HK9D+j4KPdM6w==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "crc-32": "^1.2.0", + "readable-stream": "^3.4.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=0.4.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.10" + "node": ">=7.0.0" } }, - "node_modules/desm": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/desm/-/desm-1.3.1.tgz", - "integrity": "sha512-vgTAOosB1aHrmzjGnzFCbjvXbk8QAOC/36JxJhcBkeAuUy8QwRFxAWBHemiDpUB3cbrBruFUdzpUS21aocvaWg==", + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + }, + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, "dependencies": { - "path-type": "^4.0.0" + "luxon": "^3.2.1" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" } }, - "node_modules/docker-compose": { - "version": "0.23.6", - "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.23.6.tgz", - "integrity": "sha512-y3Q8MkwG862rNqkvEQG59/7Fi2/fzs3NYDCvqUAAD+z0WGs2qcJ9hRcn34hWgWv9ouPkFqe3Vwca0h+4bIIRWw==", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, "engines": { - "node": ">= 6.0.0" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/dockerode": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.4.tgz", - "integrity": "sha512-3EUwuXnCU+RUlQEheDjmBE0B7q66PV9Rw5NiH1sXwINq0M9c5ERP9fxgkw36ZHOtzf4AGEEYySnkx/sACC9EgQ==", + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "dependencies": { - "@balena/dockerignore": "^1.0.2", - "docker-modem": "^3.0.0", - "tar-fs": "~2.0.1" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">= 8.0" + "node": ">= 8" } }, - "node_modules/dockerode/node_modules/docker-modem": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.6.tgz", - "integrity": "sha512-h0Ow21gclbYsZ3mkHDfsYNDqtRhXS8fXr51bU0qr1dxgTMJj0XufbzX+jhNOvA8KuEEzn6JbvLVhXyv+fny9Uw==", + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "readable-stream": "^3.5.0", - "split-ca": "^1.0.1", - "ssh2": "^1.11.0" + "es5-ext": "^0.10.64", + "type": "^2.7.2" }, "engines": { - "node": ">= 8.0" + "node": ">=0.12" } }, - "node_modules/dockerode/node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true, - "optional": true + "peer": true }, - "node_modules/dockerode/node_modules/ssh2": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", - "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "asn1": "^0.2.4", - "bcrypt-pbkdf": "^1.0.2" - }, "engines": { - "node": ">=10.16.0" + "node": ">=12" }, - "optionalDependencies": { - "cpu-features": "~0.0.4", - "nan": "^2.16.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dockerode/node_modules/tar-fs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", - "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/docopt": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", - "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "dependencies": { - "webidl-conversions": "^5.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", "dev": true, "dependencies": { - "is-obj": "^2.0.0" + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dotenv-json": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dotenv-json/-/dotenv-json-1.0.0.tgz", - "integrity": "sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ==", - "dev": true - }, - "node_modules/duration": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", - "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", "dev": true, "dependencies": { - "d": "1", - "es5-ext": "~0.10.46" + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.3.749", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.749.tgz", - "integrity": "sha512-F+v2zxZgw/fMwPz/VUGIggG4ZndDsYy0vlpthi3tjmDZlcfbhN5mYW0evXUsBr2sUtuDANFtle410A9u/sd/4A==", - "dev": true - }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "node_modules/decompress-tar/node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dev": true, "dependencies": { - "shimmer": "^1.2.0" + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" } }, - "node_modules/emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "node_modules/decompress-tar/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" + "node": ">=4" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/decompress-tar/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { - "once": "^1.4.0" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } + "node_modules/decompress-tar/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "node_modules/decompress-tar/node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", "dev": true, - "hasInstallScript": true, "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" }, "engines": { - "node": ">=0.10" + "node": ">= 0.8.0" } }, - "node_modules/es5-ext/node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", "dev": true, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" }, "engines": { - "node": ">=0.10" + "node": ">=4" } }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" + "engines": { + "node": ">=4" } }, - "node_modules/es6-set": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", - "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", "dev": true, "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "es6-iterator": "~2.0.3", - "es6-symbol": "^3.1.3", - "event-emitter": "^0.3.5", - "type": "^2.7.2" + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" }, "engines": { - "node": ">=0.12" + "node": ">=4" } }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "node_modules/decompress-targz/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", "dev": true, - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "engines": { + "node": ">=4" } }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", "dev": true, "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", "dev": true, + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", + "node_modules/decompress/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" + "pify": "^3.0.0" }, "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" + "node": ">=4" } }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "node_modules/decompress/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=4" } }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/esniff": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.0.tgz", - "integrity": "sha512-vmHXOeOt7FJLsqofvFk4WB3ejvcHizCd8toXXwADmYfd02p2QwHRgkUbhYDX54y08nqk818CUTWipgZGlyN07g==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, - "dependencies": { - "d": "1", - "es5-ext": "^0.10.12" - } + "peer": true }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/essentials": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/essentials/-/essentials-1.2.0.tgz", - "integrity": "sha512-kP/j7Iw7KeNE8b/o7+tr9uX2s1wegElGOoGZ2Xm35qBr4BbbEcH3/bxR2nfH9l9JANCq9AUrvKw+gRuHtZp0HQ==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { - "uni-global": "^1.0.0" + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "node_modules/deferred": { + "version": "0.7.11", + "resolved": "https://registry.npmjs.org/deferred/-/deferred-0.7.11.tgz", + "integrity": "sha512-8eluCl/Blx4YOGwMapBvXRKxHXhA8ejDXYzEaK8+/gtcm8hRMhSLmXSqDmNUKNc/C8HNSmuyyp/hflhqDAvK2A==", "dev": true, "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "es5-ext": "^0.10.50", + "event-emitter": "^0.3.5", + "next-tick": "^1.0.0", + "timers-ext": "^0.1.7" } }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, "engines": { - "node": ">=0.4.x" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "dev": true + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.4.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" } }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, + "peer": true, "engines": { - "node": ">=0.8" + "node": ">=6" } }, - "node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "node_modules/desm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/desm/-/desm-1.3.1.tgz", + "integrity": "sha512-vgTAOosB1aHrmzjGnzFCbjvXbk8QAOC/36JxJhcBkeAuUy8QwRFxAWBHemiDpUB3cbrBruFUdzpUS21aocvaWg==", + "dev": true + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", "dev": true, "dependencies": { - "ms": "2.0.0" + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "engines": { + "node": ">=0.3.1" } }, - "node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/expand-brackets/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "node_modules/docker-compose": { + "version": "0.24.8", + "resolved": "https://registry.npmjs.org/docker-compose/-/docker-compose-0.24.8.tgz", + "integrity": "sha512-plizRs/Vf15H+GCVxq2EUvyPK7ei9b/cVesHvjnX4xaXjM9spHe2Ytq0BitndFgvTJ3E3NljPNUEl7BAN43iZw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" + "yaml": "^2.2.2" }, "engines": { - "node": ">= 10.14.2" + "node": ">= 6.0.0" } }, - "node_modules/expect/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/docker-modem": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz", + "integrity": "sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.11.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 8.0" } }, - "node_modules/expect/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/dockerode": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz", + "integrity": "sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@balena/dockerignore": "^1.0.2", + "docker-modem": "^3.0.0", + "tar-fs": "~2.0.1" }, "engines": { - "node": ">=7.0.0" + "node": ">= 8.0" } }, - "node_modules/expect/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", + "node_modules/dockerode/node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", "dev": true, "dependencies": { - "type": "^2.7.2" + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "node_modules/docopt": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", + "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", "dev": true, - "dependencies": { - "mime-db": "^1.28.0" - }, "engines": { "node": ">=0.10.0" } }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "peer": true, "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" + "is-obj": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/dotenv-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dotenv-json/-/dotenv-json-1.0.0.tgz", + "integrity": "sha512-jAssr+6r4nKhKRudQ0HOzMskOFFi9+ubXWwmrSGJFgTvpjyPXCXsCsYbjif6mXp7uxA7xY3/LGaiTQukZzSbOQ==", + "dev": true + }, + "node_modules/duration": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", + "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "d": "1", + "es5-ext": "~0.10.46" } }, - "node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.776", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.776.tgz", + "integrity": "sha512-s694bi3+gUzlliqxjPHpa9NRTlhzTgB34aan+pVKZmOTGy2xoZXl+8E1B8i5p5rtev3PKMK/H4asgNejC+YHNg==", + "dev": true + }, + "node_modules/emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "shimmer": "^1.2.0" } }, - "node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.4.0" } }, - "node_modules/extglob/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/extglob/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "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-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extglob/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "engines": { - "node": ">=8.6.0" + "node": ">= 0.4" } }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, + "peer": true, "dependencies": { - "fill-range": "^7.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "es-errors": "^1.3.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" } }, - "node_modules/fast-glob/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, - "engines": { - "node": ">=0.12.0" + "peer": true, + "dependencies": { + "hasown": "^2.0.0" } }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=8.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-glob/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "is-number": "^7.0.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" }, "engines": { - "node": ">=8.0" + "node": ">=0.10" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", + "dev": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } }, - "node_modules/fast-xml-parser": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", - "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "node_modules/es6-set": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.6.tgz", + "integrity": "sha512-TE3LgGLDIBX332jq3ypv6bcOpkLO0AslAQo7p2VqX/1N46YNsvIWgvjojjSEnWEGWMhr1qUbYeTSir5J6mFHOw==", + "dev": true, "dependencies": { - "strnum": "^1.0.5" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "es6-iterator": "~2.0.3", + "es6-symbol": "^3.1.3", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=0.12" } }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dev": true, + "dependencies": { + "d": "^1.0.2", + "ext": "^1.7.0" + }, "engines": { - "node": ">= 4.9.1" + "node": ">=0.12" } }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" } }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, - "dependencies": { - "bser": "2.1.1" + "engines": { + "node": ">=6" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "dependencies": { - "pend": "~1.2.0" + "engines": { + "node": ">=0.8.0" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "peer": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, + "peer": true, "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "engines": { - "node": ">=4" + "peer": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "node_modules/eslint-config-airbnb-typescript": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-18.0.0.tgz", + "integrity": "sha512-oc+Lxzgzsu8FQyFVa4QFaVKiitTYiiW3frB9KYW5OWdPrqFc7FzxgB20hP4cHMlr+MBzGcLl3jnCOVOydL9mIg==", "dev": true, + "peer": true, "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" + "eslint-config-airbnb-base": "^15.0.0" }, - "engines": { - "node": ">=8" + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^7.0.0", + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "peer": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "peer": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "peer": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filesize": { - "version": "10.0.8", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.0.8.tgz", - "integrity": "sha512-/ylBrxZ1GAjgh2CEemKKLwTtmXfWqTtN1jRl6iqLwnMEucUX5cmaCCUPGstQOHVCcK9uYL6o1cPNakLQU2sasQ==", + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, + "peer": true, + "dependencies": { + "debug": "^3.2.7" + }, "engines": { - "node": ">= 10.4.0" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "peer": true, "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" + "ms": "^2.1.1" } }, - "node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "peer": true, "dependencies": { - "is-extendable": "^0.1.0" + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/find-requires": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/find-requires/-/find-requires-1.0.0.tgz", - "integrity": "sha512-UME7hNwBfzeISSFQcBEDemEEskpOjI/shPrpJM5PI4DSdn6hX0dmz+2dL70blZER2z8tSnTRL+2rfzlYgtbBoQ==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "peer": true, "dependencies": { - "es5-ext": "^0.10.49", - "esniff": "^1.1.0" - }, - "bin": { - "find-requires": "bin/find-requires.js" + "ms": "^2.1.1" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "peer": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "esutils": "^2.0.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "peer": true, "bin": { - "flat": "cli.js" + "semver": "bin/semver.js" } }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "node_modules/eslint-plugin-jest": { + "version": "28.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-28.5.0.tgz", + "integrity": "sha512-6np6DGdmNq/eBbA7HOUNV8fkfL86PYwBfwyb8n23FXgJNTR8+ot3smRHjza9LGsBBZRypK3qyF79vMjohIL8eQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "peer": true, + "dependencies": { + "@typescript-eslint/utils": "^6.0.0 || ^7.0.0" + }, "engines": { - "node": ">=4.0" + "node": "^16.10.0 || ^18.12.0 || >=20.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^6.0.0 || ^7.0.0", + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0", + "jest": "*" }, "peerDependenciesMeta": { - "debug": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { "optional": true } } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "peer": true, "dependencies": { - "is-callable": "^1.1.3" + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/eslint-plugin-react": { + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", "dev": true, + "peer": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" }, "engines": { - "node": ">= 0.12" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/formidable": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.2.tgz", - "integrity": "sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q==", - "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, - "funding": { - "url": "https://ko-fi.com/tunnckoCore/commissions" + "peer": true, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "peer": true, "dependencies": { - "map-cache": "^0.2.2" + "esutils": "^2.0.2" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "peer": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-security": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-3.0.0.tgz", + "integrity": "sha512-2Ij7PkmXIF2cKwoVkEgemwoXbOnxg5UfdhdcpNxZwJxC/10dbsdhHISrTyJ/n8DUkt3yiN6P1ywEgcMGjIwHIw==", "dev": true, + "peer": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "safe-regex": "^2.1.1" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/fs-extra/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "peer": true, "dependencies": { - "universalify": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">= 10.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "peer": true, "dependencies": { - "minipass": "^3.0.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">= 8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "dependencies": { - "yallist": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true }, - "node_modules/fs2": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/fs2/-/fs2-0.3.9.tgz", - "integrity": "sha512-WsOqncODWRlkjwll+73bAxVW3JPChDgaPX3DT4iTTm73UmG4VgALa7LaFblP232/DN60itkOrPZ8kaP1feksGQ==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "peer": true, "dependencies": { - "d": "^1.0.1", - "deferred": "^0.7.11", - "es5-ext": "^0.10.53", - "event-emitter": "^0.3.5", - "ignore": "^5.1.8", - "memoizee": "^0.4.14", - "type": "^2.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/generate-function": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", - "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "peer": true, "dependencies": { - "is-property": "^1.0.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">=6.9.0" - } + "peer": true }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "peer": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "peer": true, + "dependencies": { + "is-glob": "^4.0.3" + }, "engines": { - "node": ">=8.0.0" + "node": ">=10.13.0" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "peer": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { "node": ">=8" }, @@ -10568,247 +14614,236 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/get-stream": { + "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "peer": true, "dependencies": { - "pump": "^3.0.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=6" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "peer": true }, - "node_modules/git-raw-commits": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.11.tgz", - "integrity": "sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "peer": true, "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" + "p-locate": "^5.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/git-raw-commits/node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "peer": true, "dependencies": { - "readable-stream": "3" + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "dev": true, + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "peer": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/gopd/node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "dev": true, + "peer": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "estraverse": "^5.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gopd/node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "peer": true, "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=4.0" } }, - "node_modules/got/node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "node_modules/essentials": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/essentials/-/essentials-1.2.0.tgz", + "integrity": "sha512-kP/j7Iw7KeNE8b/o7+tr9uX2s1wegElGOoGZ2Xm35qBr4BbbEcH3/bxR2nfH9l9JANCq9AUrvKw+gRuHtZp0HQ==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "dependencies": { + "uni-global": "^1.0.0" } }, - "node_modules/got/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, + "peer": true, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/got/node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, + "peer": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/got/node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "dev": true, "dependencies": { - "mimic-response": "^3.1.0" - }, + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/got/node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/got/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/execa/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { "node": ">=8" }, @@ -10816,718 +14851,762 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/got/node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/got/node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", "dev": true, - "dependencies": { - "json-buffer": "3.0.1" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/got/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/got/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/got/node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "type": "^2.7.2" } }, - "node_modules/got/node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dev": true, + "dependencies": { + "mime-db": "^1.28.0" + }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/got/node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", "dev": true, "dependencies": { - "lowercase-keys": "^2.0.0" + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/graphlib": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", - "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "dependencies": { - "lodash": "^4.17.15" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" } }, - "node_modules/growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/external-editor/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">= 0.4.0" + "node": ">=8.6.0" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, - "engines": { - "node": ">=4" + "peer": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fast-xml-parser": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", + "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "funding": [ + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + }, + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 4.9.1" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "reusify": "^1.0.4" } }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "node_modules/fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", "dev": true, "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" + "bser": "2.1.1" } }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" + "pend": "~1.2.0" } }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "escape-string-regexp": "^1.0.5" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "peer": true, "dependencies": { - "whatwg-encoding": "^1.0.5" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, "engines": { - "node": ">=10.19.0" + "node": ">=4" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "node_modules/filesize": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.2.tgz", + "integrity": "sha512-Dx770ai81ohflojxhU+oG+Z2QGvKdYxgEr9OSA8UVrqhwNHjfH9A8f5NKfg83fEH8ZFA5N5llJo5T3PIoZ4CRA==", "dev": true, "engines": { - "node": ">=8.12.0" + "node": ">= 10.4.0" } }, - "node_modules/husky": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/husky/-/husky-3.0.9.tgz", - "integrity": "sha512-Yolhupm7le2/MqC1VYLk/cNmYxsSsqKkTyBhzQHhPK1jFnC89mmmNVuGtLNabjDI6Aj8UNIr0KpRNuBkiC4+sg==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "hasInstallScript": true, "dependencies": { - "chalk": "^2.4.2", - "ci-info": "^2.0.0", - "cosmiconfig": "^5.2.1", - "execa": "^1.0.0", - "get-stdin": "^7.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^4.2.0", - "please-upgrade-node": "^3.2.0", - "read-pkg": "^5.2.0", - "run-node": "^1.0.0", - "slash": "^3.0.0" - }, - "bin": { - "husky-run": "run.js", - "husky-upgrade": "lib/upgrader/bin.js" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=8.6.0" + "node": ">=8" } }, - "node_modules/husky/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/find-requires": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-requires/-/find-requires-1.0.0.tgz", + "integrity": "sha512-UME7hNwBfzeISSFQcBEDemEEskpOjI/shPrpJM5PI4DSdn6hX0dmz+2dL70blZER2z8tSnTRL+2rfzlYgtbBoQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "es5-ext": "^0.10.49", + "esniff": "^1.1.0" }, - "engines": { - "node": ">=8" + "bin": { + "find-requires": "bin/find-requires.js" } }, - "node_modules/husky/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/find-requires/node_modules/esniff": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-1.1.3.tgz", + "integrity": "sha512-SLBLpfE7xWgF/HbzhVuAwqnJDRqSCNZqcqaIMVm+f+PbTp1kFRWu6BuT83SATb4Tp+ovr+S+u7vDH7/UErAOkw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "d": "^1.0.1", + "es5-ext": "^0.10.62" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/husky/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/husky/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/find-up/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/husky/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "engines": { - "node": ">=6" + "bin": { + "flat": "cli.js" } }, - "node_modules/husky/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "peer": true, "dependencies": { - "find-up": "^4.0.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/husky/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, + "peer": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], "engines": { - "node": ">=8" + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", "dev": true, - "engines": { - "node": ">= 4" + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", "dev": true }, - "node_modules/import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, "dependencies": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "node_modules/fs-extra/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" + "universalify": "^2.0.0" }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/import-local/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "yallist": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/import-local/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fs2": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/fs2/-/fs2-0.3.9.tgz", + "integrity": "sha512-WsOqncODWRlkjwll+73bAxVW3JPChDgaPX3DT4iTTm73UmG4VgALa7LaFblP232/DN60itkOrPZ8kaP1feksGQ==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "d": "^1.0.1", + "deferred": "^0.7.11", + "es5-ext": "^0.10.53", + "event-emitter": "^0.3.5", + "ignore": "^5.1.8", + "memoizee": "^0.4.14", + "type": "^2.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/import-local/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" - }, + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-local/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-local/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "is-property": "^1.0.2" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=6.9.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/inquirer": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.5.tgz", - "integrity": "sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.21", - "mute-stream": "0.0.8", - "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^7.0.0" - }, "engines": { - "node": ">=12.0.0" + "node": ">=8.0.0" } }, - "node_modules/inquirer/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, "engines": { - "node": ">=7.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/inquirer/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/inquirer/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/inquirer/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "ini": "4.1.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "node_modules/is-callable": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", - "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, "engines": { "node": ">= 0.4" }, @@ -11535,589 +15614,624 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "dependencies": { - "ci-info": "^2.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { - "has": "^1.0.3" + "get-intrinsic": "^1.1.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "dependencies": { - "kind-of": "^3.0.2" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "lodash": "^4.17.15" } }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">=10.19.0" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 6" } }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=10.17.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "node_modules/husky": { + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", + "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, "bin": { - "is-inside-container": "cli.js" + "husky": "bin.mjs" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true }, - "node_modules/is-network-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", - "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=16" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, - "engines": { - "node": ">=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.8.19" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-property": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", - "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", "dev": true, "dependencies": { - "text-extensions": "^1.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/inquirer/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "node_modules/inquirer/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "dev": true, - "peerDependencies": { - "ws": "*" + "node": ">=8" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, + "peer": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "binary-extensions": "^2.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/java-invoke-local": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/java-invoke-local/-/java-invoke-local-0.0.6.tgz", - "integrity": "sha512-gZmQKe1QrfkkMjCn8Qv9cpyJFyogTYqkP5WCobX5RNaHsJzIV/6NvAnlnouOcwKr29QrxLGDGcqYuJ+ae98s1A==", - "dev": true, - "bin": { - "java-invoke-local": "lib/cli.js" - } - }, - "node_modules/jest": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.0.0.tgz", - "integrity": "sha512-OtoG+cpcP+UXx+pQ7rzoQ11Pfb5+OUkrsNn5YPc0GU2HeBktgTANonUZEgT6cCgUHX7jUiuDIusDNTL4iNcWGQ==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "@jest/core": "^26.0.0", - "import-local": "^3.0.2", - "jest-cli": "^26.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "bin": { - "jest": "bin/jest.js" + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { - "node": ">= 10.14.2" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" + "hasown": "^2.0.0" }, - "engines": { - "node": ">= 10.14.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "dependencies": { - "pump": "^3.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { "node": ">=8" @@ -12126,592 +16240,624 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, + "peer": true, "dependencies": { - "path-key": "^3.0.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/jest-changed-files/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">= 8" + "node": ">=0.10.0" } }, - "node_modules/jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" + "is-docker": "^3.0.0" }, - "engines": { - "node": ">= 10.14.2" + "bin": { + "is-inside-container": "cli.js" }, - "peerDependencies": { - "ts-node": ">=9.0.0" + "engines": { + "node": ">=14.16" }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-config/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "peer": true, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-config/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } }, - "node_modules/jest-config/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "isobject": "^3.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, + "peer": true, "engines": { - "node": ">=8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "call-bind": "^1.0.7" }, "engines": { - "node": ">= 10.14.2" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-diff/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/jest-diff/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/jest-diff/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "has-flag": "^4.0.0" + "which-typed-array": "^1.1.14" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "detect-newline": "^3.0.0" - }, "engines": { - "node": ">= 10.14.2" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, - "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - }, + "peer": true, "engines": { - "node": ">= 10.14.2" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-each/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "call-bind": "^1.0.2" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, + "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-each/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/jest-each/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/jest-each/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-each/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "dev": true, + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=10" } }, - "node_modules/jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" - }, - "optionalDependencies": { - "fsevents": "^2.1.2" + "node": ">=8" } }, - "node_modules/jest-haste-map/node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/jest-haste-map/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-haste-map/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-haste-map/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, - "engines": { - "node": ">=0.12.0" + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/jest-haste-map/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/java-invoke-local": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/java-invoke-local/-/java-invoke-local-0.0.6.tgz", + "integrity": "sha512-gZmQKe1QrfkkMjCn8Qv9cpyJFyogTYqkP5WCobX5RNaHsJzIV/6NvAnlnouOcwKr29QrxLGDGcqYuJ+ae98s1A==", + "dev": true, + "bin": { + "java-invoke-local": "lib/cli.js" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=8.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-haste-map/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" }, "engines": { - "node": ">=8.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "expect": "^26.6.2", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-jasmine2/node_modules/ansi-styles": { + "node_modules/jest-circus/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -12726,10 +16872,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -12742,7 +16888,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-jasmine2/node_modules/color-convert": { + "node_modules/jest-circus/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -12754,13 +16900,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-jasmine2/node_modules/color-name": { + "node_modules/jest-circus/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-jasmine2/node_modules/has-flag": { + "node_modules/jest-circus/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -12769,7 +16915,7 @@ "node": ">=8" } }, - "node_modules/jest-jasmine2/node_modules/supports-color": { + "node_modules/jest-circus/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -12781,35 +16927,40 @@ "node": ">=8" } }, - "node_modules/jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "dependencies": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -12824,10 +16975,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -12840,7 +16991,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-matcher-utils/node_modules/color-convert": { + "node_modules/jest-cli/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -12852,13 +17003,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-matcher-utils/node_modules/color-name": { + "node_modules/jest-cli/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-matcher-utils/node_modules/has-flag": { + "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -12867,7 +17018,7 @@ "node": ">=8" } }, - "node_modules/jest-matcher-utils/node_modules/supports-color": { + "node_modules/jest-cli/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -12879,27 +17030,52 @@ "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", - "stack-utils": "^2.0.2" + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { + "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -12914,22 +17090,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -12942,7 +17106,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/color-convert": { + "node_modules/jest-config/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -12954,25 +17118,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-message-util/node_modules/color-name": { + "node_modules/jest-config/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-message-util/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-message-util/node_modules/has-flag": { + "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -12981,134 +17133,132 @@ "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8.6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-message-util/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-message-util/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 10.14.2" + "node": ">=7.0.0" } }, - "node_modules/jest-plugin-context": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/jest-plugin-context/-/jest-plugin-context-2.9.0.tgz", - "integrity": "sha1-YCqsvmEhOjuyKQZ9sO7p4APrGTE=", - "dev": true, - "peerDependencies": { - "jest": "*" - } + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/ansi-styles": { + "node_modules/jest-each/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -13123,10 +17273,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -13139,7 +17289,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-resolve/node_modules/color-convert": { + "node_modules/jest-each/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -13151,26 +17301,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-resolve/node_modules/color-name": { + "node_modules/jest-each/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-resolve/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/has-flag": { + "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -13179,148 +17316,98 @@ "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-resolve/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-resolve/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/jest-resolve/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest-resolve/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/ansi-styles": { + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -13335,10 +17422,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -13351,7 +17438,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runner/node_modules/color-convert": { + "node_modules/jest-matcher-utils/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -13363,13 +17450,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runner/node_modules/color-name": { + "node_modules/jest-matcher-utils/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-runner/node_modules/has-flag": { + "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -13378,7 +17465,7 @@ "node": ">=8" } }, - "node_modules/jest-runner/node_modules/supports-color": { + "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -13390,48 +17477,27 @@ "node": ">=8" } }, - "node_modules/jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "dependencies": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "bin": { - "jest-runtime": "bin/jest-runtime.js" + "stack-utils": "^2.0.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/ansi-styles": { + "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -13446,19 +17512,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -13471,18 +17528,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/jest-runtime/node_modules/color-convert": { + "node_modules/jest-message-util/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -13494,98 +17540,174 @@ "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/color-name": { + "node_modules/jest-message-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-runtime/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/jest-plugin-context": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/jest-plugin-context/-/jest-plugin-context-2.9.0.tgz", + "integrity": "sha1-YCqsvmEhOjuyKQZ9sO7p4APrGTE=", + "dev": true, + "peerDependencies": { + "jest": "*" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", + "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/p-locate": { + "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/jest-runtime/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-runtime/node_modules/strip-bom": { + "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/supports-color": { + "node_modules/jest-resolve/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -13597,117 +17719,142 @@ "node": ">=8" } }, - "node_modules/jest-runtime/node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/jest-runtime/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/jest-runtime/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-runtime/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=6" + "node": ">=7.0.0" } }, - "node_modules/jest-serial-runner": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/jest-serial-runner/-/jest-serial-runner-1.2.1.tgz", - "integrity": "sha512-d59fF+7HdjNvQEL7B4WyFE+f8q5tGzlNUqtOnxTrT1ofun7O6/Lgm/j255BBgCY2fmSue/34M7Xy9+VWRByP0Q==", + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "peerDependencies": { - "jest-runner": "24.x - 29.x" + "engines": { + "node": ">=8" } }, - "node_modules/jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": ">=8" } }, - "node_modules/jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/ansi-styles": { + "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -13722,10 +17869,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -13738,7 +17885,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-snapshot/node_modules/color-convert": { + "node_modules/jest-runtime/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -13750,13 +17897,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-snapshot/node_modules/color-name": { + "node_modules/jest-runtime/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-snapshot/node_modules/has-flag": { + "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -13765,22 +17912,7 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jest-snapshot/node_modules/supports-color": { + "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -13792,36 +17924,47 @@ "node": ">=8" } }, - "node_modules/jest-sonar-reporter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", - "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", + "node_modules/jest-serial-runner": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-serial-runner/-/jest-serial-runner-1.2.1.tgz", + "integrity": "sha512-d59fF+7HdjNvQEL7B4WyFE+f8q5tGzlNUqtOnxTrT1ofun7O6/Lgm/j255BBgCY2fmSue/34M7Xy9+VWRByP0Q==", "dev": true, - "dependencies": { - "xml": "^1.0.1" - }, - "engines": { - "node": ">=8.0.0" + "peerDependencies": { + "jest-runner": "24.x - 29.x" } }, - "node_modules/jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "@types/node": "*", + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-util/node_modules/ansi-styles": { + "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -13836,22 +17979,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-util/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -13864,7 +17995,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-util/node_modules/color-convert": { + "node_modules/jest-snapshot/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -13876,25 +18007,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-util/node_modules/color-name": { + "node_modules/jest-snapshot/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-util/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-util/node_modules/has-flag": { + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -13903,29 +18022,19 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/jest-util/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8.6" + "node": ">=10" } }, - "node_modules/jest-util/node_modules/supports-color": { + "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -13937,36 +18046,36 @@ "node": ">=8" } }, - "node_modules/jest-util/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/jest-sonar-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/jest-sonar-reporter/-/jest-sonar-reporter-2.0.0.tgz", + "integrity": "sha512-ZervDCgEX5gdUbdtWsjdipLN3bKJwpxbvhkYNXTAYvAckCihobSLr9OT/IuyNIRT1EZMDDwR6DroWtrq+IL64w==", "dev": true, "dependencies": { - "is-number": "^7.0.0" + "xml": "^1.0.1" }, "engines": { - "node": ">=8.0" + "node": ">=8.0.0" } }, - "node_modules/jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", + "@jest/types": "^29.6.3", + "@types/node": "*", "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/ansi-styles": { + "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -13981,10 +18090,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -13997,7 +18106,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-validate/node_modules/color-convert": { + "node_modules/jest-util/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -14009,13 +18118,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-validate/node_modules/color-name": { + "node_modules/jest-util/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-validate/node_modules/has-flag": { + "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -14024,7 +18133,7 @@ "node": ">=8" } }, - "node_modules/jest-validate/node_modules/supports-color": { + "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -14036,25 +18145,24 @@ "node": ">=8" } }, - "node_modules/jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 10.14.2" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/ansi-styles": { + "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -14069,10 +18177,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -14085,7 +18193,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher/node_modules/color-convert": { + "node_modules/jest-validate/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -14097,13 +18205,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest-watcher/node_modules/color-name": { + "node_modules/jest-validate/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest-watcher/node_modules/has-flag": { + "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -14112,7 +18220,7 @@ "node": ">=8" } }, - "node_modules/jest-watcher/node_modules/supports-color": { + "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -14124,42 +18232,26 @@ "node": ">=8" } }, - "node_modules/jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest/node_modules/ansi-styles": { + "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", @@ -14174,19 +18266,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jest/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest/node_modules/chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -14199,18 +18282,7 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/jest/node_modules/color-convert": { + "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", @@ -14222,26 +18294,13 @@ "node": ">=7.0.0" } }, - "node_modules/jest/node_modules/color-name": { + "node_modules/jest-watcher/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/jest/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/has-flag": { + "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -14250,158 +18309,64 @@ "node": ">=8" } }, - "node_modules/jest/node_modules/jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "dependencies": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - }, - "bin": { - "jest": "bin/jest.js" - }, - "engines": { - "node": ">= 10.14.2" - } - }, - "node_modules/jest/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/jest-watcher/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jest/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { "node": ">=8" } }, - "node_modules/jest/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/jest/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/jest/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { "has-flag": "^4.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "node_modules/jest/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/jest/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "node": ">=10" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/jiti": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" + "bin": { + "jiti": "bin/jiti.js" } }, "node_modules/jmespath": { @@ -14448,66 +18413,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -14520,6 +18425,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-colorizer": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/json-colorizer/-/json-colorizer-2.2.2.tgz", @@ -14539,12 +18450,6 @@ "node": ">= 4" } }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -14573,21 +18478,19 @@ "node": ">=0.8" } }, - "node_modules/json-refs/node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "peer": true + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -14612,7 +18515,7 @@ "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", "dev": true, "engines": [ "node >= 0.2.0" @@ -14653,7 +18556,23 @@ "JSONStream": "bin.js" }, "engines": { - "node": "*" + "node": "*" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "peer": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" } }, "node_modules/jszip": { @@ -14690,9 +18609,9 @@ "dev": true }, "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", "dev": true }, "node_modules/jwt-decode": { @@ -14701,6 +18620,15 @@ "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==", "dev": true }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -14719,6 +18647,37 @@ "node": ">=6" } }, + "node_modules/lambda-event-mock": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lambda-event-mock/-/lambda-event-mock-1.5.0.tgz", + "integrity": "sha512-vx1d+vZqi7FF6B3+mAfHnY/6Tlp6BheL2ta0MJS0cIRB3Rc4I5cviHTkiJxHdE156gXx3ZjlQRJrS4puXvtrhA==", + "dev": true, + "dependencies": { + "@extra-number/significant-digits": "^1.1.1", + "clone-deep": "^4.0.1", + "uuid": "^3.3.3", + "vandium-utils": "^1.2.0" + }, + "engines": { + "node": ">=12.13" + } + }, + "node_modules/lambda-event-mock/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/lambda-event-mock/node_modules/vandium-utils": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/vandium-utils/-/vandium-utils-1.2.0.tgz", + "integrity": "sha512-yxYUDZz4BNo0CW/z5w4mvclitt5zolY7zjW97i6tTE+sU63cxYs1A6Bl9+jtIQa3+0hkeqY87k+7ptRvmeHe3g==", + "dev": true + }, "node_modules/lambda-leak": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lambda-leak/-/lambda-leak-2.0.0.tgz", @@ -14729,30 +18688,40 @@ } }, "node_modules/lambda-tester": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/lambda-tester/-/lambda-tester-3.5.0.tgz", - "integrity": "sha512-QTz0JsIxjOKEyxryDtQD1+fT9KRYifdId53fq+hDwplAe71DB7UuZwNWqjJy1GQZfW57UrQVOWEDuFm4S808GQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lambda-tester/-/lambda-tester-4.0.1.tgz", + "integrity": "sha512-ft6XHk84B6/dYEzyI3anKoGWz08xQ5allEHiFYDUzaYTymgVK7tiBkCEbuWx+MFvH7OpFNsJXVtjXm0X8iH3Iw==", "dev": true, "dependencies": { - "app-root-path": "^2.1.0", - "dotenv": "^5.0.0", + "app-root-path": "^3.0.0", + "dotenv": "^8.0.0", "dotenv-json": "^1.0.0", + "lambda-event-mock": "^1.5.0", "lambda-leak": "^2.0.0", - "semver": "^5.5.0", - "uuid": "^3.3.2", - "vandium-utils": "^1.1.1" + "semver": "^6.1.1", + "uuid": "^3.3.3", + "vandium-utils": "^2.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">=10.0" } }, "node_modules/lambda-tester/node_modules/dotenv": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-5.0.1.tgz", - "integrity": "sha512-4As8uPrjfwb7VXC+WnLCbXK7y+Ueb2B3zgNCePYfhxS1PYeaO1YTeplffTEcbfLhvFNGLAz90VvJs9yomG7bow==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz", + "integrity": "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==", "dev": true, "engines": { - "node": ">=4.6.0" + "node": ">=10" + } + }, + "node_modules/lambda-tester/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/lambda-tester/node_modules/uuid": { @@ -14765,6 +18734,26 @@ "uuid": "bin/uuid" } }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "peer": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "peer": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -14808,13 +18797,14 @@ } }, "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "peer": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -14836,24 +18826,26 @@ "dev": true }, "node_modules/liquibase": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/liquibase/-/liquibase-1.0.1.tgz", - "integrity": "sha512-P3cs1gbPNWgDC7asvAV3/xFsq3OhppwNBNXEI0+QGQ9DsTG0TZSwJfUJAKJT9V9UqeGU165rwQKNlWZe6RYu2w==", - "deprecated": "This package is being deprecated in favor of a new release under the same name. Please visit https://github.com/liquibase/node-liquibase for more information.", + "version": "4.27.0", + "resolved": "https://registry.npmjs.org/liquibase/-/liquibase-4.27.0.tgz", + "integrity": "sha512-VtsANEp3kULNbMOulqzxmH8SeX5Kyx4xCr1sTLLf+3oKSWOkhv2PnJbPVF65CxJATPo/aKk3Oh9cP6uPvvMRMQ==", + "bin": { + "node-liquibase": "dist/cli.js" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "p-locate": "^6.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -14895,12 +18887,6 @@ "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", "dev": true }, - "node_modules/lodash.isfunction": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", - "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", - "dev": true - }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", @@ -14913,6 +18899,12 @@ "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", "dev": true }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -15102,12 +19094,6 @@ "node": ">=8" } }, - "node_modules/lolex": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-4.2.0.tgz", - "integrity": "sha512-gKO5uExCXvSm6zbF562EvM+rd1kQDnB9AZBbiQVzf1ZmdDpxUSvpnAaVOP83N/31mRK8Ml8/VE8DMvsAZQ+7wg==", - "dev": true - }, "node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -15119,6 +19105,28 @@ "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", "dev": true }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -15142,325 +19150,84 @@ "node_modules/luxon": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", - "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", - "dev": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - }, - "node_modules/makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "dependencies": { - "tmpl": "1.0.x" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-obj": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", - "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/memoizee": { - "version": "0.4.15", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.15.tgz", - "integrity": "sha512-UBWmJpLZd5STPm7PMUlOw/TSy972M+z8gcyQ5veOnSDRREz/0bmpyTfKt3/51DhEBqCZQn1udM/5flcSPYhkdQ==", - "dev": true, - "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.53", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", - "integrity": "sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^4.0.1", - "resolve": "^1.20.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" + "tmpl": "1.0.5" } }, - "node_modules/meow/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" }, "engines": { - "node": ">=10" + "node": ">=0.12" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16.10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -15486,39 +19253,40 @@ } }, "node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.6.tgz", + "integrity": "sha512-Y4Ypn3oujJYxJcMacVgcs92wofTHxp9FzfDpQON4msDefoC0lb3ETvQLOdLcbhSwU1bz8HrL/1sygfBIHudrkQ==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4" + "node": ">=4.0.0" } }, "node_modules/mime-db": { @@ -15560,15 +19328,6 @@ "node": ">=4" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -15590,20 +19349,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -15638,41 +19383,16 @@ "node": ">=8" } }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mkdirp-classic": { @@ -15685,15 +19405,14 @@ "version": "0.38.3", "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", - "dev": true, "dependencies": { "obliterator": "^1.6.1" } }, "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } @@ -15711,9 +19430,9 @@ "dev": true }, "node_modules/mysql2": { - "version": "3.9.7", - "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.7.tgz", - "integrity": "sha512-KnJT8vYRcNAZv73uf9zpXqNbvBG7DJrs+1nACsjZP1HMJ1TgXEy8wnNilXAn/5i57JizXKtrUtwDB7HxT9DDpw==", + "version": "3.9.8", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.9.8.tgz", + "integrity": "sha512-+5JKNjPuks1FNMoy9TYpl77f+5frbTklz7eb3XDwbpsERRLEeXiW2PDEkakYF50UuKU2qwfGnyXpKYvukv8mGA==", "dependencies": { "denque": "^2.1.0", "generate-function": "^2.3.1", @@ -15755,27 +19474,12 @@ "node": ">=12" } }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "node_modules/nan": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", "dev": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } + "optional": true }, "node_modules/native-promise-only": { "version": "0.8.1", @@ -15818,25 +19522,25 @@ "dev": true }, "node_modules/nise": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/nise/-/nise-1.5.3.tgz", - "integrity": "sha512-Ymbac/94xeIrMf59REBPOv0thr+CJVFMhrlAkW/gjCIE58BGQdCj0x7KRCb3yz+Ga2Rz3E9XXSvUyyxqqhjQAQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.0.0.tgz", + "integrity": "sha512-K8ePqo9BFvN31HXwEtTNGzgrPpmvgciDsFz8aztFjt4LqKO/JeFD8tBOeuDiCMXrIl/m1YvfH8auSpxfaD09wg==", "dev": true, "dependencies": { - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "lolex": "^5.0.1", - "path-to-regexp": "^1.7.0" + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" } }, - "node_modules/nise/node_modules/lolex": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/lolex/-/lolex-5.1.2.tgz", - "integrity": "sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A==", + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { - "@sinonjs/commons": "^1.7.0" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/node-dir": { @@ -15852,9 +19556,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -15899,66 +19603,10 @@ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", "dev": true }, - "node_modules/node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "dev": true, - "optional": true, - "dependencies": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - } - }, - "node_modules/node-notifier/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-notifier/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/node-schedule": { @@ -15975,18 +19623,6 @@ "node": ">=6" } }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -15996,6 +19632,18 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-registry-utilities": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/npm-registry-utilities/-/npm-registry-utilities-1.0.0.tgz", @@ -16015,13 +19663,10 @@ } }, "node_modules/npm-registry-utilities/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -16030,23 +19675,17 @@ } }, "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -16056,91 +19695,140 @@ "node": ">=0.10.0" } }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "peer": true, "dependencies": { - "is-descriptor": "^0.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-copy/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "peer": true, "dependencies": { - "is-buffer": "^1.1.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "node_modules/object.hasown": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, + "peer": true, + "dependencies": { + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.9.0.tgz", - "integrity": "sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==", - "dev": true, + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "peer": true, "dependencies": { - "isobject": "^3.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" + "node": ">= 0.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/obliterator": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", - "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", - "dev": true + "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==" }, "node_modules/obuf": { "version": "1.1.2", @@ -16188,38 +19876,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "peer": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/optionator/node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, "node_modules/ora": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", @@ -16322,16 +19996,13 @@ "node": ">=0.10.0" } }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-event": { @@ -16352,7 +20023,7 @@ "node_modules/p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { "node": ">=4" @@ -16374,15 +20045,42 @@ } }, "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "p-limit": "^4.0.0" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -16428,23 +20126,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-retry": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", - "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", - "dev": true, - "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", - "retry": "^0.13.1" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-timeout": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", @@ -16457,6 +20138,15 @@ "node": ">=8" } }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pako": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", @@ -16475,15 +20165,6 @@ "node": ">=6" } }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parse-json": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", @@ -16502,21 +20183,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -16536,22 +20202,22 @@ } }, "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/path-loader": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.10.tgz", - "integrity": "sha512-CMP0v6S6z8PHeJ6NFVyVJm6WyJjIwFvyz2b0n2/4bKdS/0uZa/9sKUlYZzubrn3zuDRU0zIuEDX9DZYQ2ZI8TA==", + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", + "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", "dev": true, "dependencies": { "native-promise-only": "^0.8.1", - "superagent": "^3.8.3" + "superagent": "^7.1.6" } }, "node_modules/path-parse": { @@ -16561,18 +20227,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", - "dev": true, - "dependencies": { - "isarray": "0.0.1" - } - }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", + "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", "dev": true }, "node_modules/path-type": { @@ -16648,9 +20305,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -16705,33 +20362,84 @@ } }, "node_modules/pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "node-modules-regexp": "^1.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/please-upgrade-node": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", - "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "semver-compare": "^1.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" } }, "node_modules/postgres-array": { @@ -16775,73 +20483,56 @@ "integrity": "sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==" }, "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "peer": true, "engines": { "node": ">= 0.8.0" } }, "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", + "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-format/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/pretty-format/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/printj": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", @@ -16875,26 +20566,72 @@ "node": ">=10.0" } }, - "node_modules/promise-queue": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.5.tgz", - "integrity": "sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==", + "node_modules/promise-queue": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/promise-queue/-/promise-queue-2.2.5.tgz", + "integrity": "sha512-p/iXrPSVfnqPft24ZdNNLECw/UrtLTpT3jpAAMzl/o5/rDsGCPo3/CQS2611flL6LkoEJ3oQZw7C8Q80ZISXRQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, - "engines": { - "node": ">= 0.8.0" + "peer": true + }, + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" } }, - "node_modules/prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", + "node_modules/properties-reader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/properties-reader/-/properties-reader-2.3.0.tgz", + "integrity": "sha512-z597WicA7nDZxK12kZqHr2TcvwNU1GCfA5UwfDY/HDp3hXPoPlb5rlEx9bwGTiJnc0OqbBTkU975jDToth8Gxw==", "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "mkdirp": "^1.0.4" }, "engines": { - "node": ">= 6" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/steveukx/properties?sponsor=1" } }, "node_modules/proxy-from-env": { @@ -16903,12 +20640,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -16924,23 +20655,29 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -16958,12 +20695,6 @@ "node": ">=0.4.x" } }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -16984,6 +20715,12 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/quick-lru": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", @@ -16997,9 +20734,9 @@ } }, "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/readable-stream": { @@ -17033,79 +20770,107 @@ } }, "node_modules/readdir-glob": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.1.tgz", - "integrity": "sha512-91/k1EzZwDx6HbERR+zucygRFfiPl2zkIYZtv3Jjr6Mn7SkKcVct8aVO+sSRiGMc6fLf72du3d92/uY63YPdEA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", "dev": true, "dependencies": { - "minimatch": "^3.0.4" + "minimatch": "^5.1.0" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/readdir-glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "picomatch": "^2.2.1" + "balanced-match": "^1.0.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=8.10.0" + "node": ">=10" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" + "picomatch": "^2.2.1" }, "engines": { - "node": ">=8" + "node": ">=8.10.0" } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, + "peer": true, "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "peer": true }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "peer": true, + "bin": { + "regexp-tree": "bin/regexp-tree" } }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/require-directory": { @@ -17126,12 +20891,6 @@ "node": ">=0.10.0" } }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -17163,7 +20922,7 @@ "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -17172,46 +20931,27 @@ "node": ">=8" } }, - "node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-global": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", - "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", "dev": true, - "dependencies": { - "global-dirs": "^0.1.1" - }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/resolve-global/node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "dependencies": { - "ini": "^1.3.4" + "lowercase-keys": "^2.0.0" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "dev": true - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -17225,19 +20965,10 @@ "node": ">=8" } }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true, - "engines": { - "node": ">=0.12" - } - }, "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { "node": ">= 4" @@ -17258,6 +20989,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, + "peer": true, "dependencies": { "glob": "^7.1.3" }, @@ -17268,15 +21000,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true, - "engines": { - "node": "6.* || >= 7.*" - } - }, "node_modules/run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -17286,18 +21009,6 @@ "node": ">=0.12.0" } }, - "node_modules/run-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/run-node/-/run-node-1.0.0.tgz", - "integrity": "sha512-kc120TBlQ3mih1LSzdAJXo4xn/GWS2ec0l3S+syHDXP9uRr0JAT8Qd3mdMuyjqCzeZktgP3try92cEgf9Nks8A==", - "dev": true, - "bin": { - "run-node": "run-node" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -17354,9 +21065,33 @@ } }, "node_modules/rxjs/node_modules/tslib": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", - "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true }, "node_modules/safe-buffer": { @@ -17380,59 +21115,41 @@ ] }, "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", "dev": true, + "peer": true, "dependencies": { - "ret": "~0.1.10" + "regexp-tree": "~0.1.1" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "bin": { - "sane": "src/cli.js" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, "node_modules/seek-bzip": { "version": "1.0.6", @@ -17447,6 +21164,12 @@ "seek-table": "bin/seek-bzip-table" } }, + "node_modules/seek-bzip/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -17455,27 +21178,22 @@ "semver": "bin/semver" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", - "dev": true - }, "node_modules/seq-queue": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" }, "node_modules/serverless": { - "version": "3.33.0", - "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.33.0.tgz", - "integrity": "sha512-qmG0RMelsWmnS5Smxoy0CbjpecgnJlM89wzSIgJqfkGlmOo2nJdd8y0/E6KlaTsaozlPKkjUBDzis2nF8VNO2g==", + "version": "3.38.0", + "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.38.0.tgz", + "integrity": "sha512-NJE1vOn8XmQEqfU9UxmVhkUFaCRmx6FhYw/jITN863WlOt4Y3PQbj3hwQyIb5QS1ZrXFq5ojklwewUXH7xGpdA==", "dev": true, "hasInstallScript": true, "dependencies": { - "@serverless/dashboard-plugin": "^6.2.3", - "@serverless/platform-client": "^4.3.2", - "@serverless/utils": "^6.11.1", + "@serverless/dashboard-plugin": "^7.2.0", + "@serverless/platform-client": "^4.5.1", + "@serverless/utils": "^6.13.1", + "abort-controller": "^3.0.0", "ajv": "^8.12.0", "ajv-formats": "^2.1.1", "archiver": "^5.3.1", @@ -17498,7 +21216,6 @@ "fs-extra": "^10.1.0", "get-stdin": "^8.0.0", "globby": "^11.1.0", - "got": "^11.8.6", "graceful-fs": "^4.2.11", "https-proxy-agent": "^5.0.1", "is-docker": "^2.2.1", @@ -17539,16 +21256,15 @@ } }, "node_modules/serverless-offline": { - "version": "13.3.3", - "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-13.3.3.tgz", - "integrity": "sha512-KVw+khABJumgHsOrddtRvjKY5CDPCShOS4SYPvXXvmOrsOcS/upLEPdgcExXgAaF3OUBRsrHmroqXiLko06cbw==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/serverless-offline/-/serverless-offline-13.6.0.tgz", + "integrity": "sha512-aSMg9TNfFjVj4QFmHqPzLwbwCSVmrpeoe96ozOXaesn2VX+4lyS+kTF1TXh4pZd5/ef9cfcma3jcqmgnShrUyA==", "dev": true, "dependencies": { - "@aws-sdk/client-lambda": "^3.496.0", + "@aws-sdk/client-lambda": "^3.509.0", "@hapi/boom": "^10.0.1", "@hapi/h2o2": "^10.0.4", - "@hapi/hapi": "^21.3.2", - "@serverless/utils": "^6.15.0", + "@hapi/hapi": "^21.3.3", "array-unflat-js": "^0.1.3", "boxen": "^7.1.1", "chalk": "^5.3.0", @@ -17557,7 +21273,7 @@ "fs-extra": "^11.2.0", "is-wsl": "^3.1.0", "java-invoke-local": "0.0.6", - "jose": "^5.2.0", + "jose": "^5.2.1", "js-string-escape": "^1.0.1", "jsonpath-plus": "^8.0.0", "jsonschema": "^1.4.1", @@ -17565,7 +21281,6 @@ "luxon": "^3.4.4", "node-schedule": "^2.1.1", "p-memoize": "^7.1.1", - "p-retry": "^6.2.0", "velocityjs": "^2.0.6", "ws": "^8.16.0" }, @@ -17588,20 +21303,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/serverless-offline/node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/serverless-offline/node_modules/execa": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", @@ -17753,36 +21454,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/serverless-offline/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/serverless-offline/node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/serverless-offline/node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/serverless-offline/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -17813,22 +21484,7 @@ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/serverless-offline/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "node": ">= 10.0.0" } }, "node_modules/serverless-offline/node_modules/ws": { @@ -17933,48 +21589,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/serverless/node_modules/aws-sdk": { - "version": "2.1426.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1426.0.tgz", - "integrity": "sha512-qq4ydcRzQW2IqjMdCz5FklORREEtkSCJ2tm9CUJ2PaUOaljxpdxq9UI64vXiyRD+GIp5vdkmVNoTRi2rCXh3rA==", - "dev": true, - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/serverless/node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/serverless/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/serverless/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -18003,21 +21617,6 @@ "node": ">=8" } }, - "node_modules/serverless/node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "engines": { - "node": ">=8" - } - }, "node_modules/serverless/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -18036,44 +21635,6 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/serverless/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/serverless/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/serverless/node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serverless/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -18083,15 +21644,6 @@ "node": ">=8" } }, - "node_modules/serverless/node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/serverless/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -18104,39 +21656,11 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/serverless/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/serverless/node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/serverless/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -18159,67 +21683,35 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/serverless/node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/serverless/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/serverless/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/set-value/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, "node_modules/setimmediate": { @@ -18228,259 +21720,155 @@ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "dev": true }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "kind-of": "^6.0.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/simple-git": { - "version": "3.19.1", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.19.1.tgz", - "integrity": "sha512-Ck+rcjVaE1HotraRAS8u/+xgTvToTuoMkT9/l9lvuP5jftwnYUp6DwuJzsKErHgfyRk8IB8pqGHWEbM3tLgV1w==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "@kwsites/file-exists": "^1.1.1", - "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.4" + "shebang-regex": "^3.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/steveukx/git-js?sponsor=1" - } - }, - "node_modules/sinon": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-7.5.0.tgz", - "integrity": "sha512-AoD0oJWerp0/rY9czP/D6hDTTUYGpObhZjMpd7Cl/A6+j0xBE+ayL/ldfggkBXUs0IkvIiM1ljM8+WkOc5k78Q==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.4.0", - "@sinonjs/formatio": "^3.2.1", - "@sinonjs/samsam": "^3.3.3", - "diff": "^3.5.0", - "lolex": "^4.2.0", - "nise": "^1.5.2", - "supports-color": "^5.5.0" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, "engines": { - "node": ">=0.3.1" + "node": ">=8" } }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { + "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "kind-of": "^6.0.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/simple-git": { + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.24.0.tgz", + "integrity": "sha512-QqAKee9Twv+3k8IFOFfPB2hnk6as6Y6ACUpwCtQvRYBAes23Wv3SZlHVobAzqcE8gfsisCvPw3HGW3HYM+VYYw==", "dev": true, "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "@kwsites/file-exists": "^1.1.1", + "@kwsites/promise-deferred": "^1.1.1", + "debug": "^4.3.4" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "github", + "url": "https://github.com/steveukx/git-js?sponsor=1" } }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "node_modules/sinon": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-18.0.0.tgz", + "integrity": "sha512-+dXDXzD1sBO6HlmZDd7mXZCR/y5ECiEiGCBSGuFD/kZ0bDTofPYc6JaeGmPSF+1j1MejGUWkORbYOLDyvqCWpA==", "dev": true, "dependencies": { - "kind-of": "^3.2.0" + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/samsam": "^8.0.0", + "diff": "^5.2.0", + "nise": "^6.0.0", + "supports-color": "^7" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" } }, - "node_modules/snapdragon-util/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "node_modules/sinon/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", "dev": true, "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/sinon/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">=0.3.1" } }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "node_modules/sinon/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "is-extendable": "^0.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/snapdragon/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/sonar-scanner": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/sonar-scanner/-/sonar-scanner-3.1.0.tgz", @@ -18521,33 +21909,10 @@ "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", "dev": true }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", - "dev": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, "node_modules/source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { "buffer-from": "^1.0.0", @@ -18563,70 +21928,19 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "deprecated": "See https://github.com/lydell/source-map-url#deprecated", - "dev": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz", - "integrity": "sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ==", - "dev": true - }, "node_modules/split-ca": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", - "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY=", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", "dev": true }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, - "dependencies": { - "readable-stream": "^3.0.0" + "engines": { + "node": ">= 10.x" } }, "node_modules/sprintf-js": { @@ -18671,29 +21985,22 @@ "@types/ssh2-streams": "*" } }, - "node_modules/ssh-remote-port-forward/node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "dev": true, - "optional": true - }, - "node_modules/ssh-remote-port-forward/node_modules/ssh2": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.11.0.tgz", - "integrity": "sha512-nfg0wZWGSsfUe/IBJkXVll3PEZ//YH2guww+mP88gTpuSU4FtZN7zu9JoeTGOyCNx2dTDtT9fOpWwlzyj4uOOw==", + "node_modules/ssh2": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", "dev": true, "hasInstallScript": true, "dependencies": { - "asn1": "^0.2.4", + "asn1": "^0.2.6", "bcrypt-pbkdf": "^1.0.2" }, "engines": { "node": ">=10.16.0" }, "optionalDependencies": { - "cpu-features": "~0.0.4", - "nan": "^2.16.0" + "cpu-features": "~0.0.9", + "nan": "^2.18.0" } }, "node_modules/stack-chain": { @@ -18722,31 +22029,6 @@ "node": ">=8" } }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/stream-buffers": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.2.tgz", @@ -18767,13 +22049,17 @@ "is-stream": "^1.1.0" } }, - "node_modules/stream-to-array": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-2.3.0.tgz", - "integrity": "sha1-u/azn19D7DC8cbq8s3VXrOzzQ1M=", + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", "dev": true, "dependencies": { - "any-promise": "^1.1.0" + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -18818,6 +22104,82 @@ "node": ">=8" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "peer": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -18830,6 +22192,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-dirs": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", @@ -18839,15 +22210,6 @@ "is-natural-number": "^4.0.1" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -18857,16 +22219,16 @@ "node": ">=6" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "min-indent": "^1.0.0" - }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-outer": { @@ -18892,120 +22254,76 @@ "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", "dev": true, "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/superagent": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.8.3.tgz", - "integrity": "sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA==", - "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", - "dev": true, - "dependencies": { - "component-emitter": "^1.2.0", - "cookiejar": "^2.1.0", - "debug": "^3.1.0", - "extend": "^3.0.0", - "form-data": "^2.3.1", - "formidable": "^1.2.0", - "methods": "^1.1.1", - "mime": "^1.4.1", - "qs": "^6.5.1", - "readable-stream": "^2.3.5" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/superagent/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/superagent/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/superagent/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", + "node_modules/superagent": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", + "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" }, "engines": { - "node": ">=8" + "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/supports-hyperlinks/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/superagent/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/tar": { "version": "6.2.1", @@ -19025,15 +22343,28 @@ } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", "dev": true, "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", - "tar-stream": "^2.1.4" + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-fs/node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, "node_modules/tar-stream": { @@ -19061,34 +22392,6 @@ "node": ">=10" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -19104,35 +22407,56 @@ } }, "node_modules/testcontainers": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-7.6.2.tgz", - "integrity": "sha512-mRjshuowSLPiNSp+ogPMe1UcWlD8T/KCasmDRSmJIQWG8j2ifPnBkbU8Atw8Ot1ARN9K0d6F59zs0+LO1LlIrw==", + "version": "10.9.0", + "resolved": "https://registry.npmjs.org/testcontainers/-/testcontainers-10.9.0.tgz", + "integrity": "sha512-LN+cKAOd61Up9SVMJW+3VFVGeVQG8JBqZhEQo2U0HBfIsAynyAXcsLBSo+KZrOfy9SBz7pGHctWN/KabLDbNFA==", "dev": true, "dependencies": { - "@types/archiver": "^5.1.0", - "@types/dockerode": "^3.2.1", - "archiver": "^5.2.0", + "@balena/dockerignore": "^1.0.2", + "@types/dockerode": "^3.3.24", + "archiver": "^5.3.2", + "async-lock": "^1.4.1", "byline": "^5.0.0", - "debug": "^4.3.1", - "docker-compose": "^0.23.5", - "dockerode": "^3.2.1", + "debug": "^4.3.4", + "docker-compose": "^0.24.6", + "dockerode": "^3.3.5", "get-port": "^5.1.1", - "glob": "^7.1.6", - "slash": "^3.0.0", - "ssh-remote-port-forward": "^1.0.3", - "stream-to-array": "^2.3.0", - "tar-fs": "^2.1.1" + "node-fetch": "^2.7.0", + "proper-lockfile": "^4.1.2", + "properties-reader": "^2.3.0", + "ssh-remote-port-forward": "^1.0.4", + "tar-fs": "^3.0.5", + "tmp": "^0.2.1" + } + }, + "node_modules/testcontainers/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" } }, "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "dev": true, "engines": { - "node": ">=0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "peer": true + }, "node_modules/throat": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", @@ -19188,56 +22512,16 @@ "node": ">=4" } }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-object-path/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, "node_modules/token-types": { @@ -19277,78 +22561,23 @@ } ] }, - "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "node_modules/traverse": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", "dev": true, "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" + "node": ">= 0.4" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tr46/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -19361,45 +22590,63 @@ "node": ">=0.10.0" } }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, "node_modules/ts-jest": { - "version": "26.5.1", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.1.tgz", - "integrity": "sha512-G7Rmo3OJMvlqE79amJX8VJKDiRcd7/r61wh9fnvvG8cAjhA9edklGw/dCxRSQmfZ/z8NDums5srSVgwZos1qfg==", + "version": "29.1.4", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.4.tgz", + "integrity": "sha512-YiHwDhSvCiItoAgsKtoLFCuakDzDsJ1DLDnSouTaTmdOcOwIkSzbLXduaQ6M5DRVhuZC/NYaaZ/mtHbWMv/S6Q==", "dev": true, "dependencies": { - "@types/jest": "26.x", "bs-logger": "0.x", - "buffer-from": "1.x", "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", - "lodash": "4.x", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "4.x", "make-error": "1.x", - "mkdirp": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" + "semver": "^7.5.3", + "yargs-parser": "^21.0.1" }, "bin": { "ts-jest": "cli.js" }, "engines": { - "node": ">= 10" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { - "jest": ">=26 <27", - "typescript": ">=3.8 <5.0" - } - }, - "node_modules/ts-jest/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", + "@jest/types": "^29.0.0", + "babel-jest": "^29.0.0", + "jest": "^29.0.0", + "typescript": ">=4.3 <6" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } } }, "node_modules/ts-jest/node_modules/semver": { @@ -19417,15 +22664,6 @@ "node": ">=10" } }, - "node_modules/ts-jest/node_modules/yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -19484,91 +22722,46 @@ "node": ">=0.4.0" } }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/tslint": { - "version": "5.20.0", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.20.0.tgz", - "integrity": "sha512-2vqIvkMHbnx8acMogAERQ/IuINOq6DFqgF8/VDvhEkBqQh/x6SP0Y+OHnKth9/ZcHQSroOZwUQSN18v8KKF0/g==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^4.0.1", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, - "bin": { - "tslint": "bin/tslint" - }, - "engines": { - "node": ">=4.8.0" - }, - "peerDependencies": { - "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev" - } - }, - "node_modules/tslint-no-unused-expression-chai": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/tslint-no-unused-expression-chai/-/tslint-no-unused-expression-chai-0.1.4.tgz", - "integrity": "sha512-frEWKNTcq7VsaWKgUxMDOB2N/cmQadVkUtUGIut+2K4nv/uFXPfgJyPjuNC/cHyfUVqIkHMAvHOCL+d/McU3nQ==", + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "peer": true, "dependencies": { - "tsutils": "^3.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "tslint": ">=5.1.0" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/tslint-no-unused-expression-chai/node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "peer": true, "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" + "minimist": "^1.2.0" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/tslint/node_modules/builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/tsutils": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "dependencies": { - "tslib": "^1.8.1" - }, - "peerDependencies": { - "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" - } + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/tweetnacl": { "version": "0.14.5", @@ -19583,12 +22776,13 @@ "dev": true }, "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "peer": true, "dependencies": { - "prelude-ls": "~1.1.2" + "prelude-ls": "^1.2.1" }, "engines": { "node": ">= 0.8.0" @@ -19604,33 +22798,136 @@ } }, "node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "peer": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "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", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", "dev": true, "dependencies": { - "is-typedarray": "^1.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/typescript": { - "version": "3.9.9", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.9.tgz", - "integrity": "sha512-kdMjTiekY+z/ubJCATUPlRDl39vXYiMV9iyeMuEuXZh2we6zz80uovNN2WlAxmmdE/Z/YQe+EbOEXB5RHEED3w==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/unbzip2-stream": { @@ -19667,6 +22964,11 @@ "ieee754": "^1.1.13" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/uni-global": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/uni-global/-/uni-global-1.0.0.tgz", @@ -19676,19 +22978,16 @@ "type": "^2.5.0" } }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/universalify": { @@ -19700,61 +22999,43 @@ "node": ">= 4.0.0" } }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "dependencies": { - "isarray": "1.0.0" + "bin": { + "update-browserslist-db": "cli.js" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" + "peerDependencies": { + "browserslist": ">= 4.21.0" } }, "node_modules/uri-js": { @@ -19775,13 +23056,6 @@ "node": ">=6" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "dev": true - }, "node_modules/url": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", @@ -19791,25 +23065,6 @@ "querystring": "0.2.0" } }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", @@ -19829,9 +23084,13 @@ "dev": true }, "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], "bin": { "uuid": "dist/bin/uuid" } @@ -19842,36 +23101,27 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" }, "node_modules/v8-to-istanbul": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.1.tgz", - "integrity": "sha512-p0BB09E5FRjx0ELN6RgusIPsSPhtgexSRcKETybEs6IGOTXJSZqfwxp7r//55nnu0f1AxltY5VvdVqy2vZf9AA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "convert-source-map": "^2.0.0" }, "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" + "node": ">=10.12.0" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/validate-npm-package-name": { @@ -19884,10 +23134,13 @@ } }, "node_modules/vandium-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vandium-utils/-/vandium-utils-1.2.0.tgz", - "integrity": "sha1-RHNd5LdkGgXeWevpRfF05YLbT1k=", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vandium-utils/-/vandium-utils-2.0.0.tgz", + "integrity": "sha512-XWbQ/0H03TpYDXk8sLScBEZpE7TbA0CHDL6/Xjt37IBYKLsHUQuBlL44ttAUs9zoBOLFxsW7HehXcuWCNyqOxQ==", + "dev": true, + "engines": { + "node": ">=10.16" + } }, "node_modules/velocityjs": { "version": "2.0.6", @@ -19904,35 +23157,13 @@ "node": ">=0.8.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dev": true, "dependencies": { - "makeerror": "1.0.x" + "makeerror": "1.0.12" } }, "node_modules/watchpack": { @@ -19961,79 +23192,100 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, "engines": { - "node": ">=10.4" + "node": ">= 8" } }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "dependencies": { - "iconv-lite": "0.4.24" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, + "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "peer": true }, - "node_modules/whatwg-url": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", - "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "peer": true, "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.0.2", - "webidl-conversions": "^6.1.0" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" }, "engines": { - "node": ">=10" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" + "node": ">= 0.4" }, - "bin": { - "which": "bin/which" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -20112,6 +23364,7 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -20173,15 +23426,16 @@ "dev": true }, "node_modules/write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, "dependencies": { "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, "node_modules/ws": { @@ -20211,16 +23465,10 @@ "integrity": "sha1-eLpyAgApxbyHuKgaPPzXS0ovweU=", "dev": true }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -20237,12 +23485,6 @@ "node": ">=4.0" } }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -20267,12 +23509,15 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", "dev": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yaml-ast-parser": { diff --git a/package.json b/package.json index 4e1553b..a58ad7f 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,16 @@ "test": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local AWS_XRAY_CONTEXT_MISSING=LOG_ERROR jest --selectProjects UNIT --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/!(*conversion).{js,ts}\"", "test-i": "cross-env SQS_BUCKET=local AWS_REGION=local USE_CONTAINERIZED_DATABASE=0 BRANCH=local jest --selectProjects INTEGRATION --runInBand", "test-local-i": "cross-env SQS_BUCKET=local AWS_REGION=local BRANCH=local USE_CONTAINERIZED_DATABASE=1 jest --selectProjects INTEGRATION --runInBand --coverage --collectCoverageFrom=\"src/!(models)/**/!(*conversion).{js,ts}\"", - "lint": "tslint src/**/*.ts tests/**/*.ts -q", + "lint:fix": "eslint '*/**/*.ts' --quiet --fix", + "lint": "eslint '*/**/*.ts'", "prettier": "prettier --write ./**/*.{js,ts}", "prepush": "npm run build && npm run test-local-i", "sonar-scanner": "sonar-scanner", "audit": "npm audit --omit=dev", "package": "mkdir -p ${ZIP_NAME} && cp package.json package-lock.json ${ZIP_NAME}/ && cp -r .build/src/* ${ZIP_NAME}/ && cd ${ZIP_NAME} && npm ci --production && rm package.json package-lock.json && zip -qr ../${ZIP_NAME}.zip .", "security-checks": "git secrets --register-aws && git secrets --scan", - "tools-setup": "liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update" + "tools-setup": "liquibase --changeLogFile ../cvs-nop/changelog-master.xml --username root --password 12345 --url jdbc:mysql://127.0.0.1:3306/CVSBNOP?createDatabaseIfNotExist=true --classpath /liquibase/lib/mysql.jar update", + "prepare": "husky install" }, "nyc": { "include": [ @@ -53,71 +55,60 @@ "author": "", "license": "ISC", "dependencies": { - "@aws-sdk/client-dynamodb-streams": "3.565.0", + "@aws-sdk/client-dynamodb": "3.577.0", + "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", - "@types/lambda-tester": "3.6.0", + "@aws-sdk/util-dynamodb": "3.577.0", + "@types/lambda-tester": "4.0.3", "aws-lambda": "1.0.7", "aws-xray-sdk": "3.6.0", - "date-fns": "2.21.2", - "liquibase": "1.0.1", - "moment": "2.29.4", - "mysql2": "3.9.7", - "prettier": "2.2.1", - "reflect-metadata": "0.1.13", + "date-fns": "3.6.0", + "liquibase": "4.27.0", + "moment": "2.30.1", + "mysql2": "3.9.8", + "reflect-metadata": "0.2.2", "ts-node-register": "1.0.0", - "uuid": "8.3.2" + "uuid": "9.0.1" }, "devDependencies": { - "@aws-sdk/client-dynamodb": "3.554.0", - "@aws-sdk/util-dynamodb": "3.266.0", - "@commitlint/cli": "12.1.4", - "@commitlint/config-conventional": "12.1.4", - "@types/aws-lambda": "8.10.34", - "@types/jest": "26.0.0", - "@types/jest-plugin-context": "2.9.2", - "@types/node": "12.20.7", - "@types/request-promise": "4.1.44", - "@types/sinon": "7.5.0", - "@types/uuid": "8.3.0", + "@commitlint/cli": "19.3.0", + "@commitlint/config-conventional": "19.2.2", + "@dvsa/eslint-config-ts": "3.0.1", + "@types/aws-lambda": "8.10.138", + "@types/jest": "29.5.12", + "@types/jest-plugin-context": "2.9.7", + "@types/node": "20.12.12", + "@types/request-promise": "4.1.51", + "@types/sinon": "17.0.3", + "@types/uuid": "9.0.8", + "@typescript-eslint/eslint-plugin": "7.11.0", + "@typescript-eslint/parser": "7.11.0", "audit-filter": "0.5.0", "aws-lambda-mock-context": "3.2.1", "aws-sdk-client-mock": "4.0.0", - "commitlint": "17.0.0", + "commitlint": "19.3.0", "cross-env": "7.0.3", - "husky": "3.0.9", - "jest": "26.0.0", + "husky": "9.0.11", + "jest": "29.7.0", + "jest-mock": "29.7.0", "jest-plugin-context": "2.9.0", "jest-serial-runner": "1.2.1", "jest-sonar-reporter": "2.0.0", - "lambda-tester": "3.5.0", - "serverless": "3.33.0", - "serverless-offline": "13.3.3", + "lambda-tester": "4.0.1", + "prettier": "3.2.5", + "serverless": "3.38.0", + "serverless-offline": "13.6.0", "serverless-plugin-tracing": "2.0.0", "serverless-plugin-typescript": "2.1.5", - "sinon": "7.5.0", + "sinon": "18.0.0", "sonar-scanner": "3.1.0", - "testcontainers": "7.6.2", - "ts-jest": "26.5.1", - "tslint": "5.20.0", - "tslint-no-unused-expression-chai": "0.1.4", - "typescript": "3.9.9" + "testcontainers": "10.9.0", + "ts-jest": "29.1.4", + "typescript": "5.4.5" }, "jestSonar": { "reportPath": ".reports", "reportFile": "test-report.xml", "indent": 4 - }, - "jest": { - "coverageDirectory": "./coverage", - "collectCoverage": true, - "testResultsProcessor": "jest-sonar-reporter", - "testURL": "http://localhost" - }, - "husky": { - "hooks": { - "commit-msg": "commitlint -E HUSKY_GIT_PARAMS", - "pre-commit": "npm test && npm run security-checks && npm run audit && npm run lint && npm run prettier", - "pre-push": "npm run prepush" - } } } diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index cf7ade1..0f8151c 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -5,13 +5,13 @@ import { Handler, SQSEvent, StreamRecord, -} from "aws-lambda"; -import { convert } from "../services/entity-conversion"; -import { DynamoDbImage } from "../services/dynamodb-images"; -import { deriveSqlOperation, SqlOperation } from "../services/sql-operations"; -import { destroyConnectionPool } from "../services/connection-pool"; -import { debugLog } from "../services/logger"; -import { BatchItemFailuresResponse } from "../models/batch-item-failure-response"; +} from 'aws-lambda'; +import { convert } from '../services/entity-conversion'; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { deriveSqlOperation, SqlOperation } from '../services/sql-operations'; +import { destroyConnectionPool } from '../services/connection-pool'; +import { debugLog } from '../services/logger'; +import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; /** * λ function: convert a DynamoDB document to Aurora RDS rows @@ -20,21 +20,21 @@ import { BatchItemFailuresResponse } from "../models/batch-item-failure-response */ export const processStreamEvent: Handler = async ( event: SQSEvent, - context: Context + context: Context, ): Promise => { const res: BatchItemFailuresResponse = { batchItemFailures: [], }; try { - debugLog("Received SQS event: ", event); + debugLog('Received SQS event: ', event); validateEvent(event); const region = process.env.AWS_REGION; if (!region) { - console.error("AWS_REGION envvar not available"); + console.error('AWS_REGION envvar not available'); return; } @@ -43,45 +43,45 @@ export const processStreamEvent: Handler = async ( for await (const record of event.Records) { const id = record.messageId; const dynamoRecord: DynamoDBRecord = JSON.parse( - record.body + record.body, ) as DynamoDBRecord; - debugLog("Original DynamoDB stream event body (parsed): ", dynamoRecord); + debugLog('Original DynamoDB stream event body (parsed): ', dynamoRecord); validateRecord(dynamoRecord); // parse source ARN const tableName: string = getTableNameFromArn( - dynamoRecord.eventSourceARN! + dynamoRecord.eventSourceARN!, ); // is this an INSERT, UPDATE, or DELETE? const operationType: SqlOperation = deriveSqlOperation( - dynamoRecord.eventName! + dynamoRecord.eventName!, ); // parse native DynamoDB format to usable TS map const image: DynamoDbImage = selectImage( operationType, - dynamoRecord.dynamodb! + dynamoRecord.dynamodb!, ); - debugLog("Dynamo image dump:", image); + debugLog('Dynamo image dump:', image); try { debugLog( - `DynamoDB ---> Aurora | START (event ID: ${dynamoRecord.eventID})` + `DynamoDB ---> Aurora | START (event ID: ${dynamoRecord.eventID})`, ); await convert(tableName, operationType, image); debugLog( - `DynamoDB ---> Aurora | END (event ID: ${dynamoRecord.eventID})` + `DynamoDB ---> Aurora | END (event ID: ${dynamoRecord.eventID})`, ); } catch (err) { console.error( "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", - [`messageId: ${id}`, err] + [`messageId: ${id}`, err], ); res.batchItemFailures.push({ itemIdentifier: id }); dumpArguments(event, context); @@ -89,43 +89,44 @@ export const processStreamEvent: Handler = async ( } } catch (err) { console.error( - "An error unrelated to Dynamo-to-Aurora conversion has occurred, event will not be retried", - err + 'An error unrelated to Dynamo-to-Aurora conversion has occurred, event will not be retried', + err, ); dumpArguments(event, context); await destroyConnectionPool(); } + // eslint-disable-next-line consistent-return return res; }; -export const getTableNameFromArn = (eventSourceArn: string): string => { - return eventSourceArn.split(":")[5].split("/")[1]; -}; +export const getTableNameFromArn = (eventSourceArn: string): string => eventSourceArn.split(':')[5].split('/')[1]; const selectImage = ( operationType: SqlOperation, - streamRecord: StreamRecord + streamRecord: StreamRecord, + // eslint-disable-next-line consistent-return ): DynamoDbImage => { + // eslint-disable-next-line default-case switch (operationType) { - case "INSERT": - case "UPDATE": + case 'INSERT': + case 'UPDATE': if (!streamRecord.NewImage) { throw new Error("'dynamodb' object missing required field 'NewImage'"); } debugLog(`operation type '${operationType}', selecting image 'NewImage'`); - return DynamoDbImage.parse(streamRecord.NewImage!); - case "DELETE": + return DynamoDbImage.parse(streamRecord.NewImage); + case 'DELETE': if (!streamRecord.OldImage) { throw new Error("'dynamodb' object missing required field 'OldImage'"); } debugLog(`operation type '${operationType}', selecting image 'OldImage'`); - return DynamoDbImage.parse(streamRecord.OldImage!); + return DynamoDbImage.parse(streamRecord.OldImage); } }; const validateEvent = (event: DynamoDBStreamEvent): void => { if (!event) { - throw new Error("event is null or undefined"); + throw new Error('event is null or undefined'); } if (!event.Records) { @@ -133,13 +134,13 @@ const validateEvent = (event: DynamoDBStreamEvent): void => { } if (!Array.isArray(event.Records)) { - throw new Error("event.Records is not an array"); + throw new Error('event.Records is not an array'); } }; const validateRecord = (record: DynamoDBRecord): void => { if (!record) { - throw new Error("record is null or undefined"); + throw new Error('record is null or undefined'); } if (!record.eventName) { @@ -156,6 +157,6 @@ const validateRecord = (record: DynamoDBRecord): void => { }; const dumpArguments = (event: DynamoDBStreamEvent, context: Context): void => { - console.error("Event dump : ", JSON.stringify(event)); - console.error("Context dump: ", JSON.stringify(context)); + console.error('Event dump : ', JSON.stringify(event)); + console.error('Context dump: ', JSON.stringify(context)); }; diff --git a/src/handler.ts b/src/handler.ts index 156ba5e..15455c7 100644 --- a/src/handler.ts +++ b/src/handler.ts @@ -1,20 +1,19 @@ import { PutSecretValueCommand, SecretsManagerClient, -} from "@aws-sdk/client-secrets-manager"; -import { processStreamEvent } from "./functions/process-stream-event"; +} from '@aws-sdk/client-secrets-manager'; +import { processStreamEvent } from './functions/process-stream-event'; -const isOffline: boolean = - !process.env.BRANCH || process.env.BRANCH === "local"; +const isOffline: boolean = !process.env.BRANCH || process.env.BRANCH === 'local'; if (isOffline) { const SMC = new SecretsManagerClient({}); const command = new PutSecretValueCommand({ - SecretId: "secretid1", + SecretId: 'secretid1', SecretString: JSON.stringify({ - accessKeyId: "accessKey1", - secretAccessKey: "verySecretKey1", + accessKeyId: 'accessKey1', + secretAccessKey: 'verySecretKey1', }), }); diff --git a/src/models/adr-details.ts b/src/models/adr-details.ts index 7767fee..e5819b8 100644 --- a/src/models/adr-details.ts +++ b/src/models/adr-details.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage, parseStringArray } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage, parseStringArray } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface AdrDetails { vehicleDetails?: VehicleDetails; @@ -70,7 +70,7 @@ export interface Tc2Details { tc2IntermediateExpiryDate?: string; } -export type Tc2Type = "initial"; +export type Tc2Type = 'initial'; export type Tc3Details = Tc3DetailsItem[]; @@ -80,97 +80,97 @@ export interface Tc3DetailsItem { tc3PeriodicExpiryDate?: string; } -export type Tc3Type = "intermediate" | "periodic" | "exceptional"; +export type Tc3Type = 'intermediate' | 'periodic' | 'exceptional'; export const parseAdrDetails = ( - adrDetails?: DynamoDbImage + adrDetails?: DynamoDbImage, ): Maybe => { if (!adrDetails) { return undefined; } const additionalNotesImage: DynamoDbImage = adrDetails.getMap( - "additionalNotes" + 'additionalNotes', )!; const additionalNotes: AdditionalNotes = { - number: parseStringArray(additionalNotesImage.getList("number")), + number: parseStringArray(additionalNotesImage.getList('number')), guidanceNotes: parseStringArray( - additionalNotesImage.getList("guidanceNotes") + additionalNotesImage.getList('guidanceNotes'), ), }; const applicantDetailsImage: DynamoDbImage = adrDetails.getMap( - "applicantDetails" + 'applicantDetails', )!; const applicantDetails: ApplicantDetails = { - name: applicantDetailsImage.getString("name"), - street: applicantDetailsImage.getString("street"), - town: applicantDetailsImage.getString("town"), - city: applicantDetailsImage.getString("city"), - postcode: applicantDetailsImage.getString("postcode"), + name: applicantDetailsImage.getString('name'), + street: applicantDetailsImage.getString('street'), + town: applicantDetailsImage.getString('town'), + city: applicantDetailsImage.getString('city'), + postcode: applicantDetailsImage.getString('postcode'), }; const vehicleDetailsImage: DynamoDbImage = adrDetails.getMap( - "vehicleDetails" + 'vehicleDetails', )!; const vehicleDetails: VehicleDetails = { - type: vehicleDetailsImage.getString("type"), - approvalDate: vehicleDetailsImage.getString("approvalDate"), + type: vehicleDetailsImage.getString('type'), + approvalDate: vehicleDetailsImage.getString('approvalDate'), }; - const tankImage: DynamoDbImage = adrDetails.getMap("tank")!; + const tankImage: DynamoDbImage = adrDetails.getMap('tank')!; - const tankDetailsImage = tankImage.getMap("tankDetails")!; + const tankDetailsImage = tankImage.getMap('tankDetails')!; - const tc2DetailsImage: DynamoDbImage = tankDetailsImage.getMap("tc2Details")!; + const tc2DetailsImage: DynamoDbImage = tankDetailsImage.getMap('tc2Details')!; const tc2Details: Tc2Details = { - tc2Type: tc2DetailsImage.getString("tc2Type") as Tc2Type, + tc2Type: tc2DetailsImage.getString('tc2Type') as Tc2Type, tc2IntermediateApprovalNo: tc2DetailsImage.getString( - "tc2IntermediateApprovalNo" + 'tc2IntermediateApprovalNo', ), tc2IntermediateExpiryDate: tc2DetailsImage.getString( - "tc2IntermediateExpiryDate" + 'tc2IntermediateExpiryDate', ), }; const tc3DetailsImage: DynamoDbImage = tankDetailsImage.getList( - "tc3Details" + 'tc3Details', )!; const tc3Details: Tc3Details = []; for (const key of tc3DetailsImage.getKeys()) { const tc3DetailsItemImage = tc3DetailsImage.getMap(key)!; tc3Details.push({ - tc3Type: tc3DetailsItemImage.getString("tc3Type") as Tc3Type, - tc3PeriodicNumber: tc3DetailsItemImage.getString("tc3PeriodicNumber"), + tc3Type: tc3DetailsItemImage.getString('tc3Type') as Tc3Type, + tc3PeriodicNumber: tc3DetailsItemImage.getString('tc3PeriodicNumber'), tc3PeriodicExpiryDate: tc3DetailsItemImage.getString( - "tc3PeriodicExpiryDate" + 'tc3PeriodicExpiryDate', ), }); } const tankDetails: TankDetails = { - tankManufacturer: tankDetailsImage.getString("tankManufacturer"), + tankManufacturer: tankDetailsImage.getString('tankManufacturer'), yearOfManufacture: 0, - tankCode: tankDetailsImage.getString("tankCode"), - specialProvisions: tankDetailsImage.getString("specialProvisions"), + tankCode: tankDetailsImage.getString('tankCode'), + specialProvisions: tankDetailsImage.getString('specialProvisions'), tankManufacturerSerialNo: tankDetailsImage.getString( - "tankManufacturerSerialNo" + 'tankManufacturerSerialNo', ), - tankTypeAppNo: tankDetailsImage.getString("tankTypeAppNo"), + tankTypeAppNo: tankDetailsImage.getString('tankTypeAppNo'), tc2Details, tc3Details, }; - const tankStatementImage: DynamoDbImage = tankImage.getMap("tankStatement")!; + const tankStatementImage: DynamoDbImage = tankImage.getMap('tankStatement')!; const tankStatement: TankStatement = { - substancesPermitted: tankStatementImage.getString("substancesPermitted"), - statement: tankStatementImage.getString("statement"), - productListRefNo: tankStatementImage.getString("productListRefNo"), + substancesPermitted: tankStatementImage.getString('substancesPermitted'), + statement: tankStatementImage.getString('statement'), + productListRefNo: tankStatementImage.getString('productListRefNo'), productListUnNo: parseStringArray( - tankStatementImage.getList("productListUnNo") + tankStatementImage.getList('productListUnNo'), ), - productList: tankStatementImage.getString("productList"), + productList: tankStatementImage.getString('productList'), }; const tank: Tank = { @@ -180,24 +180,24 @@ export const parseAdrDetails = ( return { vehicleDetails, - listStatementApplicable: adrDetails.getBoolean("listStatementApplicable"), - batteryListNumber: adrDetails.getString("batteryListNumber"), - declarationsSeen: adrDetails.getBoolean("declarationsSeen"), - brakeDeclarationsSeen: adrDetails.getBoolean("brakeDeclarationsSeen"), - brakeDeclarationIssuer: adrDetails.getString("brakeDeclarationIssuer"), - brakeEndurance: adrDetails.getBoolean("brakeEndurance"), - weight: adrDetails.getString("weight"), - compatibilityGroupJ: adrDetails.getBoolean("compatibilityGroupJ"), - documents: parseStringArray(adrDetails.getList("documents")), + listStatementApplicable: adrDetails.getBoolean('listStatementApplicable'), + batteryListNumber: adrDetails.getString('batteryListNumber'), + declarationsSeen: adrDetails.getBoolean('declarationsSeen'), + brakeDeclarationsSeen: adrDetails.getBoolean('brakeDeclarationsSeen'), + brakeDeclarationIssuer: adrDetails.getString('brakeDeclarationIssuer'), + brakeEndurance: adrDetails.getBoolean('brakeEndurance'), + weight: adrDetails.getString('weight'), + compatibilityGroupJ: adrDetails.getBoolean('compatibilityGroupJ'), + documents: parseStringArray(adrDetails.getList('documents')), permittedDangerousGoods: parseStringArray( - adrDetails.getList("permittedDangerousGoods") + adrDetails.getList('permittedDangerousGoods'), ), - additionalExaminerNotes: adrDetails.getString("additionalExaminerNotes"), + additionalExaminerNotes: adrDetails.getString('additionalExaminerNotes'), applicantDetails, - memosApply: parseStringArray(adrDetails.getList("memosApply")), + memosApply: parseStringArray(adrDetails.getList('memosApply')), additionalNotes, - adrTypeApprovalNo: adrDetails.getString("adrTypeApprovalNo"), - adrCertificateNotes: adrDetails.getString("adrCertificateNotes"), + adrTypeApprovalNo: adrDetails.getString('adrTypeApprovalNo'), + adrCertificateNotes: adrDetails.getString('adrCertificateNotes'), tank, }; }; diff --git a/src/models/applicant-details-properties.ts b/src/models/applicant-details-properties.ts index 756e481..100e517 100644 --- a/src/models/applicant-details-properties.ts +++ b/src/models/applicant-details-properties.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface ApplicantDetailsProperties { name?: string; @@ -13,20 +13,20 @@ export interface ApplicantDetailsProperties { } export const parseApplicantDetailsProperties = ( - applicantDetailsProperties?: DynamoDbImage + applicantDetailsProperties?: DynamoDbImage, ): Maybe => { if (!applicantDetailsProperties) { return undefined; } return { - name: applicantDetailsProperties.getString("name"), - address1: applicantDetailsProperties.getString("address1"), - address2: applicantDetailsProperties.getString("address2"), - postTown: applicantDetailsProperties.getString("postTown"), - address3: applicantDetailsProperties.getString("address3"), - postCode: applicantDetailsProperties.getString("postCode"), - emailAddress: applicantDetailsProperties.getString("emailAddress"), - telephoneNumber: applicantDetailsProperties.getString("telephoneNumber"), + name: applicantDetailsProperties.getString('name'), + address1: applicantDetailsProperties.getString('address1'), + address2: applicantDetailsProperties.getString('address2'), + postTown: applicantDetailsProperties.getString('postTown'), + address3: applicantDetailsProperties.getString('address3'), + postCode: applicantDetailsProperties.getString('postCode'), + emailAddress: applicantDetailsProperties.getString('emailAddress'), + telephoneNumber: applicantDetailsProperties.getString('telephoneNumber'), }; }; diff --git a/src/models/auth-into-service.ts b/src/models/auth-into-service.ts index 1a0fede..56f26bd 100644 --- a/src/models/auth-into-service.ts +++ b/src/models/auth-into-service.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface AuthIntoService { cocIssueDate?: string; @@ -10,14 +10,14 @@ export interface AuthIntoService { } export const parseAuthIntoService = ( - authIntoServiceImage?: DynamoDbImage + authIntoServiceImage?: DynamoDbImage, ): Maybe => { const authIntoService = { - cocIssueDate: authIntoServiceImage?.getString("cocIssueDate"), - dateAuthorised: authIntoServiceImage?.getString("dateAuthorised"), - datePending: authIntoServiceImage?.getString("datePending"), - dateReceived: authIntoServiceImage?.getString("dateReceived"), - dateRejected: authIntoServiceImage?.getString("dateRejected"), + cocIssueDate: authIntoServiceImage?.getString('cocIssueDate'), + dateAuthorised: authIntoServiceImage?.getString('dateAuthorised'), + datePending: authIntoServiceImage?.getString('datePending'), + dateReceived: authIntoServiceImage?.getString('dateReceived'), + dateRejected: authIntoServiceImage?.getString('dateRejected'), }; for (const value of Object.values(authIntoService)) { diff --git a/src/models/axles.ts b/src/models/axles.ts index d816450..ad333c9 100644 --- a/src/models/axles.ts +++ b/src/models/axles.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export type Axles = Axle[]; @@ -28,24 +28,24 @@ export interface AxleTyreProperties { tyreCode?: number; } -export type FitmentCode = "double" | "single"; +export type FitmentCode = 'double' | 'single'; export type SpeedCategorySymbol = - | "a7" - | "a8" - | "b" - | "c" - | "d" - | "e" - | "f" - | "g" - | "j" - | "k" - | "l" - | "m" - | "n" - | "p" - | "q"; + | 'a7' + | 'a8' + | 'b' + | 'c' + | 'd' + | 'e' + | 'f' + | 'g' + | 'j' + | 'k' + | 'l' + | 'm' + | 'n' + | 'p' + | 'q'; export interface AxleBrakeProperties { brakeActuator?: number; @@ -63,13 +63,13 @@ export const parseAxles = (axlesImage?: DynamoDbImage): Axles => { for (const key of axlesImage.getKeys()) { const axleImage = axlesImage.getMap(key)!; - const weights = parseAxleWeightProperties(axleImage.getMap("weights")); - const tyres = parseAxleTyreProperties(axleImage.getMap("tyres")); - const brakes = parseAxleBrakeProperties(axleImage.getMap("brakes")); + const weights = parseAxleWeightProperties(axleImage.getMap('weights')); + const tyres = parseAxleTyreProperties(axleImage.getMap('tyres')); + const brakes = parseAxleBrakeProperties(axleImage.getMap('brakes')); axles.push({ - axleNumber: axleImage.getNumber("axleNumber"), - parkingBrakeMrk: axleImage.getBoolean("parkingBrakeMrk"), + axleNumber: axleImage.getNumber('axleNumber'), + parkingBrakeMrk: axleImage.getBoolean('parkingBrakeMrk'), weights, brakes, tyres, @@ -80,54 +80,54 @@ export const parseAxles = (axlesImage?: DynamoDbImage): Axles => { }; const parseAxleWeightProperties = ( - axleWeightPropertiesImage?: DynamoDbImage + axleWeightPropertiesImage?: DynamoDbImage, ): Maybe => { if (!axleWeightPropertiesImage) { return undefined; } return { - kerbWeight: axleWeightPropertiesImage.getNumber("kerbWeight"), - ladenWeight: axleWeightPropertiesImage.getNumber("ladenWeight"), - gbWeight: axleWeightPropertiesImage.getNumber("gbWeight"), - eecWeight: axleWeightPropertiesImage.getNumber("eecWeight"), - designWeight: axleWeightPropertiesImage.getNumber("designWeight"), + kerbWeight: axleWeightPropertiesImage.getNumber('kerbWeight'), + ladenWeight: axleWeightPropertiesImage.getNumber('ladenWeight'), + gbWeight: axleWeightPropertiesImage.getNumber('gbWeight'), + eecWeight: axleWeightPropertiesImage.getNumber('eecWeight'), + designWeight: axleWeightPropertiesImage.getNumber('designWeight'), }; }; const parseAxleTyreProperties = ( - axleTyrePropertiesImage?: DynamoDbImage + axleTyrePropertiesImage?: DynamoDbImage, ): Maybe => { if (!axleTyrePropertiesImage) { return undefined; } return { - tyreSize: axleTyrePropertiesImage.getString("tyreSize"), - plyRating: axleTyrePropertiesImage.getString("plyRating"), + tyreSize: axleTyrePropertiesImage.getString('tyreSize'), + plyRating: axleTyrePropertiesImage.getString('plyRating'), fitmentCode: axleTyrePropertiesImage.getString( - "fitmentCode" + 'fitmentCode', ) as FitmentCode, - dataTrAxles: axleTyrePropertiesImage.getNumber("dataTrAxles"), + dataTrAxles: axleTyrePropertiesImage.getNumber('dataTrAxles'), speedCategorySymbol: axleTyrePropertiesImage.getString( - "speedCategorySymbol" + 'speedCategorySymbol', ) as SpeedCategorySymbol, - tyreCode: axleTyrePropertiesImage.getNumber("tyreCode"), + tyreCode: axleTyrePropertiesImage.getNumber('tyreCode'), }; }; const parseAxleBrakeProperties = ( - axleBrakePropertiesImage?: DynamoDbImage + axleBrakePropertiesImage?: DynamoDbImage, ): Maybe => { if (!axleBrakePropertiesImage) { return undefined; } return { - brakeActuator: axleBrakePropertiesImage.getNumber("brakeActuator"), - leverLength: axleBrakePropertiesImage.getNumber("leverLength"), + brakeActuator: axleBrakePropertiesImage.getNumber('brakeActuator'), + leverLength: axleBrakePropertiesImage.getNumber('leverLength'), springBrakeParking: axleBrakePropertiesImage.getBoolean( - "springBrakeParking" + 'springBrakeParking', ), }; }; diff --git a/src/models/body-type.ts b/src/models/body-type.ts index fbd4552..658b3dc 100644 --- a/src/models/body-type.ts +++ b/src/models/body-type.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface BodyType { code?: BodyTypeCode; @@ -7,33 +7,33 @@ export interface BodyType { } export type BodyTypeCode = - | "a" - | "s" - | "d" - | "o" - | "m" - | "x" - | "p" - | "k" - | "t" - | "b" - | "f" - | "r" - | "c"; + | 'a' + | 's' + | 'd' + | 'o' + | 'm' + | 'x' + | 'p' + | 'k' + | 't' + | 'b' + | 'f' + | 'r' + | 'c'; export type BodyTypeDescription = - | "articulated" - | "single decker" - | "double decker" - | "other" - | "petrol/oil tanker" - | "skeletal" - | "tipper" - | "box" - | "flat" - | "refuse" - | "skip loader" - | "refrigerated"; + | 'articulated' + | 'single decker' + | 'double decker' + | 'other' + | 'petrol/oil tanker' + | 'skeletal' + | 'tipper' + | 'box' + | 'flat' + | 'refuse' + | 'skip loader' + | 'refrigerated'; export const parseBodyType = (bodyType?: DynamoDbImage): Maybe => { if (!bodyType) { @@ -41,7 +41,7 @@ export const parseBodyType = (bodyType?: DynamoDbImage): Maybe => { } return { - code: bodyType.getString("code") as BodyTypeCode, - description: bodyType.getString("description") as BodyTypeDescription, + code: bodyType.getString('code') as BodyTypeCode, + description: bodyType.getString('description') as BodyTypeDescription, }; }; diff --git a/src/models/brakes.ts b/src/models/brakes.ts index c6c9f3c..dd41280 100644 --- a/src/models/brakes.ts +++ b/src/models/brakes.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface Brakes { brakeCodeOriginal?: string; @@ -17,12 +17,12 @@ export interface Brakes { } export type RetarderBrakeType = - | "electric" - | "exhaust" - | "friction" - | "hydraulic" - | "other" - | "none"; + | 'electric' + | 'exhaust' + | 'friction' + | 'hydraulic' + | 'other' + | 'none'; export interface BrakeForceWheelsNotLocked { serviceBrakeForceA?: number; @@ -42,30 +42,30 @@ export const parseBrakes = (brakes?: DynamoDbImage): Maybe => { } const brakeForceWheelsNotLocked = parseBrakeForceWheelsNotLocked( - brakes.getMap("brakeForceWheelsNotLocked") + brakes.getMap('brakeForceWheelsNotLocked'), ); const brakeForceWheelsUpToHalfLocked = parseBrakeForceWheelsUpToHalfLocked( - brakes.getMap("brakeForceWheelsUpToHalfLocked") + brakes.getMap('brakeForceWheelsUpToHalfLocked'), ); return { - brakeCodeOriginal: brakes.getString("brakeCodeOriginal"), - brakeCode: brakes.getString("brakeCode"), - dataTrBrakeOne: brakes.getString("dataTrBrakeOne"), - dataTrBrakeTwo: brakes.getString("dataTrBrakeTwo"), - dataTrBrakeThree: brakes.getString("dataTrBrakeThree"), - retarderBrakeOne: brakes.getString("retarderBrakeOne") as RetarderBrakeType, - retarderBrakeTwo: brakes.getString("retarderBrakeTwo") as RetarderBrakeType, - dtpNumber: brakes.getString("dtpNumber"), + brakeCodeOriginal: brakes.getString('brakeCodeOriginal'), + brakeCode: brakes.getString('brakeCode'), + dataTrBrakeOne: brakes.getString('dataTrBrakeOne'), + dataTrBrakeTwo: brakes.getString('dataTrBrakeTwo'), + dataTrBrakeThree: brakes.getString('dataTrBrakeThree'), + retarderBrakeOne: brakes.getString('retarderBrakeOne') as RetarderBrakeType, + retarderBrakeTwo: brakes.getString('retarderBrakeTwo') as RetarderBrakeType, + dtpNumber: brakes.getString('dtpNumber'), brakeForceWheelsNotLocked, brakeForceWheelsUpToHalfLocked, - loadSensingValve: brakes.getBoolean("loadSensingValve"), - antilockBrakingSystem: brakes.getBoolean("antilockBrakingSystem"), + loadSensingValve: brakes.getBoolean('loadSensingValve'), + antilockBrakingSystem: brakes.getBoolean('antilockBrakingSystem'), }; }; const parseBrakeForceWheelsNotLocked = ( - brakeForceWheelsNotLockedImage?: DynamoDbImage + brakeForceWheelsNotLockedImage?: DynamoDbImage, ): Maybe => { if (!brakeForceWheelsNotLockedImage) { return undefined; @@ -73,19 +73,19 @@ const parseBrakeForceWheelsNotLocked = ( return { serviceBrakeForceA: brakeForceWheelsNotLockedImage.getNumber( - "serviceBrakeForceA" + 'serviceBrakeForceA', ), secondaryBrakeForceA: brakeForceWheelsNotLockedImage.getNumber( - "secondaryBrakeForceA" + 'secondaryBrakeForceA', ), parkingBrakeForceA: brakeForceWheelsNotLockedImage.getNumber( - "parkingBrakeForceA" + 'parkingBrakeForceA', ), }; }; const parseBrakeForceWheelsUpToHalfLocked = ( - brakeForceWheelsUpToHalfLockedImage?: DynamoDbImage + brakeForceWheelsUpToHalfLockedImage?: DynamoDbImage, ): Maybe => { if (!brakeForceWheelsUpToHalfLockedImage) { return undefined; @@ -93,13 +93,13 @@ const parseBrakeForceWheelsUpToHalfLocked = ( return { serviceBrakeForceB: brakeForceWheelsUpToHalfLockedImage.getNumber( - "serviceBrakeForceB" + 'serviceBrakeForceB', ), secondaryBrakeForceB: brakeForceWheelsUpToHalfLockedImage.getNumber( - "secondaryBrakeForceB" + 'secondaryBrakeForceB', ), parkingBrakeForceB: brakeForceWheelsUpToHalfLockedImage.getNumber( - "parkingBrakeForceB" + 'parkingBrakeForceB', ), }; }; diff --git a/src/models/dda.ts b/src/models/dda.ts index b4f9c40..e6a7f38 100644 --- a/src/models/dda.ts +++ b/src/models/dda.ts @@ -1,6 +1,6 @@ // (disability discrimination act) -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface Dda { certificateIssued?: boolean; @@ -22,17 +22,17 @@ export const parseDda = (dda?: DynamoDbImage): Maybe => { return undefined; } return { - certificateIssued: dda.getBoolean("certificateIssued"), - wheelchairCapacity: dda.getNumber("wheelchairCapacity"), - wheelchairFittings: dda.getString("wheelchairFittings"), - wheelchairLiftPresent: dda.getBoolean("wheelchairLiftPresent"), - wheelchairLiftInformation: dda.getString("wheelchairLiftInformation"), - wheelchairRampPresent: dda.getBoolean("wheelchairRampPresent"), - wheelchairRampInformation: dda.getString("wheelchairRampInformation"), - minEmergencyExits: dda.getNumber("minEmergencyExits"), - outswing: dda.getString("outswing"), - ddaSchedules: dda.getString("ddaSchedules"), - seatbeltsFitted: dda.getNumber("seatbeltsFitted"), - ddaNotes: dda.getString("ddaNotes"), + certificateIssued: dda.getBoolean('certificateIssued'), + wheelchairCapacity: dda.getNumber('wheelchairCapacity'), + wheelchairFittings: dda.getString('wheelchairFittings'), + wheelchairLiftPresent: dda.getBoolean('wheelchairLiftPresent'), + wheelchairLiftInformation: dda.getString('wheelchairLiftInformation'), + wheelchairRampPresent: dda.getBoolean('wheelchairRampPresent'), + wheelchairRampInformation: dda.getString('wheelchairRampInformation'), + minEmergencyExits: dda.getNumber('minEmergencyExits'), + outswing: dda.getString('outswing'), + ddaSchedules: dda.getString('ddaSchedules'), + seatbeltsFitted: dda.getNumber('seatbeltsFitted'), + ddaNotes: dda.getString('ddaNotes'), }; }; diff --git a/src/models/defects.ts b/src/models/defects.ts index f9f58d2..4ff4873 100644 --- a/src/models/defects.ts +++ b/src/models/defects.ts @@ -1,15 +1,15 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; -export type DeficiencyCategory = "advisory" | "dangerous" | "major" | "minor"; +export type DeficiencyCategory = 'advisory' | 'dangerous' | 'major' | 'minor'; -export type VerticalLocation = "upper" | "lower"; +export type VerticalLocation = 'upper' | 'lower'; -export type HorizontalLocation = "inner" | "outer"; +export type HorizontalLocation = 'inner' | 'outer'; -export type LateralLocation = "nearside" | "centre" | "offside"; +export type LateralLocation = 'nearside' | 'centre' | 'offside'; -export type LongitudinalLocation = "front" | "rear"; +export type LongitudinalLocation = 'front' | 'rear'; export interface DefectAdditionalInformation { location?: DefectAdditionalInformationLocation; @@ -80,30 +80,28 @@ export const parseCustomDefects = (image?: DynamoDbImage): CustomDefects => { return defects; }; -export const parseDefect = (image: DynamoDbImage): Defect => { - return { - imNumber: image.getNumber("imNumber"), - imDescription: image.getString("imDescription"), - additionalInformation: parseDefectAdditionalInformation( - image.getMap("additionalInformation") - ), - itemNumber: image.getNumber("itemNumber"), - itemDescription: image.getString("itemDescription"), - deficiencyRef: image.getString("deficiencyRef"), - deficiencyId: image.getString("deficiencyId"), - deficiencySubId: image.getString("deficiencySubId"), - deficiencyCategory: image.getString( - "deficiencyCategory" - ) as DeficiencyCategory, - deficiencyText: image.getString("deficiencyText"), - stdForProhibition: image.getBoolean("stdForProhibition"), - prs: image.getBoolean("prs"), - prohibitionIssued: image.getBoolean("prohibitionIssued"), - }; -}; +export const parseDefect = (image: DynamoDbImage): Defect => ({ + imNumber: image.getNumber('imNumber'), + imDescription: image.getString('imDescription'), + additionalInformation: parseDefectAdditionalInformation( + image.getMap('additionalInformation'), + ), + itemNumber: image.getNumber('itemNumber'), + itemDescription: image.getString('itemDescription'), + deficiencyRef: image.getString('deficiencyRef'), + deficiencyId: image.getString('deficiencyId'), + deficiencySubId: image.getString('deficiencySubId'), + deficiencyCategory: image.getString( + 'deficiencyCategory', + ) as DeficiencyCategory, + deficiencyText: image.getString('deficiencyText'), + stdForProhibition: image.getBoolean('stdForProhibition'), + prs: image.getBoolean('prs'), + prohibitionIssued: image.getBoolean('prohibitionIssued'), +}); export const parseDefectAdditionalInformation = ( - image?: DynamoDbImage + image?: DynamoDbImage, ): Maybe => { if (!image) { return undefined; @@ -111,34 +109,32 @@ export const parseDefectAdditionalInformation = ( return { location: parseDefectAdditionalInformationLocation( - image.getMap("location") + image.getMap('location'), ), - notes: image.getString("notes"), + notes: image.getString('notes'), }; }; export const parseDefectAdditionalInformationLocation = ( - image?: DynamoDbImage + image?: DynamoDbImage, ): Maybe => { if (!image) { return undefined; } return { - vertical: image.getString("vertical") as VerticalLocation, - horizontal: image.getString("horizontal") as HorizontalLocation, - lateral: image.getString("lateral") as LateralLocation, - longitudinal: image.getString("longitudinal") as LongitudinalLocation, - rowNumber: image.getNumber("rowNumber"), - seatNumber: image.getNumber("seatNumber"), - axleNumber: image.getNumber("axleNumber"), + vertical: image.getString('vertical') as VerticalLocation, + horizontal: image.getString('horizontal') as HorizontalLocation, + lateral: image.getString('lateral') as LateralLocation, + longitudinal: image.getString('longitudinal') as LongitudinalLocation, + rowNumber: image.getNumber('rowNumber'), + seatNumber: image.getNumber('seatNumber'), + axleNumber: image.getNumber('axleNumber'), }; }; -const parseCustomDefect = (image: DynamoDbImage): CustomDefect => { - return { - referenceNumber: image.getString("referenceNumber"), - defectName: image.getString("defectName"), - defectNotes: image.getString("defectNotes"), - }; -}; +const parseCustomDefect = (image: DynamoDbImage): CustomDefect => ({ + referenceNumber: image.getString('referenceNumber'), + defectName: image.getString('defectName'), + defectNotes: image.getString('defectNotes'), +}); diff --git a/src/models/dimensions.ts b/src/models/dimensions.ts index d39d400..a61be7a 100644 --- a/src/models/dimensions.ts +++ b/src/models/dimensions.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface Dimensions { length?: number; @@ -16,18 +16,18 @@ export interface AxleSpacingItem { } export const parseDimensions = ( - dimensions?: DynamoDbImage + dimensions?: DynamoDbImage, ): Maybe => { if (!dimensions) { return undefined; } - const axleSpacing = parseAxleSpacing(dimensions.getList("axleSpacing")); + const axleSpacing = parseAxleSpacing(dimensions.getList('axleSpacing')); return { - length: dimensions.getNumber("length"), - height: dimensions.getNumber("height"), - width: dimensions.getNumber("width"), + length: dimensions.getNumber('length'), + height: dimensions.getNumber('height'), + width: dimensions.getNumber('width'), axleSpacing, }; }; @@ -42,8 +42,8 @@ const parseAxleSpacing = (axleSpacingImage?: DynamoDbImage) => { for (const key of axleSpacingImage.getKeys()) { const axleSpacingItemImage = axleSpacingImage.getMap(key)!; axleSpacing.push({ - axles: axleSpacingItemImage.getString("axles"), - value: axleSpacingItemImage.getNumber("value"), + axles: axleSpacingItemImage.getString('axles'), + value: axleSpacingItemImage.getNumber('value'), }); } diff --git a/src/models/letters-of-auth.ts b/src/models/letters-of-auth.ts index fae3951..2a8d625 100644 --- a/src/models/letters-of-auth.ts +++ b/src/models/letters-of-auth.ts @@ -1,7 +1,7 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; -export type LetterType = "Trailer authorization" | "Trailer rejection"; +export type LetterType = 'Trailer authorization' | 'Trailer rejection'; export interface LettersOfAuth { letterType?: LetterType; @@ -10,15 +10,15 @@ export interface LettersOfAuth { } export const parseLettersOfAuth = ( - lettersOfAuth?: DynamoDbImage + lettersOfAuth?: DynamoDbImage, ): Maybe => { if (!lettersOfAuth) { return undefined; } return { - letterType: lettersOfAuth.getString("letterType") as LetterType, - letterDateRequested: lettersOfAuth.getString("letterDateRequested"), - letterContents: lettersOfAuth.getString("letterContents"), + letterType: lettersOfAuth.getString('letterType') as LetterType, + letterDateRequested: lettersOfAuth.getString('letterDateRequested'), + letterContents: lettersOfAuth.getString('letterContents'), }; }; diff --git a/src/models/manufacturer-details.ts b/src/models/manufacturer-details.ts index 6b0c9d5..9075e83 100644 --- a/src/models/manufacturer-details.ts +++ b/src/models/manufacturer-details.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface ManufacturerDetails { name?: string; @@ -15,22 +15,22 @@ export interface ManufacturerDetails { } export const parseManufacturerDetails = ( - manufacturerDetails?: DynamoDbImage + manufacturerDetails?: DynamoDbImage, ): Maybe => { if (!manufacturerDetails) { return undefined; } return { - name: manufacturerDetails.getString("name"), - address1: manufacturerDetails.getString("address1"), - address2: manufacturerDetails.getString("address2"), - postTown: manufacturerDetails.getString("postTown"), - address3: manufacturerDetails.getString("address3"), - postCode: manufacturerDetails.getString("postCode"), - emailAddress: manufacturerDetails.getString("emailAddress"), - telephoneNumber: manufacturerDetails.getString("telephoneNumber"), - faxNumber: manufacturerDetails.getString("faxNumber"), - manufacturerNotes: manufacturerDetails.getString("manufacturerNotes"), + name: manufacturerDetails.getString('name'), + address1: manufacturerDetails.getString('address1'), + address2: manufacturerDetails.getString('address2'), + postTown: manufacturerDetails.getString('postTown'), + address3: manufacturerDetails.getString('address3'), + postCode: manufacturerDetails.getString('postCode'), + emailAddress: manufacturerDetails.getString('emailAddress'), + telephoneNumber: manufacturerDetails.getString('telephoneNumber'), + faxNumber: manufacturerDetails.getString('faxNumber'), + manufacturerNotes: manufacturerDetails.getString('manufacturerNotes'), }; }; diff --git a/src/models/microfilm.ts b/src/models/microfilm.ts index 4ba3017..c7ca1c4 100644 --- a/src/models/microfilm.ts +++ b/src/models/microfilm.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface Microfilm { microfilmDocumentType?: MicrofilmDocumentType; @@ -8,61 +8,61 @@ export interface Microfilm { } export type MicrofilmDocumentType = - | "PSV Miscellaneous" - | "AAT - Trailer Annual Test" - | "AIV - HGV International App" - | "COIF Modification" - | "Trailer COC + Int Plate" - | "RCT - Trailer Test Cert paid" - | "HGV COC + Int Plate" - | "PSV Carry/Auth" - | "OMO Report" - | "AIT - Trailer International App" - | "IPV - HGV EEC Plate/Cert" - | "XCV - HGV Test Cert free" - | "AAV - HGV Annual Test" - | "COIF Master" - | "Tempo 100 Sp Ord" - | "Deleted" - | "PSV N/ALT" - | "XPT - Tr Plating Cert paid" - | "FFV - HGV First Test" - | "Repl Vitesse 100" - | "TCV - HGV Test Cert" - | "ZZZ - Miscellaneous" - | "Test Certificate" - | "XCT - Trailer Test Cert free" - | "C52 - COC and VTG52A" - | "Tempo 100 Report" - | "Main File Amendment" - | "PSV Doc" - | "PSV COC" - | "PSV Repl COC" - | "TAV - COC" - | "NPT - Trailer Alteration" - | "OMO Certificate" - | "PSV Repl COIF" - | "PSV Repl COF" - | "COIF Application" - | "XPV - HGV Plating Cert Free" - | "TCT - Trailer Test Cert" - | "Tempo 100 App" - | "PSV Decision on N/ALT" - | "Special Order PSV" - | "NPV - HGV Alteration" - | "No Description Found" - | "Vitesse 100 Sp Ord" - | "Brake Test Details" - | "COIF Productional" - | "RDT - Test Disc Paid" - | "RCV - HGV Test Cert" - | "FFT - Trailer First Test" - | "IPT - Trailer EEC Plate/Cert" - | "XDT - Test Disc Free" - | "PRV - HGV Plating Cert paid" - | "COF Cert" - | "PRT - Tr Plating Cert paid" - | "Tempo 100 Permit"; + | 'PSV Miscellaneous' + | 'AAT - Trailer Annual Test' + | 'AIV - HGV International App' + | 'COIF Modification' + | 'Trailer COC + Int Plate' + | 'RCT - Trailer Test Cert paid' + | 'HGV COC + Int Plate' + | 'PSV Carry/Auth' + | 'OMO Report' + | 'AIT - Trailer International App' + | 'IPV - HGV EEC Plate/Cert' + | 'XCV - HGV Test Cert free' + | 'AAV - HGV Annual Test' + | 'COIF Master' + | 'Tempo 100 Sp Ord' + | 'Deleted' + | 'PSV N/ALT' + | 'XPT - Tr Plating Cert paid' + | 'FFV - HGV First Test' + | 'Repl Vitesse 100' + | 'TCV - HGV Test Cert' + | 'ZZZ - Miscellaneous' + | 'Test Certificate' + | 'XCT - Trailer Test Cert free' + | 'C52 - COC and VTG52A' + | 'Tempo 100 Report' + | 'Main File Amendment' + | 'PSV Doc' + | 'PSV COC' + | 'PSV Repl COC' + | 'TAV - COC' + | 'NPT - Trailer Alteration' + | 'OMO Certificate' + | 'PSV Repl COIF' + | 'PSV Repl COF' + | 'COIF Application' + | 'XPV - HGV Plating Cert Free' + | 'TCT - Trailer Test Cert' + | 'Tempo 100 App' + | 'PSV Decision on N/ALT' + | 'Special Order PSV' + | 'NPV - HGV Alteration' + | 'No Description Found' + | 'Vitesse 100 Sp Ord' + | 'Brake Test Details' + | 'COIF Productional' + | 'RDT - Test Disc Paid' + | 'RCV - HGV Test Cert' + | 'FFT - Trailer First Test' + | 'IPT - Trailer EEC Plate/Cert' + | 'XDT - Test Disc Free' + | 'PRV - HGV Plating Cert paid' + | 'COF Cert' + | 'PRT - Tr Plating Cert paid' + | 'Tempo 100 Permit'; export const parseMicrofilm = (microfilm?: DynamoDbImage): Maybe => { if (!microfilm) { @@ -71,9 +71,9 @@ export const parseMicrofilm = (microfilm?: DynamoDbImage): Maybe => { return { microfilmDocumentType: microfilm.getString( - "microfilmDocumentType" + 'microfilmDocumentType', ) as MicrofilmDocumentType, - microfilmRollNumber: microfilm.getString("microfilmRollNumber"), - microfilmSerialNumber: microfilm.getString("microfilmSerialNumber"), + microfilmRollNumber: microfilm.getString('microfilmRollNumber'), + microfilmSerialNumber: microfilm.getString('microfilmSerialNumber'), }; }; diff --git a/src/models/mod-type.ts b/src/models/mod-type.ts index 2f98d80..740970e 100644 --- a/src/models/mod-type.ts +++ b/src/models/mod-type.ts @@ -1,12 +1,12 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; -export type ModTypeCode = "p" | "m" | "g"; +export type ModTypeCode = 'p' | 'm' | 'g'; export type ModTypeDescription = - | "particulate trap" - | "modification or change of engine" - | "gas engine"; + | 'particulate trap' + | 'modification or change of engine' + | 'gas engine'; export interface ModType { code?: ModTypeCode; @@ -19,7 +19,7 @@ export const parseModType = (image?: DynamoDbImage): Maybe => { } return { - code: image.getString("code") as ModTypeCode, - description: image.getString("description") as ModTypeDescription, + code: image.getString('code') as ModTypeCode, + description: image.getString('description') as ModTypeDescription, }; }; diff --git a/src/models/plates.ts b/src/models/plates.ts index 7f2b0ef..1dd837a 100644 --- a/src/models/plates.ts +++ b/src/models/plates.ts @@ -1,4 +1,4 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; +import { DynamoDbImage } from '../services/dynamodb-images'; export type Plates = Plate[]; @@ -11,12 +11,12 @@ export interface Plate { } export type PlateReasonForIssue = - | "Free replacement" - | "Replacement" - | "Destroyed" - | "Provisional" - | "Original" - | "Manual"; + | 'Free replacement' + | 'Replacement' + | 'Destroyed' + | 'Provisional' + | 'Original' + | 'Manual'; export const parsePlates = (platesImage?: DynamoDbImage): Plates => { if (!platesImage) { @@ -29,13 +29,13 @@ export const parsePlates = (platesImage?: DynamoDbImage): Plates => { const plateImage = platesImage.getMap(key)!; plates.push({ - plateSerialNumber: plateImage.getString("plateSerialNumber"), - plateIssueDate: plateImage.getDate("plateIssueDate"), + plateSerialNumber: plateImage.getString('plateSerialNumber'), + plateIssueDate: plateImage.getDate('plateIssueDate'), plateReasonForIssue: plateImage.getString( - "plateReasonForIssue" + 'plateReasonForIssue', ) as PlateReasonForIssue, - plateIssuer: plateImage.getString("plateIssuer"), - toEmailAddress: plateImage.getString("toEmailAddress"), + plateIssuer: plateImage.getString('plateIssuer'), + toEmailAddress: plateImage.getString('toEmailAddress'), }); } diff --git a/src/models/purchaser-details.ts b/src/models/purchaser-details.ts index 5b1966e..846063b 100644 --- a/src/models/purchaser-details.ts +++ b/src/models/purchaser-details.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface PurchaserDetails { name?: string; @@ -15,22 +15,22 @@ export interface PurchaserDetails { } export const parsePurchaserDetails = ( - purchaserDetails?: DynamoDbImage + purchaserDetails?: DynamoDbImage, ): Maybe => { if (!purchaserDetails) { return undefined; } return { - name: purchaserDetails.getString("name"), - address1: purchaserDetails.getString("address1"), - address2: purchaserDetails.getString("address2"), - postTown: purchaserDetails.getString("postTown"), - address3: purchaserDetails.getString("address3"), - postCode: purchaserDetails.getString("postCode"), - emailAddress: purchaserDetails.getString("emailAddress"), - telephoneNumber: purchaserDetails.getString("telephoneNumber"), - faxNumber: purchaserDetails.getString("faxNumber"), - purchaserNotes: purchaserDetails.getString("purchaserNotes"), + name: purchaserDetails.getString('name'), + address1: purchaserDetails.getString('address1'), + address2: purchaserDetails.getString('address2'), + postTown: purchaserDetails.getString('postTown'), + address3: purchaserDetails.getString('address3'), + postCode: purchaserDetails.getString('postCode'), + emailAddress: purchaserDetails.getString('emailAddress'), + telephoneNumber: purchaserDetails.getString('telephoneNumber'), + faxNumber: purchaserDetails.getString('faxNumber'), + purchaserNotes: purchaserDetails.getString('purchaserNotes'), }; }; diff --git a/src/models/shared-enums.ts b/src/models/shared-enums.ts index 9154d3c..c3ea3cd 100644 --- a/src/models/shared-enums.ts +++ b/src/models/shared-enums.ts @@ -1,36 +1,36 @@ -export type VehicleType = "psv" | "hgv" | "trl" | "car" | "lgv" | "motorcycle"; +export type VehicleType = 'psv' | 'hgv' | 'trl' | 'car' | 'lgv' | 'motorcycle'; export type VehicleConfiguration = - | "rigid" - | "articulated" - | "centre axle drawbar" - | "semi-car transporter" - | "semi-trailer" - | "low loader" - | "other" - | "drawbar" - | "four-in-line" - | "dolly" - | "full drawbar"; + | 'rigid' + | 'articulated' + | 'centre axle drawbar' + | 'semi-car transporter' + | 'semi-trailer' + | 'low loader' + | 'other' + | 'drawbar' + | 'four-in-line' + | 'dolly' + | 'full drawbar'; export type EuVehicleCategory = - | "m1" - | "m2" - | "m3" - | "n1" - | "n2" - | "n3" - | "o1" - | "o2" - | "o3" - | "o4" - | "l1e-a" - | "l1e" - | "l2e" - | "l3e" - | "l4e" - | "l5e" - | "l6e" - | "l7e"; + | 'm1' + | 'm2' + | 'm3' + | 'n1' + | 'n2' + | 'n3' + | 'o1' + | 'o2' + | 'o3' + | 'o4' + | 'l1e-a' + | 'l1e' + | 'l2e' + | 'l3e' + | 'l4e' + | 'l5e' + | 'l6e' + | 'l7e'; -export type VehicleSize = "large" | "small"; +export type VehicleSize = 'large' | 'small'; diff --git a/src/models/tech-record-document.ts b/src/models/tech-record-document.ts index 3582862..fecfd92 100644 --- a/src/models/tech-record-document.ts +++ b/src/models/tech-record-document.ts @@ -1,6 +1,6 @@ -import { DynamoDbImage, parseStringArray } from "../services/dynamodb-images"; -import { parseTechRecords, TechRecords } from "./tech-record"; -import { debugLog } from "../services/logger"; +import { DynamoDbImage, parseStringArray } from '../services/dynamodb-images'; +import { parseTechRecords, TechRecords } from './tech-record'; +import { debugLog } from '../services/logger'; // https://wiki.dvsacloud.uk/pages/viewpage.action?spaceKey=HVT&title=Technical+API+Changelog // API_Vehicle_Tech_Records_v32.yaml @@ -15,17 +15,17 @@ export interface TechRecordDocument { } export const parseTechRecordDocument = ( - image: DynamoDbImage + image: DynamoDbImage, ): TechRecordDocument => { - debugLog("Parsing tech records..."); + debugLog('Parsing tech records...'); return { - systemNumber: image.getString("systemNumber"), - partialVin: image.getString("partialVin"), - primaryVrm: image.getString("primaryVrm"), - secondaryVms: parseStringArray(image.getList("secondaryVrms")), - vin: image.getString("vin"), - trailerId: image.getString("trailerId"), - techRecord: parseTechRecords(image.getList("techRecord")), + systemNumber: image.getString('systemNumber'), + partialVin: image.getString('partialVin'), + primaryVrm: image.getString('primaryVrm'), + secondaryVms: parseStringArray(image.getList('secondaryVrms')), + vin: image.getString('vin'), + trailerId: image.getString('trailerId'), + techRecord: parseTechRecords(image.getList('techRecord')), }; }; diff --git a/src/models/tech-record.ts b/src/models/tech-record.ts index 29aa1c0..8eaa29d 100644 --- a/src/models/tech-record.ts +++ b/src/models/tech-record.ts @@ -1,31 +1,31 @@ -import { DynamoDbImage, parseStringArray } from "../services/dynamodb-images"; -import { AuthIntoService, parseAuthIntoService } from "./auth-into-service"; -import { LettersOfAuth, parseLettersOfAuth } from "./letters-of-auth"; +import { DynamoDbImage, parseStringArray } from '../services/dynamodb-images'; +import { AuthIntoService, parseAuthIntoService } from './auth-into-service'; +import { LettersOfAuth, parseLettersOfAuth } from './letters-of-auth'; import { ApplicantDetailsProperties, parseApplicantDetailsProperties, -} from "./applicant-details-properties"; -import { parsePurchaserDetails, PurchaserDetails } from "./purchaser-details"; +} from './applicant-details-properties'; +import { parsePurchaserDetails, PurchaserDetails } from './purchaser-details'; import { ManufacturerDetails, parseManufacturerDetails, -} from "./manufacturer-details"; -import { Microfilm, parseMicrofilm } from "./microfilm"; -import { parsePlates, Plates } from "./plates"; -import { BodyType, parseBodyType } from "./body-type"; -import { Dimensions, parseDimensions } from "./dimensions"; -import { AdrDetails } from "./adr-details"; -import { parseVehicleClass, VehicleClass } from "./vehicle-class"; -import { Brakes, parseBrakes } from "./brakes"; -import { Axles, parseAxles } from "./axles"; -import { Dda } from "./dda"; -import { Maybe } from "./optionals"; +} from './manufacturer-details'; +import { Microfilm, parseMicrofilm } from './microfilm'; +import { parsePlates, Plates } from './plates'; +import { BodyType, parseBodyType } from './body-type'; +import { Dimensions, parseDimensions } from './dimensions'; +import { AdrDetails } from './adr-details'; +import { parseVehicleClass, VehicleClass } from './vehicle-class'; +import { Brakes, parseBrakes } from './brakes'; +import { Axles, parseAxles } from './axles'; +import { Dda } from './dda'; +import { Maybe } from './optionals'; import { EuVehicleCategory, VehicleConfiguration, VehicleSize, VehicleType, -} from "./shared-enums"; +} from './shared-enums'; export type TechRecords = TechRecord[]; @@ -132,30 +132,30 @@ export interface TechRecord { } export type FuelPropulsionSystem = - | "DieselPetrol" - | "Hybrid" - | "Electric" - | "CNG" - | "Fuel cell" - | "LNG" - | "Other"; + | 'DieselPetrol' + | 'Hybrid' + | 'Electric' + | 'CNG' + | 'Fuel cell' + | 'LNG' + | 'Other'; -export type ApprovalType = "NTA" | "ECTA" | "IVA" | "NSSTA" | "ECSSTA"; +export type ApprovalType = 'NTA' | 'ECTA' | 'IVA' | 'NSSTA' | 'ECSSTA'; -export type StatusCode = "archived" | "current" | "provisional"; +export type StatusCode = 'archived' | 'current' | 'provisional'; export type FrameDescription = - | "Channel section" - | "Space frame" - | "I section" - | "Tubular" - | "Frame section" - | "Other" - | "integral" - | "Box section" - | "U section"; + | 'Channel section' + | 'Space frame' + | 'I section' + | 'Tubular' + | 'Frame section' + | 'Other' + | 'integral' + | 'Box section' + | 'U section'; -export type UpdateType = "adrUpdate" | "techRecordUpdate"; +export type UpdateType = 'adrUpdate' | 'techRecordUpdate'; export const parseTechRecords = (image?: DynamoDbImage): TechRecords => { if (!image) { @@ -171,127 +171,125 @@ export const parseTechRecords = (image?: DynamoDbImage): TechRecords => { return techRecords; }; -const parseTechRecord = (image: DynamoDbImage): TechRecord => { - return { - recordCompleteness: image.getString("recordCompleteness"), - createdAt: image.getDate("createdAt"), - lastUpdatedAt: image.getDate("lastUpdatedAt"), - make: image.getString("make"), - model: image.getString("model"), - functionCode: image.getString("functionCode"), - fuelPropulsionSystem: image.getString( - "fuelPropulsionSystem" - ) as FuelPropulsionSystem, - offRoad: image.getBoolean("offRoad"), - numberOfWheelsDriven: image.getNumber("numberOfWheelsDriven"), - euVehicleCategory: image.getString( - "euVehicleCategory" - ) as EuVehicleCategory, - emissionsLimit: image.getNumber("emissionsLimit"), - departmentalVehicleMarker: image.getBoolean("departmentalVehicleMarker"), - authIntoService: parseAuthIntoService(image.getMap("authIntoService")), - lettersOfAuth: parseLettersOfAuth(image.getMap("lettersOfAuth")), - alterationMarker: image.getBoolean("alterationMarker"), - approvalType: image.getString("approvalType") as ApprovalType, - approvalTypeNumber: image.getString("approvalTypeNumber"), - variantNumber: image.getString("variantNumber"), - variantVersionNumber: image.getString("variantVersionNumber"), - grossEecWeight: image.getNumber("grossEecWeight"), - trainEecWeight: image.getNumber("trainEecWeight"), - maxTrainEecWeight: image.getNumber("maxTrainEecWeight"), - applicantDetails: parseApplicantDetailsProperties( - image.getMap("applicantDetails") - ), - purchaserDetails: parsePurchaserDetails(image.getMap("purchaserDetails")), - manufacturerDetails: parseManufacturerDetails( - image.getMap("manufacturerDetails") - ), - microfilm: parseMicrofilm(image.getMap("microfilm")), - plates: parsePlates(image.getList("plates")), - chassisMake: image.getString("chassisMake"), - chassisModel: image.getString("chassisModel"), - bodyMake: image.getString("bodyMake"), - bodyModel: image.getString("bodyModel"), - modelLiteral: image.getString("modelLiteral"), - bodyType: parseBodyType(image.getMap("bodyType")), - manufactureYear: image.getNumber("manufactureYear"), - regnDate: image.getString("regnDate"), - firstUseDate: image.getString("firstUseDate"), - coifDate: image.getString("coifDate"), - ntaNumber: image.getString("ntaNumber"), - coifSerialNumber: image.getString("coifSerialNumber"), - coifCertifierName: image.getString("coifCertifierName"), - conversionRefNo: image.getString("conversionRefNo"), - seatsLowerDeck: image.getNumber("seatsLowerDeck"), - seatsUpperDeck: image.getNumber("seatsUpperDeck"), - standingCapacity: image.getNumber("standingCapacity"), - speedRestriction: image.getNumber("speedRestriction"), - speedLimiterMrk: image.getBoolean("speedLimiterMrk"), - tachoExemptMrk: image.getBoolean("tachoExemptMrk"), - dispensations: image.getString("dispensations"), - remarks: image.getString("remarks"), - reasonForCreation: image.getString("reasonForCreation"), - statusCode: image.getString("statusCode") as StatusCode, - unladenWeight: image.getNumber("unladenWeight"), - grossKerbWeight: image.getNumber("grossKerbWeight"), - grossLadenWeight: image.getNumber("grossLadenWeight"), - grossGbWeight: image.getNumber("grossGbWeight"), - grossDesignWeight: image.getNumber("grossDesignWeight"), - trainGbWeight: image.getNumber("trainGbWeight"), - trainDesignWeight: image.getNumber("trainDesignWeight"), - maxTrainGbWeight: image.getNumber("maxTrainGbWeight"), - maxTrainDesignWeight: image.getNumber("maxTrainDesignWeight"), - maxLoadOnCoupling: image.getNumber("maxLoadOnCoupling"), - frameDescription: image.getString("frameDescription") as FrameDescription, - tyreUseCode: image.getString("tyreUseCode"), - roadFriendly: image.getBoolean("roadFriendly"), - drawbarCouplingFitted: image.getBoolean("drawbarCouplingFitted"), - euroStandard: image.getString("euroStandard"), - suspensionType: image.getString("suspensionType"), - couplingType: image.getString("couplingType"), - dimensions: parseDimensions(image.getMap("dimensions")), - frontAxleTo5thWheelMin: image.getNumber("frontAxleTo5thWheelMin"), - frontAxleTo5thWheelMax: image.getNumber("frontAxleTo5thWheelMax"), - frontVehicleTo5thWheelCouplingMin: image.getNumber( - "frontVehicleTo5thWheelCouplingMin" - ), - frontVehicleTo5thWheelCouplingMax: image.getNumber( - "frontVehicleTo5thWheelCouplingMax" - ), - frontAxleToRearAxle: image.getNumber("frontAxleToRearAxle"), - rearAxleToRearTrl: image.getNumber("rearAxleToRearTrl"), - couplingCenterToRearAxleMin: image.getNumber("couplingCenterToRearAxleMin"), - couplingCenterToRearAxleMax: image.getNumber("couplingCenterToRearAxleMax"), - couplingCenterToRearTrlMin: image.getNumber("couplingCenterToRearTrlMin"), - couplingCenterToRearTrlMax: image.getNumber("couplingCenterToRearTrlMax"), - centreOfRearmostAxleToRearOfTrl: image.getNumber( - "centreOfRearmostAxleToRearOfTrl" - ), - notes: image.getString("notes"), - noOfAxles: image.getNumber("noOfAxles"), - brakeCode: image.getString("brakeCode"), - adrDetails: undefined, // intentional - not implemented. parseAdrDetails(image.getMap("adrDetails")) - createdByName: image.getString("createdByName"), - createdById: image.getString("createdById"), - lastUpdatedByName: image.getString("lastUpdatedByName"), - lastUpdatedById: image.getString("lastUpdatedById"), - updateType: image.getString("updateType") as UpdateType, - vehicleClass: parseVehicleClass(image.getMap("vehicleClass")), - vehicleSubclass: parseStringArray(image.getList("vehicleSubclass")), - vehicleType: image.getString("vehicleType") as VehicleType, - vehicleSize: image.getString("vehicleSize") as VehicleSize, - numberOfSeatbelts: image.getString("numberOfSeatbelts"), - seatbeltInstallationApprovalDate: image.getString( - "seatbeltInstallationApprovalDate" - ), - vehicleConfiguration: image.getString( - "vehicleConfiguration" - ) as VehicleConfiguration, - brakes: parseBrakes(image.getMap("brakes")), - axles: parseAxles(image.getList("axles")), - dda: undefined, // intentional - not implemented. parseDda(image.getMap("dda")) - }; -}; +const parseTechRecord = (image: DynamoDbImage): TechRecord => ({ + recordCompleteness: image.getString('recordCompleteness'), + createdAt: image.getDate('createdAt'), + lastUpdatedAt: image.getDate('lastUpdatedAt'), + make: image.getString('make'), + model: image.getString('model'), + functionCode: image.getString('functionCode'), + fuelPropulsionSystem: image.getString( + 'fuelPropulsionSystem', + ) as FuelPropulsionSystem, + offRoad: image.getBoolean('offRoad'), + numberOfWheelsDriven: image.getNumber('numberOfWheelsDriven'), + euVehicleCategory: image.getString( + 'euVehicleCategory', + ) as EuVehicleCategory, + emissionsLimit: image.getNumber('emissionsLimit'), + departmentalVehicleMarker: image.getBoolean('departmentalVehicleMarker'), + authIntoService: parseAuthIntoService(image.getMap('authIntoService')), + lettersOfAuth: parseLettersOfAuth(image.getMap('lettersOfAuth')), + alterationMarker: image.getBoolean('alterationMarker'), + approvalType: image.getString('approvalType') as ApprovalType, + approvalTypeNumber: image.getString('approvalTypeNumber'), + variantNumber: image.getString('variantNumber'), + variantVersionNumber: image.getString('variantVersionNumber'), + grossEecWeight: image.getNumber('grossEecWeight'), + trainEecWeight: image.getNumber('trainEecWeight'), + maxTrainEecWeight: image.getNumber('maxTrainEecWeight'), + applicantDetails: parseApplicantDetailsProperties( + image.getMap('applicantDetails'), + ), + purchaserDetails: parsePurchaserDetails(image.getMap('purchaserDetails')), + manufacturerDetails: parseManufacturerDetails( + image.getMap('manufacturerDetails'), + ), + microfilm: parseMicrofilm(image.getMap('microfilm')), + plates: parsePlates(image.getList('plates')), + chassisMake: image.getString('chassisMake'), + chassisModel: image.getString('chassisModel'), + bodyMake: image.getString('bodyMake'), + bodyModel: image.getString('bodyModel'), + modelLiteral: image.getString('modelLiteral'), + bodyType: parseBodyType(image.getMap('bodyType')), + manufactureYear: image.getNumber('manufactureYear'), + regnDate: image.getString('regnDate'), + firstUseDate: image.getString('firstUseDate'), + coifDate: image.getString('coifDate'), + ntaNumber: image.getString('ntaNumber'), + coifSerialNumber: image.getString('coifSerialNumber'), + coifCertifierName: image.getString('coifCertifierName'), + conversionRefNo: image.getString('conversionRefNo'), + seatsLowerDeck: image.getNumber('seatsLowerDeck'), + seatsUpperDeck: image.getNumber('seatsUpperDeck'), + standingCapacity: image.getNumber('standingCapacity'), + speedRestriction: image.getNumber('speedRestriction'), + speedLimiterMrk: image.getBoolean('speedLimiterMrk'), + tachoExemptMrk: image.getBoolean('tachoExemptMrk'), + dispensations: image.getString('dispensations'), + remarks: image.getString('remarks'), + reasonForCreation: image.getString('reasonForCreation'), + statusCode: image.getString('statusCode') as StatusCode, + unladenWeight: image.getNumber('unladenWeight'), + grossKerbWeight: image.getNumber('grossKerbWeight'), + grossLadenWeight: image.getNumber('grossLadenWeight'), + grossGbWeight: image.getNumber('grossGbWeight'), + grossDesignWeight: image.getNumber('grossDesignWeight'), + trainGbWeight: image.getNumber('trainGbWeight'), + trainDesignWeight: image.getNumber('trainDesignWeight'), + maxTrainGbWeight: image.getNumber('maxTrainGbWeight'), + maxTrainDesignWeight: image.getNumber('maxTrainDesignWeight'), + maxLoadOnCoupling: image.getNumber('maxLoadOnCoupling'), + frameDescription: image.getString('frameDescription') as FrameDescription, + tyreUseCode: image.getString('tyreUseCode'), + roadFriendly: image.getBoolean('roadFriendly'), + drawbarCouplingFitted: image.getBoolean('drawbarCouplingFitted'), + euroStandard: image.getString('euroStandard'), + suspensionType: image.getString('suspensionType'), + couplingType: image.getString('couplingType'), + dimensions: parseDimensions(image.getMap('dimensions')), + frontAxleTo5thWheelMin: image.getNumber('frontAxleTo5thWheelMin'), + frontAxleTo5thWheelMax: image.getNumber('frontAxleTo5thWheelMax'), + frontVehicleTo5thWheelCouplingMin: image.getNumber( + 'frontVehicleTo5thWheelCouplingMin', + ), + frontVehicleTo5thWheelCouplingMax: image.getNumber( + 'frontVehicleTo5thWheelCouplingMax', + ), + frontAxleToRearAxle: image.getNumber('frontAxleToRearAxle'), + rearAxleToRearTrl: image.getNumber('rearAxleToRearTrl'), + couplingCenterToRearAxleMin: image.getNumber('couplingCenterToRearAxleMin'), + couplingCenterToRearAxleMax: image.getNumber('couplingCenterToRearAxleMax'), + couplingCenterToRearTrlMin: image.getNumber('couplingCenterToRearTrlMin'), + couplingCenterToRearTrlMax: image.getNumber('couplingCenterToRearTrlMax'), + centreOfRearmostAxleToRearOfTrl: image.getNumber( + 'centreOfRearmostAxleToRearOfTrl', + ), + notes: image.getString('notes'), + noOfAxles: image.getNumber('noOfAxles'), + brakeCode: image.getString('brakeCode'), + adrDetails: undefined, // intentional - not implemented. parseAdrDetails(image.getMap("adrDetails")) + createdByName: image.getString('createdByName'), + createdById: image.getString('createdById'), + lastUpdatedByName: image.getString('lastUpdatedByName'), + lastUpdatedById: image.getString('lastUpdatedById'), + updateType: image.getString('updateType') as UpdateType, + vehicleClass: parseVehicleClass(image.getMap('vehicleClass')), + vehicleSubclass: parseStringArray(image.getList('vehicleSubclass')), + vehicleType: image.getString('vehicleType') as VehicleType, + vehicleSize: image.getString('vehicleSize') as VehicleSize, + numberOfSeatbelts: image.getString('numberOfSeatbelts'), + seatbeltInstallationApprovalDate: image.getString( + 'seatbeltInstallationApprovalDate', + ), + vehicleConfiguration: image.getString( + 'vehicleConfiguration', + ) as VehicleConfiguration, + brakes: parseBrakes(image.getMap('brakes')), + axles: parseAxles(image.getList('axles')), + dda: undefined, // intentional - not implemented. parseDda(image.getMap("dda")) +}); export const getFaxNumber = (techRecord: TechRecord): Maybe => { if (techRecord.purchaserDetails) { diff --git a/src/models/test-results.ts b/src/models/test-results.ts index 61f611b..131dea7 100644 --- a/src/models/test-results.ts +++ b/src/models/test-results.ts @@ -1,21 +1,21 @@ -import { parseVehicleClass, VehicleClass } from "./vehicle-class"; -import { parseTestTypes, TestTypes } from "./test-types"; +import { parseVehicleClass, VehicleClass } from './vehicle-class'; +import { parseTestTypes, TestTypes } from './test-types'; import { EuVehicleCategory, VehicleConfiguration, VehicleSize, VehicleType, -} from "./shared-enums"; -import { DynamoDbImage, parseStringArray } from "../services/dynamodb-images"; -import { debugLog } from "../services/logger"; +} from './shared-enums'; +import { DynamoDbImage, parseStringArray } from '../services/dynamodb-images'; +import { debugLog } from '../services/logger'; -export type TestVersion = "current" | "archived"; +export type TestVersion = 'current' | 'archived'; -export type TestStationType = "atf" | "gvts" | "hq"; +export type TestStationType = 'atf' | 'gvts' | 'hq'; -export type TestStatus = "submitted" | "cancelled"; +export type TestStatus = 'submitted' | 'cancelled'; -export type OdometerReadingUnits = "kilometres" | "miles"; +export type OdometerReadingUnits = 'kilometres' | 'miles'; export type TestResults = TestResult[]; @@ -66,70 +66,68 @@ export interface TestResult { } export const parseTestResults = (image?: DynamoDbImage): TestResults => { - debugLog("Parsing test results..."); + debugLog('Parsing test results...'); if (!image) { - debugLog("image is null or undefined, no test results to process"); + debugLog('image is null or undefined, no test results to process'); return [] as TestResults; } - if (!image.getString("systemNumber")) { + if (!image.getString('systemNumber')) { throw new Error("result is missing required field 'systemNumber'"); } return [parseTestResult(image)]; }; -export const parseTestResult = (image: DynamoDbImage): TestResult => { - return { - systemNumber: image.getString("systemNumber"), - vrm: image.getString("vrm"), - trailerId: image.getString("trailerId"), - vin: image.getString("vin"), - vehicleId: image.getString("vehicleId"), - deletionFlag: image.getBoolean("deletionFlag"), - testVersion: image.getString("testVersion") as TestVersion, - reasonForCreation: image.getString("reasonForCreation"), - createdAt: image.getDate("createdAt"), - createdByName: image.getString("createdByName"), - createdById: image.getString("createdById"), - lastUpdatedAt: image.getDate("lastUpdatedAt"), - lastUpdatedByName: image.getString("lastUpdatedByName"), - lastUpdatedById: image.getString("lastUpdatedById"), - shouldEmailCertificate: image.getString("shouldEmailCertificate"), - testStationName: image.getString("testStationName"), - testStationPNumber: image.getString("testStationPNumber"), - testStationType: image.getString("testStationType") as TestStationType, - testerName: image.getString("testerName"), - testerStaffId: image.getString("testerStaffId"), - testResultId: image.getString("testResultId"), - testerEmailAddress: image.getString("testerEmailAddress"), - testStartTimestamp: image.getDate("testStartTimestamp"), - testEndTimestamp: image.getDate("testEndTimestamp"), - testStatus: image.getString("testStatus") as TestStatus, - reasonForCancellation: image.getString("reasonForCancellation"), - vehicleClass: parseVehicleClass(image.getMap("vehicleClass")), - vehicleSubclass: parseStringArray(image.getList("vehicleSubclass")), - vehicleType: image.getString("vehicleType") as VehicleType, - numberOfSeats: image.getNumber("numberOfSeats"), - vehicleConfiguration: image.getString( - "vehicleConfiguration" - ) as VehicleConfiguration, - odometerReading: image.getNumber("odometerReading"), - odometerReadingUnits: image.getString( - "odometerReadingUnits" - ) as OdometerReadingUnits, - preparerId: image.getString("preparerId"), - preparerName: image.getString("preparerName"), - numberOfWheelsDriven: image.getNumber("numberOfWheelsDriven"), - euVehicleCategory: image.getString( - "euVehicleCategory" - ) as EuVehicleCategory, - countryOfRegistration: image.getString("countryOfRegistration"), - vehicleSize: image.getString("vehicleSize") as VehicleSize, - noOfAxles: image.getNumber("noOfAxles"), - regnDate: image.getString("regnDate"), - firstUseDate: image.getString("firstUseDate"), - testTypes: parseTestTypes(image.getList("testTypes")), - }; -}; +export const parseTestResult = (image: DynamoDbImage): TestResult => ({ + systemNumber: image.getString('systemNumber'), + vrm: image.getString('vrm'), + trailerId: image.getString('trailerId'), + vin: image.getString('vin'), + vehicleId: image.getString('vehicleId'), + deletionFlag: image.getBoolean('deletionFlag'), + testVersion: image.getString('testVersion') as TestVersion, + reasonForCreation: image.getString('reasonForCreation'), + createdAt: image.getDate('createdAt'), + createdByName: image.getString('createdByName'), + createdById: image.getString('createdById'), + lastUpdatedAt: image.getDate('lastUpdatedAt'), + lastUpdatedByName: image.getString('lastUpdatedByName'), + lastUpdatedById: image.getString('lastUpdatedById'), + shouldEmailCertificate: image.getString('shouldEmailCertificate'), + testStationName: image.getString('testStationName'), + testStationPNumber: image.getString('testStationPNumber'), + testStationType: image.getString('testStationType') as TestStationType, + testerName: image.getString('testerName'), + testerStaffId: image.getString('testerStaffId'), + testResultId: image.getString('testResultId'), + testerEmailAddress: image.getString('testerEmailAddress'), + testStartTimestamp: image.getDate('testStartTimestamp'), + testEndTimestamp: image.getDate('testEndTimestamp'), + testStatus: image.getString('testStatus') as TestStatus, + reasonForCancellation: image.getString('reasonForCancellation'), + vehicleClass: parseVehicleClass(image.getMap('vehicleClass')), + vehicleSubclass: parseStringArray(image.getList('vehicleSubclass')), + vehicleType: image.getString('vehicleType') as VehicleType, + numberOfSeats: image.getNumber('numberOfSeats'), + vehicleConfiguration: image.getString( + 'vehicleConfiguration', + ) as VehicleConfiguration, + odometerReading: image.getNumber('odometerReading'), + odometerReadingUnits: image.getString( + 'odometerReadingUnits', + ) as OdometerReadingUnits, + preparerId: image.getString('preparerId'), + preparerName: image.getString('preparerName'), + numberOfWheelsDriven: image.getNumber('numberOfWheelsDriven'), + euVehicleCategory: image.getString( + 'euVehicleCategory', + ) as EuVehicleCategory, + countryOfRegistration: image.getString('countryOfRegistration'), + vehicleSize: image.getString('vehicleSize') as VehicleSize, + noOfAxles: image.getNumber('noOfAxles'), + regnDate: image.getString('regnDate'), + firstUseDate: image.getString('firstUseDate'), + testTypes: parseTestTypes(image.getList('testTypes')), +}); diff --git a/src/models/test-types.ts b/src/models/test-types.ts index 01fb038..89a4e5a 100644 --- a/src/models/test-types.ts +++ b/src/models/test-types.ts @@ -1,31 +1,31 @@ -import { ModType, parseModType } from "./mod-type"; +import { ModType, parseModType } from './mod-type'; import { CustomDefects, Defects, parseCustomDefects, parseDefects, -} from "./defects"; -import { DynamoDbImage } from "../services/dynamodb-images"; +} from './defects'; +import { DynamoDbImage } from '../services/dynamodb-images'; -export type TestResultStatus = "fail" | "pass" | "prs" | "abandoned"; +export type TestResultStatus = 'fail' | 'pass' | 'prs' | 'abandoned'; export type EmissionStandard = - | "0.10 g/kWh Euro 3 PM" - | "0.03 g/kWh Euro IV PM" - | "Euro 3" - | "Euro 4" - | "Euro 6" - | "Euro VI" - | "Full Electric"; + | '0.10 g/kWh Euro 3 PM' + | '0.03 g/kWh Euro IV PM' + | 'Euro 3' + | 'Euro 4' + | 'Euro 6' + | 'Euro VI' + | 'Full Electric'; export type FuelType = - | "diesel" - | "gas-cng" - | "gas-lng" - | "gas-lpg" - | "fuel cell" - | "petrol" - | "full electric"; + | 'diesel' + | 'gas-cng' + | 'gas-lng' + | 'gas-lpg' + | 'fuel cell' + | 'petrol' + | 'full electric'; export type TestTypes = TestType[]; @@ -80,47 +80,45 @@ export const parseTestTypes = (image?: DynamoDbImage): TestTypes => { return testResults; }; -export const parseTestType = (image: DynamoDbImage): TestType => { - return { - createdAt: image.getDate("createdAt"), - lastUpdatedAt: image.getDate("lastUpdatedAt"), - deletionFlag: image.getBoolean("deletionFlag"), - testCode: image.getString("testCode"), - testTypeClassification: image.getString("testTypeClassification"), - testTypeName: image.getString("testTypeName"), - name: image.getString("name"), - testTypeId: image.getString("testTypeId"), - testNumber: image.getString("testNumber"), - certificateNumber: image.getString("certificateNumber"), - secondaryCertificateNumber: image.getString("secondaryCertificateNumber"), - certificateLink: image.getString("certificateLink"), - testExpiryDate: image.getDate("testExpiryDate"), - testAnniversaryDate: image.getDate("testAnniversaryDate"), - testTypeStartTimestamp: image.getDate("testTypeStartTimestamp"), - testTypeEndTimestamp: image.getDate("testTypeEndTimestamp"), - statusUpdatedFlag: image.getBoolean("statusUpdatedFlag"), - numberOfSeatbeltsFitted: image.getNumber("numberOfSeatbeltsFitted"), - lastSeatbeltInstallationCheckDate: image.getString( - "lastSeatbeltInstallationCheckDate" - ), - seatbeltInstallationCheckDate: image.getBoolean( - "seatbeltInstallationCheckDate" - ), - testResult: image.getString("testResult") as TestResultStatus, - prohibitionIssued: image.getBoolean("prohibitionIssued"), - reasonForAbandoning: image.getString("reasonForAbandoning"), - additionalNotesRecorded: image.getString("additionalNotesRecorded"), - additionalCommentsForAbandon: image.getString( - "additionalCommentsForAbandon" - ), - modType: parseModType(image.getMap("modType")), - emissionStandard: image.getString("emissionStandard") as EmissionStandard, - fuelType: image.getString("fuelType") as FuelType, - particulateTrapFitted: image.getString("particulateTrapFitted"), - particulateTrapSerialNumber: image.getString("particulateTrapSerialNumber"), - modificationTypeUsed: image.getString("modificationTypeUsed"), - smokeTestKLimitApplied: image.getString("smokeTestKLimitApplied"), - defects: parseDefects(image.getList("defects")), - customDefects: parseCustomDefects(image.getList("customDefects")), - }; -}; +export const parseTestType = (image: DynamoDbImage): TestType => ({ + createdAt: image.getDate('createdAt'), + lastUpdatedAt: image.getDate('lastUpdatedAt'), + deletionFlag: image.getBoolean('deletionFlag'), + testCode: image.getString('testCode'), + testTypeClassification: image.getString('testTypeClassification'), + testTypeName: image.getString('testTypeName'), + name: image.getString('name'), + testTypeId: image.getString('testTypeId'), + testNumber: image.getString('testNumber'), + certificateNumber: image.getString('certificateNumber'), + secondaryCertificateNumber: image.getString('secondaryCertificateNumber'), + certificateLink: image.getString('certificateLink'), + testExpiryDate: image.getDate('testExpiryDate'), + testAnniversaryDate: image.getDate('testAnniversaryDate'), + testTypeStartTimestamp: image.getDate('testTypeStartTimestamp'), + testTypeEndTimestamp: image.getDate('testTypeEndTimestamp'), + statusUpdatedFlag: image.getBoolean('statusUpdatedFlag'), + numberOfSeatbeltsFitted: image.getNumber('numberOfSeatbeltsFitted'), + lastSeatbeltInstallationCheckDate: image.getString( + 'lastSeatbeltInstallationCheckDate', + ), + seatbeltInstallationCheckDate: image.getBoolean( + 'seatbeltInstallationCheckDate', + ), + testResult: image.getString('testResult') as TestResultStatus, + prohibitionIssued: image.getBoolean('prohibitionIssued'), + reasonForAbandoning: image.getString('reasonForAbandoning'), + additionalNotesRecorded: image.getString('additionalNotesRecorded'), + additionalCommentsForAbandon: image.getString( + 'additionalCommentsForAbandon', + ), + modType: parseModType(image.getMap('modType')), + emissionStandard: image.getString('emissionStandard') as EmissionStandard, + fuelType: image.getString('fuelType') as FuelType, + particulateTrapFitted: image.getString('particulateTrapFitted'), + particulateTrapSerialNumber: image.getString('particulateTrapSerialNumber'), + modificationTypeUsed: image.getString('modificationTypeUsed'), + smokeTestKLimitApplied: image.getString('smokeTestKLimitApplied'), + defects: parseDefects(image.getList('defects')), + customDefects: parseCustomDefects(image.getList('customDefects')), +}); diff --git a/src/models/vehicle-class.ts b/src/models/vehicle-class.ts index 5cb61ce..9caa374 100644 --- a/src/models/vehicle-class.ts +++ b/src/models/vehicle-class.ts @@ -1,5 +1,5 @@ -import { DynamoDbImage } from "../services/dynamodb-images"; -import { Maybe } from "./optionals"; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { Maybe } from './optionals'; export interface VehicleClass { code?: VehicleCode; @@ -7,42 +7,42 @@ export interface VehicleClass { } export type VehicleDescription = - | "motorbikes over 200cc or with a sidecar" - | "not applicable" - | "small psv (ie: less than or equal to 22 seats)" - | "motorbikes up to 200cc" - | "trailer" - | "large psv(ie: greater than 23 seats)" - | "3 wheelers" - | "heavy goods vehicle" - | "MOT class 4" - | "MOT class 7" - | "MOT class 5" - | "PSV of unknown or unspecified size" - | "Not Known"; + | 'motorbikes over 200cc or with a sidecar' + | 'not applicable' + | 'small psv (ie: less than or equal to 22 seats)' + | 'motorbikes up to 200cc' + | 'trailer' + | 'large psv(ie: greater than 23 seats)' + | '3 wheelers' + | 'heavy goods vehicle' + | 'MOT class 4' + | 'MOT class 7' + | 'MOT class 5' + | 'PSV of unknown or unspecified size' + | 'Not Known'; export type VehicleCode = - | "2" - | "n" - | "s" - | "1" - | "t" - | "l" - | "3" - | "v" - | "4" - | "7" - | "5"; + | '2' + | 'n' + | 's' + | '1' + | 't' + | 'l' + | '3' + | 'v' + | '4' + | '7' + | '5'; export const parseVehicleClass = ( - vehicleClass?: DynamoDbImage + vehicleClass?: DynamoDbImage, ): Maybe => { if (!vehicleClass) { return undefined; } return { - code: vehicleClass.getString("code") as VehicleCode, - description: vehicleClass.getString("description") as VehicleDescription, + code: vehicleClass.getString('code') as VehicleCode, + description: vehicleClass.getString('description') as VehicleDescription, }; }; diff --git a/src/services/connection-pool-options.ts b/src/services/connection-pool-options.ts index 6e66f2a..a6eb406 100644 --- a/src/services/connection-pool-options.ts +++ b/src/services/connection-pool-options.ts @@ -1,6 +1,6 @@ -import { PoolOptions } from "mysql2/promise"; -import { getSecretValue } from "./secrets-manager"; -import { SecretsManagerConfig } from "../models/aws-sm-config"; +import { PoolOptions } from 'mysql2/promise'; +import { getSecretValue } from './secrets-manager'; +import { SecretsManagerConfig } from '../models/aws-sm-config'; export const getConnectionPoolOptions = async (): Promise => { const config: SecretsManagerConfig = await getConfig(); diff --git a/src/services/connection-pool.ts b/src/services/connection-pool.ts index 7158e7b..8516d22 100644 --- a/src/services/connection-pool.ts +++ b/src/services/connection-pool.ts @@ -1,8 +1,8 @@ -import * as mysql2 from "mysql2/promise"; -import { Connection, FieldPacket, Pool } from "mysql2/promise"; -import { Maybe } from "../models/optionals"; -import { getConnectionPoolOptions } from "./connection-pool-options"; -import { debugLog } from "./logger"; +import * as mysql2 from 'mysql2/promise'; +import { Connection, FieldPacket, Pool } from 'mysql2/promise'; +import { Maybe } from '../models/optionals'; +import { getConnectionPoolOptions } from './connection-pool-options'; +import { debugLog } from './logger'; export interface QueryResponse { rows?: any; @@ -14,10 +14,10 @@ let pool: Maybe; export const getConnectionPool = async (): Promise => { if (pool) { - debugLog("getConnectionPool: Returning existing connection pool"); + debugLog('getConnectionPool: Returning existing connection pool'); return pool; } - debugLog("getConnectionPool: Creating connection pool..."); + debugLog('getConnectionPool: Creating connection pool...'); const config = await getConnectionPoolOptions(); @@ -25,45 +25,42 @@ export const getConnectionPool = async (): Promise => { pool = mysql2.createPool(config); - debugLog("getConnectionPool: Connection pool created"); + debugLog('getConnectionPool: Connection pool created'); return pool; }; export const destroyConnectionPool = async (): Promise => { - debugLog("destroyConnectionPool: Destroying connection pool..."); + debugLog('destroyConnectionPool: Destroying connection pool...'); if (pool) { await pool.end(); pool = undefined; - debugLog(`destroyConnectionPool: connection pool destroyed`); + debugLog('destroyConnectionPool: connection pool destroyed'); } else { - debugLog(`destroyConnectionPool: nothing to do`); + debugLog('destroyConnectionPool: nothing to do'); } }; export const executeSql = async ( sql: string, templateVariables?: any[], - connection?: Connection + connection?: Connection, ): Promise => { if (templateVariables) { + // eslint-disable-next-line no-param-reassign templateVariables = undefinedToNull(templateVariables); } debugLog(`Executing SQL: ${sql}`); - debugLog( - `Template vars: ${ - templateVariables === undefined ? "[]" : templateVariables - }` - ); + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + debugLog(`Template vars: ${templateVariables === undefined ? '[]' : templateVariables}`); if (connection) { const [rows, fields] = await connection.execute(sql, templateVariables); return { rows, fields }; - } else { - const connectionPool = await getConnectionPool(); - const [rows, fields] = await connectionPool.execute(sql, templateVariables); - return { rows, fields }; } + const connectionPool = await getConnectionPool(); + const [rows, fields] = await connectionPool.execute(sql, templateVariables); + return { rows, fields }; }; // npm packages mysql and mysql2 will throw an error on encountering JS "undefined". diff --git a/src/services/dynamodb-images.ts b/src/services/dynamodb-images.ts index 992c92c..bb3a3b3 100644 --- a/src/services/dynamodb-images.ts +++ b/src/services/dynamodb-images.ts @@ -1,10 +1,11 @@ -import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; -import { parseISO } from "date-fns"; -import { Maybe } from "../models/optionals"; -import { padWithZeros } from "../utils/padwithzeros"; - -export type DynamoDbItemType = "NULL" | "BOOL" | "S" | "N" | "B" | "M" | "L"; -export type DynamoDbArrayType = "SS" | "NS" | "BS"; +/* eslint-disable no-restricted-globals */ +import { NativeAttributeValue } from '@aws-sdk/util-dynamodb'; +import { parseISO } from 'date-fns'; +import { Maybe } from '../models/optionals'; +import { padWithZeros } from '../utils/padwithzeros'; + +export type DynamoDbItemType = 'NULL' | 'BOOL' | 'S' | 'N' | 'B' | 'M' | 'L'; +export type DynamoDbArrayType = 'SS' | 'NS' | 'BS'; export type DynamoDbType = DynamoDbItemType | DynamoDbArrayType; export interface DynamoDbField { @@ -23,12 +24,12 @@ export class DynamoDbImage { this.fields = list.reduce( ( map: Map, - field: DynamoDbField + field: DynamoDbField, ): Map => { - map.set(field.key!, field); + map.set(field.key, field); return map; }, - new Map() + new Map(), ); } @@ -71,7 +72,7 @@ export class DynamoDbImage { * @param key */ public getBoolean(key: string): boolean { - return this.parse(key, "BOOL", (v: any) => v as boolean, false); + return this.parse(key, 'BOOL', (v: any) => v as boolean, false); } /** @@ -79,7 +80,7 @@ export class DynamoDbImage { * @param key */ public getString(key: string): Maybe { - return this.parseItem(key, "S", (v: any) => v as string); + return this.parseItem(key, 'S', (v: any) => v as string); } /** @@ -87,7 +88,7 @@ export class DynamoDbImage { * @param key */ public getDate(key: string): Maybe { - return this.parseItem(key, "S", (v: any) => { + return this.parseItem(key, 'S', (v: any) => { const parsedDate = parseISO(v); const year = parsedDate.getUTCFullYear(); const month = padToTwo(parsedDate.getUTCMonth() + 1); @@ -106,7 +107,7 @@ export class DynamoDbImage { * @param key */ public getStrings(key: string): string[] { - return this.parseArray(key, "SS", (arr: any) => arr as string[]); + return this.parseArray(key, 'SS', (arr: any) => arr as string[]); } /** @@ -114,7 +115,7 @@ export class DynamoDbImage { * @param key */ public getNumber(key: string): Maybe { - return this.parseItem(key, "N", (v: any) => parseFloat(v)); + return this.parseItem(key, 'N', (v: any) => parseFloat(v)); } /** @@ -124,8 +125,8 @@ export class DynamoDbImage { public getNumbers(key: string): number[] { return this.parseArray( key, - "NS", - (arr: any) => arr.map((e: any) => parseFloat(e)) as number[] + 'NS', + (arr: any) => arr.map((e: any) => parseFloat(e)) as number[], ); } @@ -136,8 +137,8 @@ export class DynamoDbImage { public getBinary(key: string): Maybe { return this.parseItem( key, - "B", - (v: any) => Buffer.from(v, "base64") as Buffer + 'B', + (v: any) => Buffer.from(v, 'base64'), ); } @@ -148,8 +149,8 @@ export class DynamoDbImage { public getBinaries(key: string): Buffer[] { return this.parseArray( key, - "BS", - (arr: any) => arr.map((e: string) => Buffer.from(e, "base64")) as Buffer[] + 'BS', + (arr: any) => arr.map((e: string) => Buffer.from(e, 'base64')) as Buffer[], ); } @@ -160,8 +161,8 @@ export class DynamoDbImage { public getMap(key: string): Maybe { return this.parseItem( key, - "M", - (v: any) => DynamoDbImage.parse(v) as DynamoDbImage + 'M', + (v: any) => DynamoDbImage.parse(v), ); } @@ -172,18 +173,16 @@ export class DynamoDbImage { * @param key */ public getList(key: string): Maybe { - return this.parseItem(key, "L", (v: any) => { + return this.parseItem(key, 'L', (v: any) => { let index = 0; return new DynamoDbImage( v .map((e: NativeAttributeValue) => typeValuePair(e)) - .map(([type, value]: [DynamoDbType, any]) => { - return { - key: "" + index++, - type, - value, - } as DynamoDbField; - }) + .map(([type, value]: [DynamoDbType, any]) => ({ + key: `${index++}`, + type, + value, + } as DynamoDbField)), ); }); } @@ -207,7 +206,7 @@ export class DynamoDbImage { private parseItem( key: string, expectedType: DynamoDbItemType, - parser: (value: any) => T + parser: (value: any) => T, ): Maybe { return this.parse(key, expectedType, parser, undefined); } @@ -222,7 +221,7 @@ export class DynamoDbImage { private parseArray( key: string, expectedType: DynamoDbArrayType, - parser: (value: any) => E[] + parser: (value: any) => E[], ): E[] { return this.parse(key, expectedType, parser, []); } @@ -231,7 +230,7 @@ export class DynamoDbImage { key: string, expectedType: DynamoDbType, parser: (value: any) => ANY, - defaultValue: ANY + defaultValue: ANY, ): ANY { const field: Maybe = this.fields.get(key); @@ -240,7 +239,7 @@ export class DynamoDbImage { } switch (field.type) { - case "NULL": { + case 'NULL': { // account for explicit nulls in source data return defaultValue; } @@ -252,26 +251,24 @@ export class DynamoDbImage { } } -const padToTwo = (digit: number): string => { - return digit > 9 ? digit.toString() : "0" + digit; -}; +const padToTwo = (digit: number): string => (digit > 9 ? digit.toString() : `0${digit}`); const verifyType = ( expectedType: DynamoDbType, field: DynamoDbField, - value: any + value: any, ) => { if (expectedType !== field.type) { if ( - expectedType === "N" && - field.type === "S" && - !isNaN(value) && - !isNaN(parseFloat(value)) + expectedType === 'N' + && field.type === 'S' + && !isNaN(value) + && !isNaN(parseFloat(value)) ) { return; } throw new Error( - `field ${field.key} is not of type "${expectedType}" (actual: "${field.type}")` + `field ${field.key} is not of type "${expectedType}" (actual: "${field.type}")`, ); } }; @@ -281,7 +278,8 @@ const typeValuePair = (value: NativeAttributeValue): [DynamoDbType, any] => { if (typeKeys.length !== 1) { throw new Error( - `expected exactly 1 type key, found ${typeKeys.length} (${typeKeys})` + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions + `expected exactly 1 type key, found ${typeKeys.length} (${typeKeys})`, ); } diff --git a/src/services/entity-conversion.ts b/src/services/entity-conversion.ts index 240b884..ea924b9 100644 --- a/src/services/entity-conversion.ts +++ b/src/services/entity-conversion.ts @@ -1,9 +1,10 @@ -import { DynamoDbImage } from "./dynamodb-images"; -import { techRecordDocumentConverter } from "./tech-record-document-conversion"; -import { testResultsConverter } from "./test-result-record-conversion"; -import { SqlOperation } from "./sql-operations"; -import { Maybe } from "../models/optionals"; -import { debugLog } from "./logger"; +/* eslint-disable import/no-cycle */ +import { DynamoDbImage } from './dynamodb-images'; +import { techRecordDocumentConverter } from './tech-record-document-conversion'; +import { testResultsConverter } from './test-result-record-conversion'; +import { SqlOperation } from './sql-operations'; +import { Maybe } from '../models/optionals'; +import { debugLog } from './logger'; export interface EntityConverter { parseRootImage: (image: DynamoDbImage) => T; @@ -13,8 +14,8 @@ export interface EntityConverter { const entityConverters: Map> = new Map(); -entityConverters.set("technical-records", techRecordDocumentConverter()); -entityConverters.set("test-results", testResultsConverter()); +entityConverters.set('technical-records', techRecordDocumentConverter()); +entityConverters.set('test-results', testResultsConverter()); /** * Shared conversion code: convert from DynamoDB document snapshot to Aurora RDS rows @@ -26,41 +27,44 @@ entityConverters.set("test-results", testResultsConverter()); export const convert = async ( tableName: string, sqlOperation: SqlOperation, - image: DynamoDbImage + image: DynamoDbImage, + // eslint-disable-next-line consistent-return ): Promise => { debugLog(`source table name: '${tableName}'`); const converter = getEntityConverter(tableName); - debugLog("valid converter found"); + debugLog('valid converter found'); const entity: T = converter.parseRootImage(image) as T; - + // eslint-disable-next-line default-case switch (sqlOperation) { - case "INSERT": - case "UPDATE": - debugLog(`Upserting entity...`); + case 'INSERT': + case 'UPDATE': + debugLog('Upserting entity...'); return converter.upsertEntity(entity); - case "DELETE": - debugLog(`Deleting entity...`); + case 'DELETE': + debugLog('Deleting entity...'); return converter.deleteEntity(entity); } }; const getEntityConverter = (tableName: string): EntityConverter => { if ( - tableName.includes("technical-records") || - tableName.includes("flat-tech-records") + tableName.includes('technical-records') + || tableName.includes('flat-tech-records') ) { - tableName = "technical-records"; - } else if (tableName.includes("test-results")) { - tableName = "test-results"; + // eslint-disable-next-line no-param-reassign + tableName = 'technical-records'; + } else if (tableName.includes('test-results')) { + // eslint-disable-next-line no-param-reassign + tableName = 'test-results'; } debugLog(`converter key: '${tableName}'`); const entityConverter: Maybe> = entityConverters.get( - tableName + tableName, ); if (!entityConverter) { diff --git a/src/services/secrets-manager.ts b/src/services/secrets-manager.ts index 77d5448..5f71b2d 100644 --- a/src/services/secrets-manager.ts +++ b/src/services/secrets-manager.ts @@ -1,5 +1,5 @@ -import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; -import { debugLog } from "./logger"; +import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager'; +import { debugLog } from './logger'; export const getSecretValue = async (secretName: string): Promise => { // This constructor is inside the function for testability (Jest hoisting is a pain). @@ -21,11 +21,11 @@ export const getSecretValue = async (secretName: string): Promise => { if (secretValue.SecretString) { return secretValue.SecretString; - } else if (secretValue.SecretBinary) { + } if (secretValue.SecretBinary) { return secretValue.SecretBinary.toString(); } throw new Error( - `secret '${secretName}' must contain one of ['SecretString', 'SecretBinary']` + `secret '${secretName}' must contain one of ['SecretString', 'SecretBinary']`, ); }; diff --git a/src/services/sql-execution.ts b/src/services/sql-execution.ts index 45576ad..b32d63e 100644 --- a/src/services/sql-execution.ts +++ b/src/services/sql-execution.ts @@ -1,13 +1,13 @@ -import { executeSql, QueryResponse } from "./connection-pool"; -import { Connection } from "mysql2/promise"; -import { TableDetails } from "./table-details"; +import { Connection } from 'mysql2/promise'; +import { executeSql, QueryResponse } from './connection-pool'; +import { TableDetails } from './table-details'; import { generateFullUpsertSql, generateSelectSql, generatePartialUpsertSql, generateSelectRecordIds, generateDeleteBasedOnWhereIn, -} from "./sql-generation"; +} from './sql-generation'; /** * Execute a "partial upsert" on a fingerprinted table: @@ -23,14 +23,12 @@ import { export const executePartialUpsert = ( tableDetails: TableDetails, templateVariables: any[], - connection: Connection -): Promise => { - return executeSql( - generatePartialUpsertSql(tableDetails), - templateVariables, - connection - ); -}; + connection: Connection, +): Promise => executeSql( + generatePartialUpsertSql(tableDetails), + templateVariables, + connection, +); /** * Execute a "select or partial upsert" on a fingerprinted table: @@ -46,23 +44,22 @@ export const executePartialUpsert = ( export const executePartialUpsertIfNotExists = async ( tableDetails: TableDetails, templateVariables: any[], - connection: Connection + connection: Connection, ): Promise => { const selectResultSet = await executeSql( generateSelectSql(tableDetails), templateVariables, - connection + connection, ); if (selectResultSet.rows.length === 0) { return executeSql( generatePartialUpsertSql(tableDetails), templateVariables, - connection + connection, ); - } else { - return { rows: selectResultSet.rows[0], fields: selectResultSet.fields }; } + return { rows: selectResultSet.rows[0], fields: selectResultSet.fields }; }; /** @@ -77,14 +74,15 @@ export const executePartialUpsertIfNotExists = async ( export const executeFullUpsert = async ( tableDetails: TableDetails, templateVariables: any[], - connection: Connection + connection: Connection, ): Promise => { + // eslint-disable-next-line no-param-reassign templateVariables = templateVariables.concat(templateVariables.slice()); return executeSql( generateFullUpsertSql(tableDetails), templateVariables, - connection + connection, ); }; @@ -92,27 +90,27 @@ export async function deleteBasedOnWhereIn( targetTableName: string, targetColumnName: string, ids: any[], - connection: Connection + connection: Connection, ): Promise { const values: any[] | undefined = Object.values(ids); return executeSql( generateDeleteBasedOnWhereIn(targetTableName, targetColumnName, ids), values, - connection + connection, ); } export async function selectRecordIds( targetTableName: string, conditionAttributes: { [key: string]: any }, - connection: Connection + connection: Connection, ): Promise { const values: any[] | undefined = Object.values(conditionAttributes); return executeSql( generateSelectRecordIds(targetTableName, conditionAttributes), values, - connection + connection, ); } diff --git a/src/services/sql-generation.ts b/src/services/sql-generation.ts index 82dda81..d1e5a6a 100644 --- a/src/services/sql-generation.ts +++ b/src/services/sql-generation.ts @@ -1,4 +1,5 @@ -import { TableDetails } from "./table-details"; +/* eslint-disable @typescript-eslint/restrict-template-expressions */ +import { TableDetails } from './table-details'; /** * Generate partial upsert SQL. See sql-execution.ts for a definition of partial upsert. @@ -6,28 +7,24 @@ import { TableDetails } from "./table-details"; * @param tableDetails the table to generate upsert SQL for */ export const generatePartialUpsertSql = ( - tableDetails: TableDetails -): string => { - return generateUpsertSql( - tableDetails, - generateUpdatePlaceholders(tableDetails.primaryKeyColumnName) - ); -}; + tableDetails: TableDetails, +): string => generateUpsertSql( + tableDetails, + generateUpdatePlaceholders(tableDetails.primaryKeyColumnName), +); /** * Generate full upsert SQL. See sql-execution.ts for a definition of full upsert. * * @param tableDetails the table to generate upsert SQL for */ -export const generateFullUpsertSql = (tableDetails: TableDetails): string => { - return generateUpsertSql( - tableDetails, - generateUpdatePlaceholders( - tableDetails.primaryKeyColumnName, - tableDetails.columnNames - ) - ); -}; +export const generateFullUpsertSql = (tableDetails: TableDetails): string => generateUpsertSql( + tableDetails, + generateUpdatePlaceholders( + tableDetails.primaryKeyColumnName, + tableDetails.columnNames, + ), +); /** * Generate select SQL statement. See sql-execution.ts for a definition of partial upsert if record already exists. @@ -39,57 +36,43 @@ export const generateSelectSql = (tableDetails: TableDetails): string => { tableDetails.tableName }\` WHERE fingerprint = MD5(CONCAT_WS('|', ${nCopies( tableDetails.columnNames.length, - "IFNULL(?, '')" - ).join(", ")}))`; + "IFNULL(?, '')", + ).join(', ')}))`; return query; }; export const generateDeleteBasedOnWhereIn = ( targetTableName: string, targetColumnName: string, - conditionAttributes: any[] -): string => { - return `DELETE FROM ${targetTableName} WHERE ${targetColumnName} IN (${Object.entries( - conditionAttributes - ).map(() => { - return `?`; - })})`; -}; + conditionAttributes: any[], +): string => `DELETE FROM ${targetTableName} WHERE ${targetColumnName} IN (${Object.entries( + conditionAttributes, +).map(() => '?')})`; export const generateSelectRecordIds = ( targetTableName: string, - conditionAttributes: { [key: string]: any } -): string => { - return `SELECT id FROM ${targetTableName} WHERE ${Object.entries( - conditionAttributes - ) - .map(([key]) => { - return `${key}=?`; - }) - .join(" AND ")}`; -}; + conditionAttributes: { [key: string]: any }, +): string => `SELECT id FROM ${targetTableName} WHERE ${Object.entries( + conditionAttributes, +) + .map(([key]) => `${key}=?`) + .join(' AND ')}`; const generateUpsertSql = ( tableDetails: TableDetails, - updatePlaceholders: string[] -): string => { - return ( - `INSERT INTO \`${tableDetails.tableName}\` (${tableDetails.columnNames - .map((c) => `\`${c}\``) - .join(", ")})` + - ` VALUES (${nCopies(tableDetails.columnNames.length, "?").join(", ")})` + - ` ON DUPLICATE KEY UPDATE ${updatePlaceholders.join(", ")}` - ); -}; + updatePlaceholders: string[], +): string => ( + `INSERT INTO \`${tableDetails.tableName}\` (${tableDetails.columnNames + .map((c) => `\`${c}\``) + .join(', ')})` + + ` VALUES (${nCopies(tableDetails.columnNames.length, '?').join(', ')})` + + ` ON DUPLICATE KEY UPDATE ${updatePlaceholders.join(', ')}` +); const generateUpdatePlaceholders = ( - primaryKeyColumn?: string, - columnNames?: string[] + primaryKeyColumn: string = 'id', + columnNames?: string[], ): string[] => { - if (!primaryKeyColumn) { - primaryKeyColumn = "id"; - } - const primaryKeyPlaceholder = `\`${primaryKeyColumn}\` = LAST_INSERT_ID(\`${primaryKeyColumn}\`)`; if (!columnNames) { @@ -97,10 +80,8 @@ const generateUpdatePlaceholders = ( } return [primaryKeyPlaceholder].concat( - columnNames.filter((c) => c !== primaryKeyColumn).map((c) => `\`${c}\` = ?`) + columnNames.filter((c) => c !== primaryKeyColumn).map((c) => `\`${c}\` = ?`), ); }; -const nCopies = (n: number, s: string): string[] => { - return Array.from({ length: n }).map((_: any) => s); -}; +const nCopies = (n: number, s: string): string[] => Array.from({ length: n }).map((_: any) => s); diff --git a/src/services/sql-operations.ts b/src/services/sql-operations.ts index 0e365ec..481a398 100644 --- a/src/services/sql-operations.ts +++ b/src/services/sql-operations.ts @@ -1,18 +1,19 @@ -import { OperationType } from "@aws-sdk/client-dynamodb-streams"; +import { OperationType } from '@aws-sdk/client-dynamodb-streams'; -export type SqlOperation = "INSERT" | "UPDATE" | "DELETE"; +export type SqlOperation = 'INSERT' | 'UPDATE' | 'DELETE'; export const deriveSqlOperation = ( - operationType: OperationType + operationType: OperationType, ): SqlOperation => { switch (operationType) { - case "INSERT": - return "INSERT"; - case "MODIFY": - return "UPDATE"; - case "REMOVE": - return "DELETE"; + case 'INSERT': + return 'INSERT'; + case 'MODIFY': + return 'UPDATE'; + case 'REMOVE': + return 'DELETE'; default: + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new Error(`unrecognized operation type ${operationType}`); } }; diff --git a/src/services/table-details.ts b/src/services/table-details.ts index c97e615..7561d4a 100644 --- a/src/services/table-details.ts +++ b/src/services/table-details.ts @@ -5,389 +5,387 @@ export interface TableDetails { } export const VEHICLE_TABLE: TableDetails = { - tableName: "vehicle", - columnNames: ["system_number", "vin", "vrm_trm", "trailer_id", "createdAt"], + tableName: 'vehicle', + columnNames: ['system_number', 'vin', 'vrm_trm', 'trailer_id', 'createdAt'], }; export const MAKE_MODEL_TABLE: TableDetails = { - tableName: "make_model", + tableName: 'make_model', columnNames: [ - "make", - "model", - "chassisMake", - "chassisModel", - "bodyMake", - "bodyModel", - "modelLiteral", - "bodyTypeCode", - "bodyTypeDescription", - "fuelPropulsionSystem", - "dtpCode", + 'make', + 'model', + 'chassisMake', + 'chassisModel', + 'bodyMake', + 'bodyModel', + 'modelLiteral', + 'bodyTypeCode', + 'bodyTypeDescription', + 'fuelPropulsionSystem', + 'dtpCode', ], }; export const VEHICLE_CLASS_TABLE: TableDetails = { - tableName: "vehicle_class", + tableName: 'vehicle_class', columnNames: [ - "code", - "description", - "vehicleType", - "vehicleSize", - "vehicleConfiguration", - "euVehicleCategory", + 'code', + 'description', + 'vehicleType', + 'vehicleSize', + 'vehicleConfiguration', + 'euVehicleCategory', ], }; export const VEHICLE_SUBCLASS_TABLE: TableDetails = { - tableName: "vehicle_subclass", - columnNames: ["vehicle_class_id", "subclass"], + tableName: 'vehicle_subclass', + columnNames: ['vehicle_class_id', 'subclass'], }; export const IDENTITY_TABLE: TableDetails = { - tableName: "identity", - columnNames: ["identityId", "name"], + tableName: 'identity', + columnNames: ['identityId', 'name'], }; export const CONTACT_DETAILS_TABLE: TableDetails = { - tableName: "contact_details", + tableName: 'contact_details', columnNames: [ - "name", - "address1", - "address2", - "postTown", - "address3", - "postCode", - "emailAddress", - "telephoneNumber", - "faxNumber", + 'name', + 'address1', + 'address2', + 'postTown', + 'address3', + 'postCode', + 'emailAddress', + 'telephoneNumber', + 'faxNumber', ], }; export const TECHNICAL_RECORD_TABLE: TableDetails = { - tableName: "technical_record", + tableName: 'technical_record', columnNames: [ - "vehicle_id", - "recordCompleteness", - "createdAt", - "lastUpdatedAt", - "make_model_id", - "functionCode", - "offRoad", - "numberOfWheelsDriven", - "emissionsLimit", - "departmentalVehicleMarker", - "alterationMarker", - "vehicle_class_id", - "variantVersionNumber", - "grossEecWeight", - "trainEecWeight", - "maxTrainEecWeight", - "applicant_detail_id", - "purchaser_detail_id", - "manufacturer_detail_id", - "manufactureYear", - "regnDate", - "firstUseDate", - "coifDate", - "ntaNumber", - "coifSerialNumber", - "coifCertifierName", - "approvalType", - "approvalTypeNumber", - "variantNumber", - "conversionRefNo", - "seatsLowerDeck", - "seatsUpperDeck", - "standingCapacity", - "speedRestriction", - "speedLimiterMrk", - "tachoExemptMrk", - "dispensations", - "remarks", - "reasonForCreation", - "statusCode", - "unladenWeight", - "grossKerbWeight", - "grossLadenWeight", - "grossGbWeight", - "grossDesignWeight", - "trainGbWeight", - "trainDesignWeight", - "maxTrainGbWeight", - "maxTrainDesignWeight", - "maxLoadOnCoupling", - "frameDescription", - "tyreUseCode", - "roadFriendly", - "drawbarCouplingFitted", - "euroStandard", - "suspensionType", - "couplingType", - "length", - "height", - "width", - "frontAxleTo5thWheelMin", - "frontAxleTo5thWheelMax", - "frontVehicleTo5thWheelCouplingMin", - "frontVehicleTo5thWheelCouplingMax", - "frontAxleToRearAxle", - "rearAxleToRearTrl", - "couplingCenterToRearAxleMin", - "couplingCenterToRearAxleMax", - "couplingCenterToRearTrlMin", - "couplingCenterToRearTrlMax", - "centreOfRearmostAxleToRearOfTrl", - "notes", - "purchaserNotes", - "manufacturerNotes", - "noOfAxles", - "brakeCode", - "brakes_dtpNumber", - "brakes_loadSensingValve", - "brakes_antilockBrakingSystem", - "createdBy_Id", - "lastUpdatedBy_Id", - "updateType", - "numberOfSeatbelts", - "seatbeltInstallationApprovalDate", + 'vehicle_id', + 'recordCompleteness', + 'createdAt', + 'lastUpdatedAt', + 'make_model_id', + 'functionCode', + 'offRoad', + 'numberOfWheelsDriven', + 'emissionsLimit', + 'departmentalVehicleMarker', + 'alterationMarker', + 'vehicle_class_id', + 'variantVersionNumber', + 'grossEecWeight', + 'trainEecWeight', + 'maxTrainEecWeight', + 'applicant_detail_id', + 'purchaser_detail_id', + 'manufacturer_detail_id', + 'manufactureYear', + 'regnDate', + 'firstUseDate', + 'coifDate', + 'ntaNumber', + 'coifSerialNumber', + 'coifCertifierName', + 'approvalType', + 'approvalTypeNumber', + 'variantNumber', + 'conversionRefNo', + 'seatsLowerDeck', + 'seatsUpperDeck', + 'standingCapacity', + 'speedRestriction', + 'speedLimiterMrk', + 'tachoExemptMrk', + 'dispensations', + 'remarks', + 'reasonForCreation', + 'statusCode', + 'unladenWeight', + 'grossKerbWeight', + 'grossLadenWeight', + 'grossGbWeight', + 'grossDesignWeight', + 'trainGbWeight', + 'trainDesignWeight', + 'maxTrainGbWeight', + 'maxTrainDesignWeight', + 'maxLoadOnCoupling', + 'frameDescription', + 'tyreUseCode', + 'roadFriendly', + 'drawbarCouplingFitted', + 'euroStandard', + 'suspensionType', + 'couplingType', + 'length', + 'height', + 'width', + 'frontAxleTo5thWheelMin', + 'frontAxleTo5thWheelMax', + 'frontVehicleTo5thWheelCouplingMin', + 'frontVehicleTo5thWheelCouplingMax', + 'frontAxleToRearAxle', + 'rearAxleToRearTrl', + 'couplingCenterToRearAxleMin', + 'couplingCenterToRearAxleMax', + 'couplingCenterToRearTrlMin', + 'couplingCenterToRearTrlMax', + 'centreOfRearmostAxleToRearOfTrl', + 'notes', + 'purchaserNotes', + 'manufacturerNotes', + 'noOfAxles', + 'brakeCode', + 'brakes_dtpNumber', + 'brakes_loadSensingValve', + 'brakes_antilockBrakingSystem', + 'createdBy_Id', + 'lastUpdatedBy_Id', + 'updateType', + 'numberOfSeatbelts', + 'seatbeltInstallationApprovalDate', ], }; export const PSV_BRAKES_TABLE: TableDetails = { - tableName: "psv_brakes", + tableName: 'psv_brakes', columnNames: [ - "technical_record_id", - "brakeCodeOriginal", - "brakeCode", - "dataTrBrakeOne", - "dataTrBrakeTwo", - "dataTrBrakeThree", - "retarderBrakeOne", - "retarderBrakeTwo", - "serviceBrakeForceA", - "secondaryBrakeForceA", - "parkingBrakeForceA", - "serviceBrakeForceB", - "secondaryBrakeForceB", - "parkingBrakeForceB", + 'technical_record_id', + 'brakeCodeOriginal', + 'brakeCode', + 'dataTrBrakeOne', + 'dataTrBrakeTwo', + 'dataTrBrakeThree', + 'retarderBrakeOne', + 'retarderBrakeTwo', + 'serviceBrakeForceA', + 'secondaryBrakeForceA', + 'parkingBrakeForceA', + 'serviceBrakeForceB', + 'secondaryBrakeForceB', + 'parkingBrakeForceB', ], }; export const AXLE_SPACING_TABLE: TableDetails = { - tableName: "axle_spacing", - columnNames: ["technical_record_id", "axles", "value"], + tableName: 'axle_spacing', + columnNames: ['technical_record_id', 'axles', 'value'], }; export const MICROFILM_TABLE: TableDetails = { - tableName: "microfilm", + tableName: 'microfilm', columnNames: [ - "technical_record_id", - "microfilmDocumentType", - "microfilmRollNumber", - "microfilmSerialNumber", + 'technical_record_id', + 'microfilmDocumentType', + 'microfilmRollNumber', + 'microfilmSerialNumber', ], }; export const PLATE_TABLE: TableDetails = { - tableName: "plate", + tableName: 'plate', columnNames: [ - "technical_record_id", - "plateSerialNumber", - "plateIssueDate", - "plateReasonForIssue", - "plateIssuer", + 'technical_record_id', + 'plateSerialNumber', + 'plateIssueDate', + 'plateReasonForIssue', + 'plateIssuer', ], }; export const AXLES_TABLE: TableDetails = { - tableName: "axles", + tableName: 'axles', columnNames: [ - "technical_record_id", - "tyre_id", - "axleNumber", - "parkingBrakeMrk", - "kerbWeight", - "ladenWeight", - "gbWeight", - "eecWeight", - "designWeight", - "brakeActuator", - "leverLength", - "springBrakeParking", + 'technical_record_id', + 'tyre_id', + 'axleNumber', + 'parkingBrakeMrk', + 'kerbWeight', + 'ladenWeight', + 'gbWeight', + 'eecWeight', + 'designWeight', + 'brakeActuator', + 'leverLength', + 'springBrakeParking', ], }; export const AUTH_INTO_SERVICE_TABLE: TableDetails = { - tableName: "auth_into_service", + tableName: 'auth_into_service', columnNames: [ - "technical_record_id", - "cocIssueDate", - "dateReceived", - "datePending", - "dateAuthorised", - "dateRejected", + 'technical_record_id', + 'cocIssueDate', + 'dateReceived', + 'datePending', + 'dateAuthorised', + 'dateRejected', ], }; export const TYRE_TABLE: TableDetails = { - tableName: "tyre", + tableName: 'tyre', columnNames: [ - "tyreSize", - "plyRating", - "fitmentCode", - "dataTrAxles", - "speedCategorySymbol", - "tyreCode", + 'tyreSize', + 'plyRating', + 'fitmentCode', + 'dataTrAxles', + 'speedCategorySymbol', + 'tyreCode', ], }; export const TEST_STATION_TABLE: TableDetails = { - tableName: "test_station", - columnNames: ["pNumber", "name", "type"], + tableName: 'test_station', + columnNames: ['pNumber', 'name', 'type'], }; export const TESTER_TABLE: TableDetails = { - tableName: "tester", - columnNames: ["staffId", "name", "email_address"], + tableName: 'tester', + columnNames: ['staffId', 'name', 'email_address'], }; export const FUEL_EMISSION_TABLE: TableDetails = { - tableName: "fuel_emission", - columnNames: ["modTypeCode", "description", "emissionStandard", "fuelType"], + tableName: 'fuel_emission', + columnNames: ['modTypeCode', 'description', 'emissionStandard', 'fuelType'], }; export const TEST_TYPE_TABLE: TableDetails = { - tableName: "test_type", - columnNames: ["testTypeClassification", "testTypeName"], + tableName: 'test_type', + columnNames: ['testTypeClassification', 'testTypeName'], }; export const PREPARER_TABLE: TableDetails = { - tableName: "preparer", - columnNames: ["preparerId", "name"], + tableName: 'preparer', + columnNames: ['preparerId', 'name'], }; export const DEFECTS_TABLE: TableDetails = { - tableName: "defect", + tableName: 'defect', columnNames: [ - "imNumber", - "imDescription", - "itemNumber", - "itemDescription", - "deficiencyRef", - "deficiencyId", - "deficiencySubId", - "deficiencyCategory", - "deficiencyText", - "stdForProhibition", + 'imNumber', + 'imDescription', + 'itemNumber', + 'itemDescription', + 'deficiencyRef', + 'deficiencyId', + 'deficiencySubId', + 'deficiencyCategory', + 'deficiencyText', + 'stdForProhibition', ], }; export const LOCATION_TABLE: TableDetails = { - tableName: "location", + tableName: 'location', columnNames: [ - "vertical", - "horizontal", - "lateral", - "longitudinal", - "rowNumber", - "seatNumber", - "axleNumber", + 'vertical', + 'horizontal', + 'lateral', + 'longitudinal', + 'rowNumber', + 'seatNumber', + 'axleNumber', ], }; export const TEST_DEFECT_TABLE: TableDetails = { - tableName: "test_defect", + tableName: 'test_defect', columnNames: [ - "test_result_id", - "defect_id", - "location_id", - "notes", - "prs", - "prohibitionIssued", + 'test_result_id', + 'defect_id', + 'location_id', + 'notes', + 'prs', + 'prohibitionIssued', ], }; export const CUSTOM_DEFECT_TABLE: TableDetails = { - tableName: "custom_defect", + tableName: 'custom_defect', columnNames: [ - "test_result_id", - "referenceNumber", - "defectName", - "defectNotes", + 'test_result_id', + 'referenceNumber', + 'defectName', + 'defectNotes', ], }; export const TEST_RESULT_TABLE: TableDetails = { - tableName: "test_result", + tableName: 'test_result', columnNames: [ - "vehicle_id", - "fuel_emission_id", - "test_station_id", - "tester_id", - "preparer_id", - "vehicle_class_id", - "test_type_id", - "testResultId", - "testStatus", - "reasonForCancellation", - "numberOfSeats", - "odometerReading", - "odometerReadingUnits", - "countryOfRegistration", - "noOfAxles", - "regnDate", - "firstUseDate", - "createdAt", - "lastUpdatedAt", - "testCode", - "testNumber", - "certificateNumber", - "secondaryCertificateNumber", - "testExpiryDate", - "testAnniversaryDate", - "testTypeStartTimestamp", - "testTypeEndTimestamp", - "numberOfSeatbeltsFitted", - "lastSeatbeltInstallationCheckDate", - "seatbeltInstallationCheckDate", - "testResult", - "reasonForAbandoning", - "additionalNotesRecorded", - "additionalCommentsForAbandon", - "particulateTrapFitted", - "particulateTrapSerialNumber", - "modificationTypeUsed", - "smokeTestKLimitApplied", - "createdBy_Id", - "lastUpdatedBy_Id", - "nopInsertedAt", + 'vehicle_id', + 'fuel_emission_id', + 'test_station_id', + 'tester_id', + 'preparer_id', + 'vehicle_class_id', + 'test_type_id', + 'testResultId', + 'testStatus', + 'reasonForCancellation', + 'numberOfSeats', + 'odometerReading', + 'odometerReadingUnits', + 'countryOfRegistration', + 'noOfAxles', + 'regnDate', + 'firstUseDate', + 'createdAt', + 'lastUpdatedAt', + 'testCode', + 'testNumber', + 'certificateNumber', + 'secondaryCertificateNumber', + 'testExpiryDate', + 'testAnniversaryDate', + 'testTypeStartTimestamp', + 'testTypeEndTimestamp', + 'numberOfSeatbeltsFitted', + 'lastSeatbeltInstallationCheckDate', + 'seatbeltInstallationCheckDate', + 'testResult', + 'reasonForAbandoning', + 'additionalNotesRecorded', + 'additionalCommentsForAbandon', + 'particulateTrapFitted', + 'particulateTrapSerialNumber', + 'modificationTypeUsed', + 'smokeTestKLimitApplied', + 'createdBy_Id', + 'lastUpdatedBy_Id', + 'nopInsertedAt', ], }; -export const allTables = (): TableDetails[] => { - return [ - VEHICLE_TABLE, - MAKE_MODEL_TABLE, - VEHICLE_CLASS_TABLE, - VEHICLE_SUBCLASS_TABLE, - IDENTITY_TABLE, - CONTACT_DETAILS_TABLE, - TECHNICAL_RECORD_TABLE, - PSV_BRAKES_TABLE, - AXLE_SPACING_TABLE, - MICROFILM_TABLE, - PLATE_TABLE, - AXLES_TABLE, - TYRE_TABLE, - TEST_STATION_TABLE, - TESTER_TABLE, - FUEL_EMISSION_TABLE, - TEST_TYPE_TABLE, - PREPARER_TABLE, - DEFECTS_TABLE, - LOCATION_TABLE, - TEST_DEFECT_TABLE, - CUSTOM_DEFECT_TABLE, - TEST_RESULT_TABLE, - ]; -}; +export const allTables = (): TableDetails[] => [ + VEHICLE_TABLE, + MAKE_MODEL_TABLE, + VEHICLE_CLASS_TABLE, + VEHICLE_SUBCLASS_TABLE, + IDENTITY_TABLE, + CONTACT_DETAILS_TABLE, + TECHNICAL_RECORD_TABLE, + PSV_BRAKES_TABLE, + AXLE_SPACING_TABLE, + MICROFILM_TABLE, + PLATE_TABLE, + AXLES_TABLE, + TYRE_TABLE, + TEST_STATION_TABLE, + TESTER_TABLE, + FUEL_EMISSION_TABLE, + TEST_TYPE_TABLE, + PREPARER_TABLE, + DEFECTS_TABLE, + LOCATION_TABLE, + TEST_DEFECT_TABLE, + CUSTOM_DEFECT_TABLE, + TEST_RESULT_TABLE, +]; diff --git a/src/services/tech-record-document-conversion.ts b/src/services/tech-record-document-conversion.ts index 3bc9293..596f416 100644 --- a/src/services/tech-record-document-conversion.ts +++ b/src/services/tech-record-document-conversion.ts @@ -1,8 +1,12 @@ +/* eslint-disable no-await-in-loop */ +/* eslint-disable no-restricted-syntax */ +/* eslint-disable import/no-cycle */ +import { Connection } from 'mysql2/promise'; import { parseTechRecordDocument, TechRecordDocument, -} from "../models/tech-record-document"; -import { getFaxNumber, TechRecord } from "../models/tech-record"; +} from '../models/tech-record-document'; +import { getFaxNumber, TechRecord } from '../models/tech-record'; import { AXLE_SPACING_TABLE, AXLES_TABLE, @@ -18,30 +22,27 @@ import { VEHICLE_SUBCLASS_TABLE, VEHICLE_TABLE, AUTH_INTO_SERVICE_TABLE, -} from "./table-details"; +} from './table-details'; import { deleteBasedOnWhereIn, executeFullUpsert, executePartialUpsertIfNotExists, -} from "./sql-execution"; -import { getConnectionPool } from "./connection-pool"; -import { Connection } from "mysql2/promise"; -import { EntityConverter } from "./entity-conversion"; -import { debugLog } from "./logger"; -import { vinCleanser } from "../utils/cleanser"; - -export const techRecordDocumentConverter = (): EntityConverter => { - return { - parseRootImage: parseTechRecordDocument, - upsertEntity: upsertTechRecords, - deleteEntity: deleteTechRecords, - }; -}; +} from './sql-execution'; +import { getConnectionPool } from './connection-pool'; +import { EntityConverter } from './entity-conversion'; +import { debugLog } from './logger'; +import { vinCleanser } from '../utils/cleanser'; + +export const techRecordDocumentConverter = (): EntityConverter => ({ + parseRootImage: parseTechRecordDocument, + upsertEntity: upsertTechRecords, + deleteEntity: deleteTechRecords, +}); const upsertTechRecords = async ( - techRecordDocument: TechRecordDocument + techRecordDocument: TechRecordDocument, ): Promise => { - debugLog(`upsertTechRecords: START`); + debugLog('upsertTechRecords: START'); const pool = await getConnectionPool(); @@ -50,7 +51,7 @@ const upsertTechRecords = async ( try { await vehicleConnection.execute( - "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED" + 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', ); await vehicleConnection.beginTransaction(); @@ -78,37 +79,37 @@ const upsertTechRecords = async ( try { await techRecordConnection.execute( - "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED" + 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', ); - debugLog(`upsertTechRecords: Upserting tech record...`); + debugLog('upsertTechRecords: Upserting tech record...'); const makeModelId = await upsertMakeModel( techRecordConnection, - techRecord + techRecord, ); const vehicleClassId = await upsertVehicleClass( techRecordConnection, - techRecord + techRecord, ); await upsertVehicleSubclasses( techRecordConnection, vehicleClassId, - techRecord + techRecord, ); const createdById = await upsertIdentity( techRecordConnection, techRecord.createdById!, - techRecord.createdByName! + techRecord.createdByName!, ); const lastUpdatedById = await upsertIdentity( techRecordConnection, techRecord.lastUpdatedById!, - techRecord.lastUpdatedByName! + techRecord.lastUpdatedByName!, ); const contactDetailsId = await upsertContactDetails( techRecordConnection, - techRecord + techRecord, ); await techRecordConnection.beginTransaction(); @@ -124,7 +125,7 @@ const upsertTechRecords = async ( techRecord.functionCode, techRecord.offRoad, techRecord.numberOfWheelsDriven, - "" + techRecord.emissionsLimit, + `${techRecord.emissionsLimit}`, techRecord.departmentalVehicleMarker, techRecord.alterationMarker, vehicleClassId, @@ -201,7 +202,7 @@ const upsertTechRecords = async ( techRecord.numberOfSeatbelts, techRecord.seatbeltInstallationApprovalDate, ], - techRecordConnection + techRecordConnection, ); const techRecordId = response.rows.insertId; @@ -216,7 +217,7 @@ const upsertTechRecords = async ( await upsertAuthIntoService( techRecordConnection, techRecordId, - techRecord + techRecord, ); await techRecordConnection.commit(); @@ -229,22 +230,18 @@ const upsertTechRecords = async ( } } - debugLog(`upsertTechRecords: END`); - - return; + debugLog('upsertTechRecords: END'); }; - -const deleteTechRecords = async ( - techRecordDocument: TechRecordDocument -): Promise => { - throw new Error("deleting tech record documents is not implemented yet"); +// eslint-disable-next-line @typescript-eslint/require-await +const deleteTechRecords = async (techRecordDocument: TechRecordDocument): Promise => { + throw new Error('deleting tech record documents is not implemented yet'); }; const upsertVehicle = async ( connection: Connection, - techRecordDocument: TechRecordDocument + techRecordDocument: TechRecordDocument, ): Promise => { - debugLog(`upsertTechRecords: Upserting vehicle...`); + debugLog('upsertTechRecords: Upserting vehicle...'); const response = await executeFullUpsert( VEHICLE_TABLE, @@ -255,11 +252,11 @@ const upsertVehicle = async ( techRecordDocument.trailerId, new Date().toISOString().substring(0, 23), ], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted vehicle (ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted vehicle (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -267,9 +264,9 @@ const upsertVehicle = async ( const upsertMakeModel = async ( connection: Connection, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { - debugLog(`upsertTechRecords: Upserting make-model...`); + debugLog('upsertTechRecords: Upserting make-model...'); const response = await executePartialUpsertIfNotExists( MAKE_MODEL_TABLE, @@ -286,11 +283,11 @@ const upsertMakeModel = async ( techRecord.fuelPropulsionSystem, null, // intentional hack until JSON path of make-model dtpCode is documented ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTechRecords: Upserted make-model (ID ${response.rows.insertId})` + `upsertTechRecords: Upserted make-model (ID ${response.rows.insertId})`, ); return response.rows.insertId; @@ -298,9 +295,9 @@ const upsertMakeModel = async ( const upsertVehicleClass = async ( connection: Connection, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { - debugLog(`upsertTechRecords: Upserting vehicle class...`); + debugLog('upsertTechRecords: Upserting vehicle class...'); const response = await executePartialUpsertIfNotExists( VEHICLE_CLASS_TABLE, @@ -312,11 +309,11 @@ const upsertVehicleClass = async ( techRecord.vehicleConfiguration, techRecord.euVehicleCategory, ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTechRecords: Upserted vehicle class (ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted vehicle class (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -325,49 +322,47 @@ const upsertVehicleClass = async ( const upsertVehicleSubclasses = async ( connection: Connection, vehicleClassId: number, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { - debugLog(`upsertTechRecords: Upserting vehicle subclasses...`); + debugLog('upsertTechRecords: Upserting vehicle subclasses...'); if (!techRecord.vehicleSubclass) { - debugLog(`upsertTechRecords: no vehicle subclasses present`); + debugLog('upsertTechRecords: no vehicle subclasses present'); return; } debugLog( - `upsertTechRecords: ${techRecord.vehicleSubclass.length} vehicle subclasses to upsert` + `upsertTechRecords: ${techRecord.vehicleSubclass.length} vehicle subclasses to upsert`, ); for (const vehicleSubclass of techRecord.vehicleSubclass) { const response = await executePartialUpsertIfNotExists( VEHICLE_SUBCLASS_TABLE, [vehicleClassId, vehicleSubclass].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTechRecords: Upserted vehicle subclass (ID: ${response.rows.insertId}` + `upsertTechRecords: Upserted vehicle subclass (ID: ${response.rows.insertId}`, ); } - - return; }; const upsertIdentity = async ( connection: Connection, id: string, - name: string + name: string, ): Promise => { debugLog(`upsertTechRecords: Upserting identity (${id} ---> ${name})...`); const response = await executePartialUpsertIfNotExists( IDENTITY_TABLE, [id, name].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTechRecords: Upserted identity (ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted identity (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -375,9 +370,9 @@ const upsertIdentity = async ( const upsertContactDetails = async ( connection: Connection, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { - debugLog(`upsertTechRecords: Upserting contact details...`); + debugLog('upsertTechRecords: Upserting contact details...'); const response = await executePartialUpsertIfNotExists( CONTACT_DETAILS_TABLE, @@ -392,11 +387,11 @@ const upsertContactDetails = async ( techRecord.applicantDetails?.telephoneNumber, getFaxNumber(techRecord), ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTechRecords: Upserted contact details (ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted contact details (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -405,10 +400,10 @@ const upsertContactDetails = async ( const upsertPsvBrakes = async ( connection: Connection, techRecordId: string, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { debugLog( - `upsertTechRecords: Upserting PSV brakes (tech-record-id: ${techRecordId})...` + `upsertTechRecords: Upserting PSV brakes (tech-record-id: ${techRecordId})...`, ); const response = await executeFullUpsert( @@ -429,56 +424,52 @@ const upsertPsvBrakes = async ( techRecord.brakes?.brakeForceWheelsUpToHalfLocked?.secondaryBrakeForceB, techRecord.brakes?.brakeForceWheelsUpToHalfLocked?.parkingBrakeForceB, ], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted PSV brakes (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted PSV brakes (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})`, ); - - return; }; const upsertAxleSpacings = async ( connection: Connection, techRecordId: string, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { debugLog( - `upsertTechRecords: Upserting axle spacings (tech-record-id: ${techRecordId})...` + `upsertTechRecords: Upserting axle spacings (tech-record-id: ${techRecordId})...`, ); if (!techRecord.dimensions?.axleSpacing) { - debugLog(`upsertTechRecords: no axle spacings present`); + debugLog('upsertTechRecords: no axle spacings present'); return; } debugLog( - `upsertTechRecords: ${techRecord.dimensions.axleSpacing.length} axle spacings to upsert` + `upsertTechRecords: ${techRecord.dimensions.axleSpacing.length} axle spacings to upsert`, ); for (const axleSpacing of techRecord.dimensions.axleSpacing) { const response = await executeFullUpsert( AXLE_SPACING_TABLE, [techRecordId, axleSpacing.axles, axleSpacing.value], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted axle spacing (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted axle spacing (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})`, ); } - - return; }; const upsertMicrofilm = async ( connection: Connection, techRecordId: string, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { debugLog( - `upsertTechRecords: Upserting microfilm (tech-record-id: ${techRecordId})...` + `upsertTechRecords: Upserting microfilm (tech-record-id: ${techRecordId})...`, ); const response = await executeFullUpsert( @@ -489,27 +480,25 @@ const upsertMicrofilm = async ( techRecord.microfilm?.microfilmRollNumber, techRecord.microfilm?.microfilmSerialNumber, ], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted microfilm (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted microfilm (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})`, ); - - return; }; const upsertPlates = async ( connection: Connection, techRecordId: any, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { debugLog( - `upsertTechRecords: Upserting plates (tech-record-id: ${techRecordId})...` + `upsertTechRecords: Upserting plates (tech-record-id: ${techRecordId})...`, ); if (!techRecord.plates) { - debugLog(`upsertTechRecords: no plates present`); + debugLog('upsertTechRecords: no plates present'); return; } @@ -525,28 +514,26 @@ const upsertPlates = async ( plate.plateReasonForIssue, plate.plateIssuer, ], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted plate (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted plate (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})`, ); } - - return; }; const upsertAxles = async ( connection: Connection, techRecordId: any, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { debugLog( - `upsertTechRecords: Upserting axles (tech-record-id: ${techRecordId})...` + `upsertTechRecords: Upserting axles (tech-record-id: ${techRecordId})...`, ); if (!techRecord.axles) { - debugLog(`upsertTechRecords: no axles present`); + debugLog('upsertTechRecords: no axles present'); return; } @@ -561,13 +548,13 @@ const upsertAxles = async ( axle.tyres?.speedCategorySymbol, axle.tyres?.tyreCode, ].fingerprintCleanser(), - connection + connection, ); const tyreId = tyreUpsertResponse.rows.insertId; debugLog( - `upsertTechRecords: Upserted axle tyre (tech-record-id: ${techRecordId}, ID: ${tyreId})` + `upsertTechRecords: Upserted axle tyre (tech-record-id: ${techRecordId}, ID: ${tyreId})`, ); const axleUpsertResponse = await executeFullUpsert( @@ -586,33 +573,31 @@ const upsertAxles = async ( axle.brakes?.leverLength, axle.brakes?.springBrakeParking, ], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted axle (tech-record-id: ${techRecordId}, ID: ${axleUpsertResponse.rows.insertId})` + `upsertTechRecords: Upserted axle (tech-record-id: ${techRecordId}, ID: ${axleUpsertResponse.rows.insertId})`, ); } - - return; }; const upsertAuthIntoService = async ( connection: Connection, techRecordId: string, - techRecord: TechRecord + techRecord: TechRecord, ): Promise => { debugLog( - `upsertTechRecords: Upserting authIntoService (tech-record-id: ${techRecordId})...` + `upsertTechRecords: Upserting authIntoService (tech-record-id: ${techRecordId})...`, ); if (!techRecord.authIntoService) { - debugLog(`upsertTechRecords: no authIntoService present`); + debugLog('upsertTechRecords: no authIntoService present'); await deleteBasedOnWhereIn( AUTH_INTO_SERVICE_TABLE.tableName, - "technical_record_id", + 'technical_record_id', [techRecordId], - connection + connection, ); return; } @@ -627,10 +612,10 @@ const upsertAuthIntoService = async ( techRecord.authIntoService?.dateReceived, techRecord.authIntoService?.dateRejected, ], - connection + connection, ); debugLog( - `upsertTechRecords: Upserted authIntoService (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})` + `upsertTechRecords: Upserted authIntoService (tech-record-id: ${techRecordId}, ID: ${response.rows.insertId})`, ); }; diff --git a/src/services/test-result-record-conversion.ts b/src/services/test-result-record-conversion.ts index 58ee781..e575670 100644 --- a/src/services/test-result-record-conversion.ts +++ b/src/services/test-result-record-conversion.ts @@ -1,9 +1,14 @@ +/* eslint-disable no-await-in-loop */ +/* eslint-disable no-restricted-syntax */ +/* eslint-disable import/no-cycle */ +import { Connection } from 'mysql2/promise'; +import moment from 'moment'; import { parseTestResults, TestResult, TestResults, -} from "../models/test-results"; -import { TestType } from "../models/test-types"; +} from '../models/test-results'; +import { TestType } from '../models/test-types'; import { CUSTOM_DEFECT_TABLE, DEFECTS_TABLE, @@ -19,31 +24,27 @@ import { VEHICLE_CLASS_TABLE, VEHICLE_SUBCLASS_TABLE, VEHICLE_TABLE, -} from "./table-details"; +} from './table-details'; import { deleteBasedOnWhereIn, executeFullUpsert, executePartialUpsert, executePartialUpsertIfNotExists, selectRecordIds, -} from "./sql-execution"; -import { getConnectionPool } from "./connection-pool"; -import { Connection } from "mysql2/promise"; -import { EntityConverter } from "./entity-conversion"; -import { debugLog } from "./logger"; -import { vinCleanser } from "../utils/cleanser"; -import moment from "moment"; - -export const testResultsConverter = (): EntityConverter => { - return { - parseRootImage: parseTestResults, - upsertEntity: upsertTestResults, - deleteEntity: deleteTestResults, - }; -}; +} from './sql-execution'; +import { getConnectionPool } from './connection-pool'; +import { EntityConverter } from './entity-conversion'; +import { debugLog } from './logger'; +import { vinCleanser } from '../utils/cleanser'; + +export const testResultsConverter = (): EntityConverter => ({ + parseRootImage: parseTestResults, + upsertEntity: upsertTestResults, + deleteEntity: deleteTestResults, +}); const upsertTestResults = async (testResults: TestResults): Promise => { - debugLog(`upsertTestResults: START`); + debugLog('upsertTestResults: START'); if (!testResults) { return; @@ -55,7 +56,7 @@ const upsertTestResults = async (testResults: TestResults): Promise => { for (const testResult of testResults) { if (!testResult) { - throw new Error(`testResult cannot be null`); + throw new Error('testResult cannot be null'); } const vehicleConnection = await pool.getConnection(); @@ -63,7 +64,7 @@ const upsertTestResults = async (testResults: TestResults): Promise => { let vehicleId; try { await vehicleConnection.execute( - "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED" + 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', ); await vehicleConnection.beginTransaction(); @@ -82,33 +83,33 @@ const upsertTestResults = async (testResults: TestResults): Promise => { try { await testResultConnection.execute( - "SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED" + 'SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED', ); const testStationId = await upsertTestStation( testResultConnection, - testResult + testResult, ); const testerId = await upsertTester(testResultConnection, testResult); const vehicleClassId = await upsertVehicleClass( testResultConnection, - testResult + testResult, ); await upsertVehicleSubclasses( testResultConnection, vehicleClassId, - testResult + testResult, ); const preparerId = await upsertPreparer(testResultConnection, testResult); const createdById = await upsertIdentity( testResultConnection, testResult.createdById!, - testResult.createdByName! + testResult.createdByName!, ); const lastUpdatedById = await upsertIdentity( testResultConnection, testResult.lastUpdatedById!, - testResult.lastUpdatedByName! + testResult.lastUpdatedByName!, ); if (!testResult.testTypes || testResult.testTypes.length < 1) { @@ -155,11 +156,11 @@ const upsertTestResults = async (testResults: TestResults): Promise => { undefined, createdById, lastUpdatedById, - moment().format("YYYY-MM-DD HH:mm:ss.SSS"), + moment().format('YYYY-MM-DD HH:mm:ss.SSS'), ], - testResultConnection + testResultConnection, ); - + // eslint-disable-next-line no-continue continue; } @@ -167,47 +168,47 @@ const upsertTestResults = async (testResults: TestResults): Promise => { const existingTestResultIds = await selectRecordIds( TEST_RESULT_TABLE.tableName, { vehicle_id: vehicleId, testResultId: testResult.testResultId }, - testResultConnection + testResultConnection, ); if (existingTestResultIds.rows.length > 0) { await testResultConnection.beginTransaction(); const testResultIds = existingTestResultIds.rows.map( - (row: { id: any }) => row.id + (row: { id: any }) => row.id, ); await deleteBasedOnWhereIn( CUSTOM_DEFECT_TABLE.tableName, - "test_result_id", + 'test_result_id', testResultIds, - testResultConnection + testResultConnection, ); await deleteBasedOnWhereIn( TEST_DEFECT_TABLE.tableName, - "test_result_id", + 'test_result_id', testResultIds, - testResultConnection + testResultConnection, ); await deleteBasedOnWhereIn( TEST_RESULT_TABLE.tableName, - "id", + 'id', testResultIds, - testResultConnection + testResultConnection, ); await testResultConnection.commit(); } } - for (const testType of testResult.testTypes!) { + for (const testType of testResult.testTypes) { await testResultConnection.beginTransaction(); const fuelEmissionId = await upsertFuelEmission( testResultConnection, - testType + testType, ); const testTypeId = await upsertTestType(testResultConnection, testType); - debugLog(`upsertTestResults: Upserting test result...`); + debugLog('upsertTestResults: Upserting test result...'); const response = await executeFullUpsert( TEST_RESULT_TABLE, @@ -252,22 +253,22 @@ const upsertTestResults = async (testResults: TestResults): Promise => { testType.smokeTestKLimitApplied, createdById, lastUpdatedById, - moment().format("YYYY-MM-DD HH:mm:ss.SSS"), + moment().format('YYYY-MM-DD HH:mm:ss.SSS'), ], - testResultConnection + testResultConnection, ); const testResultRecordId = response.rows.insertId; debugLog( - `upsertTestResults: Upserted test result (ID: ${testResultRecordId})` + `upsertTestResults: Upserted test result (ID: ${testResultRecordId})`, ); await upsertDefects(testResultConnection, testResultRecordId, testType); await upsertCustomDefects( testResultConnection, testResultRecordId, - testType + testType, ); await testResultConnection.commit(); @@ -280,18 +281,19 @@ const upsertTestResults = async (testResults: TestResults): Promise => { } } - debugLog(`upsertTestResults: END`); + debugLog('upsertTestResults: END'); }; +// eslint-disable-next-line @typescript-eslint/require-await const deleteTestResults = async (testResult: TestResults): Promise => { - throw new Error("deleting test results is not implemented yet"); + throw new Error('deleting test results is not implemented yet'); }; const upsertVehicle = async ( connection: Connection, - testResult: TestResult + testResult: TestResult, ): Promise => { - debugLog(`upsertTestResults: Upserting vehicle...`); + debugLog('upsertTestResults: Upserting vehicle...'); const response = await executePartialUpsert( VEHICLE_TABLE, @@ -302,11 +304,11 @@ const upsertVehicle = async ( testResult.trailerId, new Date().toISOString().substring(0, 23), ], - connection + connection, ); debugLog( - `upsertTestResults: Upserted vehicle (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted vehicle (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -314,9 +316,9 @@ const upsertVehicle = async ( const upsertTestStation = async ( connection: Connection, - testResult: TestResult + testResult: TestResult, ): Promise => { - debugLog(`upsertTestResults: Upserting test station...`); + debugLog('upsertTestResults: Upserting test station...'); const response = await executePartialUpsertIfNotExists( TEST_STATION_TABLE, @@ -325,11 +327,11 @@ const upsertTestStation = async ( testResult.testStationName, testResult.testStationType, ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted test station (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted test station (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -337,9 +339,9 @@ const upsertTestStation = async ( const upsertTester = async ( connection: Connection, - testResult: TestResult + testResult: TestResult, ): Promise => { - debugLog(`upsertTestResults: Upserting tester...`); + debugLog('upsertTestResults: Upserting tester...'); const response = await executePartialUpsertIfNotExists( TESTER_TABLE, @@ -348,11 +350,11 @@ const upsertTester = async ( testResult.testerName, testResult.testerEmailAddress, ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted tester (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted tester (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -360,9 +362,9 @@ const upsertTester = async ( const upsertVehicleClass = async ( connection: Connection, - testResult: TestResult + testResult: TestResult, ): Promise => { - debugLog(`upsertTestResults: Upserting vehicle class...`); + debugLog('upsertTestResults: Upserting vehicle class...'); const response = await executePartialUpsertIfNotExists( VEHICLE_CLASS_TABLE, @@ -374,11 +376,11 @@ const upsertVehicleClass = async ( testResult.vehicleConfiguration, testResult.euVehicleCategory, ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted vehicle class (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted vehicle class (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -387,12 +389,12 @@ const upsertVehicleClass = async ( const upsertVehicleSubclasses = async ( connection: Connection, vehicleClassId: number, - testResult: TestResult + testResult: TestResult, ): Promise => { - debugLog(`upsertTestResults: Upserting vehicle subclasses...`); + debugLog('upsertTestResults: Upserting vehicle subclasses...'); if (!testResult.vehicleSubclass) { - debugLog(`upsertTestResults: no vehicle subclasses present`); + debugLog('upsertTestResults: no vehicle subclasses present'); return; } @@ -400,22 +402,20 @@ const upsertVehicleSubclasses = async ( const response = await executePartialUpsertIfNotExists( VEHICLE_SUBCLASS_TABLE, [vehicleClassId, vehicleSubclass].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted vehicle subclass (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted vehicle subclass (ID: ${response.rows.insertId})`, ); } - - return; }; const upsertFuelEmission = async ( connection: Connection, - testType: TestType + testType: TestType, ): Promise => { - debugLog(`upsertTestResults: Upserting fuel emission...`); + debugLog('upsertTestResults: Upserting fuel emission...'); const response = await executePartialUpsertIfNotExists( FUEL_EMISSION_TABLE, @@ -425,11 +425,11 @@ const upsertFuelEmission = async ( testType.emissionStandard, testType.fuelType, ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted fuel emission (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted fuel emission (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -437,9 +437,9 @@ const upsertFuelEmission = async ( const upsertTestType = async ( connection: Connection, - testType: TestType + testType: TestType, ): Promise => { - debugLog(`upsertTestResults: Upserting test type...`); + debugLog('upsertTestResults: Upserting test type...'); const response = await executePartialUpsertIfNotExists( TEST_TYPE_TABLE, @@ -447,11 +447,11 @@ const upsertTestType = async ( testType.testTypeClassification, testType.testTypeName, ].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted test type (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted test type (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -459,18 +459,18 @@ const upsertTestType = async ( const upsertPreparer = async ( connection: Connection, - testResult: TestResult + testResult: TestResult, ): Promise => { - debugLog(`upsertTestResults: Upserting preparer...`); + debugLog('upsertTestResults: Upserting preparer...'); const response = await executePartialUpsertIfNotExists( PREPARER_TABLE, [testResult.preparerId, testResult.preparerName].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted preparer (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted preparer (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -479,18 +479,18 @@ const upsertPreparer = async ( const upsertIdentity = async ( connection: Connection, id: string, - name: string + name: string, ): Promise => { debugLog(`upsertTestResults: Upserting identity (${id} ---> ${name})...`); const response = await executePartialUpsertIfNotExists( IDENTITY_TABLE, [id, name].fingerprintCleanser(), - connection + connection, ); debugLog( - `upsertTestResults: Upserted identity (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted identity (ID: ${response.rows.insertId})`, ); return response.rows.insertId; @@ -499,7 +499,7 @@ const upsertIdentity = async ( const upsertDefects = async ( connection: Connection, testResultId: number, - testType: TestType + testType: TestType, ): Promise => { if (!testType.defects) { return; @@ -508,7 +508,7 @@ const upsertDefects = async ( const insertedIds: number[] = []; for (const defect of testType.defects) { - debugLog(`upsertTestResults: Upserting defect...`); + debugLog('upsertTestResults: Upserting defect...'); const insertDefectResponse = await executePartialUpsertIfNotExists( DEFECTS_TABLE, @@ -524,7 +524,7 @@ const upsertDefects = async ( defect.deficiencyText, defect.stdForProhibition, ].fingerprintCleanser(), - connection + connection, ); const defectId = insertDefectResponse.rows.insertId; @@ -544,13 +544,13 @@ const upsertDefects = async ( defect.additionalInformation?.location?.seatNumber, defect.additionalInformation?.location?.axleNumber, ].fingerprintCleanser(), - connection + connection, ); const locationId = insertLocationResponse.rows.insertId; debugLog( - `upsertTestResults: Upserted defect location (location ID: ${locationId})` + `upsertTestResults: Upserted defect location (location ID: ${locationId})`, ); await executePartialUpsert( @@ -563,26 +563,24 @@ const upsertDefects = async ( defect.prs, defect.prohibitionIssued, ], - connection + connection, ); - debugLog(`upsertTestResults: Upserted defect test-defect mapping`); + debugLog('upsertTestResults: Upserted defect test-defect mapping'); } - - return; }; const upsertCustomDefects = async ( connection: Connection, testResultId: number, - testType: TestType + testType: TestType, ): Promise => { if (!testType.customDefects) { return; } for (const customDefect of testType.customDefects) { - debugLog(`upsertTestResults: Upserting custom defect...`); + debugLog('upsertTestResults: Upserting custom defect...'); const response = await executePartialUpsert( CUSTOM_DEFECT_TABLE, @@ -592,13 +590,11 @@ const upsertCustomDefects = async ( customDefect.defectName, customDefect.defectNotes, ], - connection + connection, ); debugLog( - `upsertTestResults: Upserted custom defect (ID: ${response.rows.insertId})` + `upsertTestResults: Upserted custom defect (ID: ${response.rows.insertId})`, ); } - - return; }; diff --git a/src/utils/cleanser.ts b/src/utils/cleanser.ts index fad6a48..82a0930 100644 --- a/src/utils/cleanser.ts +++ b/src/utils/cleanser.ts @@ -11,18 +11,17 @@ declare global { } if (!Array.prototype.fingerprintCleanser) { - Object.defineProperty(Array.prototype, "fingerprintCleanser", { + // eslint-disable-next-line no-extend-native + Object.defineProperty(Array.prototype, 'fingerprintCleanser', { enumerable: false, writable: false, configurable: false, value: function fingerprintCleanser(this: any[]): any[] { - return this.map((i) => (typeof i === "string" ? i?.trim() : i)).map((i) => - i === "" ? null : i - ); + return this.map((i) => (typeof i === 'string' ? i?.trim() : i)).map((i) => (i === '' ? null : i)); }, }); } export function vinCleanser(vin: string | undefined): string { - return vin ? vin.replace(/[^a-zA-Z0-9]/g, "") : ""; + return vin ? vin.replace(/[^a-zA-Z0-9]/g, '') : ''; } diff --git a/src/utils/padwithzeros.ts b/src/utils/padwithzeros.ts index 41fe558..87aab3b 100644 --- a/src/utils/padwithzeros.ts +++ b/src/utils/padwithzeros.ts @@ -1,3 +1,3 @@ export function padWithZeros(num: number, maxSize: number): string { - return num.toString().padStart(maxSize, "0"); + return num.toString().padStart(maxSize, '0'); } diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index 91f0f2f..2712d02 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -1,70 +1,68 @@ -import { StartedTestContainer } from "testcontainers"; +import { StartedTestContainer } from 'testcontainers'; import { destroyConnectionPool, executeSql, -} from "../../src/services/connection-pool"; -import { exampleContext, useLocalDb } from "../utils"; -import techRecordDocumentJson from "../resources/dynamodb-image-technical-record.json"; -import { getContainerizedDatabase } from "./cvsbnop-container"; -import { processStreamEvent } from "../../src/functions/process-stream-event"; -import { getConnectionPoolOptions } from "../../src/services/connection-pool-options"; +} from '../../src/services/connection-pool'; +import { exampleContext, useLocalDb } from '../utils'; +import techRecordDocumentJson from '../resources/dynamodb-image-technical-record.json'; +import { getContainerizedDatabase } from './cvsbnop-container'; +import { processStreamEvent } from '../../src/functions/process-stream-event'; +import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; useLocalDb(); +jest.setTimeout(60_000); -describe("convertTechRecordDocument() integration tests", () => { +describe('convertTechRecordDocument() integration tests', () => { let container: StartedTestContainer; beforeAll(async () => { - jest.setTimeout(60_000); jest.restoreAllMocks(); // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "127.0.0.1", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", + host: '127.0.0.1', + port: '3306', + user: 'root', + password: '12345', + database: 'CVSBNOP', }); } }); afterAll(async () => { await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { await container.stop(); } }); - describe("when adding a new vehicle with an authIntoService having some null properties.", () => { - it("should insert into auth_into_service", async () => { + describe('when adding a new vehicle with an authIntoService having some null properties.', () => { + it('should insert into auth_into_service', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1a" }; - techRecordDocumentJsonNew.vin = { S: "VIN1a" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1a' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1a' }; techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: { cocIssueDate: { - S: "2020-01-01", + S: '2020-01-01', }, dateAuthorised: { - // @ts-ignore NULL: true, }, datePending: { - S: "2020-03-03", + S: '2020-03-03', }, dateReceived: { - // @ts-ignore NULL: true, }, dateRejected: { - S: "2020-05-05", + S: '2020-05-05', }, }, }; @@ -74,8 +72,8 @@ describe("convertTechRecordDocument() integration tests", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -85,25 +83,25 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1a" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1a', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1a"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1a'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; @@ -115,51 +113,48 @@ describe("convertTechRecordDocument() integration tests", () => { \`dateAuthorised\`, \`dateRejected\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows).toHaveLength(1); expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); expect(authIntoServiceResultSet.rows[0].dateReceived).toBeNull(); expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString(), + ).toBe('Tue, 03 Mar 2020 00:00:00 GMT'); expect(authIntoServiceResultSet.rows[0].dateAuthorised).toBeNull(); expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString(), + ).toBe('Tue, 05 May 2020 00:00:00 GMT'); }); - it("should update auth_into_service when the vehicle is updated with an authIntoService having some null properties", async () => { + it('should update auth_into_service when the vehicle is updated with an authIntoService having some null properties', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1a" }; - techRecordDocumentJsonNew.vin = { S: "VIN1a" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1a' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1a' }; techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: { cocIssueDate: { - // @ts-ignore NULL: true, }, dateAuthorised: { - S: "2020-02-02", + S: '2020-02-02', }, datePending: { - // @ts-ignore NULL: true, }, dateReceived: { - S: "2020-04-04", + S: '2020-04-04', }, dateRejected: { - // @ts-ignore NULL: true, }, }, @@ -170,8 +165,8 @@ describe("convertTechRecordDocument() integration tests", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -181,25 +176,25 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1a"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1a" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1a', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1a"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1a'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; @@ -211,34 +206,34 @@ describe("convertTechRecordDocument() integration tests", () => { \`dateAuthorised\`, \`dateRejected\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows).toHaveLength(1); expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); expect(authIntoServiceResultSet.rows[0].cocIssueDate).toBeNull(); expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString(), + ).toBe('Sun, 02 Feb 2020 00:00:00 GMT'); expect(authIntoServiceResultSet.rows[0].datePending).toBeNull(); expect( (authIntoServiceResultSet.rows[0] - .dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + .dateAuthorised as Date).toUTCString(), + ).toBe('Sat, 04 Apr 2020 00:00:00 GMT'); expect(authIntoServiceResultSet.rows[0].dateRejected).toBeNull(); }); }); - describe("when adding a new vehicle with an empty authIntoService.", () => { - it("should not insert into auth_into_service", async () => { + describe('when adding a new vehicle with an empty authIntoService.', () => { + it('should not insert into auth_into_service', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; - techRecordDocumentJsonNew.vin = { S: "VIN1b" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1b' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1b' }; techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; const event = { @@ -246,8 +241,8 @@ describe("convertTechRecordDocument() integration tests", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -257,52 +252,52 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1b" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1b', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1b'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; const authIntoServiceResultSet = await executeSql( `SELECT \`id\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(0); + expect(authIntoServiceResultSet.rows).toHaveLength(0); }); - it("should insert into auth_into_service when the vehicle is updated with an authIntoService", async () => { + it('should insert into auth_into_service when the vehicle is updated with an authIntoService', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; - techRecordDocumentJsonNew.vin = { S: "VIN1b" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1b' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1b' }; const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -312,25 +307,25 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1b" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1b', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1b'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; @@ -342,38 +337,38 @@ describe("convertTechRecordDocument() integration tests", () => { \`dateAuthorised\`, \`dateRejected\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows).toHaveLength(1); expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString(), + ).toBe('Sun, 02 Feb 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString(), + ).toBe('Tue, 03 Mar 2020 00:00:00 GMT'); expect( (authIntoServiceResultSet.rows[0] - .dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + .dateAuthorised as Date).toUTCString(), + ).toBe('Sat, 04 Apr 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString(), + ).toBe('Tue, 05 May 2020 00:00:00 GMT'); }); - it("should remove auth_into_service when the vehicle if updated and authIntoService is empty", async () => { + it('should remove auth_into_service when the vehicle if updated and authIntoService is empty', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1b" }; - techRecordDocumentJsonNew.vin = { S: "VIN1b" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1b' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1b' }; techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; const event = { @@ -381,8 +376,8 @@ describe("convertTechRecordDocument() integration tests", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -392,46 +387,46 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1b"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1b" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1b', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1b"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1b'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; const authIntoServiceResultSet = await executeSql( `SELECT \`id\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(0); + expect(authIntoServiceResultSet.rows).toHaveLength(0); }); }); - describe("when adding a new vehicle and authIntoService is not present.", () => { - it("should not insert into auth_into_service", async () => { + describe('when adding a new vehicle and authIntoService is not present.', () => { + it('should not insert into auth_into_service', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; - techRecordDocumentJsonNew.vin = { S: "VIN1c" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1c' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1c' }; delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; const event = { @@ -439,8 +434,8 @@ describe("convertTechRecordDocument() integration tests", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -450,25 +445,25 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1c" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1c', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1c'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; @@ -480,27 +475,27 @@ describe("convertTechRecordDocument() integration tests", () => { \`dateAuthorised\`, \`dateRejected\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(0); + expect(authIntoServiceResultSet.rows).toHaveLength(0); }); - it("should insert into auth_into_service when the vehicle is updated with an authIntoService", async () => { + it('should insert into auth_into_service when the vehicle is updated with an authIntoService', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; - techRecordDocumentJsonNew.vin = { S: "VIN1c" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1c' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1c' }; const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -510,25 +505,25 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1c" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1c', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1c'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; @@ -540,38 +535,38 @@ describe("convertTechRecordDocument() integration tests", () => { \`dateAuthorised\`, \`dateRejected\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows).toHaveLength(1); expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString(), + ).toBe('Sun, 02 Feb 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString(), + ).toBe('Tue, 03 Mar 2020 00:00:00 GMT'); expect( (authIntoServiceResultSet.rows[0] - .dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + .dateAuthorised as Date).toUTCString(), + ).toBe('Sat, 04 Apr 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString(), + ).toBe('Tue, 05 May 2020 00:00:00 GMT'); }); - it("should remove auth_into_service when the vehicle if updated and authIntoService is not present", async () => { + it('should remove auth_into_service when the vehicle if updated and authIntoService is not present', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-1c" }; - techRecordDocumentJsonNew.vin = { S: "VIN1c" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1c' }; + techRecordDocumentJsonNew.vin = { S: 'VIN1c' }; delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; const event = { @@ -579,8 +574,8 @@ describe("convertTechRecordDocument() integration tests", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -590,35 +585,35 @@ describe("convertTechRecordDocument() integration tests", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1c"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-1c" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-1c', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1c"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1c'); const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`id\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); const technicalRecordId = technicalRecordSet.rows[0].id; const authIntoServiceResultSet = await executeSql( `SELECT \`id\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(0); + expect(authIntoServiceResultSet.rows).toHaveLength(0); }); }); }); diff --git a/tests/integration/cvsbnop-container.ts b/tests/integration/cvsbnop-container.ts index 1c4e642..2263848 100644 --- a/tests/integration/cvsbnop-container.ts +++ b/tests/integration/cvsbnop-container.ts @@ -1,45 +1,43 @@ -import { spawnSync } from "child_process"; -import { pathToResources } from "../utils"; -import { GenericContainer, StartedTestContainer } from "testcontainers"; -import { Port } from "testcontainers/dist/port"; -import { PoolOptions } from "mysql2"; -import { getConnectionPoolOptions } from "../../src/services/connection-pool-options"; +import { spawnSync } from 'child_process'; +import { GenericContainer, StartedTestContainer } from 'testcontainers'; +import { PoolOptions } from 'mysql2'; +import { pathToResources } from '../utils'; +import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; -export const containerMySqlPort: Port = 3306; +export const containerMySqlPort = 3306; -const databaseName: string = "CVSBNOP"; // match `${pathToResources()}/Dockerfile` +const databaseName: string = 'CVSBNOP'; // match `${pathToResources()}/Dockerfile` export const getContainerizedDatabase = async (): Promise => { const containerDefinition = ( await GenericContainer.fromDockerfile( pathToResources(), - "Dockerfile" + 'Dockerfile', ).build() ).withExposedPorts(containerMySqlPort); const container: StartedTestContainer = await containerDefinition.start(); - const hostPort: Port = container.getMappedPort(containerMySqlPort); + const hostPort = container.getMappedPort(containerMySqlPort); console.log( - `MySQL container '${container.getName()}' started on port ${hostPort} (ID: ${container.getId()})` + `MySQL container '${container.getName()}' started on port ${hostPort} (ID: ${container.getId()})`, ); - const liquibaseExecutable = - process.platform === "win32" ? "liquibase.bat" : "liquibase"; + const liquibaseExecutable = process.platform === 'win32' ? 'liquibase.bat' : 'liquibase'; const liquibaseProcess = spawnSync(liquibaseExecutable, [ - "--changeLogFile", - "cvs-nop/changelog-master.xml", - "--username", - "root", - "--password", - "12345", - "--url", + '--changeLogFile', + 'cvs-nop/changelog-master.xml', + '--username', + 'root', + '--password', + '12345', + '--url', `jdbc:mysql://127.0.0.1:${hostPort}/${databaseName}`, - "--classpath", + '--classpath', `${pathToResources()}/mysql-connector-java-8.0.23.jar`, - "update", + 'update', ]); console.log(`Liquibase process started with PID ${liquibaseProcess.pid}`); @@ -51,7 +49,7 @@ export const getContainerizedDatabase = async (): Promise }; const mockPoolOptions = async ( - container: StartedTestContainer + container: StartedTestContainer, ): Promise => { const poolOptions: PoolOptions = await getConnectionPoolOptions(); diff --git a/tests/integration/database-teardown.ts b/tests/integration/database-teardown.ts index 4d6b9a4..c2fcdde 100644 --- a/tests/integration/database-teardown.ts +++ b/tests/integration/database-teardown.ts @@ -1,14 +1,15 @@ -import { executeSql } from "../../src/services/connection-pool"; -import { allTables, TableDetails } from "../../src/services/table-details"; +import { executeSql } from '../../src/services/connection-pool'; +import { allTables, TableDetails } from '../../src/services/table-details'; export const databaseTearDown = async () => { // only run if database is not containerized - no point in tearing down data on an ephemeral environment if ( - !process.env.USE_CONTAINERIZED_DATABASE || - process.env.USE_CONTAINERIZED_DATABASE === "0" + !process.env.USE_CONTAINERIZED_DATABASE + || process.env.USE_CONTAINERIZED_DATABASE === '0' ) { const tables: TableDetails[] = allTables(); for (const table of tables) { + /* eslint-disable no-await-in-loop */ await executeSql(`TRUNCATE TABLE ${table.tableName}`); } } diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index 0dc1d43..19bbb5f 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -1,52 +1,51 @@ -import { StartedTestContainer } from "testcontainers"; +import { StartedTestContainer } from 'testcontainers'; import { destroyConnectionPool, executeSql, -} from "../../src/services/connection-pool"; -import { exampleContext, useLocalDb } from "../utils"; -import techRecordDocumentJson from "../resources/dynamodb-image-technical-record.json"; -import { getContainerizedDatabase } from "./cvsbnop-container"; -import { processStreamEvent } from "../../src/functions/process-stream-event"; -import { getConnectionPoolOptions } from "../../src/services/connection-pool-options"; +} from '../../src/services/connection-pool'; +import { exampleContext, useLocalDb } from '../utils'; +import techRecordDocumentJson from '../resources/dynamodb-image-technical-record.json'; +import { getContainerizedDatabase } from './cvsbnop-container'; +import { processStreamEvent } from '../../src/functions/process-stream-event'; +import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; useLocalDb(); - -describe("convertTechRecordDocument() integration tests", () => { +jest.setTimeout(60_000); +describe('convertTechRecordDocument() integration tests', () => { let container: StartedTestContainer; beforeAll(async () => { - jest.setTimeout(60_000); jest.restoreAllMocks(); // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "127.0.0.1", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", + host: '127.0.0.1', + port: '3306', + user: 'root', + password: '12345', + database: 'CVSBNOP', }); } }); afterAll(async () => { await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { await container.stop(); } }); - it("should correctly convert a DynamoDB event into Aurora rows", async () => { + it('should correctly convert a DynamoDB event into Aurora rows', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJson, }, @@ -57,34 +56,34 @@ describe("convertTechRecordDocument() integration tests", () => { // array of arrays: event contains array of records, each with array of tech record entities await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` FROM \`vehicle\` - WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1"` + WHERE \`vehicle\`.\`system_number\` = "SYSTEM-NUMBER-1"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual("SYSTEM-NUMBER-1"); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN1"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-1"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe('SYSTEM-NUMBER-1'); + expect(vehicleResultSet.rows[0].vin).toBe('VIN1'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-1'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-1'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); // todo This returns null const vehicleId = vehicleResultSet.rows[0].id; const technicalRecordSet = await executeSql( `SELECT \`make_model_id\`, \`vehicle_class_id\`, \`createdBy_Id\`, \`lastUpdatedBy_Id\`, \`applicant_detail_id\`, \`purchaser_detail_id\`, \`manufacturer_detail_id\`, \`id\`, \`createdAt\` FROM \`technical_record\` - WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}` + WHERE \`technical_record\`.\`vehicle_id\` = ${vehicleId}`, ); - expect(technicalRecordSet.rows.length).toEqual(1); + expect(technicalRecordSet.rows).toHaveLength(1); expect( - (technicalRecordSet.rows[0].createdAt as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.055Z"); + (technicalRecordSet.rows[0].createdAt as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.055Z'); const { make_model_id, @@ -111,24 +110,24 @@ describe("convertTechRecordDocument() integration tests", () => { \`fuelPropulsionSystem\`, \`dtpCode\` FROM \`make_model\` - WHERE \`make_model\`.\`id\` = ${make_model_id}` + WHERE \`make_model\`.\`id\` = ${make_model_id}`, ); - expect(makeModelResultSet.rows.length).toEqual(1); - expect(makeModelResultSet.rows[0].make).toEqual("MAKE"); - expect(makeModelResultSet.rows[0].model).toEqual("MODEL"); - expect(makeModelResultSet.rows[0].chassisMake).toEqual("CHASSIS-MAKE"); - expect(makeModelResultSet.rows[0].chassisModel).toEqual("CHASSIS-MODEL"); - expect(makeModelResultSet.rows[0].bodyMake).toEqual("BODY-MAKE"); - expect(makeModelResultSet.rows[0].bodyModel).toEqual("BODY-MODEL"); - expect(makeModelResultSet.rows[0].modelLiteral).toEqual("MODEL-LITERAL"); - expect(makeModelResultSet.rows[0].bodyTypeCode).toEqual("a"); - expect(makeModelResultSet.rows[0].bodyTypeDescription).toEqual( - "articulated" + expect(makeModelResultSet.rows).toHaveLength(1); + expect(makeModelResultSet.rows[0].make).toBe('MAKE'); + expect(makeModelResultSet.rows[0].model).toBe('MODEL'); + expect(makeModelResultSet.rows[0].chassisMake).toBe('CHASSIS-MAKE'); + expect(makeModelResultSet.rows[0].chassisModel).toBe('CHASSIS-MODEL'); + expect(makeModelResultSet.rows[0].bodyMake).toBe('BODY-MAKE'); + expect(makeModelResultSet.rows[0].bodyModel).toBe('BODY-MODEL'); + expect(makeModelResultSet.rows[0].modelLiteral).toBe('MODEL-LITERAL'); + expect(makeModelResultSet.rows[0].bodyTypeCode).toBe('a'); + expect(makeModelResultSet.rows[0].bodyTypeDescription).toBe( + 'articulated', ); - expect(makeModelResultSet.rows[0].fuelPropulsionSystem).toEqual( - "DieselPetrol" + expect(makeModelResultSet.rows[0].fuelPropulsionSystem).toBe( + 'DieselPetrol', ); - expect(makeModelResultSet.rows[0].dtpCode).toEqual(null); + expect(makeModelResultSet.rows[0].dtpCode).toBeNull(); const vehicleClassResultSet = await executeSql( `SELECT \`code\`, @@ -138,40 +137,40 @@ describe("convertTechRecordDocument() integration tests", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("small"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('small'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-2"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-2"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-2'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-2'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-2" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-2', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-2" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-2', ); const contactDetailsResultSet = await executeSql( @@ -185,7 +184,7 @@ describe("convertTechRecordDocument() integration tests", () => { \`telephoneNumber\`, \`faxNumber\` FROM \`contact_details\` - WHERE \`contact_details\`.\`id\` = ${applicant_detail_id}` + WHERE \`contact_details\`.\`id\` = ${applicant_detail_id}`, ); const contactIds = [ @@ -195,20 +194,20 @@ describe("convertTechRecordDocument() integration tests", () => { ]; expect(contactIds.every((id) => contactIds[0] === id)).toBe(true); - expect(contactDetailsResultSet.rows.length).toEqual(1); - expect(contactDetailsResultSet.rows[0].name).toEqual("NAME"); - expect(contactDetailsResultSet.rows[0].address1).toEqual("ADDRESS-1"); - expect(contactDetailsResultSet.rows[0].address2).toEqual("ADDRESS-2"); - expect(contactDetailsResultSet.rows[0].postTown).toEqual("POST-TOWN"); - expect(contactDetailsResultSet.rows[0].address3).toEqual("ADDRESS-3"); - expect(contactDetailsResultSet.rows[0].postCode).toEqual("POST-CODE"); - expect(contactDetailsResultSet.rows[0].emailAddress).toEqual( - "EMAIL-ADDRESS" + expect(contactDetailsResultSet.rows).toHaveLength(1); + expect(contactDetailsResultSet.rows[0].name).toBe('NAME'); + expect(contactDetailsResultSet.rows[0].address1).toBe('ADDRESS-1'); + expect(contactDetailsResultSet.rows[0].address2).toBe('ADDRESS-2'); + expect(contactDetailsResultSet.rows[0].postTown).toBe('POST-TOWN'); + expect(contactDetailsResultSet.rows[0].address3).toBe('ADDRESS-3'); + expect(contactDetailsResultSet.rows[0].postCode).toBe('POST-CODE'); + expect(contactDetailsResultSet.rows[0].emailAddress).toBe( + 'EMAIL-ADDRESS', ); - expect(contactDetailsResultSet.rows[0].telephoneNumber).toEqual( - "TELEPHONE-NUMBER" + expect(contactDetailsResultSet.rows[0].telephoneNumber).toBe( + 'TELEPHONE-NUMBER', ); - expect(contactDetailsResultSet.rows[0].faxNumber).toEqual("FAX-NUMBER"); + expect(contactDetailsResultSet.rows[0].faxNumber).toBe('FAX-NUMBER'); const techRecordResultSet = await executeSql( `SELECT \`vehicle_id\`, @@ -296,134 +295,134 @@ describe("convertTechRecordDocument() integration tests", () => { \`numberOfSeatbelts\`, \`seatbeltInstallationApprovalDate\` FROM \`technical_record\` - WHERE \`technical_record\`.\`id\` = ${technicalRecordId}` + WHERE \`technical_record\`.\`id\` = ${technicalRecordId}`, ); // check a few fields of different types here expect(techRecordResultSet.rows[0].vehicle_id).toEqual(vehicleId); - expect(techRecordResultSet.rows[0].recordCompleteness).toEqual( - "88888888" + expect(techRecordResultSet.rows[0].recordCompleteness).toBe( + '88888888', ); expect( - (techRecordResultSet.rows[0].createdAt as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + (techRecordResultSet.rows[0].createdAt as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); expect( - (techRecordResultSet.rows[0].lastUpdatedAt as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(techRecordResultSet.rows[0].make_model_id).toEqual(1); - expect(techRecordResultSet.rows[0].functionCode).toEqual("1"); - expect(techRecordResultSet.rows[0].offRoad).toEqual(1); - expect(techRecordResultSet.rows[0].numberOfWheelsDriven).toEqual(1); + (techRecordResultSet.rows[0].lastUpdatedAt as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); + expect(techRecordResultSet.rows[0].make_model_id).toBe(1); + expect(techRecordResultSet.rows[0].functionCode).toBe('1'); + expect(techRecordResultSet.rows[0].offRoad).toBe(1); + expect(techRecordResultSet.rows[0].numberOfWheelsDriven).toBe(1); expect( - (techRecordResultSet.rows[0].regnDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(techRecordResultSet.rows[0].unladenWeight).toEqual(1); - expect(techRecordResultSet.rows[0].emissionsLimit).toEqual("1"); - expect(techRecordResultSet.rows[0].departmentalVehicleMarker).toEqual(1); - expect(techRecordResultSet.rows[0].alterationMarker).toEqual(1); + (techRecordResultSet.rows[0].regnDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); + expect(techRecordResultSet.rows[0].unladenWeight).toBe(1); + expect(techRecordResultSet.rows[0].emissionsLimit).toBe('1'); + expect(techRecordResultSet.rows[0].departmentalVehicleMarker).toBe(1); + expect(techRecordResultSet.rows[0].alterationMarker).toBe(1); expect(techRecordResultSet.rows[0].vehicle_class_id).toEqual( - vehicle_class_id - ); - expect(techRecordResultSet.rows[0].variantVersionNumber).toEqual("1"); - expect(techRecordResultSet.rows[0].grossEecWeight).toEqual(1); - expect(techRecordResultSet.rows[0].trainEecWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxTrainEecWeight).toEqual(1); - expect(techRecordResultSet.rows[0].applicant_detail_id).toEqual(1); - expect(techRecordResultSet.rows[0].purchaser_detail_id).toEqual(1); - expect(techRecordResultSet.rows[0].manufacturer_detail_id).toEqual(1); - expect(techRecordResultSet.rows[0].manufactureYear).toEqual(2020); + vehicle_class_id, + ); + expect(techRecordResultSet.rows[0].variantVersionNumber).toBe('1'); + expect(techRecordResultSet.rows[0].grossEecWeight).toBe(1); + expect(techRecordResultSet.rows[0].trainEecWeight).toBe(1); + expect(techRecordResultSet.rows[0].maxTrainEecWeight).toBe(1); + expect(techRecordResultSet.rows[0].applicant_detail_id).toBe(1); + expect(techRecordResultSet.rows[0].purchaser_detail_id).toBe(1); + expect(techRecordResultSet.rows[0].manufacturer_detail_id).toBe(1); + expect(techRecordResultSet.rows[0].manufactureYear).toBe(2020); expect( - (techRecordResultSet.rows[0].firstUseDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + (techRecordResultSet.rows[0].firstUseDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); expect( - (techRecordResultSet.rows[0].coifDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(techRecordResultSet.rows[0].ntaNumber).toEqual("NTA-NUMBER"); - expect(techRecordResultSet.rows[0].coifSerialNumber).toEqual("88888888"); - expect(techRecordResultSet.rows[0].coifCertifierName).toEqual( - "COIF-CERTIFIER-NAME" - ); - expect(techRecordResultSet.rows[0].approvalType).toEqual("NTA"); - expect(techRecordResultSet.rows[0].approvalTypeNumber).toEqual("1"); - expect(techRecordResultSet.rows[0].variantNumber).toEqual("1"); - expect(techRecordResultSet.rows[0].conversionRefNo).toEqual("1010101010"); - expect(techRecordResultSet.rows[0].seatsLowerDeck).toEqual(1); - expect(techRecordResultSet.rows[0].seatsUpperDeck).toEqual(1); - expect(techRecordResultSet.rows[0].standingCapacity).toEqual(1); - expect(techRecordResultSet.rows[0].speedRestriction).toEqual(1); - expect(techRecordResultSet.rows[0].speedLimiterMrk).toEqual(1); - expect(techRecordResultSet.rows[0].tachoExemptMrk).toEqual(1); - expect(techRecordResultSet.rows[0].dispensations).toEqual( - "DISPENSATIONS" - ); - expect(techRecordResultSet.rows[0].remarks).toEqual("REMARKS"); - expect(techRecordResultSet.rows[0].reasonForCreation).toEqual( - "REASON-FOR-CREATION" - ); - expect(techRecordResultSet.rows[0].statusCode).toEqual("STATUS-CODE"); - expect(techRecordResultSet.rows[0].grossKerbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].grossLadenWeight).toEqual(1); - expect(techRecordResultSet.rows[0].grossGbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].grossDesignWeight).toEqual(1); - expect(techRecordResultSet.rows[0].trainGbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].trainDesignWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxTrainGbWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxTrainDesignWeight).toEqual(1); - expect(techRecordResultSet.rows[0].maxLoadOnCoupling).toEqual(1); - expect(techRecordResultSet.rows[0].frameDescription).toEqual( - "Channel section" - ); - expect(techRecordResultSet.rows[0].tyreUseCode).toEqual("22"); - expect(techRecordResultSet.rows[0].roadFriendly).toEqual(1); - expect(techRecordResultSet.rows[0].drawbarCouplingFitted).toEqual(1); - expect(techRecordResultSet.rows[0].euroStandard).toEqual("euroStd"); - expect(techRecordResultSet.rows[0].suspensionType).toEqual("1"); - expect(techRecordResultSet.rows[0].couplingType).toEqual("1"); - expect(techRecordResultSet.rows[0].length).toEqual(1); - expect(techRecordResultSet.rows[0].height).toEqual(1); - expect(techRecordResultSet.rows[0].width).toEqual(1); - expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMin).toEqual(1); - expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMax).toEqual(1); + (techRecordResultSet.rows[0].coifDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); + expect(techRecordResultSet.rows[0].ntaNumber).toBe('NTA-NUMBER'); + expect(techRecordResultSet.rows[0].coifSerialNumber).toBe('88888888'); + expect(techRecordResultSet.rows[0].coifCertifierName).toBe( + 'COIF-CERTIFIER-NAME', + ); + expect(techRecordResultSet.rows[0].approvalType).toBe('NTA'); + expect(techRecordResultSet.rows[0].approvalTypeNumber).toBe('1'); + expect(techRecordResultSet.rows[0].variantNumber).toBe('1'); + expect(techRecordResultSet.rows[0].conversionRefNo).toBe('1010101010'); + expect(techRecordResultSet.rows[0].seatsLowerDeck).toBe(1); + expect(techRecordResultSet.rows[0].seatsUpperDeck).toBe(1); + expect(techRecordResultSet.rows[0].standingCapacity).toBe(1); + expect(techRecordResultSet.rows[0].speedRestriction).toBe(1); + expect(techRecordResultSet.rows[0].speedLimiterMrk).toBe(1); + expect(techRecordResultSet.rows[0].tachoExemptMrk).toBe(1); + expect(techRecordResultSet.rows[0].dispensations).toBe( + 'DISPENSATIONS', + ); + expect(techRecordResultSet.rows[0].remarks).toBe('REMARKS'); + expect(techRecordResultSet.rows[0].reasonForCreation).toBe( + 'REASON-FOR-CREATION', + ); + expect(techRecordResultSet.rows[0].statusCode).toBe('STATUS-CODE'); + expect(techRecordResultSet.rows[0].grossKerbWeight).toBe(1); + expect(techRecordResultSet.rows[0].grossLadenWeight).toBe(1); + expect(techRecordResultSet.rows[0].grossGbWeight).toBe(1); + expect(techRecordResultSet.rows[0].grossDesignWeight).toBe(1); + expect(techRecordResultSet.rows[0].trainGbWeight).toBe(1); + expect(techRecordResultSet.rows[0].trainDesignWeight).toBe(1); + expect(techRecordResultSet.rows[0].maxTrainGbWeight).toBe(1); + expect(techRecordResultSet.rows[0].maxTrainDesignWeight).toBe(1); + expect(techRecordResultSet.rows[0].maxLoadOnCoupling).toBe(1); + expect(techRecordResultSet.rows[0].frameDescription).toBe( + 'Channel section', + ); + expect(techRecordResultSet.rows[0].tyreUseCode).toBe('22'); + expect(techRecordResultSet.rows[0].roadFriendly).toBe(1); + expect(techRecordResultSet.rows[0].drawbarCouplingFitted).toBe(1); + expect(techRecordResultSet.rows[0].euroStandard).toBe('euroStd'); + expect(techRecordResultSet.rows[0].suspensionType).toBe('1'); + expect(techRecordResultSet.rows[0].couplingType).toBe('1'); + expect(techRecordResultSet.rows[0]).toHaveLength(1); + expect(techRecordResultSet.rows[0].height).toBe(1); + expect(techRecordResultSet.rows[0].width).toBe(1); + expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMin).toBe(1); + expect(techRecordResultSet.rows[0].frontAxleTo5thWheelMax).toBe(1); expect( - techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMin - ).toEqual(1); + techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMin, + ).toBe(1); expect( - techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMax - ).toEqual(1); - expect(techRecordResultSet.rows[0].frontAxleToRearAxle).toEqual(1); - expect(techRecordResultSet.rows[0].rearAxleToRearTrl).toEqual(1); - expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMin).toEqual( - 1 - ); - expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMax).toEqual( - 1 - ); - expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMin).toEqual(1); - expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMax).toEqual(1); + techRecordResultSet.rows[0].frontVehicleTo5thWheelCouplingMax, + ).toBe(1); + expect(techRecordResultSet.rows[0].frontAxleToRearAxle).toBe(1); + expect(techRecordResultSet.rows[0].rearAxleToRearTrl).toBe(1); + expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMin).toBe( + 1, + ); + expect(techRecordResultSet.rows[0].couplingCenterToRearAxleMax).toBe( + 1, + ); + expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMin).toBe(1); + expect(techRecordResultSet.rows[0].couplingCenterToRearTrlMax).toBe(1); expect( - techRecordResultSet.rows[0].centreOfRearmostAxleToRearOfTrl - ).toEqual(1); - expect(techRecordResultSet.rows[0].notes).toEqual("NOTES"); - expect(techRecordResultSet.rows[0].purchaserNotes).toEqual( - "PURCHASER-NOTES" - ); - expect(techRecordResultSet.rows[0].manufacturerNotes).toEqual( - "MANUFACTURER-NOTES" - ); - expect(techRecordResultSet.rows[0].noOfAxles).toEqual(1); - expect(techRecordResultSet.rows[0].brakeCode).toEqual("1"); - expect(techRecordResultSet.rows[0].brakes_dtpNumber).toEqual("666666"); - expect(techRecordResultSet.rows[0].brakes_loadSensingValve).toEqual(1); - expect(techRecordResultSet.rows[0].brakes_antilockBrakingSystem).toEqual( - 1 - ); - expect(techRecordResultSet.rows[0].updateType).toEqual("adrUpdate"); - expect(techRecordResultSet.rows[0].numberOfSeatbelts).toEqual( - "NUMBER-OF-SEATBELTS" + techRecordResultSet.rows[0].centreOfRearmostAxleToRearOfTrl, + ).toBe(1); + expect(techRecordResultSet.rows[0].notes).toBe('NOTES'); + expect(techRecordResultSet.rows[0].purchaserNotes).toBe( + 'PURCHASER-NOTES', + ); + expect(techRecordResultSet.rows[0].manufacturerNotes).toBe( + 'MANUFACTURER-NOTES', + ); + expect(techRecordResultSet.rows[0].noOfAxles).toBe(1); + expect(techRecordResultSet.rows[0].brakeCode).toBe('1'); + expect(techRecordResultSet.rows[0].brakes_dtpNumber).toBe('666666'); + expect(techRecordResultSet.rows[0].brakes_loadSensingValve).toBe(1); + expect(techRecordResultSet.rows[0].brakes_antilockBrakingSystem).toBe( + 1, + ); + expect(techRecordResultSet.rows[0].updateType).toBe('adrUpdate'); + expect(techRecordResultSet.rows[0].numberOfSeatbelts).toBe( + 'NUMBER-OF-SEATBELTS', ); expect( (techRecordResultSet.rows[0] - .seatbeltInstallationApprovalDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + .seatbeltInstallationApprovalDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); const brakesResultSet = await executeSql( `SELECT \`technical_record_id\`, @@ -441,31 +440,31 @@ describe("convertTechRecordDocument() integration tests", () => { \`secondaryBrakeForceB\`, \`parkingBrakeForceB\` FROM \`psv_brakes\` - WHERE \`psv_brakes\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`psv_brakes\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(brakesResultSet.rows.length).toEqual(1); + expect(brakesResultSet.rows).toHaveLength(1); expect(brakesResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); - expect(brakesResultSet.rows[0].brakeCodeOriginal).toEqual("333"); - expect(brakesResultSet.rows[0].brakeCode).toEqual("666666"); - expect(brakesResultSet.rows[0].dataTrBrakeOne).toEqual( - "DATA-TR-BRAKE-ONE" + expect(brakesResultSet.rows[0].brakeCodeOriginal).toBe('333'); + expect(brakesResultSet.rows[0].brakeCode).toBe('666666'); + expect(brakesResultSet.rows[0].dataTrBrakeOne).toBe( + 'DATA-TR-BRAKE-ONE', ); - expect(brakesResultSet.rows[0].dataTrBrakeTwo).toEqual( - "DATA-TR-BRAKE-TWO" + expect(brakesResultSet.rows[0].dataTrBrakeTwo).toBe( + 'DATA-TR-BRAKE-TWO', ); - expect(brakesResultSet.rows[0].dataTrBrakeThree).toEqual( - "DATA-TR-BRAKE-THREE" + expect(brakesResultSet.rows[0].dataTrBrakeThree).toBe( + 'DATA-TR-BRAKE-THREE', ); - expect(brakesResultSet.rows[0].retarderBrakeOne).toEqual("electric"); - expect(brakesResultSet.rows[0].retarderBrakeTwo).toEqual("electric"); - expect(brakesResultSet.rows[0].serviceBrakeForceA).toEqual(1); - expect(brakesResultSet.rows[0].secondaryBrakeForceA).toEqual(1); - expect(brakesResultSet.rows[0].parkingBrakeForceA).toEqual(1); - expect(brakesResultSet.rows[0].serviceBrakeForceB).toEqual(1); - expect(brakesResultSet.rows[0].secondaryBrakeForceB).toEqual(1); - expect(brakesResultSet.rows[0].parkingBrakeForceB).toEqual(1); + expect(brakesResultSet.rows[0].retarderBrakeOne).toBe('electric'); + expect(brakesResultSet.rows[0].retarderBrakeTwo).toBe('electric'); + expect(brakesResultSet.rows[0].serviceBrakeForceA).toBe(1); + expect(brakesResultSet.rows[0].secondaryBrakeForceA).toBe(1); + expect(brakesResultSet.rows[0].parkingBrakeForceA).toBe(1); + expect(brakesResultSet.rows[0].serviceBrakeForceB).toBe(1); + expect(brakesResultSet.rows[0].secondaryBrakeForceB).toBe(1); + expect(brakesResultSet.rows[0].parkingBrakeForceB).toBe(1); const axleSpacingResultSet = await executeSql( `SELECT \`technical_record_id\`, \`axles\`, \`value\` @@ -474,29 +473,29 @@ describe("convertTechRecordDocument() integration tests", () => { SELECT \`id\` FROM \`axle_spacing\` WHERE \`axle_spacing\`.\`technical_record_id\` = ${technicalRecordId} - )` + )`, ); - expect(axleSpacingResultSet.rows.length).toEqual(1); + expect(axleSpacingResultSet.rows).toHaveLength(1); expect(axleSpacingResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); - expect(axleSpacingResultSet.rows[0].axles).toEqual("1-2"); - expect(axleSpacingResultSet.rows[0].value).toEqual(1); + expect(axleSpacingResultSet.rows[0].axles).toBe('1-2'); + expect(axleSpacingResultSet.rows[0].value).toBe(1); const microfilmResultSet = await executeSql( `SELECT \`technical_record_id\`, \`microfilmDocumentType\`, \`microfilmRollNumber\`, \`microfilmSerialNumber\` FROM \`microfilm\` - WHERE \`microfilm\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`microfilm\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(microfilmResultSet.rows.length).toEqual(1); + expect(microfilmResultSet.rows).toHaveLength(1); expect(microfilmResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); - expect(microfilmResultSet.rows[0].microfilmDocumentType).toEqual( - "PSV Miscellaneous" + expect(microfilmResultSet.rows[0].microfilmDocumentType).toBe( + 'PSV Miscellaneous', ); - expect(microfilmResultSet.rows[0].microfilmRollNumber).toEqual("1"); - expect(microfilmResultSet.rows[0].microfilmSerialNumber).toEqual("1"); + expect(microfilmResultSet.rows[0].microfilmRollNumber).toBe('1'); + expect(microfilmResultSet.rows[0].microfilmSerialNumber).toBe('1'); const platesResultSet = await executeSql( `SELECT \`technical_record_id\`, @@ -509,20 +508,20 @@ describe("convertTechRecordDocument() integration tests", () => { SELECT \`id\` FROM \`plate\` WHERE \`plate\`.\`technical_record_id\` = ${technicalRecordId} - )` + )`, ); - expect(platesResultSet.rows.length).toEqual(1); + expect(platesResultSet.rows).toHaveLength(1); expect(platesResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); - expect(platesResultSet.rows[0].plateSerialNumber).toEqual("1"); + expect(platesResultSet.rows[0].plateSerialNumber).toBe('1'); expect( - (platesResultSet.rows[0].plateIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); - expect(platesResultSet.rows[0].plateReasonForIssue).toEqual( - "Free replacement" + (platesResultSet.rows[0].plateIssueDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); + expect(platesResultSet.rows[0].plateReasonForIssue).toBe( + 'Free replacement', ); - expect(platesResultSet.rows[0].plateIssuer).toEqual("PLATE-ISSUER"); + expect(platesResultSet.rows[0].plateIssuer).toBe('PLATE-ISSUER'); const axlesResultSet = await executeSql( `SELECT \`technical_record_id\`, @@ -542,23 +541,23 @@ describe("convertTechRecordDocument() integration tests", () => { SELECT \`id\` FROM \`axles\` WHERE \`axles\`.\`technical_record_id\` = ${technicalRecordId} - )` + )`, ); - expect(axlesResultSet.rows.length).toEqual(1); + expect(axlesResultSet.rows).toHaveLength(1); expect(axlesResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); expect(axlesResultSet.rows[0].tyre_id).toEqual(technicalRecordId); - expect(axlesResultSet.rows[0].axleNumber).toEqual(1); - expect(axlesResultSet.rows[0].parkingBrakeMrk).toEqual(1); - expect(axlesResultSet.rows[0].kerbWeight).toEqual(1); - expect(axlesResultSet.rows[0].ladenWeight).toEqual(1); - expect(axlesResultSet.rows[0].gbWeight).toEqual(1); - expect(axlesResultSet.rows[0].eecWeight).toEqual(1); - expect(axlesResultSet.rows[0].designWeight).toEqual(1); - expect(axlesResultSet.rows[0].brakeActuator).toEqual(1); - expect(axlesResultSet.rows[0].leverLength).toEqual(1); - expect(axlesResultSet.rows[0].springBrakeParking).toEqual(1); + expect(axlesResultSet.rows[0].axleNumber).toBe(1); + expect(axlesResultSet.rows[0].parkingBrakeMrk).toBe(1); + expect(axlesResultSet.rows[0].kerbWeight).toBe(1); + expect(axlesResultSet.rows[0].ladenWeight).toBe(1); + expect(axlesResultSet.rows[0].gbWeight).toBe(1); + expect(axlesResultSet.rows[0].eecWeight).toBe(1); + expect(axlesResultSet.rows[0].designWeight).toBe(1); + expect(axlesResultSet.rows[0].brakeActuator).toBe(1); + expect(axlesResultSet.rows[0].leverLength).toBe(1); + expect(axlesResultSet.rows[0].springBrakeParking).toBe(1); const authIntoServiceResultSet = await executeSql( `SELECT \`technical_record_id\`, @@ -568,46 +567,46 @@ describe("convertTechRecordDocument() integration tests", () => { \`dateAuthorised\`, \`dateRejected\` FROM \`auth_into_service\` - WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}` + WHERE \`auth_into_service\`.\`technical_record_id\` = ${technicalRecordId}`, ); - expect(authIntoServiceResultSet.rows.length).toEqual(1); + expect(authIntoServiceResultSet.rows).toHaveLength(1); expect(authIntoServiceResultSet.rows[0].technical_record_id).toEqual( - technicalRecordId + technicalRecordId, ); expect( - (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString() - ).toEqual("Wed, 01 Jan 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].cocIssueDate as Date).toUTCString(), + ).toBe('Wed, 01 Jan 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString() - ).toEqual("Sun, 02 Feb 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateReceived as Date).toUTCString(), + ).toBe('Sun, 02 Feb 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString() - ).toEqual("Tue, 03 Mar 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].datePending as Date).toUTCString(), + ).toBe('Tue, 03 Mar 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateAuthorised as Date).toUTCString() - ).toEqual("Sat, 04 Apr 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateAuthorised as Date).toUTCString(), + ).toBe('Sat, 04 Apr 2020 00:00:00 GMT'); expect( - (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString() - ).toEqual("Tue, 05 May 2020 00:00:00 GMT"); + (authIntoServiceResultSet.rows[0].dateRejected as Date).toUTCString(), + ).toBe('Tue, 05 May 2020 00:00:00 GMT'); }); - describe("when adding a new vehicle and changing VRM to a new value, VRM should change on existing vehicle.", () => { - it("A new vehicle is present", async () => { + describe('when adding a new vehicle and changing VRM to a new value, VRM should change on existing vehicle.', () => { + it('A new vehicle is present', async () => { // arrange - create a record so we can later query for it and assert for is existence const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-2" }; - techRecordDocumentJsonNew.vin = { S: "VIN2" }; - techRecordDocumentJsonNew.primaryVrm = { S: "VRM7777" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-2' }; + techRecordDocumentJsonNew.vin = { S: 'VIN2' }; + techRecordDocumentJsonNew.primaryVrm = { S: 'VRM7777' }; const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -617,43 +616,43 @@ describe("convertTechRecordDocument() integration tests", () => { }; // array of arrays: event contains array of records, each with array of tech record entities await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\` FROM \`vehicle\` - WHERE \`system_number\` = "SYSTEM-NUMBER-2"` + WHERE \`system_number\` = "SYSTEM-NUMBER-2"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-2" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-2', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN2"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM7777"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN2'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM7777'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-1'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); // todo This returns null }); - it("VRM has changed", async () => { + it('VRM has changed', async () => { // arrange - create a record with existing pair of (SystemNumber, VIN) and new VRM so we can later query for it and assert its value const techRecordDocumentJsonNew = JSON.parse( - JSON.stringify(techRecordDocumentJson) + JSON.stringify(techRecordDocumentJson), ); - techRecordDocumentJsonNew.systemNumber = { S: "SYSTEM-NUMBER-2" }; - techRecordDocumentJsonNew.vin = { S: "VIN2" }; - techRecordDocumentJsonNew.primaryVrm = { S: "VRM888NEW" }; + techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-2' }; + techRecordDocumentJsonNew.vin = { S: 'VIN2' }; + techRecordDocumentJsonNew.primaryVrm = { S: 'VRM888NEW' }; const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -663,24 +662,24 @@ describe("convertTechRecordDocument() integration tests", () => { }; // array of arrays: event contains array of records, each with array of tech record entities await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\` FROM \`vehicle\` - WHERE \`system_number\` = "SYSTEM-NUMBER-2"` + WHERE \`system_number\` = "SYSTEM-NUMBER-2"`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-2" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-2', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN2"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM888NEW"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-1"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN2'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM888NEW'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-1'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); // todo This returns null }); }); diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index 1aea437..6decab8 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -1,83 +1,79 @@ -import { StartedTestContainer } from "testcontainers"; +/* eslint-disable global-require */ +/* eslint-disable @typescript-eslint/no-var-requires */ +import { StartedTestContainer } from 'testcontainers'; +import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; import { destroyConnectionPool, executeSql, -} from "../../src/services/connection-pool"; -import { exampleContext, useLocalDb } from "../utils"; -import { getContainerizedDatabase } from "./cvsbnop-container"; -import { processStreamEvent } from "../../src/functions/process-stream-event"; -import { getConnectionPoolOptions } from "../../src/services/connection-pool-options"; -import { marshall, unmarshall } from "@aws-sdk/util-dynamodb"; +} from '../../src/services/connection-pool'; +import { exampleContext, useLocalDb } from '../utils'; +import { getContainerizedDatabase } from './cvsbnop-container'; +import { processStreamEvent } from '../../src/functions/process-stream-event'; +import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; useLocalDb(); - -describe("convertTestResults() integration tests with delete", () => { +jest.setTimeout(60_000); +describe('convertTestResults() integration tests with delete', () => { let container: StartedTestContainer; const testResultsJson = JSON.parse( - JSON.stringify(require("../resources/dynamodb-image-test-results.json")) + JSON.stringify(require('../resources/dynamodb-image-test-results.json')), ); const testResultsJsonWithTestTypes = JSON.parse( JSON.stringify( - require("../resources/dynamodb-image-test-results-with-testtypes.json") - ) + require('../resources/dynamodb-image-test-results-with-testtypes.json'), + ), ); const testResultsJsonWithNoSystemNumber = JSON.parse( JSON.stringify( - require("../resources/dynamodb-image-test-results-with-no-systemNumber.json") - ) + require('../resources/dynamodb-image-test-results-with-no-systemNumber.json'), + ), ); const testResultsJsonWithoutTestTypes = JSON.parse( JSON.stringify( - require("../resources/dynamodb-image-test-results-without-testtypes.json") - ) + require('../resources/dynamodb-image-test-results-without-testtypes.json'), + ), ); - testResultsJson.testResultId.S = testResultsJson.testResultId.S + "-D"; - testResultsJson.systemNumber.S = testResultsJson.systemNumber.S + "-D"; - testResultsJsonWithTestTypes.testResultId.S = - testResultsJsonWithTestTypes.testResultId.S + "-D"; - testResultsJsonWithTestTypes.systemNumber.S = - testResultsJsonWithTestTypes.systemNumber.S + "-D"; - testResultsJsonWithNoSystemNumber.testResultId.S = - testResultsJsonWithNoSystemNumber.testResultId.S + "-D"; - testResultsJsonWithoutTestTypes.testResultId.S = - testResultsJsonWithoutTestTypes.testResultId.S + "-D"; - testResultsJsonWithoutTestTypes.systemNumber.S = - testResultsJsonWithoutTestTypes.systemNumber.S + "-D"; + testResultsJson.testResultId.S = `${testResultsJson.testResultId.S}-D`; + testResultsJson.systemNumber.S = `${testResultsJson.systemNumber.S}-D`; + testResultsJsonWithTestTypes.testResultId.S = `${testResultsJsonWithTestTypes.testResultId.S}-D`; + testResultsJsonWithTestTypes.systemNumber.S = `${testResultsJsonWithTestTypes.systemNumber.S}-D`; + testResultsJsonWithNoSystemNumber.testResultId.S = `${testResultsJsonWithNoSystemNumber.testResultId.S}-D`; + testResultsJsonWithoutTestTypes.testResultId.S = `${testResultsJsonWithoutTestTypes.testResultId.S}-D`; + testResultsJsonWithoutTestTypes.systemNumber.S = `${testResultsJsonWithoutTestTypes.systemNumber.S}-D`; beforeAll(async () => { delete process.env.DISABLE_DELETE_ON_UPDATE; - jest.setTimeout(60_000); jest.restoreAllMocks(); // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "127.0.0.1", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", + host: '127.0.0.1', + port: '3306', + user: 'root', + password: '12345', + database: 'CVSBNOP', }); } }); afterAll(async () => { await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { await container.stop(); } }); - it("should correctly convert a DynamoDB event into Aurora rows", async () => { + it('should correctly convert a DynamoDB event into Aurora rows', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -88,7 +84,7 @@ describe("convertTestResults() integration tests with delete", () => { // array of arrays: event contains array of records, each with array of test result entities await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -98,18 +94,18 @@ describe("convertTestResults() integration tests with delete", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-D', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -119,50 +115,50 @@ describe("convertTestResults() integration tests with delete", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-D'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('333'); + expect(testResultSet.rows[0].certificateNumber).toBe('CERTIFICATE-NO'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '2ND-CERTIFICATE-NO', ); expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testExpiryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.023Z'); expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(1); + expect(testResultSet.rows[0].testResult).toBe('fail'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe( + 'PARTICULATE-TRAP-FITTED', ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe( + 'PARTICULATE-TRAP-SERIAL-NUMBER', ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'SMOKE-TEST-K-LIMIT-APPLIED', ); - expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows).toHaveLength(1); const { test_station_id, @@ -179,23 +175,23 @@ describe("convertTestResults() integration tests with delete", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -206,90 +202,90 @@ describe("convertTestResults() integration tests with delete", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(1); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -303,54 +299,54 @@ describe("convertTestResults() integration tests with delete", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-5'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("should correctly convert a DynamoDB event into Aurora rows when processed a second time", async () => { + it('should correctly convert a DynamoDB event into Aurora rows when processed a second time', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -360,13 +356,13 @@ describe("convertTestResults() integration tests with delete", () => { }; const consoleSpy = jest - .spyOn(global.console, "error") + .spyOn(global.console, 'error') .mockImplementation(); await processStreamEvent(event, exampleContext(), () => { - return; + }); - expect(consoleSpy).toBeCalledTimes(0); + expect(consoleSpy).toHaveBeenCalledTimes(0); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` @@ -375,18 +371,18 @@ describe("convertTestResults() integration tests with delete", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-D', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -396,50 +392,50 @@ describe("convertTestResults() integration tests with delete", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-D'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('333'); + expect(testResultSet.rows[0].certificateNumber).toBe('CERTIFICATE-NO'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '2ND-CERTIFICATE-NO', ); expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testExpiryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.023Z'); expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(1); + expect(testResultSet.rows[0].testResult).toBe('fail'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe( + 'PARTICULATE-TRAP-FITTED', ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe( + 'PARTICULATE-TRAP-SERIAL-NUMBER', ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'SMOKE-TEST-K-LIMIT-APPLIED', ); - expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows).toHaveLength(1); const { test_station_id, @@ -456,23 +452,23 @@ describe("convertTestResults() integration tests with delete", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -483,90 +479,90 @@ describe("convertTestResults() integration tests with delete", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(1); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -580,73 +576,65 @@ describe("convertTestResults() integration tests with delete", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-5'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("should correctly update when non-unique attributes changed", async () => { + it('should correctly update when non-unique attributes changed', async () => { const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testCode = "444"; - deserializedJson.testTypes[0].certificateNumber = "W323232"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].testCode = '444'; + deserializedJson.testTypes[0].certificateNumber = 'W323232'; + deserializedJson.testTypes[0].secondaryCertificateNumber = '111111'; + deserializedJson.testTypes[0].testExpiryDate = '2022-01-01T00:00:00.000Z'; + deserializedJson.testTypes[0].testAnniversaryDate = '2022-01-01T00:00:00.000Z'; + deserializedJson.testTypes[0].testTypeStartTimestamp = '2021-01-01T00:00:00.000Z'; deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-01"; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = '2021-01-01'; deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; + deserializedJson.testTypes[0].testResult = 'pass'; + deserializedJson.testTypes[0].reasonForAbandoning = 'NEW-REASON-FOR-ABANDONING'; + deserializedJson.testTypes[0].additionalNotesRecorded = 'NEW-ADDITIONAL-NOTES-RECORDED'; + deserializedJson.testTypes[0].additionalCommentsForAbandon = 'NEW-ADDITIONAL-COMMENTS-FOR-ABANDON'; + deserializedJson.testTypes[0].particulateTrapFitted = 't'; + deserializedJson.testTypes[0].particulateTrapSerialNumber = 'trap'; + deserializedJson.testTypes[0].modificationTypeUsed = 'NEW-MODIFICATION-TYPE-USED'; + deserializedJson.testTypes[0].smokeTestKLimitApplied = 'NEW-SMOKE-TEST-K-LIMIT-APPLIED'; const serializedJSONb = marshall(deserializedJson); @@ -655,8 +643,8 @@ describe("convertTestResults() integration tests with delete", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -666,7 +654,7 @@ describe("convertTestResults() integration tests with delete", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -676,18 +664,18 @@ describe("convertTestResults() integration tests with delete", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-D', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -697,44 +685,44 @@ describe("convertTestResults() integration tests with delete", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("444"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W323232"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-D'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('444'); + expect(testResultSet.rows[0].certificateNumber).toBe('W323232'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '111111', ); expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-01") + new Date('2022-01-01'), ); expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-01") + new Date('2022-01-01'), ); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2021-01-01T00:00:00.000Z'); expect( (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" + .lastSeatbeltInstallationCheckDate as Date).toISOString(), + ).toBe('2021-01-01T00:00:00.000Z'); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(0); + expect(testResultSet.rows[0].testResult).toBe('pass'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'NEW-REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'NEW-ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe('t'); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe('trap'); + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'NEW-MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'NEW-SMOKE-TEST-K-LIMIT-APPLIED', ); const { @@ -752,23 +740,23 @@ describe("convertTestResults() integration tests with delete", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -779,90 +767,90 @@ describe("convertTestResults() integration tests with delete", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(1); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -876,76 +864,67 @@ describe("convertTestResults() integration tests with delete", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-5'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("should correctly insert when unique attributes changed", async () => { + it('should correctly insert when unique attributes changed', async () => { const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testNumber = "NewTestNumber"; - deserializedJson.testTypes[0].testCode = "555"; - deserializedJson.testTypes[0].certificateNumber = "W43434343"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].testNumber = 'NewTestNumber'; + deserializedJson.testTypes[0].testCode = '555'; + deserializedJson.testTypes[0].certificateNumber = 'W43434343'; + deserializedJson.testTypes[0].secondaryCertificateNumber = '111111'; + deserializedJson.testTypes[0].testExpiryDate = '2022-01-02T00:00:00.000Z'; + deserializedJson.testTypes[0].testAnniversaryDate = '2022-01-02T00:00:00.000Z'; + deserializedJson.testTypes[0].testTypeStartTimestamp = '2021-01-02T00:00:00.000Z'; deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-02"; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = '2021-01-02'; deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; - deserializedJson.testTypes[0].defects[0].imDescription = - "IM-DESCRIPTION-5a"; + deserializedJson.testTypes[0].testResult = 'pass'; + deserializedJson.testTypes[0].reasonForAbandoning = 'NEW-REASON-FOR-ABANDONING'; + deserializedJson.testTypes[0].additionalNotesRecorded = 'NEW-ADDITIONAL-NOTES-RECORDED'; + deserializedJson.testTypes[0].additionalCommentsForAbandon = 'NEW-ADDITIONAL-COMMENTS-FOR-ABANDON'; + deserializedJson.testTypes[0].particulateTrapFitted = 't'; + deserializedJson.testTypes[0].particulateTrapSerialNumber = 'trap'; + deserializedJson.testTypes[0].modificationTypeUsed = 'NEW-MODIFICATION-TYPE-USED'; + deserializedJson.testTypes[0].smokeTestKLimitApplied = 'NEW-SMOKE-TEST-K-LIMIT-APPLIED'; + deserializedJson.testTypes[0].defects[0].imDescription = 'IM-DESCRIPTION-5a'; const serializedJSONb = marshall(deserializedJson); @@ -954,8 +933,8 @@ describe("convertTestResults() integration tests with delete", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -965,7 +944,7 @@ describe("convertTestResults() integration tests with delete", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -975,18 +954,18 @@ describe("convertTestResults() integration tests with delete", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-D" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-D', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -996,44 +975,44 @@ describe("convertTestResults() integration tests with delete", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-D"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("555"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W43434343"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-D'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('555'); + expect(testResultSet.rows[0].certificateNumber).toBe('W43434343'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '111111', ); expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-02") + new Date('2022-01-02'), ); expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-02") + new Date('2022-01-02'), ); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2021-01-02T00:00:00.000Z'); expect( (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" + .lastSeatbeltInstallationCheckDate as Date).toISOString(), + ).toBe('2021-01-02T00:00:00.000Z'); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(0); + expect(testResultSet.rows[0].testResult).toBe('pass'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'NEW-REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'NEW-ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe('t'); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe('trap'); + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'NEW-MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'NEW-SMOKE-TEST-K-LIMIT-APPLIED', ); const { @@ -1051,23 +1030,23 @@ describe("convertTestResults() integration tests with delete", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -1078,90 +1057,90 @@ describe("convertTestResults() integration tests with delete", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(2); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(2); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -1175,56 +1154,56 @@ describe("convertTestResults() integration tests with delete", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual( - "IM-DESCRIPTION-5a" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe( + 'IM-DESCRIPTION-5a', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("A new Test Result with two TestTypes is inserted correctly", async () => { + it('A new Test Result with two TestTypes is inserted correctly', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithTestTypes, }, @@ -1234,7 +1213,7 @@ describe("convertTestResults() integration tests with delete", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -1244,18 +1223,18 @@ describe("convertTestResults() integration tests with delete", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithTestTypes.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-3-D" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-3-D', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN3"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-3"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-3"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN3'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-3'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-3'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -1266,77 +1245,77 @@ describe("convertTestResults() integration tests with delete", () => { \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` FROM \`test_result\` WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` + ORDER BY id ASC`, ); - expect(testResultSet.rows.length).toEqual(2); + expect(testResultSet.rows).toHaveLength(2); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-3-D"); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-3-D'); + expect(testResultSet.rows[0].testCode).toBe('333'); + expect(testResultSet.rows[0].certificateNumber).toBe('CERTIFICATE-NO'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '2ND-CERTIFICATE-NO', ); expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2020-01-01T16:54:44.123Z"); + (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString(), + ).toBe('2020-01-01T16:54:44.123Z'); expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(1); + expect(testResultSet.rows[0].testResult).toBe('fail'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe( + 'PARTICULATE-TRAP-FITTED', ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe( + 'PARTICULATE-TRAP-SERIAL-NUMBER', ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'SMOKE-TEST-K-LIMIT-APPLIED', ); - expect(testResultSet.rows[1].testResultId).toEqual("TEST-RESULT-ID-3-D"); - expect(testResultSet.rows[1].testCode).toEqual("aav"); - expect(testResultSet.rows[1].certificateNumber).toEqual("W123123"); + expect(testResultSet.rows[1].testResultId).toBe('TEST-RESULT-ID-3-D'); + expect(testResultSet.rows[1].testCode).toBe('aav'); + expect(testResultSet.rows[1].certificateNumber).toBe('W123123'); expect(testResultSet.rows[1].secondaryCertificateNumber).toBeNull(); expect(testResultSet.rows[1].testExpiryDate).toEqual( - new Date(2022, 5, 30) + new Date(2022, 5, 30), ); expect(testResultSet.rows[1].testAnniversaryDate).toEqual( - new Date(2022, 5, 30) + new Date(2022, 5, 30), ); expect( - (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:07:22.000Z"); + (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2021-06-21T12:07:22.000Z'); expect( - (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:59:07.000Z"); + (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString(), + ).toBe('2021-06-21T12:59:07.000Z'); expect( - testResultSet.rows[1].lastSeatbeltInstallationCheckDate + testResultSet.rows[1].lastSeatbeltInstallationCheckDate, ).toBeNull(); - expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[1].testResult).toEqual("pass"); + expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toBe(0); + expect(testResultSet.rows[1].testResult).toBe('pass'); expect(testResultSet.rows[1].reasonForAbandoning).toBeNull(); - expect(testResultSet.rows[1].additionalNotesRecorded).toEqual( - "No emission plate default 0.70" + expect(testResultSet.rows[1].additionalNotesRecorded).toBe( + 'No emission plate default 0.70', ); expect(testResultSet.rows[1].particulateTrapFitted).toBeNull(); expect(testResultSet.rows[1].particulateTrapSerialNumber).toBeNull(); @@ -1358,24 +1337,24 @@ describe("convertTestResults() integration tests with delete", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-3"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-3"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-3'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-3'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-3"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-3" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('999999998'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-3'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-3', ); const vehicleClassResultSet = await executeSql( @@ -1386,101 +1365,101 @@ describe("convertTestResults() integration tests with delete", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('v'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'heavy goods vehicle', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('hgv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-3"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('999999998'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-3'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-3"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-3"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-3'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-3'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-3" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-3', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-3" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-3', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); const testDefectLastIndex = testDefectResultSet.rows.length - 1; expect( - testDefectResultSet.rows[testDefectLastIndex].test_result_id + testDefectResultSet.rows[testDefectLastIndex].test_result_id, ).toEqual(id); - expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toEqual( - 3 + expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toBe( + 3, ); - expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toEqual( - 1 + expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toBe( + 1, ); - expect(testDefectResultSet.rows[testDefectLastIndex].notes).toEqual( - "NOTES" + expect(testDefectResultSet.rows[testDefectLastIndex].notes).toBe( + 'NOTES', ); - expect(testDefectResultSet.rows[testDefectLastIndex].prs).toEqual(1); + expect(testDefectResultSet.rows[testDefectLastIndex].prs).toBe(1); expect( - testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued - ).toEqual(1); + testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued, + ).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -1494,55 +1473,55 @@ describe("convertTestResults() integration tests with delete", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(3); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-3"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-3" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(3); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-3'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-3', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-3"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-3" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-3'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-3', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def3"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def3'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-3"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-3'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-3"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-3'); }); - it("A new Test Result with no systemNumber throws an error", async () => { + it('A new Test Result with no systemNumber throws an error', async () => { const event = { Records: [ { - messageId: "faf41ab1-5b42-462c-b242-c4450e15c724", + messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithNoSystemNumber, }, @@ -1552,41 +1531,41 @@ describe("convertTestResults() integration tests with delete", () => { }; const consoleSpy = jest - .spyOn(global.console, "error") + .spyOn(global.console, 'error') .mockImplementation(); const returnValue = await processStreamEvent( event, exampleContext(), () => { - return; - } + + }, ); const expectedValue = { batchItemFailures: [ - { itemIdentifier: "faf41ab1-5b42-462c-b242-c4450e15c724" }, + { itemIdentifier: 'faf41ab1-5b42-462c-b242-c4450e15c724' }, ], }; expect(returnValue).toEqual(expectedValue); - expect(consoleSpy).nthCalledWith( + expect(consoleSpy).toHaveBeenNthCalledWith( 1, "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", [ - "messageId: faf41ab1-5b42-462c-b242-c4450e15c724", + 'messageId: faf41ab1-5b42-462c-b242-c4450e15c724', new Error("result is missing required field 'systemNumber'"), - ] + ], ); }); - it("A new Test Result with no TestTypes is inserted correctly", async () => { + it('A new Test Result with no TestTypes is inserted correctly', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithoutTestTypes, }, @@ -1596,7 +1575,7 @@ describe("convertTestResults() integration tests with delete", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -1606,18 +1585,18 @@ describe("convertTestResults() integration tests with delete", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithoutTestTypes.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-4-D" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-4-D', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN4"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-4"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-4"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN4'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-4'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-4'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -1628,12 +1607,12 @@ describe("convertTestResults() integration tests with delete", () => { \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` FROM \`test_result\` WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` + ORDER BY id ASC`, ); - expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows).toHaveLength(1); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-4-D"); + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-4-D'); expect(testResultSet.rows[0].testCode).toBeNull(); expect(testResultSet.rows[0].certificateNumber).toBeNull(); expect(testResultSet.rows[0].secondaryCertificateNumber).toBeNull(); @@ -1642,7 +1621,7 @@ describe("convertTestResults() integration tests with delete", () => { expect(testResultSet.rows[0].testTypeStartTimestamp).toBeNull(); expect(testResultSet.rows[0].testTypeEndTimestamp).toBeNull(); expect( - testResultSet.rows[0].lastSeatbeltInstallationCheckDate + testResultSet.rows[0].lastSeatbeltInstallationCheckDate, ).toBeNull(); expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBeNull(); expect(testResultSet.rows[0].testResult).toBeNull(); @@ -1668,24 +1647,24 @@ describe("convertTestResults() integration tests with delete", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-4"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-4"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-4'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-4'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-4"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-4" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('999999998'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-4'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-4', ); const vehicleClassResultSet = await executeSql( @@ -1696,112 +1675,112 @@ describe("convertTestResults() integration tests with delete", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('v'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'heavy goods vehicle', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('hgv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-4"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('999999998'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-4'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-4"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-4"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-4'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-4'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-4" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-4', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-4" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-4', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(0); + expect(fuelEmissionResultSet.rows).toHaveLength(0); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(0); + expect(testTypeResultSet.rows).toHaveLength(0); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(0); + expect(testDefectResultSet.rows).toHaveLength(0); }); - it("After all tests the database has all the expected data", async () => { + it('After all tests the database has all the expected data', async () => { const testResultResultSet = await executeSql( `SELECT id FROM test_result - WHERE testResultId like '%-D';` + WHERE testResultId like '%-D';`, ); - expect(testResultResultSet.rows.length).toEqual(4); + expect(testResultResultSet.rows).toHaveLength(4); const customDefectResultSet = await executeSql( `SELECT DISTINCT cd.id FROM custom_defect cd INNER JOIN test_result tr ON cd.test_result_id = tr.id - WHERE testResultId like '%-D';` + WHERE testResultId like '%-D';`, ); - expect(customDefectResultSet.rows.length).toEqual(2); + expect(customDefectResultSet.rows).toHaveLength(2); const testTypeResultSet = await executeSql( `SELECT DISTINCT tt.id FROM test_type tt JOIN test_result tr ON tt.id = tr.test_type_id - WHERE testResultId like '%-D';` + WHERE testResultId like '%-D';`, ); - expect(testTypeResultSet.rows.length).toEqual(2); + expect(testTypeResultSet.rows).toHaveLength(2); const testDefectResultSet = await executeSql( `SELECT DISTINCT td.id FROM test_defect td INNER JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-D';` + WHERE testResultId like '%-D';`, ); - expect(testDefectResultSet.rows.length).toEqual(2); + expect(testDefectResultSet.rows).toHaveLength(2); const defectResultSet = await executeSql( `SELECT DISTINCT d.id FROM defect d JOIN test_defect td ON d.id = td.defect_id JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-D';` + WHERE testResultId like '%-D';`, ); - expect(defectResultSet.rows.length).toEqual(2); + expect(defectResultSet.rows).toHaveLength(2); }); }); diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index 3566c9f..aeeed17 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -1,83 +1,79 @@ -import { StartedTestContainer } from "testcontainers"; +/* eslint-disable global-require */ +/* eslint-disable @typescript-eslint/no-var-requires */ +import { StartedTestContainer } from 'testcontainers'; +import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; import { destroyConnectionPool, executeSql, -} from "../../src/services/connection-pool"; -import { exampleContext, useLocalDb } from "../utils"; -import { getContainerizedDatabase } from "./cvsbnop-container"; -import { processStreamEvent } from "../../src/functions/process-stream-event"; -import { getConnectionPoolOptions } from "../../src/services/connection-pool-options"; -import { marshall, unmarshall } from "@aws-sdk/util-dynamodb"; +} from '../../src/services/connection-pool'; +import { exampleContext, useLocalDb } from '../utils'; +import { getContainerizedDatabase } from './cvsbnop-container'; +import { processStreamEvent } from '../../src/functions/process-stream-event'; +import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; useLocalDb(); - -describe("convertTestResults() integration tests with upsert", () => { +jest.setTimeout(60_000); +describe('convertTestResults() integration tests with upsert', () => { let container: StartedTestContainer; const testResultsJson = JSON.parse( - JSON.stringify(require("../resources/dynamodb-image-test-results.json")) + JSON.stringify(require('../resources/dynamodb-image-test-results.json')), ); const testResultsJsonWithTestTypes = JSON.parse( JSON.stringify( - require("../resources/dynamodb-image-test-results-with-testtypes.json") - ) + require('../resources/dynamodb-image-test-results-with-testtypes.json'), + ), ); const testResultsJsonWithNoSystemNumber = JSON.parse( JSON.stringify( - require("../resources/dynamodb-image-test-results-with-no-systemNumber.json") - ) + require('../resources/dynamodb-image-test-results-with-no-systemNumber.json'), + ), ); const testResultsJsonWithoutTestTypes = JSON.parse( JSON.stringify( - require("../resources/dynamodb-image-test-results-without-testtypes.json") - ) + require('../resources/dynamodb-image-test-results-without-testtypes.json'), + ), ); - testResultsJson.testResultId.S = testResultsJson.testResultId.S + "-U"; - testResultsJson.systemNumber.S = testResultsJson.systemNumber.S + "-U"; - testResultsJsonWithTestTypes.testResultId.S = - testResultsJsonWithTestTypes.testResultId.S + "-U"; - testResultsJsonWithTestTypes.systemNumber.S = - testResultsJsonWithTestTypes.systemNumber.S + "-U"; - testResultsJsonWithNoSystemNumber.testResultId.S = - testResultsJsonWithNoSystemNumber.testResultId.S + "-U"; - testResultsJsonWithoutTestTypes.testResultId.S = - testResultsJsonWithoutTestTypes.testResultId.S + "-U"; - testResultsJsonWithoutTestTypes.systemNumber.S = - testResultsJsonWithoutTestTypes.systemNumber.S + "-U"; + testResultsJson.testResultId.S = `${testResultsJson.testResultId.S}-U`; + testResultsJson.systemNumber.S = `${testResultsJson.systemNumber.S}-U`; + testResultsJsonWithTestTypes.testResultId.S = `${testResultsJsonWithTestTypes.testResultId.S}-U`; + testResultsJsonWithTestTypes.systemNumber.S = `${testResultsJsonWithTestTypes.systemNumber.S}-U`; + testResultsJsonWithNoSystemNumber.testResultId.S = `${testResultsJsonWithNoSystemNumber.testResultId.S}-U`; + testResultsJsonWithoutTestTypes.testResultId.S = `${testResultsJsonWithoutTestTypes.testResultId.S}-U`; + testResultsJsonWithoutTestTypes.systemNumber.S = `${testResultsJsonWithoutTestTypes.systemNumber.S}-U`; beforeAll(async () => { - process.env.DISABLE_DELETE_ON_UPDATE = "true"; - jest.setTimeout(60_000); + process.env.DISABLE_DELETE_ON_UPDATE = 'true'; jest.restoreAllMocks(); // see README for why this environment variable exists - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { container = await getContainerizedDatabase(); } else { (getConnectionPoolOptions as jest.Mock) = jest.fn().mockResolvedValue({ - host: "127.0.0.1", - port: "3306", - user: "root", - password: "12345", - database: "CVSBNOP", + host: '127.0.0.1', + port: '3306', + user: 'root', + password: '12345', + database: 'CVSBNOP', }); } }); afterAll(async () => { await destroyConnectionPool(); - if (process.env.USE_CONTAINERIZED_DATABASE === "1") { + if (process.env.USE_CONTAINERIZED_DATABASE === '1') { await container.stop(); } }); - it("should correctly convert a DynamoDB event into Aurora rows", async () => { + it('should correctly convert a DynamoDB event into Aurora rows', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -88,7 +84,7 @@ describe("convertTestResults() integration tests with upsert", () => { // array of arrays: event contains array of records, each with array of test result entities await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -98,18 +94,18 @@ describe("convertTestResults() integration tests with upsert", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-U', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -119,50 +115,50 @@ describe("convertTestResults() integration tests with upsert", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-U'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('333'); + expect(testResultSet.rows[0].certificateNumber).toBe('CERTIFICATE-NO'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '2ND-CERTIFICATE-NO', ); expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testExpiryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.023Z'); expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(1); + expect(testResultSet.rows[0].testResult).toBe('fail'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe( + 'PARTICULATE-TRAP-FITTED', ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe( + 'PARTICULATE-TRAP-SERIAL-NUMBER', ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'SMOKE-TEST-K-LIMIT-APPLIED', ); - expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows).toHaveLength(1); const { test_station_id, @@ -179,23 +175,23 @@ describe("convertTestResults() integration tests with upsert", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -206,90 +202,90 @@ describe("convertTestResults() integration tests with upsert", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(1); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -303,54 +299,54 @@ describe("convertTestResults() integration tests with upsert", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-5'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("should correctly convert a DynamoDB event into Aurora rows when processed a second time", async () => { + it('should correctly convert a DynamoDB event into Aurora rows when processed a second time', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -360,13 +356,13 @@ describe("convertTestResults() integration tests with upsert", () => { }; const consoleSpy = jest - .spyOn(global.console, "error") + .spyOn(global.console, 'error') .mockImplementation(); await processStreamEvent(event, exampleContext(), () => { - return; + }); - expect(consoleSpy).toBeCalledTimes(0); + expect(consoleSpy).toHaveBeenCalledTimes(0); const vehicleResultSet = await executeSql( `SELECT \`system_number\`, \`vin\`, \`vrm_trm\`, \`trailer_id\`, \`createdAt\`, \`id\` @@ -375,18 +371,18 @@ describe("convertTestResults() integration tests with upsert", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-U', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -396,50 +392,50 @@ describe("convertTestResults() integration tests with upsert", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-U'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('333'); + expect(testResultSet.rows[0].certificateNumber).toBe('CERTIFICATE-NO'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '2ND-CERTIFICATE-NO', ); expect( - (testResultSet.rows[0].testExpiryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testExpiryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testAnniversaryDate as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testAnniversaryDate as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.023Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.023Z'); expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(1); + expect(testResultSet.rows[0].testResult).toBe('fail'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe( + 'PARTICULATE-TRAP-FITTED', ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe( + 'PARTICULATE-TRAP-SERIAL-NUMBER', ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'SMOKE-TEST-K-LIMIT-APPLIED', ); - expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows).toHaveLength(1); const { test_station_id, @@ -456,23 +452,23 @@ describe("convertTestResults() integration tests with upsert", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -483,90 +479,90 @@ describe("convertTestResults() integration tests with upsert", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(1); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -580,73 +576,65 @@ describe("convertTestResults() integration tests with upsert", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-5'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("should correctly update when non-unique attributes changed", async () => { + it('should correctly update when non-unique attributes changed', async () => { const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testCode = "444"; - deserializedJson.testTypes[0].certificateNumber = "W323232"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-01T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-01T00:00:00.000Z"; + deserializedJson.testTypes[0].testCode = '444'; + deserializedJson.testTypes[0].certificateNumber = 'W323232'; + deserializedJson.testTypes[0].secondaryCertificateNumber = '111111'; + deserializedJson.testTypes[0].testExpiryDate = '2022-01-01T00:00:00.000Z'; + deserializedJson.testTypes[0].testAnniversaryDate = '2022-01-01T00:00:00.000Z'; + deserializedJson.testTypes[0].testTypeStartTimestamp = '2021-01-01T00:00:00.000Z'; deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-01"; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = '2021-01-01'; deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; + deserializedJson.testTypes[0].testResult = 'pass'; + deserializedJson.testTypes[0].reasonForAbandoning = 'NEW-REASON-FOR-ABANDONING'; + deserializedJson.testTypes[0].additionalNotesRecorded = 'NEW-ADDITIONAL-NOTES-RECORDED'; + deserializedJson.testTypes[0].additionalCommentsForAbandon = 'NEW-ADDITIONAL-COMMENTS-FOR-ABANDON'; + deserializedJson.testTypes[0].particulateTrapFitted = 't'; + deserializedJson.testTypes[0].particulateTrapSerialNumber = 'trap'; + deserializedJson.testTypes[0].modificationTypeUsed = 'NEW-MODIFICATION-TYPE-USED'; + deserializedJson.testTypes[0].smokeTestKLimitApplied = 'NEW-SMOKE-TEST-K-LIMIT-APPLIED'; const serializedJSONb = marshall(deserializedJson); @@ -655,8 +643,8 @@ describe("convertTestResults() integration tests with upsert", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -666,7 +654,7 @@ describe("convertTestResults() integration tests with upsert", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -676,18 +664,18 @@ describe("convertTestResults() integration tests with upsert", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-U', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -697,44 +685,44 @@ describe("convertTestResults() integration tests with upsert", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(1); - expect(testResultSet.rows[0].testCode).toEqual("444"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W323232"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-U'); + expect(testResultSet.rows).toHaveLength(1); + expect(testResultSet.rows[0].testCode).toBe('444'); + expect(testResultSet.rows[0].certificateNumber).toBe('W323232'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '111111', ); expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-01") + new Date('2022-01-01'), ); expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-01") + new Date('2022-01-01'), ); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2021-01-01T00:00:00.000Z'); expect( (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-01T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" + .lastSeatbeltInstallationCheckDate as Date).toISOString(), + ).toBe('2021-01-01T00:00:00.000Z'); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(0); + expect(testResultSet.rows[0].testResult).toBe('pass'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'NEW-REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'NEW-ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe('t'); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe('trap'); + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'NEW-MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'NEW-SMOKE-TEST-K-LIMIT-APPLIED', ); const { @@ -752,23 +740,23 @@ describe("convertTestResults() integration tests with upsert", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -779,90 +767,90 @@ describe("convertTestResults() integration tests with upsert", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(1); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(1); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -876,76 +864,67 @@ describe("convertTestResults() integration tests with upsert", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-5"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-5'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("should correctly insert when unique attributes changed", async () => { + it('should correctly insert when unique attributes changed', async () => { const deserializedJson = unmarshall(testResultsJson); - deserializedJson.testTypes[0].testNumber = "NewTestNumber"; - deserializedJson.testTypes[0].testCode = "555"; - deserializedJson.testTypes[0].certificateNumber = "W43434343"; - deserializedJson.testTypes[0].secondaryCertificateNumber = "111111"; - deserializedJson.testTypes[0].testExpiryDate = "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testAnniversaryDate = - "2022-01-02T00:00:00.000Z"; - deserializedJson.testTypes[0].testTypeStartTimestamp = - "2021-01-02T00:00:00.000Z"; + deserializedJson.testTypes[0].testNumber = 'NewTestNumber'; + deserializedJson.testTypes[0].testCode = '555'; + deserializedJson.testTypes[0].certificateNumber = 'W43434343'; + deserializedJson.testTypes[0].secondaryCertificateNumber = '111111'; + deserializedJson.testTypes[0].testExpiryDate = '2022-01-02T00:00:00.000Z'; + deserializedJson.testTypes[0].testAnniversaryDate = '2022-01-02T00:00:00.000Z'; + deserializedJson.testTypes[0].testTypeStartTimestamp = '2021-01-02T00:00:00.000Z'; deserializedJson.testTypes[0].numberOfSeatbeltsFitted = 5; - deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = - "2021-01-02"; + deserializedJson.testTypes[0].lastSeatbeltInstallationCheckDate = '2021-01-02'; deserializedJson.testTypes[0].seatbeltInstallationCheckDate = false; - deserializedJson.testTypes[0].testResult = "pass"; - deserializedJson.testTypes[0].reasonForAbandoning = - "NEW-REASON-FOR-ABANDONING"; - deserializedJson.testTypes[0].additionalNotesRecorded = - "NEW-ADDITIONAL-NOTES-RECORDED"; - deserializedJson.testTypes[0].additionalCommentsForAbandon = - "NEW-ADDITIONAL-COMMENTS-FOR-ABANDON"; - deserializedJson.testTypes[0].particulateTrapFitted = "t"; - deserializedJson.testTypes[0].particulateTrapSerialNumber = "trap"; - deserializedJson.testTypes[0].modificationTypeUsed = - "NEW-MODIFICATION-TYPE-USED"; - deserializedJson.testTypes[0].smokeTestKLimitApplied = - "NEW-SMOKE-TEST-K-LIMIT-APPLIED"; - deserializedJson.testTypes[0].defects[0].imDescription = - "IM-DESCRIPTION-5a"; + deserializedJson.testTypes[0].testResult = 'pass'; + deserializedJson.testTypes[0].reasonForAbandoning = 'NEW-REASON-FOR-ABANDONING'; + deserializedJson.testTypes[0].additionalNotesRecorded = 'NEW-ADDITIONAL-NOTES-RECORDED'; + deserializedJson.testTypes[0].additionalCommentsForAbandon = 'NEW-ADDITIONAL-COMMENTS-FOR-ABANDON'; + deserializedJson.testTypes[0].particulateTrapFitted = 't'; + deserializedJson.testTypes[0].particulateTrapSerialNumber = 'trap'; + deserializedJson.testTypes[0].modificationTypeUsed = 'NEW-MODIFICATION-TYPE-USED'; + deserializedJson.testTypes[0].smokeTestKLimitApplied = 'NEW-SMOKE-TEST-K-LIMIT-APPLIED'; + deserializedJson.testTypes[0].defects[0].imDescription = 'IM-DESCRIPTION-5a'; const serializedJSONb = marshall(deserializedJson); @@ -954,8 +933,8 @@ describe("convertTestResults() integration tests with upsert", () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -965,7 +944,7 @@ describe("convertTestResults() integration tests with upsert", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -975,18 +954,18 @@ describe("convertTestResults() integration tests with upsert", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJson.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-5-U" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-5-U', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN5"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-5"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-5"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN5'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-5'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-5'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -996,44 +975,44 @@ describe("convertTestResults() integration tests with upsert", () => { \`seatbeltInstallationCheckDate\`, \`testResult\`, \`reasonForAbandoning\`, \`additionalNotesRecorded\`, \`additionalCommentsForAbandon\`, \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\` FROM \`test_result\` - WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}` + WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id}`, ); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-5-U"); - expect(testResultSet.rows.length).toEqual(2); - expect(testResultSet.rows[0].testCode).toEqual("555"); - expect(testResultSet.rows[0].certificateNumber).toEqual("W43434343"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "111111" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-5-U'); + expect(testResultSet.rows).toHaveLength(2); + expect(testResultSet.rows[0].testCode).toBe('555'); + expect(testResultSet.rows[0].certificateNumber).toBe('W43434343'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '111111', ); expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2022-01-02") + new Date('2022-01-02'), ); expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2022-01-02") + new Date('2022-01-02'), ); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2021-01-02T00:00:00.000Z'); expect( (testResultSet.rows[0] - .lastSeatbeltInstallationCheckDate as Date).toISOString() - ).toEqual("2021-01-02T00:00:00.000Z"); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[0].testResult).toEqual("pass"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "NEW-REASON-FOR-ABANDONING" + .lastSeatbeltInstallationCheckDate as Date).toISOString(), + ).toBe('2021-01-02T00:00:00.000Z'); + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(0); + expect(testResultSet.rows[0].testResult).toBe('pass'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'NEW-REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "NEW-ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'NEW-ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual("t"); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual("trap"); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "NEW-MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe('t'); + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe('trap'); + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'NEW-MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "NEW-SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'NEW-SMOKE-TEST-K-LIMIT-APPLIED', ); const { @@ -1051,23 +1030,23 @@ describe("convertTestResults() integration tests with upsert", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-5"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-5"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-5'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-5'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("TESTER-STAFF-ID-5"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-5"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-5" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('TESTER-STAFF-ID-5'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-5'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-5', ); const vehicleClassResultSet = await executeSql( @@ -1078,90 +1057,90 @@ describe("convertTestResults() integration tests with upsert", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("2"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "motorbikes over 200cc or with a sidecar" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('2'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'motorbikes over 200cc or with a sidecar', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("psv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('psv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("PREPARER-ID-5"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-5"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('PREPARER-ID-5'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-5'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-5"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-5"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-5'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-5'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-5" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-5', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-5" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-5', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(1); + expect(testDefectResultSet.rows).toHaveLength(1); expect(testDefectResultSet.rows[0].test_result_id).toEqual(id); - expect(testDefectResultSet.rows[0].defect_id).toEqual(2); - expect(testDefectResultSet.rows[0].location_id).toEqual(1); - expect(testDefectResultSet.rows[0].notes).toEqual("NOTES"); - expect(testDefectResultSet.rows[0].prs).toEqual(1); - expect(testDefectResultSet.rows[0].prohibitionIssued).toEqual(1); + expect(testDefectResultSet.rows[0].defect_id).toBe(2); + expect(testDefectResultSet.rows[0].location_id).toBe(1); + expect(testDefectResultSet.rows[0].notes).toBe('NOTES'); + expect(testDefectResultSet.rows[0].prs).toBe(1); + expect(testDefectResultSet.rows[0].prohibitionIssued).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -1175,56 +1154,56 @@ describe("convertTestResults() integration tests with upsert", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[0].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(5); - expect(defectResultSet.rows[0].imDescription).toEqual( - "IM-DESCRIPTION-5a" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(5); + expect(defectResultSet.rows[0].imDescription).toBe( + 'IM-DESCRIPTION-5a', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-5" + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-5', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-5"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-5" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-5'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-5', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def5"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-5"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-5'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-5"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-5'); }); - it("A new Test Result with two TestTypes is inserted correctly", async () => { + it('A new Test Result with two TestTypes is inserted correctly', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithTestTypes, }, @@ -1234,7 +1213,7 @@ describe("convertTestResults() integration tests with upsert", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -1244,18 +1223,18 @@ describe("convertTestResults() integration tests with upsert", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithTestTypes.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-3-U" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-3-U', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN3"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-3"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-3"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN3'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-3'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-3'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -1266,77 +1245,77 @@ describe("convertTestResults() integration tests with upsert", () => { \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` FROM \`test_result\` WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` + ORDER BY id ASC`, ); - expect(testResultSet.rows.length).toEqual(2); + expect(testResultSet.rows).toHaveLength(2); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-3-U"); - expect(testResultSet.rows[0].testCode).toEqual("333"); - expect(testResultSet.rows[0].certificateNumber).toEqual("CERTIFICATE-NO"); - expect(testResultSet.rows[0].secondaryCertificateNumber).toEqual( - "2ND-CERTIFICATE-NO" + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-3-U'); + expect(testResultSet.rows[0].testCode).toBe('333'); + expect(testResultSet.rows[0].certificateNumber).toBe('CERTIFICATE-NO'); + expect(testResultSet.rows[0].secondaryCertificateNumber).toBe( + '2ND-CERTIFICATE-NO', ); expect(testResultSet.rows[0].testExpiryDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); expect(testResultSet.rows[0].testAnniversaryDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); expect( - (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2020-01-01T00:00:00.000Z"); + (testResultSet.rows[0].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2020-01-01T00:00:00.000Z'); expect( - (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2020-01-01T16:54:44.123Z"); + (testResultSet.rows[0].testTypeEndTimestamp as Date).toISOString(), + ).toBe('2020-01-01T16:54:44.123Z'); expect(testResultSet.rows[0].lastSeatbeltInstallationCheckDate).toEqual( - new Date("2020-01-01") + new Date('2020-01-01'), ); - expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toEqual(1); - expect(testResultSet.rows[0].testResult).toEqual("fail"); - expect(testResultSet.rows[0].reasonForAbandoning).toEqual( - "REASON-FOR-ABANDONING" + expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBe(1); + expect(testResultSet.rows[0].testResult).toBe('fail'); + expect(testResultSet.rows[0].reasonForAbandoning).toBe( + 'REASON-FOR-ABANDONING', ); - expect(testResultSet.rows[0].additionalNotesRecorded).toEqual( - "ADDITIONAL-NOTES-RECORDED" + expect(testResultSet.rows[0].additionalNotesRecorded).toBe( + 'ADDITIONAL-NOTES-RECORDED', ); - expect(testResultSet.rows[0].particulateTrapFitted).toEqual( - "PARTICULATE-TRAP-FITTED" + expect(testResultSet.rows[0].particulateTrapFitted).toBe( + 'PARTICULATE-TRAP-FITTED', ); - expect(testResultSet.rows[0].particulateTrapSerialNumber).toEqual( - "PARTICULATE-TRAP-SERIAL-NUMBER" + expect(testResultSet.rows[0].particulateTrapSerialNumber).toBe( + 'PARTICULATE-TRAP-SERIAL-NUMBER', ); - expect(testResultSet.rows[0].modificationTypeUsed).toEqual( - "MODIFICATION-TYPE-USED" + expect(testResultSet.rows[0].modificationTypeUsed).toBe( + 'MODIFICATION-TYPE-USED', ); - expect(testResultSet.rows[0].smokeTestKLimitApplied).toEqual( - "SMOKE-TEST-K-LIMIT-APPLIED" + expect(testResultSet.rows[0].smokeTestKLimitApplied).toBe( + 'SMOKE-TEST-K-LIMIT-APPLIED', ); - expect(testResultSet.rows[1].testResultId).toEqual("TEST-RESULT-ID-3-U"); - expect(testResultSet.rows[1].testCode).toEqual("aav"); - expect(testResultSet.rows[1].certificateNumber).toEqual("W123123"); + expect(testResultSet.rows[1].testResultId).toBe('TEST-RESULT-ID-3-U'); + expect(testResultSet.rows[1].testCode).toBe('aav'); + expect(testResultSet.rows[1].certificateNumber).toBe('W123123'); expect(testResultSet.rows[1].secondaryCertificateNumber).toBeNull(); expect(testResultSet.rows[1].testExpiryDate).toEqual( - new Date(2022, 5, 30) + new Date(2022, 5, 30), ); expect(testResultSet.rows[1].testAnniversaryDate).toEqual( - new Date(2022, 5, 30) + new Date(2022, 5, 30), ); expect( - (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:07:22.000Z"); + (testResultSet.rows[1].testTypeStartTimestamp as Date).toISOString(), + ).toBe('2021-06-21T12:07:22.000Z'); expect( - (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString() - ).toEqual("2021-06-21T12:59:07.000Z"); + (testResultSet.rows[1].testTypeEndTimestamp as Date).toISOString(), + ).toBe('2021-06-21T12:59:07.000Z'); expect( - testResultSet.rows[1].lastSeatbeltInstallationCheckDate + testResultSet.rows[1].lastSeatbeltInstallationCheckDate, ).toBeNull(); - expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toEqual(0); - expect(testResultSet.rows[1].testResult).toEqual("pass"); + expect(testResultSet.rows[1].seatbeltInstallationCheckDate).toBe(0); + expect(testResultSet.rows[1].testResult).toBe('pass'); expect(testResultSet.rows[1].reasonForAbandoning).toBeNull(); - expect(testResultSet.rows[1].additionalNotesRecorded).toEqual( - "No emission plate default 0.70" + expect(testResultSet.rows[1].additionalNotesRecorded).toBe( + 'No emission plate default 0.70', ); expect(testResultSet.rows[1].particulateTrapFitted).toBeNull(); expect(testResultSet.rows[1].particulateTrapSerialNumber).toBeNull(); @@ -1358,24 +1337,24 @@ describe("convertTestResults() integration tests with upsert", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-3"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-3"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-3'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-3'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-3"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-3" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('999999998'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-3'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-3', ); const vehicleClassResultSet = await executeSql( @@ -1386,101 +1365,101 @@ describe("convertTestResults() integration tests with upsert", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('v'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'heavy goods vehicle', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('hgv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-3"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('999999998'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-3'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-3"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-3"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-3'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-3'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-3" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-3', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-3" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-3', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(1); - expect(fuelEmissionResultSet.rows[0].modTypeCode).toEqual("p"); - expect(fuelEmissionResultSet.rows[0].description).toEqual( - "particulate trap" + expect(fuelEmissionResultSet.rows).toHaveLength(1); + expect(fuelEmissionResultSet.rows[0].modTypeCode).toBe('p'); + expect(fuelEmissionResultSet.rows[0].description).toBe( + 'particulate trap', ); - expect(fuelEmissionResultSet.rows[0].emissionStandard).toEqual( - "0.10 g/kWh Euro 3 PM" + expect(fuelEmissionResultSet.rows[0].emissionStandard).toBe( + '0.10 g/kWh Euro 3 PM', ); - expect(fuelEmissionResultSet.rows[0].fuelType).toEqual("diesel"); + expect(fuelEmissionResultSet.rows[0].fuelType).toBe('diesel'); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(1); - expect(testTypeResultSet.rows[0].testTypeClassification).toEqual( - "2323232323232323232323" + expect(testTypeResultSet.rows).toHaveLength(1); + expect(testTypeResultSet.rows[0].testTypeClassification).toBe( + '2323232323232323232323', ); - expect(testTypeResultSet.rows[0].testTypeName).toEqual("TEST-TYPE-NAME"); + expect(testTypeResultSet.rows[0].testTypeName).toBe('TEST-TYPE-NAME'); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); const testDefectLastIndex = testDefectResultSet.rows.length - 1; expect( - testDefectResultSet.rows[testDefectLastIndex].test_result_id + testDefectResultSet.rows[testDefectLastIndex].test_result_id, ).toEqual(id); - expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toEqual( - 3 + expect(testDefectResultSet.rows[testDefectLastIndex].defect_id).toBe( + 3, ); - expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toEqual( - 1 + expect(testDefectResultSet.rows[testDefectLastIndex].location_id).toBe( + 1, ); - expect(testDefectResultSet.rows[testDefectLastIndex].notes).toEqual( - "NOTES" + expect(testDefectResultSet.rows[testDefectLastIndex].notes).toBe( + 'NOTES', ); - expect(testDefectResultSet.rows[testDefectLastIndex].prs).toEqual(1); + expect(testDefectResultSet.rows[testDefectLastIndex].prs).toBe(1); expect( - testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued - ).toEqual(1); + testDefectResultSet.rows[testDefectLastIndex].prohibitionIssued, + ).toBe(1); const defectResultSet = await executeSql( `SELECT \`imNumber\`, @@ -1494,55 +1473,55 @@ describe("convertTestResults() integration tests with upsert", () => { \`deficiencyText\`, \`stdForProhibition\` FROM \`defect\` - WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}` + WHERE \`defect\`.\`id\` = ${testDefectResultSet.rows[testDefectLastIndex].defect_id}`, ); - expect(defectResultSet.rows.length).toEqual(1); - expect(defectResultSet.rows[0].imNumber).toEqual(3); - expect(defectResultSet.rows[0].imDescription).toEqual("IM-DESCRIPTION-3"); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); - expect(defectResultSet.rows[0].itemDescription).toEqual( - "ITEM-DESCRIPTION-3" + expect(defectResultSet.rows).toHaveLength(1); + expect(defectResultSet.rows[0].imNumber).toBe(3); + expect(defectResultSet.rows[0].imDescription).toBe('IM-DESCRIPTION-3'); + expect(defectResultSet.rows[0].itemNumber).toBe(1); + expect(defectResultSet.rows[0].itemDescription).toBe( + 'ITEM-DESCRIPTION-3', ); - expect(defectResultSet.rows[0].deficiencyRef).toEqual("DEFICIENCY-REF-3"); - expect(defectResultSet.rows[0].deficiencyId).toEqual("a"); - expect(defectResultSet.rows[0].deficiencySubId).toEqual("mdclxvi"); - expect(defectResultSet.rows[0].deficiencyCategory).toEqual("advisory"); - expect(defectResultSet.rows[0].deficiencyText).toEqual( - "DEFICIENCY-TEXT-3" + expect(defectResultSet.rows[0].deficiencyRef).toBe('DEFICIENCY-REF-3'); + expect(defectResultSet.rows[0].deficiencyId).toBe('a'); + expect(defectResultSet.rows[0].deficiencySubId).toBe('mdclxvi'); + expect(defectResultSet.rows[0].deficiencyCategory).toBe('advisory'); + expect(defectResultSet.rows[0].deficiencyText).toBe( + 'DEFICIENCY-TEXT-3', ); - expect(defectResultSet.rows[0].itemNumber).toEqual(1); + expect(defectResultSet.rows[0].itemNumber).toBe(1); const customDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`referenceNumber\`, \`defectName\`, \`defectNotes\` FROM \`custom_defect\` - WHERE \`custom_defect\`.\`test_result_id\` = ${id}` + WHERE \`custom_defect\`.\`test_result_id\` = ${id}`, ); const customDefectLastIndex = customDefectResultSet.rows.length - 1; expect( - customDefectResultSet.rows[customDefectLastIndex].test_result_id + customDefectResultSet.rows[customDefectLastIndex].test_result_id, ).toEqual(id); expect( - customDefectResultSet.rows[customDefectLastIndex].referenceNumber - ).toEqual("def3"); + customDefectResultSet.rows[customDefectLastIndex].referenceNumber, + ).toBe('def3'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectName - ).toEqual("DEFECT-NAME-3"); + customDefectResultSet.rows[customDefectLastIndex].defectName, + ).toBe('DEFECT-NAME-3'); expect( - customDefectResultSet.rows[customDefectLastIndex].defectNotes - ).toEqual("DEFECT-NOTES-3"); + customDefectResultSet.rows[customDefectLastIndex].defectNotes, + ).toBe('DEFECT-NOTES-3'); }); - it("A new Test Result with no systemNumber throws an error", async () => { + it('A new Test Result with no systemNumber throws an error', async () => { const event = { Records: [ { - messageId: "faf41ab1-5b42-462c-b242-c4450e15c724", + messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithNoSystemNumber, }, @@ -1552,41 +1531,41 @@ describe("convertTestResults() integration tests with upsert", () => { }; const consoleSpy = jest - .spyOn(global.console, "error") + .spyOn(global.console, 'error') .mockImplementation(); const returnValue = await processStreamEvent( event, exampleContext(), () => { - return; - } + + }, ); const expectedValue = { batchItemFailures: [ - { itemIdentifier: "faf41ab1-5b42-462c-b242-c4450e15c724" }, + { itemIdentifier: 'faf41ab1-5b42-462c-b242-c4450e15c724' }, ], }; expect(returnValue).toEqual(expectedValue); - expect(consoleSpy).nthCalledWith( + expect(consoleSpy).toHaveBeenNthCalledWith( 1, "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", [ - "messageId: faf41ab1-5b42-462c-b242-c4450e15c724", + 'messageId: faf41ab1-5b42-462c-b242-c4450e15c724', new Error("result is missing required field 'systemNumber'"), - ] + ], ); }); - it("A new Test Result with no TestTypes is inserted correctly", async () => { + it('A new Test Result with no TestTypes is inserted correctly', async () => { const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithoutTestTypes, }, @@ -1596,7 +1575,7 @@ describe("convertTestResults() integration tests with upsert", () => { }; await processStreamEvent(event, exampleContext(), () => { - return; + }); const vehicleResultSet = await executeSql( @@ -1606,18 +1585,18 @@ describe("convertTestResults() integration tests with upsert", () => { SELECT \`id\` FROM \`vehicle\` WHERE \`vehicle\`.\`system_number\` = "${testResultsJsonWithoutTestTypes.systemNumber.S}" - )` + )`, ); - expect(vehicleResultSet.rows.length).toEqual(1); - expect(vehicleResultSet.rows[0].system_number).toEqual( - "SYSTEM-NUMBER-4-U" + expect(vehicleResultSet.rows).toHaveLength(1); + expect(vehicleResultSet.rows[0].system_number).toBe( + 'SYSTEM-NUMBER-4-U', ); - expect(vehicleResultSet.rows[0].vin).toEqual("VIN4"); - expect(vehicleResultSet.rows[0].vrm_trm).toEqual("VRM-4"); - expect(vehicleResultSet.rows[0].trailer_id).toEqual("TRL-4"); + expect(vehicleResultSet.rows[0].vin).toBe('VIN4'); + expect(vehicleResultSet.rows[0].vrm_trm).toBe('VRM-4'); + expect(vehicleResultSet.rows[0].trailer_id).toBe('TRL-4'); expect( - (vehicleResultSet.rows[0].createdAt as Date).toUTCString() + (vehicleResultSet.rows[0].createdAt as Date).toUTCString(), ).not.toBeNull(); const testResultSet = await executeSql( @@ -1628,12 +1607,12 @@ describe("convertTestResults() integration tests with upsert", () => { \`particulateTrapFitted\`, \`particulateTrapSerialNumber\`, \`modificationTypeUsed\`, \`smokeTestKLimitApplied\`, \`testTypeEndTimestamp\` FROM \`test_result\` WHERE \`test_result\`.\`vehicle_id\` = ${vehicleResultSet.rows[0].id} - ORDER BY id ASC` + ORDER BY id ASC`, ); - expect(testResultSet.rows.length).toEqual(1); + expect(testResultSet.rows).toHaveLength(1); - expect(testResultSet.rows[0].testResultId).toEqual("TEST-RESULT-ID-4-U"); + expect(testResultSet.rows[0].testResultId).toBe('TEST-RESULT-ID-4-U'); expect(testResultSet.rows[0].testCode).toBeNull(); expect(testResultSet.rows[0].certificateNumber).toBeNull(); expect(testResultSet.rows[0].secondaryCertificateNumber).toBeNull(); @@ -1642,7 +1621,7 @@ describe("convertTestResults() integration tests with upsert", () => { expect(testResultSet.rows[0].testTypeStartTimestamp).toBeNull(); expect(testResultSet.rows[0].testTypeEndTimestamp).toBeNull(); expect( - testResultSet.rows[0].lastSeatbeltInstallationCheckDate + testResultSet.rows[0].lastSeatbeltInstallationCheckDate, ).toBeNull(); expect(testResultSet.rows[0].seatbeltInstallationCheckDate).toBeNull(); expect(testResultSet.rows[0].testResult).toBeNull(); @@ -1668,24 +1647,24 @@ describe("convertTestResults() integration tests with upsert", () => { const testStationResultSet = await executeSql( `SELECT \`pNumber\`, \`name\`, \`type\` FROM \`test_station\` - WHERE \`test_station\`.\`id\` = ${test_station_id}` + WHERE \`test_station\`.\`id\` = ${test_station_id}`, ); - expect(testStationResultSet.rows.length).toEqual(1); - expect(testStationResultSet.rows[0].pNumber).toEqual("P-NUMBER-4"); - expect(testStationResultSet.rows[0].name).toEqual("TEST-STATION-NAME-4"); - expect(testStationResultSet.rows[0].type).toEqual("atf"); + expect(testStationResultSet.rows).toHaveLength(1); + expect(testStationResultSet.rows[0].pNumber).toBe('P-NUMBER-4'); + expect(testStationResultSet.rows[0].name).toBe('TEST-STATION-NAME-4'); + expect(testStationResultSet.rows[0].type).toBe('atf'); const testerResultSet = await executeSql( `SELECT \`staffId\`, \`name\`, \`email_address\` FROM \`tester\` - WHERE \`tester\`.\`id\` = ${tester_id}` + WHERE \`tester\`.\`id\` = ${tester_id}`, ); - expect(testerResultSet.rows.length).toEqual(1); - expect(testerResultSet.rows[0].staffId).toEqual("999999998"); - expect(testerResultSet.rows[0].name).toEqual("TESTER-NAME-4"); - expect(testerResultSet.rows[0].email_address).toEqual( - "TESTER-EMAIL-ADDRESS-4" + expect(testerResultSet.rows).toHaveLength(1); + expect(testerResultSet.rows[0].staffId).toBe('999999998'); + expect(testerResultSet.rows[0].name).toBe('TESTER-NAME-4'); + expect(testerResultSet.rows[0].email_address).toBe( + 'TESTER-EMAIL-ADDRESS-4', ); const vehicleClassResultSet = await executeSql( @@ -1696,112 +1675,112 @@ describe("convertTestResults() integration tests with upsert", () => { \`vehicleConfiguration\`, \`euVehicleCategory\` FROM \`vehicle_class\` - WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}` + WHERE \`vehicle_class\`.\`id\` = ${vehicle_class_id}`, ); - expect(vehicleClassResultSet.rows.length).toEqual(1); - expect(vehicleClassResultSet.rows[0].code).toEqual("v"); - expect(vehicleClassResultSet.rows[0].description).toEqual( - "heavy goods vehicle" + expect(vehicleClassResultSet.rows).toHaveLength(1); + expect(vehicleClassResultSet.rows[0].code).toBe('v'); + expect(vehicleClassResultSet.rows[0].description).toBe( + 'heavy goods vehicle', ); - expect(vehicleClassResultSet.rows[0].vehicleType).toEqual("hgv"); - expect(vehicleClassResultSet.rows[0].vehicleSize).toEqual("large"); - expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toEqual( - "rigid" + expect(vehicleClassResultSet.rows[0].vehicleType).toBe('hgv'); + expect(vehicleClassResultSet.rows[0].vehicleSize).toBe('large'); + expect(vehicleClassResultSet.rows[0].vehicleConfiguration).toBe( + 'rigid', ); - expect(vehicleClassResultSet.rows[0].euVehicleCategory).toEqual("m1"); + expect(vehicleClassResultSet.rows[0].euVehicleCategory).toBe('m1'); const preparerResultSet = await executeSql( `SELECT \`preparerId\`, \`name\` FROM \`preparer\` - WHERE \`preparer\`.\`id\` = ${preparer_id}` + WHERE \`preparer\`.\`id\` = ${preparer_id}`, ); - expect(preparerResultSet.rows.length).toEqual(1); - expect(preparerResultSet.rows[0].preparerId).toEqual("999999998"); - expect(preparerResultSet.rows[0].name).toEqual("PREPARER-NAME-4"); + expect(preparerResultSet.rows).toHaveLength(1); + expect(preparerResultSet.rows[0].preparerId).toBe('999999998'); + expect(preparerResultSet.rows[0].name).toBe('PREPARER-NAME-4'); const createdByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${createdBy_Id}` + WHERE \`identity\`.\`id\` = ${createdBy_Id}`, ); - expect(createdByResultSet.rows.length).toEqual(1); - expect(createdByResultSet.rows[0].identityId).toEqual("CREATED-BY-ID-4"); - expect(createdByResultSet.rows[0].name).toEqual("CREATED-BY-NAME-4"); + expect(createdByResultSet.rows).toHaveLength(1); + expect(createdByResultSet.rows[0].identityId).toBe('CREATED-BY-ID-4'); + expect(createdByResultSet.rows[0].name).toBe('CREATED-BY-NAME-4'); const lastUpdatedByResultSet = await executeSql( `SELECT \`identityId\`, \`name\` FROM \`identity\` - WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}` + WHERE \`identity\`.\`id\` = ${lastUpdatedBy_Id}`, ); - expect(lastUpdatedByResultSet.rows.length).toEqual(1); - expect(lastUpdatedByResultSet.rows[0].identityId).toEqual( - "LAST-UPDATED-BY-ID-4" + expect(lastUpdatedByResultSet.rows).toHaveLength(1); + expect(lastUpdatedByResultSet.rows[0].identityId).toBe( + 'LAST-UPDATED-BY-ID-4', ); - expect(lastUpdatedByResultSet.rows[0].name).toEqual( - "LAST-UPDATED-BY-NAME-4" + expect(lastUpdatedByResultSet.rows[0].name).toBe( + 'LAST-UPDATED-BY-NAME-4', ); const fuelEmissionResultSet = await executeSql( `SELECT \`modTypeCode\`, \`description\`, \`emissionStandard\`, \`fuelType\` FROM \`fuel_emission\` - WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}` + WHERE \`fuel_emission\`.\`id\` = ${fuel_emission_id}`, ); - expect(fuelEmissionResultSet.rows.length).toEqual(0); + expect(fuelEmissionResultSet.rows).toHaveLength(0); const testTypeResultSet = await executeSql( `SELECT \`testTypeClassification\`, \`testTypeName\` FROM \`test_type\` - WHERE \`test_type\`.\`id\` = ${test_type_id}` + WHERE \`test_type\`.\`id\` = ${test_type_id}`, ); - expect(testTypeResultSet.rows.length).toEqual(0); + expect(testTypeResultSet.rows).toHaveLength(0); const testDefectResultSet = await executeSql( `SELECT \`test_result_id\`, \`defect_id\`, \`location_id\`, \`notes\`, \`prs\`, \`prohibitionIssued\` FROM \`test_defect\` - WHERE \`test_defect\`.\`test_result_id\` = ${id}` + WHERE \`test_defect\`.\`test_result_id\` = ${id}`, ); - expect(testDefectResultSet.rows.length).toEqual(0); + expect(testDefectResultSet.rows).toHaveLength(0); }); - it("After all tests the database has all the expected data", async () => { + it('After all tests the database has all the expected data', async () => { const testResultResultSet = await executeSql( `SELECT id FROM test_result - WHERE testResultId like '%-U';` + WHERE testResultId like '%-U';`, ); - expect(testResultResultSet.rows.length).toEqual(5); + expect(testResultResultSet.rows).toHaveLength(5); const customDefectResultSet = await executeSql( `SELECT DISTINCT cd.id FROM custom_defect cd INNER JOIN test_result tr ON cd.test_result_id = tr.id - WHERE testResultId like '%-U';` + WHERE testResultId like '%-U';`, ); - expect(customDefectResultSet.rows.length).toEqual(5); + expect(customDefectResultSet.rows).toHaveLength(5); const testTypeResultSet = await executeSql( `SELECT DISTINCT tt.id FROM test_type tt JOIN test_result tr ON tt.id = tr.test_type_id - WHERE testResultId like '%-U';` + WHERE testResultId like '%-U';`, ); - expect(testTypeResultSet.rows.length).toEqual(2); + expect(testTypeResultSet.rows).toHaveLength(2); const testDefectResultSet = await executeSql( `SELECT DISTINCT td.id FROM test_defect td INNER JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-U';` + WHERE testResultId like '%-U';`, ); - expect(testDefectResultSet.rows.length).toEqual(3); + expect(testDefectResultSet.rows).toHaveLength(3); const defectResultSet = await executeSql( `SELECT DISTINCT d.id FROM defect d JOIN test_defect td ON d.id = td.defect_id JOIN test_result tr ON td.test_result_id = tr.id - WHERE testResultId like '%-U';` + WHERE testResultId like '%-U';`, ); - expect(defectResultSet.rows.length).toEqual(3); + expect(defectResultSet.rows).toHaveLength(3); }); }); diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 6dc423f..776ddfe 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -1,52 +1,52 @@ +import { mocked } from 'jest-mock'; import { getTableNameFromArn, processStreamEvent, -} from "../../../src/functions/process-stream-event"; -import { convert } from "../../../src/services/entity-conversion"; -import { exampleContext } from "../../utils"; -import { mocked } from 'ts-jest/utils' +} from '../../../src/functions/process-stream-event'; +import { convert } from '../../../src/services/entity-conversion'; +import { exampleContext } from '../../utils'; -jest.mock("../../../src/services/entity-conversion", () => ({ +jest.mock('../../../src/services/entity-conversion', () => ({ convert: jest.fn(), })); -describe("processStreamEvent()", () => { +describe('processStreamEvent()', () => { beforeEach(() => { jest.resetAllMocks(); mocked(convert).mockResolvedValueOnce({}); }); - it("should allow valid events to reach the entity conversion procedure", async () => { + it('should allow valid events to reach the entity conversion procedure', async () => { await expect( processStreamEvent( { Records: [ { body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, ], }, exampleContext(), () => { - return; - } - ) - ).resolves.not.toThrowError(); + + }, + ), + ).resolves.not.toThrow(); expect(convert).toHaveBeenCalledTimes(1); }); - it("should fail on null event", async () => { + it('should fail on null event', async () => { await expect( processStreamEvent(null, exampleContext(), () => { - return; - }) + + }), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); @@ -54,26 +54,26 @@ describe("processStreamEvent()", () => { it("should fail on event missing 'Records'", async () => { await expect( processStreamEvent({}, exampleContext(), () => { - return; - }) + + }), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); it("should fail on event where 'Records' is not an array", async () => { await expect( - processStreamEvent({ Records: "" }, exampleContext(), () => { - return; - }) + processStreamEvent({ Records: '' }, exampleContext(), () => { + + }), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); - it("should fail on null record", async () => { + it('should fail on null record', async () => { await expect( processStreamEvent({ Records: [null] }, exampleContext(), () => { - return; - }) + + }), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); @@ -81,8 +81,8 @@ describe("processStreamEvent()", () => { it("should fail on record missing 'eventName'", async () => { await expect( processStreamEvent({ Records: [{}] }, exampleContext(), () => { - return; - }) + + }), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); @@ -93,15 +93,15 @@ describe("processStreamEvent()", () => { { Records: [ { - eventName: "INSERT", + eventName: 'INSERT', }, ], }, exampleContext(), () => { - return; - } - ) + + }, + ), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); @@ -112,16 +112,16 @@ describe("processStreamEvent()", () => { { Records: [ { - eventName: "INSERT", + eventName: 'INSERT', dynamodb: {}, }, ], }, exampleContext(), () => { - return; - } - ) + + }, + ), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); @@ -132,20 +132,20 @@ describe("processStreamEvent()", () => { { Records: [ { - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { OldImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/t/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/t/stream/2020-01-01T00:00:00.000', }, ], }, exampleContext(), () => { - return; - } - ) + + }, + ), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); @@ -156,25 +156,25 @@ describe("processStreamEvent()", () => { { Records: [ { - eventName: "REMOVE", + eventName: 'REMOVE', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/t/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/t/stream/2020-01-01T00:00:00.000', }, ], }, exampleContext(), () => { - return; - } - ) + + }, + ), ).resolves.toEqual({ batchItemFailures: [] }); expect(convert).toHaveBeenCalledTimes(0); }); - it("should return events that failed in entity conversion to the queue, but not halt processing of other records", async () => { + it('should return events that failed in entity conversion to the queue, but not halt processing of other records', async () => { (convert as jest.Mock) = jest .fn() .mockResolvedValueOnce({}) @@ -185,54 +185,53 @@ describe("processStreamEvent()", () => { { Records: [ { - messageId: "SUCCESS", + messageId: 'SUCCESS', body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, { - messageId: "FAILURE", + messageId: 'FAILURE', body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, { - messageId: "SUCCESS", + messageId: 'SUCCESS', body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, ], }, exampleContext(), () => { - return; - } + + }, ); - expect(res).toEqual({ batchItemFailures: [{ itemIdentifier: "FAILURE" }] }); + expect(res).toEqual({ batchItemFailures: [{ itemIdentifier: 'FAILURE' }] }); expect(convert).toHaveBeenCalledTimes(3); }); }); -describe("getTableNameFromArn", () => { - it("should return table name when ARN is provided", () => { - const arn = - "arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2019-06-10T19:26:16.525"; - expect(getTableNameFromArn(arn)).toEqual("my-table"); +describe('getTableNameFromArn', () => { + it('should return table name when ARN is provided', () => { + const arn = 'arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2019-06-10T19:26:16.525'; + expect(getTableNameFromArn(arn)).toBe('my-table'); }); }); diff --git a/tests/unit/models/auth-into-service.unitTest.ts b/tests/unit/models/auth-into-service.unitTest.ts index c29f60b..6f4b27d 100644 --- a/tests/unit/models/auth-into-service.unitTest.ts +++ b/tests/unit/models/auth-into-service.unitTest.ts @@ -1,75 +1,75 @@ -import { DynamoDbImage } from "../../../src/services/dynamodb-images"; -import { castToImageShape } from "../../utils"; -import techRecordDocumentJson from "../../resources/dynamodb-image-technical-record.json"; +import { DynamoDbImage } from '../../../src/services/dynamodb-images'; +import { castToImageShape } from '../../utils'; +import techRecordDocumentJson from '../../resources/dynamodb-image-technical-record.json'; import { parseTechRecordDocument, TechRecordDocument, -} from "../../../src/models/tech-record-document"; +} from '../../../src/models/tech-record-document'; -describe("parseAuthIntoService()", () => { - it("should successfully parse a fully populated authIntoService image into an authIntoService object", () => { +describe('parseAuthIntoService()', () => { + it('should successfully parse a fully populated authIntoService image into an authIntoService object', () => { techRecordDocumentJson.techRecord.L[0].M.authIntoService = { M: { cocIssueDate: { - S: "2020-01-01", + S: '2020-01-01', }, dateAuthorised: { - S: "2020-02-02", + S: '2020-02-02', }, datePending: { - S: "2020-03-03", + S: '2020-03-03', }, dateReceived: { - S: "2020-04-04", + S: '2020-04-04', }, dateRejected: { - S: "2020-05-05", + S: '2020-05-05', }, }, }; const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); expect( - techRecordDocument.techRecord![0].authIntoService?.cocIssueDate - ).toEqual("2020-01-01"); + techRecordDocument.techRecord![0].authIntoService?.cocIssueDate, + ).toBe('2020-01-01'); expect( - techRecordDocument.techRecord![0].authIntoService?.dateAuthorised - ).toEqual("2020-02-02"); + techRecordDocument.techRecord![0].authIntoService?.dateAuthorised, + ).toBe('2020-02-02'); expect( - techRecordDocument.techRecord![0].authIntoService?.datePending - ).toEqual("2020-03-03"); + techRecordDocument.techRecord![0].authIntoService?.datePending, + ).toBe('2020-03-03'); expect( - techRecordDocument.techRecord![0].authIntoService?.dateReceived - ).toEqual("2020-04-04"); + techRecordDocument.techRecord![0].authIntoService?.dateReceived, + ).toBe('2020-04-04'); expect( - techRecordDocument.techRecord![0].authIntoService?.dateRejected - ).toEqual("2020-05-05"); + techRecordDocument.techRecord![0].authIntoService?.dateRejected, + ).toBe('2020-05-05'); }); - it("should successfully parse an authIntoService image into an authIntoService object with some null properties", () => { + it('should successfully parse an authIntoService image into an authIntoService object with some null properties', () => { techRecordDocumentJson.techRecord.L[0].M.authIntoService = { M: { cocIssueDate: { - // @ts-ignore + // @ts-expect-error NULL: true, }, dateAuthorised: { - S: "2020-02-02", + S: '2020-02-02', }, datePending: { - // @ts-ignore + // @ts-expect-error NULL: true, }, dateReceived: { - S: "2020-04-04", + S: '2020-04-04', }, dateRejected: { - // @ts-ignore + // @ts-expect-error NULL: true, }, }, @@ -77,76 +77,76 @@ describe("parseAuthIntoService()", () => { const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); expect( - techRecordDocument.techRecord![0].authIntoService?.cocIssueDate + techRecordDocument.techRecord![0].authIntoService?.cocIssueDate, ).toBeUndefined(); expect( - techRecordDocument.techRecord![0].authIntoService?.dateAuthorised - ).toEqual("2020-02-02"); + techRecordDocument.techRecord![0].authIntoService?.dateAuthorised, + ).toBe('2020-02-02'); expect( - techRecordDocument.techRecord![0].authIntoService?.datePending + techRecordDocument.techRecord![0].authIntoService?.datePending, ).toBeUndefined(); expect( - techRecordDocument.techRecord![0].authIntoService?.dateReceived - ).toEqual("2020-04-04"); + techRecordDocument.techRecord![0].authIntoService?.dateReceived, + ).toBe('2020-04-04'); expect( - techRecordDocument.techRecord![0].authIntoService?.dateRejected + techRecordDocument.techRecord![0].authIntoService?.dateRejected, ).toBeUndefined(); }); - it("should return undefined for an empty authIntoService", () => { + it('should return undefined for an empty authIntoService', () => { techRecordDocumentJson.techRecord.L[0].M.authIntoService = { - // @ts-ignore + // @ts-expect-error M: {}, }; const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); expect(techRecordDocument.techRecord![0].authIntoService).toBeUndefined(); }); - it("should return undefined when no authIntoService present", () => { - // @ts-ignore + it('should return undefined when no authIntoService present', () => { + // @ts-expect-error delete techRecordDocumentJson.techRecord.L[0].M.authIntoService; const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); expect(techRecordDocument.techRecord![0].authIntoService).toBeUndefined(); }); - it("should return undefined for an authIntoService with all null properties", () => { + it('should return undefined for an authIntoService with all null properties', () => { techRecordDocumentJson.techRecord.L[0].M.authIntoService = { M: { cocIssueDate: { - // @ts-ignore + // @ts-expect-error NULL: true, }, dateAuthorised: { - // @ts-ignore + // @ts-expect-error NULL: true, }, datePending: { - // @ts-ignore + // @ts-expect-error NULL: true, }, dateReceived: { - // @ts-ignore + // @ts-expect-error NULL: true, }, dateRejected: { - // @ts-ignore + // @ts-expect-error NULL: true, }, }, @@ -154,33 +154,32 @@ describe("parseAuthIntoService()", () => { const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); expect(techRecordDocument.techRecord![0].authIntoService).toBeUndefined(); }); - it("should return undefined for an authIntoService with rogue properties", () => { + it('should return undefined for an authIntoService with rogue properties', () => { techRecordDocumentJson.techRecord.L[0].M.authIntoService = { M: { - //@ts-ignore + // @ts-expect-error iDoNotBelong: { - S: "2020-01-01", + S: '2020-01-01', }, - //@ts-ignore meNeither: { - S: "2020-02-02", + S: '2020-02-02', }, }, }; const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); expect(techRecordDocument.techRecord![0].authIntoService).toBeUndefined(); }); }); diff --git a/tests/unit/models/tech-record-document.unitTest.ts b/tests/unit/models/tech-record-document.unitTest.ts index c6db6fd..c162b26 100644 --- a/tests/unit/models/tech-record-document.unitTest.ts +++ b/tests/unit/models/tech-record-document.unitTest.ts @@ -1,103 +1,103 @@ import { parseTechRecordDocument, TechRecordDocument, -} from "../../../src/models/tech-record-document"; -import { DynamoDbImage } from "../../../src/services/dynamodb-images"; -import { default as techRecordDocumentJson } from "../../resources/dynamodb-image-technical-record.json"; -import { castToImageShape } from "../../utils"; +} from '../../../src/models/tech-record-document'; +import { DynamoDbImage } from '../../../src/services/dynamodb-images'; +import techRecordDocumentJson from '../../resources/dynamodb-image-technical-record.json'; +import { castToImageShape } from '../../utils'; -describe("parseTechRecordDocument()", () => { - it("should successfully parse a DynamoDB image into a TechRecordDocument", () => { +describe('parseTechRecordDocument()', () => { + it('should successfully parse a DynamoDB image into a TechRecordDocument', () => { const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); // check only first property of each root, for now - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); - expect(techRecordDocument.techRecord![0].recordCompleteness).toEqual( - "88888888" + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); + expect(techRecordDocument.techRecord![0].recordCompleteness).toBe( + '88888888', ); - expect(techRecordDocument.techRecord![0].createdAt).toEqual( - "2020-01-01 00:00:00.055" + expect(techRecordDocument.techRecord![0].createdAt).toBe( + '2020-01-01 00:00:00.055', ); expect( - techRecordDocument.techRecord![0].authIntoService?.cocIssueDate - ).toEqual("2020-01-01"); - expect(techRecordDocument.techRecord![0].lettersOfAuth?.letterType).toEqual( - "Trailer authorization" + techRecordDocument.techRecord![0].authIntoService?.cocIssueDate, + ).toBe('2020-01-01'); + expect(techRecordDocument.techRecord![0].lettersOfAuth?.letterType).toBe( + 'Trailer authorization', ); - expect(techRecordDocument.techRecord![0].applicantDetails?.name).toEqual( - "NAME" + expect(techRecordDocument.techRecord![0].applicantDetails?.name).toBe( + 'NAME', ); - expect(techRecordDocument.techRecord![0].purchaserDetails?.name).toEqual( - "NAME" + expect(techRecordDocument.techRecord![0].purchaserDetails?.name).toBe( + 'NAME', ); - expect(techRecordDocument.techRecord![0].manufacturerDetails?.name).toEqual( - "NAME" + expect(techRecordDocument.techRecord![0].manufacturerDetails?.name).toBe( + 'NAME', ); expect( - techRecordDocument.techRecord![0].microfilm?.microfilmDocumentType - ).toEqual("PSV Miscellaneous"); + techRecordDocument.techRecord![0].microfilm?.microfilmDocumentType, + ).toBe('PSV Miscellaneous'); expect( - techRecordDocument.techRecord![0].plates![0].plateSerialNumber - ).toEqual("1"); - expect(techRecordDocument.techRecord![0].bodyType?.code).toEqual("a"); + techRecordDocument.techRecord![0].plates![0].plateSerialNumber, + ).toBe('1'); + expect(techRecordDocument.techRecord![0].bodyType?.code).toBe('a'); expect( - techRecordDocument.techRecord![0].dimensions?.axleSpacing![0].axles - ).toEqual("1-2"); - expect(techRecordDocument.techRecord![0].vehicleClass?.code).toEqual("2"); - expect(techRecordDocument.techRecord![0].brakes?.brakeCodeOriginal).toEqual( - "333" + techRecordDocument.techRecord![0].dimensions?.axleSpacing![0].axles, + ).toBe('1-2'); + expect(techRecordDocument.techRecord![0].vehicleClass?.code).toBe('2'); + expect(techRecordDocument.techRecord![0].brakes?.brakeCodeOriginal).toBe( + '333', ); - expect(techRecordDocument.techRecord![0].axles![0].axleNumber).toEqual(1); + expect(techRecordDocument.techRecord![0].axles![0].axleNumber).toBe(1); }); - it("should successfully parse a DynamoDB image, with no authIntoService, into a TechRecordDocument", () => { - // @ts-ignore + it('should successfully parse a DynamoDB image, with no authIntoService, into a TechRecordDocument', () => { + // @ts-expect-error delete techRecordDocumentJson.techRecord.L[0].M.authIntoService; const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( - image + image, ); // check only first property of each root, for now - expect(techRecordDocument.systemNumber).toEqual("SYSTEM-NUMBER-1"); - expect(techRecordDocument.techRecord![0].recordCompleteness).toEqual( - "88888888" + expect(techRecordDocument.systemNumber).toBe('SYSTEM-NUMBER-1'); + expect(techRecordDocument.techRecord![0].recordCompleteness).toBe( + '88888888', ); - expect(techRecordDocument.techRecord![0].createdAt).toEqual( - "2020-01-01 00:00:00.055" + expect(techRecordDocument.techRecord![0].createdAt).toBe( + '2020-01-01 00:00:00.055', ); - expect(techRecordDocument.techRecord![0].authIntoService).toBeUndefined; - expect(techRecordDocument.techRecord![0].lettersOfAuth?.letterType).toEqual( - "Trailer authorization" + expect(techRecordDocument.techRecord![0].authIntoService).toBeUndefined(); + expect(techRecordDocument.techRecord![0].lettersOfAuth?.letterType).toBe( + 'Trailer authorization', ); - expect(techRecordDocument.techRecord![0].applicantDetails?.name).toEqual( - "NAME" + expect(techRecordDocument.techRecord![0].applicantDetails?.name).toBe( + 'NAME', ); - expect(techRecordDocument.techRecord![0].purchaserDetails?.name).toEqual( - "NAME" + expect(techRecordDocument.techRecord![0].purchaserDetails?.name).toBe( + 'NAME', ); - expect(techRecordDocument.techRecord![0].manufacturerDetails?.name).toEqual( - "NAME" + expect(techRecordDocument.techRecord![0].manufacturerDetails?.name).toBe( + 'NAME', ); expect( - techRecordDocument.techRecord![0].microfilm?.microfilmDocumentType - ).toEqual("PSV Miscellaneous"); + techRecordDocument.techRecord![0].microfilm?.microfilmDocumentType, + ).toBe('PSV Miscellaneous'); expect( - techRecordDocument.techRecord![0].plates![0].plateSerialNumber - ).toEqual("1"); - expect(techRecordDocument.techRecord![0].bodyType?.code).toEqual("a"); + techRecordDocument.techRecord![0].plates![0].plateSerialNumber, + ).toBe('1'); + expect(techRecordDocument.techRecord![0].bodyType?.code).toBe('a'); expect( - techRecordDocument.techRecord![0].dimensions?.axleSpacing![0].axles - ).toEqual("1-2"); - expect(techRecordDocument.techRecord![0].vehicleClass?.code).toEqual("2"); - expect(techRecordDocument.techRecord![0].brakes?.brakeCodeOriginal).toEqual( - "333" + techRecordDocument.techRecord![0].dimensions?.axleSpacing![0].axles, + ).toBe('1-2'); + expect(techRecordDocument.techRecord![0].vehicleClass?.code).toBe('2'); + expect(techRecordDocument.techRecord![0].brakes?.brakeCodeOriginal).toBe( + '333', ); - expect(techRecordDocument.techRecord![0].axles![0].axleNumber).toEqual(1); + expect(techRecordDocument.techRecord![0].axles![0].axleNumber).toBe(1); }); }); diff --git a/tests/unit/models/test-result.unitTest.ts b/tests/unit/models/test-result.unitTest.ts index 9fa43b4..a768e7b 100644 --- a/tests/unit/models/test-result.unitTest.ts +++ b/tests/unit/models/test-result.unitTest.ts @@ -2,32 +2,32 @@ import { parseTestResults, TestResult, TestResults, -} from "../../../src/models/test-results"; -import { DynamoDbImage } from "../../../src/services/dynamodb-images"; -import { default as testResultsJson } from "../../resources/dynamodb-image-test-results.json"; -import { castToImageShape } from "../../utils"; +} from '../../../src/models/test-results'; +import { DynamoDbImage } from '../../../src/services/dynamodb-images'; +import testResultsJson from '../../resources/dynamodb-image-test-results.json'; +import { castToImageShape } from '../../utils'; -describe("parseTestResults()", () => { - it("should successfully parse a DynamoDB image into a TestResults list", () => { +describe('parseTestResults()', () => { + it('should successfully parse a DynamoDB image into a TestResults list', () => { const image = DynamoDbImage.parse(castToImageShape(testResultsJson)); const testResults: TestResults = parseTestResults(image); const testResult: TestResult = testResults[0]; // check only first property of each root, for now - expect(testResult.systemNumber).toEqual("SYSTEM-NUMBER-5"); - expect(testResult.vehicleClass?.code).toEqual("2"); - expect(testResult.testTypes![0].createdAt).toEqual( - "2020-01-01 00:00:00.123" + expect(testResult.systemNumber).toBe('SYSTEM-NUMBER-5'); + expect(testResult.vehicleClass?.code).toBe('2'); + expect(testResult.testTypes![0].createdAt).toBe( + '2020-01-01 00:00:00.123', ); - expect(testResult.testTypes![0].modType?.code).toEqual("p"); - expect(testResult.testTypes![0].defects![0].imNumber).toEqual(5); + expect(testResult.testTypes![0].modType?.code).toBe('p'); + expect(testResult.testTypes![0].defects![0].imNumber).toBe(5); expect( testResult.testTypes![0].defects![0].additionalInformation?.location - ?.vertical - ).toEqual("upper"); - expect(testResult.testTypes![0].customDefects![0].referenceNumber).toEqual( - "def5" + ?.vertical, + ).toBe('upper'); + expect(testResult.testTypes![0].customDefects![0].referenceNumber).toBe( + 'def5', ); }); }); diff --git a/tests/unit/services/connection-pool.unitTest.ts b/tests/unit/services/connection-pool.unitTest.ts index 3e24c06..f5765d1 100644 --- a/tests/unit/services/connection-pool.unitTest.ts +++ b/tests/unit/services/connection-pool.unitTest.ts @@ -1,24 +1,22 @@ +import { createPool } from 'mysql2/promise'; import { destroyConnectionPool, executeSql, getConnectionPool, -} from "../../../src/services/connection-pool"; -import { createPool } from "mysql2/promise"; -import { useLocalDb } from "../../utils"; - -jest.mock("mysql2/promise", () => { - return { - createPool: jest.fn().mockReturnValue({ - end: jest.fn(), - execute: jest.fn(), - }), - }; -}); +} from '../../../src/services/connection-pool'; +import { useLocalDb } from '../../utils'; + +jest.mock('mysql2/promise', () => ({ + createPool: jest.fn().mockReturnValue({ + end: jest.fn(), + execute: jest.fn(), + }), +})); useLocalDb(); -describe("getConnectionPool()", () => { - it("should create connection pool exactly once", async () => { +describe('getConnectionPool()', () => { + it('should create connection pool exactly once', async () => { await getConnectionPool(); await getConnectionPool(); await getConnectionPool(); @@ -27,23 +25,23 @@ describe("getConnectionPool()", () => { }); }); -describe("destroyConnectionPool()", () => { +describe('destroyConnectionPool()', () => { beforeEach(async () => { await destroyConnectionPool(); // need to access nested function directly via mocked module parent function // using getConnectionPool().end will implicitly add 1 to mock calls counter - // @ts-ignore + // @ts-expect-error createPool().end.mockReset(); }); - it("should do nothing if connection pool is undefined", async () => { + it('should do nothing if connection pool is undefined', async () => { await destroyConnectionPool(); expect((await getConnectionPool()).end).not.toHaveBeenCalled(); }); - it("should destroy connection pool if present", async () => { + it('should destroy connection pool if present', async () => { await getConnectionPool(); await destroyConnectionPool(); @@ -51,38 +49,38 @@ describe("destroyConnectionPool()", () => { }); }); -describe("executeSql()", () => { - beforeEach(async () => { +describe('executeSql()', () => { + beforeEach(() => { // need to access nested function directly via mocked module parent function // using getConnectionPool().execute will implicitly add 1 to mock calls counter - // @ts-ignore + // @ts-expect-error createPool().execute.mockReset(); // Jest hoisting forces us to mockImplementation anywhere except in the module-level mock - // @ts-ignore + // @ts-expect-error createPool().execute.mockImplementation(() => [[], []]); }); - it("should accept single SQL statement", async () => { - await executeSql("SELECT 1"); + it('should accept single SQL statement', async () => { + await executeSql('SELECT 1'); expect((await getConnectionPool()).execute).toHaveBeenCalledWith( - "SELECT 1", - undefined + 'SELECT 1', + undefined, ); }); - it("should accept SQL statement + template variables", async () => { - const sql = "SELECT 1 FROM t WHERE a = ? AND b = ?"; - const templateVariables = ["a", "b"]; + it('should accept SQL statement + template variables', async () => { + const sql = 'SELECT 1 FROM t WHERE a = ? AND b = ?'; + const templateVariables = ['a', 'b']; await executeSql(sql, templateVariables); expect((await getConnectionPool()).execute).toHaveBeenCalledWith( sql, - templateVariables + templateVariables, ); }); - it("should use explicit connection if provided", async () => { + it('should use explicit connection if provided', async () => { const mockPoolExecute = jest.fn().mockReturnValue([[], []]); (createPool as jest.Mock) = jest .fn() @@ -93,18 +91,18 @@ describe("executeSql()", () => { execute: mockConnectionExecute, }; - const sql = "SELECT 1 FROM t WHERE a = ? AND b = ?"; - const templateVariables = ["a", "b"]; + const sql = 'SELECT 1 FROM t WHERE a = ? AND b = ?'; + const templateVariables = ['a', 'b']; - // @ts-ignore + // @ts-expect-error await executeSql(sql, templateVariables, mockConnection); expect(mockPoolExecute).not.toHaveBeenCalled(); expect(mockConnectionExecute).toHaveBeenCalledWith(sql, templateVariables); }); - it("should return object, not tuple", async () => { - const response = await executeSql("SELECT 1"); + it('should return object, not tuple', async () => { + const response = await executeSql('SELECT 1'); expect(response).toEqual({ rows: [], diff --git a/tests/unit/services/dynamodb-images.unitTest.ts b/tests/unit/services/dynamodb-images.unitTest.ts index e0329a4..f92d999 100644 --- a/tests/unit/services/dynamodb-images.unitTest.ts +++ b/tests/unit/services/dynamodb-images.unitTest.ts @@ -1,148 +1,148 @@ -import { DynamoDbImage } from "../../../src/services/dynamodb-images"; -import { default as primitivesJson } from "../../resources/dynamodb-image-primitives.json"; -import { default as stringDateTime } from "../../resources/dynamodb-image-string-timestamps.json"; -import { default as setsJson } from "../../resources/dynamodb-image-sets.json"; -import { default as listJson } from "../../resources/dynamodb-image-list.json"; -import { default as mapJson } from "../../resources/dynamodb-image-map.json"; -import { default as nestedJson } from "../../resources/dynamodb-image-nested.json"; -import { castToImageShape } from "../../utils"; - -describe("parse()", () => { - it("should parse a Dynamo image containing all primitive types", () => { +import { DynamoDbImage } from '../../../src/services/dynamodb-images'; +import primitivesJson from '../../resources/dynamodb-image-primitives.json'; +import stringDateTime from '../../resources/dynamodb-image-string-timestamps.json'; +import setsJson from '../../resources/dynamodb-image-sets.json'; +import listJson from '../../resources/dynamodb-image-list.json'; +import mapJson from '../../resources/dynamodb-image-map.json'; +import nestedJson from '../../resources/dynamodb-image-nested.json'; +import { castToImageShape } from '../../utils'; + +describe('parse()', () => { + it('should parse a Dynamo image containing all primitive types', () => { const image = DynamoDbImage.parse(castToImageShape(primitivesJson)); - expect(image.getNull("NullField")).toEqual(null); - expect(image.getBoolean("BooleanField")).toEqual(true); - expect(image.getNumber("NumberField")).toEqual(123.45); - expect(image.getString("StringField")).toEqual("Hello"); - expect(image.getBinary("BinaryField")!.toString("utf-8")).toEqual( - "this text is base64-encoded" + expect(image.getNull('NullField')).toBeNull(); + expect(image.getBoolean('BooleanField')).toBe(true); + expect(image.getNumber('NumberField')).toBe(123.45); + expect(image.getString('StringField')).toBe('Hello'); + expect(image.getBinary('BinaryField')!.toString('utf-8')).toBe( + 'this text is base64-encoded', ); }); - it("should parse a Dynamo image containing all primitive types", () => { + it('should parse a Dynamo image containing all primitive types 2', () => { const image = DynamoDbImage.parse(castToImageShape(stringDateTime)); - expect(image.getDate("StringISOTimestampField")).toEqual( - "2023-02-16 12:07:22.056" + expect(image.getDate('StringISOTimestampField')).toBe( + '2023-02-16 12:07:22.056', ); - expect(image.getDate("StringDateField")).toEqual("2023-02-16 00:00:00.000"); + expect(image.getDate('StringDateField')).toBe('2023-02-16 00:00:00.000'); }); - it("should parse a Dynamo image containing all set types", () => { + it('should parse a Dynamo image containing all set types', () => { const image = DynamoDbImage.parse(castToImageShape(setsJson)); - expect(image.getStrings("StringsField")).toEqual([ - "Giraffe", - "Hippo", - "Zebra", + expect(image.getStrings('StringsField')).toEqual([ + 'Giraffe', + 'Hippo', + 'Zebra', ]); - expect(image.getNumbers("NumbersField")).toEqual([42.2, -19, 7.5, 3.14]); + expect(image.getNumbers('NumbersField')).toEqual([42.2, -19, 7.5, 3.14]); expect( - image.getBinaries("BinariesField").map((b: Buffer) => b.toString("utf-8")) - ).toEqual(["Sunny", "Rainy", "Snowy"]); + image.getBinaries('BinariesField').map((b: Buffer) => b.toString('utf-8')), + ).toEqual(['Sunny', 'Rainy', 'Snowy']); }); - it("should parse a Dynamo image containing a list type", () => { + it('should parse a Dynamo image containing a list type', () => { const image = DynamoDbImage.parse(castToImageShape(listJson)); - expect(image.getList("ListField")!.getString("0")).toEqual("Cookies"); - expect(image.getList("ListField")!.getString("1")).toEqual("Coffee"); - expect(image.getList("ListField")!.getNumber("2")).toEqual(3.14159); + expect(image.getList('ListField')!.getString('0')).toBe('Cookies'); + expect(image.getList('ListField')!.getString('1')).toBe('Coffee'); + expect(image.getList('ListField')!.getNumber('2')).toBe(3.14159); }); - it("should parse a Dynamo image containing a map type", () => { + it('should parse a Dynamo image containing a map type', () => { const image = DynamoDbImage.parse(castToImageShape(mapJson)); const expectedMap: DynamoDbImage = DynamoDbImage.parse({ - Name: { S: "Joe" }, - Age: { N: "35" }, + Name: { S: 'Joe' }, + Age: { N: '35' }, }); - expect(image.getMap("MapField")).toEqual(expectedMap); + expect(image.getMap('MapField')).toEqual(expectedMap); }); - it("should access nested values correctly", () => { + it('should access nested values correctly', () => { const image = DynamoDbImage.parse(castToImageShape(nestedJson)); const nestedListField: DynamoDbImage = image - .getMap("ParentMapField")! - .getList("ListField")!; - expect(nestedListField.getString("0")).toEqual("Hello"); - expect(nestedListField.getMap("1")!.getString("StringField")).toEqual( - "Hello" + .getMap('ParentMapField')! + .getList('ListField')!; + expect(nestedListField.getString('0')).toBe('Hello'); + expect(nestedListField.getMap('1')!.getString('StringField')).toBe( + 'Hello', ); const nestedMapField: DynamoDbImage = image - .getList("ParentListField")! - .getMap("0")!; - expect(nestedMapField.getString("StringField")).toEqual("Hello"); - expect(nestedMapField.getList("ListField")!.getString("0")).toEqual( - "Hello" + .getList('ParentListField')! + .getMap('0')!; + expect(nestedMapField.getString('StringField')).toBe('Hello'); + expect(nestedMapField.getList('ListField')!.getString('0')).toBe( + 'Hello', ); }); - it("should fail on request for incorrect type", () => { + it('should fail on request for incorrect type', () => { const image = DynamoDbImage.parse(castToImageShape(primitivesJson)); - expect(() => image.getString("NumberField")).toThrowError("not of type"); + expect(() => image.getString('NumberField')).toThrow('not of type'); }); - it("should handle a number when presented as a null", () => { - let image = DynamoDbImage.parse( - castToImageShape({ NumberField: { NULL: true } }) + it('should handle a number when presented as a null', () => { + const image = DynamoDbImage.parse( + castToImageShape({ NumberField: { NULL: true } }), ); - expect(image.getNumber("NumberField")).toEqual(undefined); + expect(image.getNumber('NumberField')).toBeUndefined(); }); - it("should handle a number when presented as a string", () => { + it('should handle a number when presented as a string', () => { let image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "2.2" } }) + castToImageShape({ NumberField: { S: '2.2' } }), ); - expect(image.getNumber("NumberField")).toEqual(2.2); + expect(image.getNumber('NumberField')).toBe(2.2); - image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: "22" } })); - expect(image.getNumber("NumberField")).toEqual(22); + image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: '22' } })); + expect(image.getNumber('NumberField')).toBe(22); image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "-2.2" } }) + castToImageShape({ NumberField: { S: '-2.2' } }), ); - expect(image.getNumber("NumberField")).toEqual(-2.2); + expect(image.getNumber('NumberField')).toBe(-2.2); - image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: ".2" } })); - expect(image.getNumber("NumberField")).toEqual(0.2); + image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: '.2' } })); + expect(image.getNumber('NumberField')).toBe(0.2); }); - it("should reject a number when presented as non numerical strings", () => { + it('should reject a number when presented as non numerical strings', () => { let image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: " " } }) + castToImageShape({ NumberField: { S: ' ' } }), ); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); - image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: "" } })); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: '' } })); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); - image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: "." } })); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + image = DynamoDbImage.parse(castToImageShape({ NumberField: { S: '.' } })); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "1.." } }) + castToImageShape({ NumberField: { S: '1..' } }), ); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "..1" } }) + castToImageShape({ NumberField: { S: '..1' } }), ); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "1aa" } }) + castToImageShape({ NumberField: { S: '1aa' } }), ); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "aa1" } }) + castToImageShape({ NumberField: { S: 'aa1' } }), ); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); image = DynamoDbImage.parse( - castToImageShape({ NumberField: { S: "string" } }) + castToImageShape({ NumberField: { S: 'string' } }), ); - expect(() => image.getNumber("NumberField")).toThrowError("not of type"); + expect(() => image.getNumber('NumberField')).toThrow('not of type'); }); }); diff --git a/tests/unit/services/entity-conversion.unitTest.ts b/tests/unit/services/entity-conversion.unitTest.ts index d1b5902..c1f8339 100644 --- a/tests/unit/services/entity-conversion.unitTest.ts +++ b/tests/unit/services/entity-conversion.unitTest.ts @@ -1,58 +1,52 @@ -import { techRecordDocumentConverter } from "../../../src/services/tech-record-document-conversion"; -import { convert } from "../../../src/services/entity-conversion"; -import { DynamoDbImage } from "../../../src/services/dynamodb-images"; - -jest.mock("../../../src/services/tech-record-document-conversion", () => { - return { - techRecordDocumentConverter: jest.fn().mockReturnValue({ - parseRootImage: jest.fn(), - upsertEntity: jest.fn(), - deleteEntity: jest.fn(), - }), - }; -}); - -describe("convert()", () => { +import { techRecordDocumentConverter } from '../../../src/services/tech-record-document-conversion'; +import { convert } from '../../../src/services/entity-conversion'; +import { DynamoDbImage } from '../../../src/services/dynamodb-images'; + +jest.mock('../../../src/services/tech-record-document-conversion', () => ({ + techRecordDocumentConverter: jest.fn().mockReturnValue({ + parseRootImage: jest.fn(), + upsertEntity: jest.fn(), + deleteEntity: jest.fn(), + }), +})); + +describe('convert()', () => { beforeEach(() => { - // @ts-ignore + // @ts-expect-error techRecordDocumentConverter().parseRootImage.mockReset(); - // @ts-ignore + // @ts-expect-error techRecordDocumentConverter().upsertEntity.mockReset(); - // @ts-ignore + // @ts-expect-error techRecordDocumentConverter().deleteEntity.mockReset(); }); - it("should parse and upsert entities on 'INSERT'", async () => { - await expect(convert("technical-records", "INSERT", exampleImage())); + it("should parse and upsert entities on 'INSERT'", () => { + convert('technical-records', 'INSERT', exampleImage()); expect(techRecordDocumentConverter().parseRootImage).toHaveBeenCalledTimes( - 1 + 1, ); expect(techRecordDocumentConverter().upsertEntity).toHaveBeenCalledTimes(1); expect(techRecordDocumentConverter().deleteEntity).toHaveBeenCalledTimes(0); }); - it("should parse and delete entities on 'DELETE'", async () => { - await expect(convert("technical-records", "DELETE", exampleImage())); + it("should parse and delete entities on 'DELETE'", () => { + convert('technical-records', 'DELETE', exampleImage()); expect(techRecordDocumentConverter().parseRootImage).toHaveBeenCalledTimes( - 1 + 1, ); expect(techRecordDocumentConverter().upsertEntity).toHaveBeenCalledTimes(0); expect(techRecordDocumentConverter().deleteEntity).toHaveBeenCalledTimes(1); }); - it("should fail on non-existent table", async () => { - await expect(() => - convert("any-unknown", "INSERT", exampleImage()) - ).rejects.toThrowError(); + it('should fail on non-existent table', async () => { + await expect(() => convert('any-unknown', 'INSERT', exampleImage())).rejects.toThrow(); }); - const exampleImage = (): DynamoDbImage => { - return DynamoDbImage.parse({ - StringField: { - S: "TEST", - }, - }); - }; + const exampleImage = (): DynamoDbImage => DynamoDbImage.parse({ + StringField: { + S: 'TEST', + }, + }); }); diff --git a/tests/unit/services/secrets-manager.unitTest.ts b/tests/unit/services/secrets-manager.unitTest.ts index d02bf9f..a54e433 100644 --- a/tests/unit/services/secrets-manager.unitTest.ts +++ b/tests/unit/services/secrets-manager.unitTest.ts @@ -1,8 +1,8 @@ -import { getSecretValue } from "../../../src/services/secrets-manager"; -import { GetSecretValueCommand, SecretsManagerClient } from "@aws-sdk/client-secrets-manager"; -import { mockClient } from "aws-sdk-client-mock"; +import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-secrets-manager'; +import { mockClient } from 'aws-sdk-client-mock'; +import { getSecretValue } from '../../../src/services/secrets-manager'; -const mockSecretsManager = mockClient(SecretsManagerClient) +const mockSecretsManager = mockClient(SecretsManagerClient); const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { mockSecretsManager.on(GetSecretValueCommand).callsFake((actualSecretKey) => { if (expectedSecretKey === actualSecretKey?.SecretId) { @@ -11,35 +11,34 @@ const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { return Promise.resolve(undefined); }); }; -describe("getSecretValue()", () => { +describe('getSecretValue()', () => { beforeEach(() => { - // @ts-ignore mockSecretsManager.reset(); }); - it("should fail on non-existent secret", async () => { - mockSecretString("MY-SECRET-KEY", "MY-SECRET-VALUE"); - await expect(getSecretValue("any")).rejects.toThrowError("does not exist"); + it('should fail on non-existent secret', async () => { + mockSecretString('MY-SECRET-KEY', 'MY-SECRET-VALUE'); + await expect(getSecretValue('any')).rejects.toThrow('does not exist'); }); - it("should correctly retrieve existing string secret", async () => { - mockSecretString("MY-SECRET-KEY", "MY-SECRET-VALUE"); - await expect(getSecretValue("MY-SECRET-KEY")).resolves.toEqual( - "MY-SECRET-VALUE" + it('should correctly retrieve existing string secret', async () => { + mockSecretString('MY-SECRET-KEY', 'MY-SECRET-VALUE'); + await expect(getSecretValue('MY-SECRET-KEY')).resolves.toBe( + 'MY-SECRET-VALUE', ); }); - it("should correctly retrieve existing binary secret", async () => { - mockSecretBinary("MY-SECRET-KEY", "MY-SECRET-VALUE"); - await expect(getSecretValue("MY-SECRET-KEY")).resolves.toEqual( - "MY-SECRET-VALUE" + it('should correctly retrieve existing binary secret', async () => { + mockSecretBinary('MY-SECRET-KEY', 'MY-SECRET-VALUE'); + await expect(getSecretValue('MY-SECRET-KEY')).resolves.toBe( + 'MY-SECRET-VALUE', ); }); - it("should fail on secret with no recognizable value format", async () => { - mockSecretValue("MY-SECRET-KEY", { SecretFoo: "MY-SECRET-VALUE" }); - await expect(getSecretValue("MY-SECRET-KEY")).rejects.toThrowError( - "one of" + it('should fail on secret with no recognizable value format', async () => { + mockSecretValue('MY-SECRET-KEY', { SecretFoo: 'MY-SECRET-VALUE' }); + await expect(getSecretValue('MY-SECRET-KEY')).rejects.toThrow( + 'one of', ); }); @@ -49,7 +48,7 @@ describe("getSecretValue()", () => { const mockSecretBinary = (expectedSecretKey: string, secretValue: string) => { mockSecretValue(expectedSecretKey, { - SecretBinary: Buffer.from(secretValue, "utf-8"), + SecretBinary: Buffer.from(secretValue, 'utf-8'), }); }; }); diff --git a/tests/unit/services/sql-execution.unitTest.ts b/tests/unit/services/sql-execution.unitTest.ts index 85e92cc..d3b8e26 100644 --- a/tests/unit/services/sql-execution.unitTest.ts +++ b/tests/unit/services/sql-execution.unitTest.ts @@ -4,84 +4,84 @@ import { executePartialUpsert, executePartialUpsertIfNotExists, selectRecordIds, -} from "../../../src/services/sql-execution"; -import { executeSql } from "../../../src/services/connection-pool"; +} from '../../../src/services/sql-execution'; +import { executeSql } from '../../../src/services/connection-pool'; import { CUSTOM_DEFECT_TABLE, TECHNICAL_RECORD_TABLE, -} from "../../../src/services/table-details"; +} from '../../../src/services/table-details'; import { generateDeleteBasedOnWhereIn, generateFullUpsertSql, generatePartialUpsertSql, generateSelectRecordIds, generateSelectSql, -} from "../../../src/services/sql-generation"; +} from '../../../src/services/sql-generation'; -describe("executePartialUpsert()", () => { - it("should call partial upsert SQL generation", () => { +describe('executePartialUpsert()', () => { + it('should call partial upsert SQL generation', () => { (generatePartialUpsertSql as jest.Mock) = jest .fn() - .mockReturnValue("SELECT 1"); + .mockReturnValue('SELECT 1'); (executeSql as jest.Mock) = jest.fn().mockResolvedValue({ rows: [], fields: [], }); - // @ts-ignore + // @ts-expect-error executePartialUpsert(TECHNICAL_RECORD_TABLE, [], undefined); expect(executeSql).toHaveBeenCalledTimes(1); expect(generatePartialUpsertSql).toHaveBeenCalledTimes(1); - expect(executeSql).toHaveBeenCalledWith("SELECT 1", [], undefined); + expect(executeSql).toHaveBeenCalledWith('SELECT 1', [], undefined); }); }); -describe("executeFullUpsert()", () => { - it("should call partial upsert SQL generation", () => { +describe('executeFullUpsert()', () => { + it('should call partial upsert SQL generation', () => { (generateFullUpsertSql as jest.Mock) = jest .fn() - .mockReturnValue("SELECT 1"); + .mockReturnValue('SELECT 1'); (executeSql as jest.Mock) = jest.fn().mockResolvedValue({ rows: [], fields: [], }); - // @ts-ignore + // @ts-expect-error executeFullUpsert(TECHNICAL_RECORD_TABLE, [], undefined); expect(executeSql).toHaveBeenCalledTimes(1); expect(generateFullUpsertSql).toHaveBeenCalledTimes(1); - expect(executeSql).toHaveBeenCalledWith("SELECT 1", [], undefined); + expect(executeSql).toHaveBeenCalledWith('SELECT 1', [], undefined); }); }); -describe("executePartialUpsertIfNotExists()", () => { - it("should call partial upsert SQL generation if no row exists", () => { - (generateSelectSql as jest.Mock) = jest.fn().mockReturnValue("SELECT 1"); +describe('executePartialUpsertIfNotExists()', () => { + it('should call partial upsert SQL generation if no row exists', () => { + (generateSelectSql as jest.Mock) = jest.fn().mockReturnValue('SELECT 1'); (generatePartialUpsertSql as jest.Mock) = jest .fn() - .mockReturnValue("INSERT INTO table_name () VALUES () ON DUPLICATE KEY"); + .mockReturnValue('INSERT INTO table_name () VALUES () ON DUPLICATE KEY'); (executeSql as jest.Mock) = jest.fn().mockResolvedValue({ rows: [{ column: 1 }], fields: [], }); - // @ts-ignore + // @ts-expect-error executePartialUpsertIfNotExists(TECHNICAL_RECORD_TABLE, [], undefined); expect(executeSql).toHaveBeenCalledTimes(1); - expect(executeSql).toHaveBeenCalledWith("SELECT 1", [], undefined); + expect(executeSql).toHaveBeenCalledWith('SELECT 1', [], undefined); expect(generateSelectSql).toHaveBeenCalledTimes(1); }); - it("should call partial upsert SQL generation if row exists", () => { - (generateSelectSql as jest.Mock) = jest.fn().mockReturnValue("SELECT 1"); + it('should call partial upsert SQL generation if row exists', () => { + (generateSelectSql as jest.Mock) = jest.fn().mockReturnValue('SELECT 1'); (generatePartialUpsertSql as jest.Mock) = jest .fn() - .mockReturnValue("INSERT INTO table_name () VALUES () ON DUPLICATE KEY"); + .mockReturnValue('INSERT INTO table_name () VALUES () ON DUPLICATE KEY'); (executeSql as jest.Mock) = jest .fn() @@ -93,51 +93,51 @@ describe("executePartialUpsertIfNotExists()", () => { rows: [{ column: 1 }], fields: [], }); - // @ts-ignore + // @ts-expect-error executePartialUpsertIfNotExists(TECHNICAL_RECORD_TABLE, [], undefined); expect(executeSql).toHaveBeenCalledTimes(1); - expect(executeSql).toHaveBeenCalledWith("SELECT 1", [], undefined); + expect(executeSql).toHaveBeenCalledWith('SELECT 1', [], undefined); expect(generateSelectSql).toHaveBeenCalledTimes(1); }); }); -describe("deleteBasedOnWhereIn()", () => { - it("should call generateDeleteBasedOnWhereIn", () => { +describe('deleteBasedOnWhereIn()', () => { + it('should call generateDeleteBasedOnWhereIn', () => { (generateDeleteBasedOnWhereIn as jest.Mock) = jest .fn() - .mockReturnValue("DELETE 1"); + .mockReturnValue('DELETE 1'); (executeSql as jest.Mock) = jest.fn().mockResolvedValue({ rows: [], fields: [], }); - // @ts-ignore - deleteBasedOnWhereIn(CUSTOM_DEFECT_TABLE.tableName, "id", [], undefined); + // @ts-expect-error + deleteBasedOnWhereIn(CUSTOM_DEFECT_TABLE.tableName, 'id', [], undefined); expect(executeSql).toHaveBeenCalledTimes(1); expect(generateDeleteBasedOnWhereIn).toHaveBeenCalledTimes(1); - expect(executeSql).toHaveBeenCalledWith("DELETE 1", [], undefined); + expect(executeSql).toHaveBeenCalledWith('DELETE 1', [], undefined); }); }); -describe("selectRecordIds()", () => { - it("should call generateSelectRecordIds", () => { +describe('selectRecordIds()', () => { + it('should call generateSelectRecordIds', () => { (generateSelectRecordIds as jest.Mock) = jest .fn() - .mockReturnValue("SELECT 1"); + .mockReturnValue('SELECT 1'); (executeSql as jest.Mock) = jest.fn().mockResolvedValue({ rows: [], fields: [], }); - // @ts-ignore + // @ts-expect-error selectRecordIds(CUSTOM_DEFECT_TABLE.tableName, [], undefined); expect(executeSql).toHaveBeenCalledTimes(1); expect(generateSelectRecordIds).toHaveBeenCalledTimes(1); - expect(executeSql).toHaveBeenCalledWith("SELECT 1", [], undefined); + expect(executeSql).toHaveBeenCalledWith('SELECT 1', [], undefined); }); }); diff --git a/tests/unit/services/sql-generation.unitTest.ts b/tests/unit/services/sql-generation.unitTest.ts index 77ee62e..a0c5a27 100644 --- a/tests/unit/services/sql-generation.unitTest.ts +++ b/tests/unit/services/sql-generation.unitTest.ts @@ -4,86 +4,84 @@ import { generatePartialUpsertSql, generateSelectRecordIds, generateSelectSql, -} from "../../../src/services/sql-generation"; +} from '../../../src/services/sql-generation'; -const tableName = "myTable"; -const columnNames = ["columnA", "columnZ"]; +const tableName = 'myTable'; +const columnNames = ['columnA', 'columnZ']; -describe("generatePartialUpsertSql", () => { - it("should generate correct SQL with a default PK 'id'", async () => { - expect(generatePartialUpsertSql({ tableName, columnNames })).toEqual( - "INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`)" +describe('generatePartialUpsertSql', () => { + it("should generate correct SQL with a default PK 'id'", () => { + expect(generatePartialUpsertSql({ tableName, columnNames })).toBe( + 'INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`)', ); }); - it("should generate correct SQL when PK is provided", async () => { + it('should generate correct SQL when PK is provided', () => { expect( generatePartialUpsertSql({ tableName, columnNames, - primaryKeyColumnName: "myId", - }) - ).toEqual( - "INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `myId` = LAST_INSERT_ID(`myId`)" + primaryKeyColumnName: 'myId', + }), + ).toBe( + 'INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `myId` = LAST_INSERT_ID(`myId`)', ); }); }); -describe("generateFullUpsertSql", () => { - it("should generate correct SQL with a default PK 'id'", async () => { - expect(generateFullUpsertSql({ tableName, columnNames })).toEqual( - "INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`), `columnA` = ?, `columnZ` = ?" +describe('generateFullUpsertSql', () => { + it("should generate correct SQL with a default PK 'id'", () => { + expect(generateFullUpsertSql({ tableName, columnNames })).toBe( + 'INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`), `columnA` = ?, `columnZ` = ?', ); }); - it("should generate correct SQL when PK is provided", async () => { + it('should generate correct SQL when PK is provided', () => { expect( generateFullUpsertSql({ tableName, columnNames, - primaryKeyColumnName: "myId", - }) - ).toEqual( - "INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `myId` = LAST_INSERT_ID(`myId`), `columnA` = ?, `columnZ` = ?" + primaryKeyColumnName: 'myId', + }), + ).toBe( + 'INSERT INTO `myTable` (`columnA`, `columnZ`) VALUES (?, ?) ON DUPLICATE KEY UPDATE `myId` = LAST_INSERT_ID(`myId`), `columnA` = ?, `columnZ` = ?', ); }); }); -describe("generateSelectSql", () => { - it("should generate correct SELECT SQL with MD5 function clause, and columns placeholder", async () => { - expect(generateSelectSql({ tableName, columnNames })).toEqual( - "SELECT id insertId FROM `myTable` WHERE fingerprint = MD5(CONCAT_WS('|', IFNULL(?, ''), IFNULL(?, '')))" +describe('generateSelectSql', () => { + it('should generate correct SELECT SQL with MD5 function clause, and columns placeholder', () => { + expect(generateSelectSql({ tableName, columnNames })).toBe( + "SELECT id insertId FROM `myTable` WHERE fingerprint = MD5(CONCAT_WS('|', IFNULL(?, ''), IFNULL(?, '')))", ); }); }); -describe("generateDeleteBasedOnWhereIn", () => { - it("should construct a correct Delete SQL query, based on WHERE IN clause", async () => { - const targetTableName = "test_result"; - const targetColumnName = "test_result_id"; +describe('generateDeleteBasedOnWhereIn', () => { + it('should construct a correct Delete SQL query, based on WHERE IN clause', () => { + const targetTableName = 'test_result'; + const targetColumnName = 'test_result_id'; const ids = [1, 3, 5, 6]; - const expectedQuery = - "DELETE FROM test_result WHERE test_result_id IN (?,?,?,?)"; + const expectedQuery = 'DELETE FROM test_result WHERE test_result_id IN (?,?,?,?)'; const result = generateDeleteBasedOnWhereIn( targetTableName, targetColumnName, - ids + ids, ); expect(result).toEqual(expectedQuery); }); }); -describe("generateSelectRecordIds", () => { - it("should construct a correct Select SQL query, based on WHERE clause", async () => { - const targetTableName = "test_result"; +describe('generateSelectRecordIds', () => { + it('should construct a correct Select SQL query, based on WHERE clause', () => { + const targetTableName = 'test_result'; const attributes = { vehicle_id: 1, - testResultId: "TEST-RESULT-ID", + testResultId: 'TEST-RESULT-ID', }; - const expectedQuery = - "SELECT id FROM test_result WHERE vehicle_id=? AND testResultId=?"; + const expectedQuery = 'SELECT id FROM test_result WHERE vehicle_id=? AND testResultId=?'; const result = generateSelectRecordIds(targetTableName, attributes); expect(result).toEqual(expectedQuery); }); diff --git a/tests/unit/services/sql-operations.unitTest.ts b/tests/unit/services/sql-operations.unitTest.ts index 4f42765..b43f292 100644 --- a/tests/unit/services/sql-operations.unitTest.ts +++ b/tests/unit/services/sql-operations.unitTest.ts @@ -1,20 +1,20 @@ -import { OperationType } from "@aws-sdk/client-dynamodb-streams"; -import { deriveSqlOperation } from "../../../src/services/sql-operations"; +import { OperationType } from '@aws-sdk/client-dynamodb-streams'; +import { deriveSqlOperation } from '../../../src/services/sql-operations'; -describe("deriveSqlOperation()", () => { +describe('deriveSqlOperation()', () => { it("should return 'INSERT' for input 'INSERT'", () => { - expect(deriveSqlOperation("INSERT")).toEqual("INSERT"); + expect(deriveSqlOperation('INSERT')).toBe('INSERT'); }); it("should return 'UPDATE' for input 'MODIFY'", () => { - expect(deriveSqlOperation("MODIFY")).toEqual("UPDATE"); + expect(deriveSqlOperation('MODIFY')).toBe('UPDATE'); }); it("should return 'DELETE' for input 'REMOVE'", () => { - expect(deriveSqlOperation("REMOVE")).toEqual("DELETE"); + expect(deriveSqlOperation('REMOVE')).toBe('DELETE'); }); - it("should throw error on unrecognized operation", () => { - expect(() => deriveSqlOperation("any-unknown" as unknown as OperationType)).toThrowError(); + it('should throw error on unrecognized operation', () => { + expect(() => deriveSqlOperation('any-unknown' as unknown as OperationType)).toThrow(); }); }); diff --git a/tests/unit/updateStore.unitTest.ts b/tests/unit/updateStore.unitTest.ts index 5b418f5..78940b8 100644 --- a/tests/unit/updateStore.unitTest.ts +++ b/tests/unit/updateStore.unitTest.ts @@ -1,5 +1,5 @@ -describe("UpdateStore function", () => { - it("should return true", () => { +describe('UpdateStore function', () => { + it('should return true', () => { expect(true).toBe(true); }); }); diff --git a/tests/utils.ts b/tests/utils.ts index 7fe0725..5a94ede 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,65 +1,59 @@ -import { NativeAttributeValue } from "@aws-sdk/util-dynamodb"; -import path from "path"; -import { getSecretValue } from "../src/services/secrets-manager"; -import { SecretsManagerConfig } from "../src/models/aws-sm-config"; -import { Context } from "aws-lambda"; +import { NativeAttributeValue } from '@aws-sdk/util-dynamodb'; +import path from 'path'; +import { Context } from 'aws-lambda'; +import { getSecretValue } from '../src/services/secrets-manager'; +import { SecretsManagerConfig } from '../src/models/aws-sm-config'; // DO NOT MOVE THIS FILE. -const resourcesDirectory = path.resolve(__dirname, "./resources"); +const resourcesDirectory = path.resolve(__dirname, './resources'); -export const pathToResources = (): string => { - return resourcesDirectory; -}; +export const pathToResources = (): string => resourcesDirectory; export const castToImageShape = ( - json: any -): { [key: string]: NativeAttributeValue } => { - return json as any; -}; + json: any, +): { [key: string]: NativeAttributeValue } => json; export const useLocalDb = (): void => { - process.env.SECRET = "TEST_SECRET"; - process.env.SCHEMA_NAME = "CVSBNOP"; + process.env.SECRET = 'TEST_SECRET'; + process.env.SCHEMA_NAME = 'CVSBNOP'; const localDbSmConfig: SecretsManagerConfig = { - username: "root", - password: "12345", - engine: "", - host: "127.0.0.1", + username: 'root', + password: '12345', + engine: '', + host: '127.0.0.1', port: 3306, - dbname: "", - dbClusterIdentifier: "", + dbname: '', + dbClusterIdentifier: '', }; (getSecretValue as jest.Mock) = jest .fn() .mockImplementation((secretName: string) => { - if (secretName === "TEST_SECRET") { + if (secretName === 'TEST_SECRET') { return JSON.stringify(localDbSmConfig); } throw new Error(`TEST SECRETS MANAGER - unrecognized key ${secretName}`); }); }; -export const exampleContext = (): Context => { - return { - callbackWaitsForEmptyEventLoop: false, - functionName: "test", - functionVersion: "0.0.0", - invokedFunctionArn: "arn:aws:execute-api:eu-west-1:TEST", - memoryLimitInMB: 128, - awsRequestId: "TEST-AWS-REQUEST-ID", - logGroupName: "TEST-LOG-GROUP-NAME", - logStreamName: "TEST-LOG-STREAM-NAME", - getRemainingTimeInMillis: (): number => 86400000, - done: (): void => { - /* circumvent TSLint no-empty */ - }, - fail: (): void => { - /* circumvent TSLint no-empty */ - }, - succeed: (): void => { - /* circumvent TSLint no-empty */ - }, - }; -}; +export const exampleContext = (): Context => ({ + callbackWaitsForEmptyEventLoop: false, + functionName: 'test', + functionVersion: '0.0.0', + invokedFunctionArn: 'arn:aws:execute-api:eu-west-1:TEST', + memoryLimitInMB: '128', + awsRequestId: 'TEST-AWS-REQUEST-ID', + logGroupName: 'TEST-LOG-GROUP-NAME', + logStreamName: 'TEST-LOG-STREAM-NAME', + getRemainingTimeInMillis: (): number => 86400000, + done: (): void => { + /* circumvent TSLint no-empty */ + }, + fail: (): void => { + /* circumvent TSLint no-empty */ + }, + succeed: (): void => { + /* circumvent TSLint no-empty */ + }, +}); diff --git a/tests/utils/cleanser.unitTest.ts b/tests/utils/cleanser.unitTest.ts index 123543e..7c0ec49 100644 --- a/tests/utils/cleanser.unitTest.ts +++ b/tests/utils/cleanser.unitTest.ts @@ -1,27 +1,27 @@ -import { BodyType } from "../../src/models/body-type"; -import { TechRecordDocument } from "../../src/models/tech-record-document"; -import { vinCleanser } from "../../src/utils/cleanser"; +import { BodyType } from '../../src/models/body-type'; +import { TechRecordDocument } from '../../src/models/tech-record-document'; +import { vinCleanser } from '../../src/utils/cleanser'; -describe("fingerprintCleanser function", () => { - it("should trim and null empty strings from data", () => { +describe('fingerprintCleanser function', () => { + it('should trim and null empty strings from data', () => { const bodyType: BodyType = { - code: "m", - description: "skeletal", + code: 'm', + description: 'skeletal', }; const originalData = [ 1234, - " Trim Me", - " ", - " ", - "", + ' Trim Me', + ' ', + ' ', + '', bodyType.code, bodyType.description, ]; const expectedCleansedData = [ 1234, - "Trim Me", + 'Trim Me', null, null, null, @@ -41,20 +41,20 @@ describe("fingerprintCleanser function", () => { }); }); -describe("vinCleanser function", () => { - it("should remove all non alphanumeric characters", () => { +describe('vinCleanser function', () => { + it('should remove all non alphanumeric characters', () => { const techRecord: TechRecordDocument = { - vin: " V!I-N&1[2 ]3`45 ", + vin: ' V!I-N&1[2 ]3`45 ', }; const cleansedVin = vinCleanser(techRecord.vin); - expect(cleansedVin).toBe("VIN12345"); + expect(cleansedVin).toBe('VIN12345'); }); - it("should convert a null vin to an empty string", () => { + it('should convert a null vin to an empty string', () => { const techRecord: TechRecordDocument = {}; const cleansedVin = vinCleanser(techRecord.vin); - expect(cleansedVin).toBe(""); + expect(cleansedVin).toBe(''); }); }); diff --git a/tests/utils/padwithtwos.unitTest.ts b/tests/utils/padwithtwos.unitTest.ts index 83e6052..d4aede4 100644 --- a/tests/utils/padwithtwos.unitTest.ts +++ b/tests/utils/padwithtwos.unitTest.ts @@ -1,12 +1,12 @@ -import { padWithZeros } from "../../src/utils/padwithzeros"; +import { padWithZeros } from '../../src/utils/padwithzeros'; -describe("padWithZeros", () => { - it("pads a number with zeros to the left if it is less than the maximum size", () => { - expect(padWithZeros(7, 3)).toEqual("007"); - expect(padWithZeros(7, 5)).toEqual("00007"); - expect(padWithZeros(42, 3)).toEqual("042"); - expect(padWithZeros(123, 3)).toEqual("123"); - expect(padWithZeros(123, 5)).toEqual("00123"); - expect(padWithZeros(12345, 5)).toEqual("12345"); +describe('padWithZeros', () => { + it('pads a number with zeros to the left if it is less than the maximum size', () => { + expect(padWithZeros(7, 3)).toBe('007'); + expect(padWithZeros(7, 5)).toBe('00007'); + expect(padWithZeros(42, 3)).toBe('042'); + expect(padWithZeros(123, 3)).toBe('123'); + expect(padWithZeros(123, 5)).toBe('00123'); + expect(padWithZeros(12345, 5)).toBe('12345'); }); }); diff --git a/tslint.json b/tslint.json deleted file mode 100644 index 1b01dc7..0000000 --- a/tslint.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "extends": [ - "tslint:recommended", - "tslint-no-unused-expression-chai" - ], - "rules": { - "max-line-length": { - "options": [240] - }, - "new-parens": false, - "no-arg": true, - "no-bitwise": false, - "no-conditional-assignment": false, - "no-consecutive-blank-lines": false, - "no-console": [false], - "object-literal-sort-keys": false, - "trailing-comma": [false], - "member-ordering": false, - "ordered-imports": false, - "jsdoc-format": true, - "completed-docs": [ - true, - { - "methods": true, - "classes": true - } - ], - "interface-name": false - } -} From affc0deb982f0186be6e4ef95ec7458423657279 Mon Sep 17 00:00:00 2001 From: "Shivangi Das (CVS)" Date: Wed, 29 May 2024 14:51:38 +0100 Subject: [PATCH 10/20] chore(cb2-12277): move liquibase to dev dependency (#101) * fix(cb2-12277): update packages and eslint * fix(cb2-12277): update packages and eslint * fix(cb2-12277): lint script * chore(cb2-12277): update husky scripts * chore(cb2-12277): lint errors * chore(cb2-12277): tslint not used * chore(cb2-12277): minor updates since last commit * chore(cb2-12277): move liquibase to dev dependency * chore(cb2-12277): remove unused package aws-lambda * chore(cb2-12277): remove unused package aws-lambda-mock-context * chore(cb2-12277): update import type --- package-lock.json | 130 ++++++++++---------------- package.json | 4 +- src/functions/process-stream-event.ts | 2 +- tests/utils.ts | 2 +- 4 files changed, 54 insertions(+), 84 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6e8ca51..35456e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,10 +14,8 @@ "@aws-sdk/client-secrets-manager": "3.565.0", "@aws-sdk/util-dynamodb": "3.577.0", "@types/lambda-tester": "4.0.3", - "aws-lambda": "1.0.7", "aws-xray-sdk": "3.6.0", "date-fns": "3.6.0", - "liquibase": "4.27.0", "moment": "2.30.1", "mysql2": "3.9.8", "reflect-metadata": "0.2.2", @@ -38,7 +36,6 @@ "@typescript-eslint/eslint-plugin": "7.11.0", "@typescript-eslint/parser": "7.11.0", "audit-filter": "0.5.0", - "aws-lambda-mock-context": "3.2.1", "aws-sdk-client-mock": "4.0.0", "commitlint": "19.3.0", "cross-env": "7.0.3", @@ -49,6 +46,7 @@ "jest-serial-runner": "1.2.1", "jest-sonar-reporter": "2.0.0", "lambda-tester": "4.0.1", + "liquibase": "4.27.0", "prettier": "3.2.5", "serverless": "3.38.0", "serverless-offline": "13.6.0", @@ -11046,6 +11044,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { "sprintf-js": "~1.0.2" } @@ -11325,6 +11324,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -11335,53 +11335,11 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aws-lambda": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/aws-lambda/-/aws-lambda-1.0.7.tgz", - "integrity": "sha512-9GNFMRrEMG5y3Jvv+V4azWvc+qNWdWLTjDdhf/zgMlz8haaaLWv0xeAIWxz9PuWUBawsVxy0zZotjCdR3Xq+2w==", - "dependencies": { - "aws-sdk": "^2.814.0", - "commander": "^3.0.2", - "js-yaml": "^3.14.1", - "watchpack": "^2.0.0-beta.10" - }, - "bin": { - "lambda": "bin/lambda" - } - }, - "node_modules/aws-lambda-mock-context": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/aws-lambda-mock-context/-/aws-lambda-mock-context-3.2.1.tgz", - "integrity": "sha512-mBqUustp9Q6yfa7w0L8UT8XJVTlIaeZTtxhvRQEEM3uhZwzQ1/l1NNN9i4F+O6CbYEOu9jDODLMCymV/J7pSYA==", - "dev": true, - "dependencies": { - "moment": "^2.10.5", - "pinkie-defer": "^1.0.0", - "uuid": "^3.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/aws-lambda-mock-context/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/aws-lambda/node_modules/commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==" - }, "node_modules/aws-sdk": { "version": "2.1628.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1628.0.tgz", "integrity": "sha512-mUjvITHmV46JbCTQR8TovWzJEHZtbC9cTRySXyuIuuYQNjA2RrbfqLXXKR/xru+vPFKnfTLw+QQ/BC2l1/Ln5g==", + "dev": true, "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -11499,6 +11457,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -11843,6 +11802,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -12141,6 +12101,7 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -12276,6 +12237,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -13498,6 +13460,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -13870,6 +13833,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -13881,6 +13845,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -14726,6 +14691,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -14812,6 +14778,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true, "engines": { "node": ">=0.4.x" } @@ -15248,6 +15215,7 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -15388,6 +15356,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15449,6 +15418,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -15638,6 +15608,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -15673,7 +15644,8 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, "node_modules/graphemer": { "version": "1.4.0", @@ -15712,6 +15684,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -15723,6 +15696,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -15734,6 +15708,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -15745,6 +15720,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -15759,6 +15735,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -15851,7 +15828,8 @@ "node_modules/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true }, "node_modules/ignore": { "version": "5.3.1", @@ -15944,7 +15922,8 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true }, "node_modules/ini": { "version": "4.1.1", @@ -16083,6 +16062,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -16176,6 +16156,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -16284,6 +16265,7 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -16553,6 +16535,7 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -16632,7 +16615,8 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -18373,6 +18357,7 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "dev": true, "engines": { "node": ">= 0.6.0" } @@ -18405,6 +18390,7 @@ "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -18829,6 +18815,7 @@ "version": "4.27.0", "resolved": "https://registry.npmjs.org/liquibase/-/liquibase-4.27.0.tgz", "integrity": "sha512-VtsANEp3kULNbMOulqzxmH8SeX5Kyx4xCr1sTLLf+3oKSWOkhv2PnJbPVF65CxJATPo/aKk3Oh9cP6uPvvMRMQ==", + "dev": true, "bin": { "node-liquibase": "dist/cli.js" }, @@ -20340,15 +20327,6 @@ "node": ">=0.10.0" } }, - "node_modules/pinkie-defer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pinkie-defer/-/pinkie-defer-1.0.0.tgz", - "integrity": "sha1-ePzCIRbA2okKySqAitNwiI3tlCE=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", @@ -20438,6 +20416,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, "engines": { "node": ">= 0.4" } @@ -20653,7 +20632,8 @@ "node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true }, "node_modules/pure-rand": { "version": "6.1.0", @@ -20691,6 +20671,7 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, "engines": { "node": ">=0.4.x" } @@ -21149,7 +21130,8 @@ "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "dev": true }, "node_modules/seek-bzip": { "version": "1.0.6", @@ -21687,6 +21669,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -21946,7 +21929,8 @@ "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true }, "node_modules/sprintf-kit": { "version": "2.0.1", @@ -23060,6 +23044,7 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dev": true, "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -23069,6 +23054,7 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -23166,23 +23152,6 @@ "makeerror": "1.0.12" } }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/watchpack/node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -23280,6 +23249,7 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -23469,6 +23439,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -23481,6 +23452,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, "engines": { "node": ">=4.0" } diff --git a/package.json b/package.json index a58ad7f..0677489 100644 --- a/package.json +++ b/package.json @@ -60,10 +60,8 @@ "@aws-sdk/client-secrets-manager": "3.565.0", "@aws-sdk/util-dynamodb": "3.577.0", "@types/lambda-tester": "4.0.3", - "aws-lambda": "1.0.7", "aws-xray-sdk": "3.6.0", "date-fns": "3.6.0", - "liquibase": "4.27.0", "moment": "2.30.1", "mysql2": "3.9.8", "reflect-metadata": "0.2.2", @@ -84,7 +82,6 @@ "@typescript-eslint/eslint-plugin": "7.11.0", "@typescript-eslint/parser": "7.11.0", "audit-filter": "0.5.0", - "aws-lambda-mock-context": "3.2.1", "aws-sdk-client-mock": "4.0.0", "commitlint": "19.3.0", "cross-env": "7.0.3", @@ -95,6 +92,7 @@ "jest-serial-runner": "1.2.1", "jest-sonar-reporter": "2.0.0", "lambda-tester": "4.0.1", + "liquibase": "4.27.0", "prettier": "3.2.5", "serverless": "3.38.0", "serverless-offline": "13.6.0", diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index 0f8151c..2f1640c 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -1,4 +1,4 @@ -import { +import type { Context, DynamoDBRecord, DynamoDBStreamEvent, diff --git a/tests/utils.ts b/tests/utils.ts index 5a94ede..19c9d60 100644 --- a/tests/utils.ts +++ b/tests/utils.ts @@ -1,6 +1,6 @@ import { NativeAttributeValue } from '@aws-sdk/util-dynamodb'; import path from 'path'; -import { Context } from 'aws-lambda'; +import type { Context } from 'aws-lambda'; import { getSecretValue } from '../src/services/secrets-manager'; import { SecretsManagerConfig } from '../src/models/aws-sm-config'; From 37002b9ad3317bda25a1fd1d75b70aa6da21250c Mon Sep 17 00:00:00 2001 From: Kristian Carr <127743278+kcarr-bjss@users.noreply.github.com> Date: Mon, 3 Jun 2024 10:55:49 +0100 Subject: [PATCH 11/20] feature(cb2-11817): sns/sqs and event bridge for tech records (#102) * feature(cb2-11817): added transformation of tech records to process stream events * chore(cb2-11778): added temporary logging for event record validation * feat(cb2-11778): moved transformation of dynamo record * feat(cb2-11778): updated unit tests to account for event structure changes * feat(cb2-11778): fixed integration tests * feat(cb2-11778): fixed integration tests * feat(cb2-11778): added unit test for transform tech record * chore(cb2-11778): added temporary logging for event record validation * feat(cb2-11778): moved transformation of dynamo record * feat(cb2-11778): fixed further compile issues caused by rebate * feat(cb2-11818): remove v2 aws-sdk --------- Co-authored-by: naathanbrown --- src/functions/process-stream-event.ts | 19 +- src/utils/transform-tech-record.ts | 73 ++ ...nto-service-document-conversion.intTest.ts | 116 +-- ...tech-record-document-conversion.intTest.ts | 42 +- ...-results-conversion-with-delete.intTest.ts | 100 ++- ...-results-conversion-with-upsert.intTest.ts | 98 ++- .../process-stream-event.unitTest.ts | 56 +- tests/utils/transform-tech-record.unitTest.ts | 787 ++++++++++++++++++ 8 files changed, 1107 insertions(+), 184 deletions(-) create mode 100644 src/utils/transform-tech-record.ts create mode 100644 tests/utils/transform-tech-record.unitTest.ts diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index 2f1640c..b2a0b03 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -1,3 +1,4 @@ +import { _Record } from '@aws-sdk/client-dynamodb-streams'; import type { Context, DynamoDBRecord, @@ -6,12 +7,13 @@ import type { SQSEvent, StreamRecord, } from 'aws-lambda'; -import { convert } from '../services/entity-conversion'; -import { DynamoDbImage } from '../services/dynamodb-images'; -import { deriveSqlOperation, SqlOperation } from '../services/sql-operations'; +import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; import { destroyConnectionPool } from '../services/connection-pool'; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { convert } from '../services/entity-conversion'; import { debugLog } from '../services/logger'; -import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; +import { SqlOperation, deriveSqlOperation } from '../services/sql-operations'; +import { transformTechRecord } from '../utils/transform-tech-record'; /** * λ function: convert a DynamoDB document to Aurora RDS rows @@ -42,9 +44,7 @@ export const processStreamEvent: Handler = async ( for await (const record of event.Records) { const id = record.messageId; - const dynamoRecord: DynamoDBRecord = JSON.parse( - record.body, - ) as DynamoDBRecord; + const dynamoRecord: DynamoDBRecord = JSON.parse(JSON.parse(record.body).Message) as DynamoDBRecord; debugLog('Original DynamoDB stream event body (parsed): ', dynamoRecord); @@ -55,6 +55,11 @@ export const processStreamEvent: Handler = async ( dynamoRecord.eventSourceARN!, ); + if (tableName.includes('flat-tech-records')) { + transformTechRecord(dynamoRecord as _Record); + debugLog(`Dynamo Record after transformation: ${dynamoRecord}`); + } + // is this an INSERT, UPDATE, or DELETE? const operationType: SqlOperation = deriveSqlOperation( dynamoRecord.eventName!, diff --git a/src/utils/transform-tech-record.ts b/src/utils/transform-tech-record.ts new file mode 100644 index 0000000..a7a9027 --- /dev/null +++ b/src/utils/transform-tech-record.ts @@ -0,0 +1,73 @@ +import { _Record } from '@aws-sdk/client-dynamodb-streams'; +import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; +import { debugLog } from '../services/logger'; + +interface LegacyKeyStructure { + [index: string]: string | boolean | number | Array | Array | LegacyKeyStructure; +} + +interface NewKeyStructure { + [index: string]: string | boolean | number | Array; +} + +interface LegacyTechRecord extends LegacyKeyStructure { + techRecord: LegacyKeyStructure[] +} + +const nestItem = (record: LegacyKeyStructure, key: string, value: string | number | boolean | string[], position: number) => { + const idx = key.indexOf('_', position); + + if (idx === -1) { + record[key.substring(position)] = value; + return; + } + const realKey = key.substring(position, idx); + const isArray = !isNaN(parseInt(key[idx + 1])); + + if (!record[realKey.toString()]) { + if (isArray) { + record[realKey.toString()] = []; + } else { + record[realKey.toString()] = {}; + } + } + + nestItem(record[realKey.toString()] as LegacyKeyStructure, key, value, idx + 1); + return record; +}; + +const transformImage = (image: NewKeyStructure) => { + const vehicle = {} as LegacyTechRecord; + vehicle.techRecord = []; + + const legacyRecord = {} as LegacyKeyStructure; + + for (const [key, value] of Object.entries(image)) { + if (key.indexOf('_') === -1 && !vehicle[key.toString()]) { + vehicle[key.toString()] = value; + continue; + } + nestItem(legacyRecord, key, value, 0); + } + + delete vehicle.createdTimestamp; + + vehicle.techRecord.push(legacyRecord.techRecord as LegacyKeyStructure); + + return (marshall(vehicle)); +}; + +export const transformTechRecord = (record: _Record) => { + if (record.dynamodb?.OldImage) { + debugLog('Transforming old image of flat-tech-record'); + const OldImage: NewKeyStructure = unmarshall(record.dynamodb.OldImage); + record.dynamodb.OldImage = transformImage(OldImage); + } + + if (record.dynamodb?.NewImage) { + debugLog('Transforming new image of flat-tech-record'); + const NewImage: NewKeyStructure = unmarshall(record.dynamodb.NewImage); + record.dynamodb.NewImage = transformImage(NewImage); + } + debugLog('Succesfully transformed flat-tech-record stream record'); +}; diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index 2712d02..839cfb5 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -71,12 +71,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], @@ -164,12 +166,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -240,12 +244,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -295,12 +301,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -375,12 +383,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], @@ -433,12 +443,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -493,12 +505,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -572,14 +586,16 @@ describe('convertTechRecordDocument() integration tests', () => { const event = { Records: [ { - body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + body: JSON.stringify( { + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }) }, ], }; diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index 19bbb5f..f616d23 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -43,12 +43,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJson, + }, + }) }), }, ], @@ -604,12 +606,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], @@ -650,12 +654,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index 6decab8..277412c 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -71,12 +71,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -344,12 +346,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -642,12 +646,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }) }), }, ], @@ -932,14 +938,16 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }), }), - }, + } ], }; @@ -1201,12 +1209,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, + }) }), }, ], @@ -1519,12 +1529,14 @@ describe('convertTestResults() integration tests with delete', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, + }) }), }, ], @@ -1563,12 +1575,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, + }) }), }, ], diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index aeeed17..d0a3f5b 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -71,12 +71,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -344,12 +346,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -642,12 +646,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }) }), }, ], @@ -932,12 +938,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }) }), }, ], @@ -1201,12 +1209,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, + }) }), }, ], @@ -1519,12 +1529,14 @@ describe('convertTestResults() integration tests with upsert', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, + }) }), }, ], @@ -1563,12 +1575,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, + }) }), }, ], diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 776ddfe..4ca7157 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -23,12 +23,14 @@ describe('processStreamEvent()', () => { Records: [ { body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, ], @@ -187,34 +189,40 @@ describe('processStreamEvent()', () => { { messageId: 'SUCCESS', body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, { messageId: 'FAILURE', body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, { messageId: 'SUCCESS', body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, ], diff --git a/tests/utils/transform-tech-record.unitTest.ts b/tests/utils/transform-tech-record.unitTest.ts new file mode 100644 index 0000000..c5ec555 --- /dev/null +++ b/tests/utils/transform-tech-record.unitTest.ts @@ -0,0 +1,787 @@ +import { DynamoDBRecord } from 'aws-lambda'; +import { DynamoDB } from 'aws-sdk'; +import { transformTechRecord } from '../../src/utils/transform-tech-record'; + +const dbRecordOld: DynamoDBRecord = { + dynamodb: { + NewImage: { + systemNumber: { + S: '11000017', + }, + vin: { + S: 'P012301957486', + }, + partialVin: { + S: '957486', + }, + primaryVrm: { + S: 'AD35GHT', + }, + secondaryVrms: { + L: [ + { + S: 'CT96DRG', + }, + ], + }, + techRecord: { + L: [ + { + M: { + axles: { + L: [ + { + M: { + axleNumber: { + N: '1', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '1234', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1800', + }, + gbWeight: { + N: '1400', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '2', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '3', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '4', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '5', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + ], + }, + bodyType: { + M: { + code: { + S: 'r', + }, + description: { + S: 'refuse', + }, + }, + }, + brakeCode: { + S: '178202', + }, + brakes: { + M: { + antilockBrakingSystem: { + BOOL: true, + }, + brakeCode: { + S: '123', + }, + brakeCodeOriginal: { + S: '12412', + }, + brakeForceWheelsNotLocked: { + M: { + parkingBrakeForceA: { + N: '2332', + }, + secondaryBrakeForceA: { + N: '2512', + }, + serviceBrakeForceA: { + N: '6424', + }, + }, + }, + brakeForceWheelsUpToHalfLocked: { + M: { + parkingBrakeForceB: { + N: '3512', + }, + secondaryBrakeForceB: { + N: '2512', + }, + serviceBrakeForceB: { + N: '5521', + }, + }, + }, + dataTrBrakeOne: { + S: 'None', + }, + dataTrBrakeThree: { + S: 'None', + }, + dataTrBrakeTwo: { + S: 'None', + }, + dtpNumber: { + S: 'sdgs', + }, + loadSensingValve: { + BOOL: true, + }, + retarderBrakeOne: { + S: 'electric', + }, + retarderBrakeTwo: { + S: 'exhaust', + }, + }, + }, + conversionRefNo: { + S: '7891234', + }, + createdAt: { + S: '2019-06-24T10:26:54.903Z', + }, + dimensions: { + M: { + length: { + N: '7500', + }, + width: { + N: '2200', + }, + }, + }, + drawbarCouplingFitted: { + BOOL: true, + }, + euroStandard: { + S: '7', + }, + frontVehicleTo5thWheelCouplingMax: { + N: '1900', + }, + frontVehicleTo5thWheelCouplingMin: { + N: '1700', + }, + frontAxleTo5thWheelMax: { + N: '1500', + }, + frontAxleTo5thWheelMin: { + N: '1200', + }, + functionCode: { + S: 'A', + }, + grossKerbWeight: { + N: '2500', + }, + grossLadenWeight: { + N: '3000', + }, + lastUpdatedAt: { + S: '2019-06-24T10:28:58.999Z', + }, + make: { + S: 'Isuzu', + }, + manufactureYear: { + N: '2018', + }, + maxTrainDesignWeight: { + N: '500', + }, + maxTrainGbWeight: { + N: '1000', + }, + model: { + S: 'FM', + }, + noOfAxles: { + N: '5', + }, + notes: { + S: 'test notes', + }, + ntaNumber: { + S: '123456', + }, + numberOfWheelsDriven: { + NULL: true, + }, + reasonForCreation: { + S: 'new vehicle', + }, + recordCompleteness: { + S: 'complete', + }, + regnDate: { + S: '2019-06-24', + }, + roadFriendly: { + BOOL: true, + }, + speedLimiterMrk: { + BOOL: true, + }, + statusCode: { + S: 'current', + }, + tachoExemptMrk: { + BOOL: true, + }, + trainDesignWeight: { + N: '2000', + }, + trainGbWeight: { + N: '1500', + }, + tyreUseCode: { + S: '2B', + }, + vehicleClass: { + M: { + code: { + S: 'v', + }, + description: { + S: 'heavy goods vehicle', + }, + }, + }, + vehicleConfiguration: { + S: 'centre axle drawbar', + }, + vehicleSubclass: { + L: [ + { + S: 'string', + }, + ], + }, + vehicleType: { + S: 'hgv', + }, + }, + }, + ], + }, + }, + }, +}; + +const dbRecordNew = { + dynamodb: { + NewImage: { + systemNumber: { + S: '11000017', + }, + createdTimestamp: { + S: '2019-06-24T10:26:54.903Z', + }, + partialVin: { + S: '957486', + }, + primaryVrm: { + S: 'AD35GHT', + }, + secondaryVrms: { + L: [ + { + S: 'CT96DRG', + }, + ], + }, + techRecord_axles_0_axleNumber: { + N: '1', + }, + techRecord_axles_0_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_0_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_0_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_0_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_0_tyres_tyreCode: { + N: '1234', + }, + techRecord_axles_0_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_0_weights_designWeight: { + N: '1800', + }, + techRecord_axles_0_weights_gbWeight: { + N: '1400', + }, + techRecord_axles_1_axleNumber: { + N: '2', + }, + techRecord_axles_1_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_1_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_1_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_1_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_1_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_1_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_1_weights_designWeight: { + N: '1900', + }, + techRecord_axles_1_weights_gbWeight: { + N: '1600', + }, + techRecord_axles_2_axleNumber: { + N: '3', + }, + techRecord_axles_2_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_2_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_2_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_2_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_2_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_2_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_2_weights_designWeight: { + N: '1900', + }, + techRecord_axles_2_weights_gbWeight: { + N: '1600', + }, + techRecord_axles_3_axleNumber: { + N: '4', + }, + techRecord_axles_3_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_3_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_3_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_3_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_3_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_3_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_3_weights_designWeight: { + N: '1900', + }, + techRecord_axles_3_weights_gbWeight: { + N: '1600', + }, + techRecord_axles_4_axleNumber: { + N: '5', + }, + techRecord_axles_4_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_4_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_4_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_4_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_4_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_4_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_4_weights_designWeight: { + N: '1900', + }, + techRecord_axles_4_weights_gbWeight: { + N: '1600', + }, + techRecord_bodyType_code: { + S: 'r', + }, + techRecord_bodyType_description: { + S: 'refuse', + }, + techRecord_brakeCode: { + S: '178202', + }, + techRecord_brakes_antilockBrakingSystem: { + BOOL: true, + }, + techRecord_brakes_brakeCode: { + S: '123', + }, + techRecord_brakes_brakeCodeOriginal: { + S: '12412', + }, + techRecord_brakes_brakeForceWheelsNotLocked_parkingBrakeForceA: { + N: '2332', + }, + techRecord_brakes_brakeForceWheelsNotLocked_secondaryBrakeForceA: { + N: '2512', + }, + techRecord_brakes_brakeForceWheelsNotLocked_serviceBrakeForceA: { + N: '6424', + }, + techRecord_brakes_brakeForceWheelsUpToHalfLocked_parkingBrakeForceB: { + N: '3512', + }, + techRecord_brakes_brakeForceWheelsUpToHalfLocked_secondaryBrakeForceB: { + N: '2512', + }, + techRecord_brakes_brakeForceWheelsUpToHalfLocked_serviceBrakeForceB: { + N: '5521', + }, + techRecord_brakes_dataTrBrakeOne: { + S: 'None', + }, + techRecord_brakes_dataTrBrakeThree: { + S: 'None', + }, + techRecord_brakes_dataTrBrakeTwo: { + S: 'None', + }, + techRecord_brakes_dtpNumber: { + S: 'sdgs', + }, + techRecord_brakes_loadSensingValve: { + BOOL: true, + }, + techRecord_brakes_retarderBrakeOne: { + S: 'electric', + }, + techRecord_brakes_retarderBrakeTwo: { + S: 'exhaust', + }, + techRecord_conversionRefNo: { + S: '7891234', + }, + techRecord_createdAt: { + S: '2019-06-24T10:26:54.903Z', + }, + techRecord_dimensions_length: { + N: '7500', + }, + techRecord_dimensions_width: { + N: '2200', + }, + techRecord_drawbarCouplingFitted: { + BOOL: true, + }, + techRecord_euroStandard: { + S: '7', + }, + techRecord_frontVehicleTo5thWheelCouplingMax: { + N: '1900', + }, + techRecord_frontVehicleTo5thWheelCouplingMin: { + N: '1700', + }, + techRecord_frontAxleTo5thWheelMax: { + N: '1500', + }, + techRecord_frontAxleTo5thWheelMin: { + N: '1200', + }, + techRecord_functionCode: { + S: 'A', + }, + techRecord_grossKerbWeight: { + N: '2500', + }, + techRecord_grossLadenWeight: { + N: '3000', + }, + techRecord_lastUpdatedAt: { + S: '2019-06-24T10:28:58.999Z', + }, + techRecord_make: { + S: 'Isuzu', + }, + techRecord_manufactureYear: { + N: '2018', + }, + techRecord_maxTrainDesignWeight: { + N: '500', + }, + techRecord_maxTrainGbWeight: { + N: '1000', + }, + techRecord_model: { + S: 'FM', + }, + techRecord_noOfAxles: { + N: '5', + }, + techRecord_notes: { + S: 'test notes', + }, + techRecord_ntaNumber: { + S: '123456', + }, + techRecord_numberOfWheelsDriven: { + NULL: true, + }, + techRecord_reasonForCreation: { + S: 'new vehicle', + }, + techRecord_recordCompleteness: { + S: 'complete', + }, + techRecord_regnDate: { + S: '2019-06-24', + }, + techRecord_roadFriendly: { + BOOL: true, + }, + techRecord_speedLimiterMrk: { + BOOL: true, + }, + techRecord_statusCode: { + S: 'current', + }, + techRecord_tachoExemptMrk: { + BOOL: true, + }, + techRecord_trainDesignWeight: { + N: '2000', + }, + techRecord_trainGbWeight: { + N: '1500', + }, + techRecord_tyreUseCode: { + S: '2B', + }, + techRecord_vehicleClass_code: { + S: 'v', + }, + techRecord_vehicleClass_description: { + S: 'heavy goods vehicle', + }, + techRecord_vehicleConfiguration: { + S: 'centre axle drawbar', + }, + techRecord_vehicleSubclass_0: { + S: 'string', + }, + techRecord_vehicleType: { + S: 'hgv', + }, + vin: { + S: 'P012301957486', + }, + }, + }, +}; + +describe('transformTechRecord', () => { + it('should transform tech record', () => { + transformTechRecord(dbRecordNew); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const result = DynamoDB.Converter.unmarshall(dbRecordNew.dynamodb.NewImage); + + expect(result.systemNumber).toBeTruthy(); + expect(result.vin).toBeTruthy(); + expect(result.partialVin).toBeTruthy(); + expect(result.primaryVrm).toBeTruthy(); + expect(Array.isArray(result.secondaryVrms)).toBeTruthy(); + expect(Array.isArray(result.techRecord)).toBeTruthy(); + expect(dbRecordOld).toEqual(dbRecordNew); + }); +}); From 5427b65f941ba90f307ed1bdda3a24752b31fb79 Mon Sep 17 00:00:00 2001 From: Nathan Brown Date: Mon, 3 Jun 2024 12:55:54 +0100 Subject: [PATCH 12/20] Revert "feature(cb2-11817): sns/sqs and event bridge for tech records (#102)" (#105) --- src/functions/process-stream-event.ts | 19 +- src/utils/transform-tech-record.ts | 73 -- ...nto-service-document-conversion.intTest.ts | 116 ++- ...tech-record-document-conversion.intTest.ts | 42 +- ...-results-conversion-with-delete.intTest.ts | 100 +-- ...-results-conversion-with-upsert.intTest.ts | 98 +-- .../process-stream-event.unitTest.ts | 56 +- tests/utils/transform-tech-record.unitTest.ts | 787 ------------------ 8 files changed, 184 insertions(+), 1107 deletions(-) delete mode 100644 src/utils/transform-tech-record.ts delete mode 100644 tests/utils/transform-tech-record.unitTest.ts diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index b2a0b03..2f1640c 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -1,4 +1,3 @@ -import { _Record } from '@aws-sdk/client-dynamodb-streams'; import type { Context, DynamoDBRecord, @@ -7,13 +6,12 @@ import type { SQSEvent, StreamRecord, } from 'aws-lambda'; -import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; -import { destroyConnectionPool } from '../services/connection-pool'; -import { DynamoDbImage } from '../services/dynamodb-images'; import { convert } from '../services/entity-conversion'; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { deriveSqlOperation, SqlOperation } from '../services/sql-operations'; +import { destroyConnectionPool } from '../services/connection-pool'; import { debugLog } from '../services/logger'; -import { SqlOperation, deriveSqlOperation } from '../services/sql-operations'; -import { transformTechRecord } from '../utils/transform-tech-record'; +import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; /** * λ function: convert a DynamoDB document to Aurora RDS rows @@ -44,7 +42,9 @@ export const processStreamEvent: Handler = async ( for await (const record of event.Records) { const id = record.messageId; - const dynamoRecord: DynamoDBRecord = JSON.parse(JSON.parse(record.body).Message) as DynamoDBRecord; + const dynamoRecord: DynamoDBRecord = JSON.parse( + record.body, + ) as DynamoDBRecord; debugLog('Original DynamoDB stream event body (parsed): ', dynamoRecord); @@ -55,11 +55,6 @@ export const processStreamEvent: Handler = async ( dynamoRecord.eventSourceARN!, ); - if (tableName.includes('flat-tech-records')) { - transformTechRecord(dynamoRecord as _Record); - debugLog(`Dynamo Record after transformation: ${dynamoRecord}`); - } - // is this an INSERT, UPDATE, or DELETE? const operationType: SqlOperation = deriveSqlOperation( dynamoRecord.eventName!, diff --git a/src/utils/transform-tech-record.ts b/src/utils/transform-tech-record.ts deleted file mode 100644 index a7a9027..0000000 --- a/src/utils/transform-tech-record.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { _Record } from '@aws-sdk/client-dynamodb-streams'; -import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; -import { debugLog } from '../services/logger'; - -interface LegacyKeyStructure { - [index: string]: string | boolean | number | Array | Array | LegacyKeyStructure; -} - -interface NewKeyStructure { - [index: string]: string | boolean | number | Array; -} - -interface LegacyTechRecord extends LegacyKeyStructure { - techRecord: LegacyKeyStructure[] -} - -const nestItem = (record: LegacyKeyStructure, key: string, value: string | number | boolean | string[], position: number) => { - const idx = key.indexOf('_', position); - - if (idx === -1) { - record[key.substring(position)] = value; - return; - } - const realKey = key.substring(position, idx); - const isArray = !isNaN(parseInt(key[idx + 1])); - - if (!record[realKey.toString()]) { - if (isArray) { - record[realKey.toString()] = []; - } else { - record[realKey.toString()] = {}; - } - } - - nestItem(record[realKey.toString()] as LegacyKeyStructure, key, value, idx + 1); - return record; -}; - -const transformImage = (image: NewKeyStructure) => { - const vehicle = {} as LegacyTechRecord; - vehicle.techRecord = []; - - const legacyRecord = {} as LegacyKeyStructure; - - for (const [key, value] of Object.entries(image)) { - if (key.indexOf('_') === -1 && !vehicle[key.toString()]) { - vehicle[key.toString()] = value; - continue; - } - nestItem(legacyRecord, key, value, 0); - } - - delete vehicle.createdTimestamp; - - vehicle.techRecord.push(legacyRecord.techRecord as LegacyKeyStructure); - - return (marshall(vehicle)); -}; - -export const transformTechRecord = (record: _Record) => { - if (record.dynamodb?.OldImage) { - debugLog('Transforming old image of flat-tech-record'); - const OldImage: NewKeyStructure = unmarshall(record.dynamodb.OldImage); - record.dynamodb.OldImage = transformImage(OldImage); - } - - if (record.dynamodb?.NewImage) { - debugLog('Transforming new image of flat-tech-record'); - const NewImage: NewKeyStructure = unmarshall(record.dynamodb.NewImage); - record.dynamodb.NewImage = transformImage(NewImage); - } - debugLog('Succesfully transformed flat-tech-record stream record'); -}; diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index 839cfb5..2712d02 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -71,14 +71,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -166,14 +164,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -244,14 +240,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -301,14 +295,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -383,14 +375,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -443,14 +433,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -505,14 +493,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -586,16 +572,14 @@ describe('convertTechRecordDocument() integration tests', () => { const event = { Records: [ { - body: JSON.stringify( { - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), - }) + body: JSON.stringify({ + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }, ], }; diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index f616d23..19bbb5f 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -43,14 +43,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJson, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJson, + }, }), }, ], @@ -606,14 +604,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -654,14 +650,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index 277412c..6decab8 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -71,14 +71,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -346,14 +344,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -646,14 +642,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: serializedJSONb, + }, }), }, ], @@ -938,16 +932,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }), + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: serializedJSONb, + }, }), - } + }, ], }; @@ -1209,14 +1201,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, }), }, ], @@ -1529,14 +1519,12 @@ describe('convertTestResults() integration tests with delete', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, }), }, ], @@ -1575,14 +1563,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, }), }, ], diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index d0a3f5b..aeeed17 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -71,14 +71,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -346,14 +344,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -646,14 +642,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: serializedJSONb, + }, }), }, ], @@ -938,14 +932,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: serializedJSONb, + }, }), }, ], @@ -1209,14 +1201,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, }), }, ], @@ -1529,14 +1519,12 @@ describe('convertTestResults() integration tests with upsert', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, }), }, ], @@ -1575,14 +1563,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, - }) + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, }), }, ], diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 4ca7157..776ddfe 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -23,14 +23,12 @@ describe('processStreamEvent()', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: 'INSERT', + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, ], @@ -189,40 +187,34 @@ describe('processStreamEvent()', () => { { messageId: 'SUCCESS', body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: 'INSERT', + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, { messageId: 'FAILURE', body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: 'INSERT', + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, { messageId: 'SUCCESS', body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: 'INSERT', + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, ], diff --git a/tests/utils/transform-tech-record.unitTest.ts b/tests/utils/transform-tech-record.unitTest.ts deleted file mode 100644 index c5ec555..0000000 --- a/tests/utils/transform-tech-record.unitTest.ts +++ /dev/null @@ -1,787 +0,0 @@ -import { DynamoDBRecord } from 'aws-lambda'; -import { DynamoDB } from 'aws-sdk'; -import { transformTechRecord } from '../../src/utils/transform-tech-record'; - -const dbRecordOld: DynamoDBRecord = { - dynamodb: { - NewImage: { - systemNumber: { - S: '11000017', - }, - vin: { - S: 'P012301957486', - }, - partialVin: { - S: '957486', - }, - primaryVrm: { - S: 'AD35GHT', - }, - secondaryVrms: { - L: [ - { - S: 'CT96DRG', - }, - ], - }, - techRecord: { - L: [ - { - M: { - axles: { - L: [ - { - M: { - axleNumber: { - N: '1', - }, - tyres: { - M: { - dataTrAxles: { - N: '345', - }, - fitmentCode: { - S: 'single', - }, - plyRating: { - S: 'AB', - }, - speedCategorySymbol: { - S: 'a7', - }, - tyreCode: { - N: '1234', - }, - tyreSize: { - S: '9.23648E+11', - }, - }, - }, - weights: { - M: { - designWeight: { - N: '1800', - }, - gbWeight: { - N: '1400', - }, - }, - }, - }, - }, - { - M: { - axleNumber: { - N: '2', - }, - tyres: { - M: { - dataTrAxles: { - N: '345', - }, - fitmentCode: { - S: 'single', - }, - plyRating: { - S: 'AB', - }, - speedCategorySymbol: { - S: 'a7', - }, - tyreCode: { - N: '5678', - }, - tyreSize: { - S: '9.23648E+11', - }, - }, - }, - weights: { - M: { - designWeight: { - N: '1900', - }, - gbWeight: { - N: '1600', - }, - }, - }, - }, - }, - { - M: { - axleNumber: { - N: '3', - }, - tyres: { - M: { - dataTrAxles: { - N: '345', - }, - fitmentCode: { - S: 'single', - }, - plyRating: { - S: 'AB', - }, - speedCategorySymbol: { - S: 'a7', - }, - tyreCode: { - N: '5678', - }, - tyreSize: { - S: '9.23648E+11', - }, - }, - }, - weights: { - M: { - designWeight: { - N: '1900', - }, - gbWeight: { - N: '1600', - }, - }, - }, - }, - }, - { - M: { - axleNumber: { - N: '4', - }, - tyres: { - M: { - dataTrAxles: { - N: '345', - }, - fitmentCode: { - S: 'single', - }, - plyRating: { - S: 'AB', - }, - speedCategorySymbol: { - S: 'a7', - }, - tyreCode: { - N: '5678', - }, - tyreSize: { - S: '9.23648E+11', - }, - }, - }, - weights: { - M: { - designWeight: { - N: '1900', - }, - gbWeight: { - N: '1600', - }, - }, - }, - }, - }, - { - M: { - axleNumber: { - N: '5', - }, - tyres: { - M: { - dataTrAxles: { - N: '345', - }, - fitmentCode: { - S: 'single', - }, - plyRating: { - S: 'AB', - }, - speedCategorySymbol: { - S: 'a7', - }, - tyreCode: { - N: '5678', - }, - tyreSize: { - S: '9.23648E+11', - }, - }, - }, - weights: { - M: { - designWeight: { - N: '1900', - }, - gbWeight: { - N: '1600', - }, - }, - }, - }, - }, - ], - }, - bodyType: { - M: { - code: { - S: 'r', - }, - description: { - S: 'refuse', - }, - }, - }, - brakeCode: { - S: '178202', - }, - brakes: { - M: { - antilockBrakingSystem: { - BOOL: true, - }, - brakeCode: { - S: '123', - }, - brakeCodeOriginal: { - S: '12412', - }, - brakeForceWheelsNotLocked: { - M: { - parkingBrakeForceA: { - N: '2332', - }, - secondaryBrakeForceA: { - N: '2512', - }, - serviceBrakeForceA: { - N: '6424', - }, - }, - }, - brakeForceWheelsUpToHalfLocked: { - M: { - parkingBrakeForceB: { - N: '3512', - }, - secondaryBrakeForceB: { - N: '2512', - }, - serviceBrakeForceB: { - N: '5521', - }, - }, - }, - dataTrBrakeOne: { - S: 'None', - }, - dataTrBrakeThree: { - S: 'None', - }, - dataTrBrakeTwo: { - S: 'None', - }, - dtpNumber: { - S: 'sdgs', - }, - loadSensingValve: { - BOOL: true, - }, - retarderBrakeOne: { - S: 'electric', - }, - retarderBrakeTwo: { - S: 'exhaust', - }, - }, - }, - conversionRefNo: { - S: '7891234', - }, - createdAt: { - S: '2019-06-24T10:26:54.903Z', - }, - dimensions: { - M: { - length: { - N: '7500', - }, - width: { - N: '2200', - }, - }, - }, - drawbarCouplingFitted: { - BOOL: true, - }, - euroStandard: { - S: '7', - }, - frontVehicleTo5thWheelCouplingMax: { - N: '1900', - }, - frontVehicleTo5thWheelCouplingMin: { - N: '1700', - }, - frontAxleTo5thWheelMax: { - N: '1500', - }, - frontAxleTo5thWheelMin: { - N: '1200', - }, - functionCode: { - S: 'A', - }, - grossKerbWeight: { - N: '2500', - }, - grossLadenWeight: { - N: '3000', - }, - lastUpdatedAt: { - S: '2019-06-24T10:28:58.999Z', - }, - make: { - S: 'Isuzu', - }, - manufactureYear: { - N: '2018', - }, - maxTrainDesignWeight: { - N: '500', - }, - maxTrainGbWeight: { - N: '1000', - }, - model: { - S: 'FM', - }, - noOfAxles: { - N: '5', - }, - notes: { - S: 'test notes', - }, - ntaNumber: { - S: '123456', - }, - numberOfWheelsDriven: { - NULL: true, - }, - reasonForCreation: { - S: 'new vehicle', - }, - recordCompleteness: { - S: 'complete', - }, - regnDate: { - S: '2019-06-24', - }, - roadFriendly: { - BOOL: true, - }, - speedLimiterMrk: { - BOOL: true, - }, - statusCode: { - S: 'current', - }, - tachoExemptMrk: { - BOOL: true, - }, - trainDesignWeight: { - N: '2000', - }, - trainGbWeight: { - N: '1500', - }, - tyreUseCode: { - S: '2B', - }, - vehicleClass: { - M: { - code: { - S: 'v', - }, - description: { - S: 'heavy goods vehicle', - }, - }, - }, - vehicleConfiguration: { - S: 'centre axle drawbar', - }, - vehicleSubclass: { - L: [ - { - S: 'string', - }, - ], - }, - vehicleType: { - S: 'hgv', - }, - }, - }, - ], - }, - }, - }, -}; - -const dbRecordNew = { - dynamodb: { - NewImage: { - systemNumber: { - S: '11000017', - }, - createdTimestamp: { - S: '2019-06-24T10:26:54.903Z', - }, - partialVin: { - S: '957486', - }, - primaryVrm: { - S: 'AD35GHT', - }, - secondaryVrms: { - L: [ - { - S: 'CT96DRG', - }, - ], - }, - techRecord_axles_0_axleNumber: { - N: '1', - }, - techRecord_axles_0_tyres_dataTrAxles: { - N: '345', - }, - techRecord_axles_0_tyres_fitmentCode: { - S: 'single', - }, - techRecord_axles_0_tyres_plyRating: { - S: 'AB', - }, - techRecord_axles_0_tyres_speedCategorySymbol: { - S: 'a7', - }, - techRecord_axles_0_tyres_tyreCode: { - N: '1234', - }, - techRecord_axles_0_tyres_tyreSize: { - S: '9.23648E+11', - }, - techRecord_axles_0_weights_designWeight: { - N: '1800', - }, - techRecord_axles_0_weights_gbWeight: { - N: '1400', - }, - techRecord_axles_1_axleNumber: { - N: '2', - }, - techRecord_axles_1_tyres_dataTrAxles: { - N: '345', - }, - techRecord_axles_1_tyres_fitmentCode: { - S: 'single', - }, - techRecord_axles_1_tyres_plyRating: { - S: 'AB', - }, - techRecord_axles_1_tyres_speedCategorySymbol: { - S: 'a7', - }, - techRecord_axles_1_tyres_tyreCode: { - N: '5678', - }, - techRecord_axles_1_tyres_tyreSize: { - S: '9.23648E+11', - }, - techRecord_axles_1_weights_designWeight: { - N: '1900', - }, - techRecord_axles_1_weights_gbWeight: { - N: '1600', - }, - techRecord_axles_2_axleNumber: { - N: '3', - }, - techRecord_axles_2_tyres_dataTrAxles: { - N: '345', - }, - techRecord_axles_2_tyres_fitmentCode: { - S: 'single', - }, - techRecord_axles_2_tyres_plyRating: { - S: 'AB', - }, - techRecord_axles_2_tyres_speedCategorySymbol: { - S: 'a7', - }, - techRecord_axles_2_tyres_tyreCode: { - N: '5678', - }, - techRecord_axles_2_tyres_tyreSize: { - S: '9.23648E+11', - }, - techRecord_axles_2_weights_designWeight: { - N: '1900', - }, - techRecord_axles_2_weights_gbWeight: { - N: '1600', - }, - techRecord_axles_3_axleNumber: { - N: '4', - }, - techRecord_axles_3_tyres_dataTrAxles: { - N: '345', - }, - techRecord_axles_3_tyres_fitmentCode: { - S: 'single', - }, - techRecord_axles_3_tyres_plyRating: { - S: 'AB', - }, - techRecord_axles_3_tyres_speedCategorySymbol: { - S: 'a7', - }, - techRecord_axles_3_tyres_tyreCode: { - N: '5678', - }, - techRecord_axles_3_tyres_tyreSize: { - S: '9.23648E+11', - }, - techRecord_axles_3_weights_designWeight: { - N: '1900', - }, - techRecord_axles_3_weights_gbWeight: { - N: '1600', - }, - techRecord_axles_4_axleNumber: { - N: '5', - }, - techRecord_axles_4_tyres_dataTrAxles: { - N: '345', - }, - techRecord_axles_4_tyres_fitmentCode: { - S: 'single', - }, - techRecord_axles_4_tyres_plyRating: { - S: 'AB', - }, - techRecord_axles_4_tyres_speedCategorySymbol: { - S: 'a7', - }, - techRecord_axles_4_tyres_tyreCode: { - N: '5678', - }, - techRecord_axles_4_tyres_tyreSize: { - S: '9.23648E+11', - }, - techRecord_axles_4_weights_designWeight: { - N: '1900', - }, - techRecord_axles_4_weights_gbWeight: { - N: '1600', - }, - techRecord_bodyType_code: { - S: 'r', - }, - techRecord_bodyType_description: { - S: 'refuse', - }, - techRecord_brakeCode: { - S: '178202', - }, - techRecord_brakes_antilockBrakingSystem: { - BOOL: true, - }, - techRecord_brakes_brakeCode: { - S: '123', - }, - techRecord_brakes_brakeCodeOriginal: { - S: '12412', - }, - techRecord_brakes_brakeForceWheelsNotLocked_parkingBrakeForceA: { - N: '2332', - }, - techRecord_brakes_brakeForceWheelsNotLocked_secondaryBrakeForceA: { - N: '2512', - }, - techRecord_brakes_brakeForceWheelsNotLocked_serviceBrakeForceA: { - N: '6424', - }, - techRecord_brakes_brakeForceWheelsUpToHalfLocked_parkingBrakeForceB: { - N: '3512', - }, - techRecord_brakes_brakeForceWheelsUpToHalfLocked_secondaryBrakeForceB: { - N: '2512', - }, - techRecord_brakes_brakeForceWheelsUpToHalfLocked_serviceBrakeForceB: { - N: '5521', - }, - techRecord_brakes_dataTrBrakeOne: { - S: 'None', - }, - techRecord_brakes_dataTrBrakeThree: { - S: 'None', - }, - techRecord_brakes_dataTrBrakeTwo: { - S: 'None', - }, - techRecord_brakes_dtpNumber: { - S: 'sdgs', - }, - techRecord_brakes_loadSensingValve: { - BOOL: true, - }, - techRecord_brakes_retarderBrakeOne: { - S: 'electric', - }, - techRecord_brakes_retarderBrakeTwo: { - S: 'exhaust', - }, - techRecord_conversionRefNo: { - S: '7891234', - }, - techRecord_createdAt: { - S: '2019-06-24T10:26:54.903Z', - }, - techRecord_dimensions_length: { - N: '7500', - }, - techRecord_dimensions_width: { - N: '2200', - }, - techRecord_drawbarCouplingFitted: { - BOOL: true, - }, - techRecord_euroStandard: { - S: '7', - }, - techRecord_frontVehicleTo5thWheelCouplingMax: { - N: '1900', - }, - techRecord_frontVehicleTo5thWheelCouplingMin: { - N: '1700', - }, - techRecord_frontAxleTo5thWheelMax: { - N: '1500', - }, - techRecord_frontAxleTo5thWheelMin: { - N: '1200', - }, - techRecord_functionCode: { - S: 'A', - }, - techRecord_grossKerbWeight: { - N: '2500', - }, - techRecord_grossLadenWeight: { - N: '3000', - }, - techRecord_lastUpdatedAt: { - S: '2019-06-24T10:28:58.999Z', - }, - techRecord_make: { - S: 'Isuzu', - }, - techRecord_manufactureYear: { - N: '2018', - }, - techRecord_maxTrainDesignWeight: { - N: '500', - }, - techRecord_maxTrainGbWeight: { - N: '1000', - }, - techRecord_model: { - S: 'FM', - }, - techRecord_noOfAxles: { - N: '5', - }, - techRecord_notes: { - S: 'test notes', - }, - techRecord_ntaNumber: { - S: '123456', - }, - techRecord_numberOfWheelsDriven: { - NULL: true, - }, - techRecord_reasonForCreation: { - S: 'new vehicle', - }, - techRecord_recordCompleteness: { - S: 'complete', - }, - techRecord_regnDate: { - S: '2019-06-24', - }, - techRecord_roadFriendly: { - BOOL: true, - }, - techRecord_speedLimiterMrk: { - BOOL: true, - }, - techRecord_statusCode: { - S: 'current', - }, - techRecord_tachoExemptMrk: { - BOOL: true, - }, - techRecord_trainDesignWeight: { - N: '2000', - }, - techRecord_trainGbWeight: { - N: '1500', - }, - techRecord_tyreUseCode: { - S: '2B', - }, - techRecord_vehicleClass_code: { - S: 'v', - }, - techRecord_vehicleClass_description: { - S: 'heavy goods vehicle', - }, - techRecord_vehicleConfiguration: { - S: 'centre axle drawbar', - }, - techRecord_vehicleSubclass_0: { - S: 'string', - }, - techRecord_vehicleType: { - S: 'hgv', - }, - vin: { - S: 'P012301957486', - }, - }, - }, -}; - -describe('transformTechRecord', () => { - it('should transform tech record', () => { - transformTechRecord(dbRecordNew); - - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - const result = DynamoDB.Converter.unmarshall(dbRecordNew.dynamodb.NewImage); - - expect(result.systemNumber).toBeTruthy(); - expect(result.vin).toBeTruthy(); - expect(result.partialVin).toBeTruthy(); - expect(result.primaryVrm).toBeTruthy(); - expect(Array.isArray(result.secondaryVrms)).toBeTruthy(); - expect(Array.isArray(result.techRecord)).toBeTruthy(); - expect(dbRecordOld).toEqual(dbRecordNew); - }); -}); From 0cffb0334a83b430decd336adc629d1b85c80572 Mon Sep 17 00:00:00 2001 From: Nathan Brown Date: Thu, 6 Jun 2024 12:09:25 +0100 Subject: [PATCH 13/20] =?UTF-8?q?Revert=20"Revert=20"feature(cb2-11817):?= =?UTF-8?q?=20sns/sqs=20and=20event=20bridge=20for=20tech=20records?= =?UTF-8?q?=E2=80=A6"=20(#110)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 5427b65f941ba90f307ed1bdda3a24752b31fb79. --- src/functions/process-stream-event.ts | 19 +- src/utils/transform-tech-record.ts | 73 ++ ...nto-service-document-conversion.intTest.ts | 116 +-- ...tech-record-document-conversion.intTest.ts | 42 +- ...-results-conversion-with-delete.intTest.ts | 100 ++- ...-results-conversion-with-upsert.intTest.ts | 98 ++- .../process-stream-event.unitTest.ts | 56 +- tests/utils/transform-tech-record.unitTest.ts | 787 ++++++++++++++++++ 8 files changed, 1107 insertions(+), 184 deletions(-) create mode 100644 src/utils/transform-tech-record.ts create mode 100644 tests/utils/transform-tech-record.unitTest.ts diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index 2f1640c..b2a0b03 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -1,3 +1,4 @@ +import { _Record } from '@aws-sdk/client-dynamodb-streams'; import type { Context, DynamoDBRecord, @@ -6,12 +7,13 @@ import type { SQSEvent, StreamRecord, } from 'aws-lambda'; -import { convert } from '../services/entity-conversion'; -import { DynamoDbImage } from '../services/dynamodb-images'; -import { deriveSqlOperation, SqlOperation } from '../services/sql-operations'; +import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; import { destroyConnectionPool } from '../services/connection-pool'; +import { DynamoDbImage } from '../services/dynamodb-images'; +import { convert } from '../services/entity-conversion'; import { debugLog } from '../services/logger'; -import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; +import { SqlOperation, deriveSqlOperation } from '../services/sql-operations'; +import { transformTechRecord } from '../utils/transform-tech-record'; /** * λ function: convert a DynamoDB document to Aurora RDS rows @@ -42,9 +44,7 @@ export const processStreamEvent: Handler = async ( for await (const record of event.Records) { const id = record.messageId; - const dynamoRecord: DynamoDBRecord = JSON.parse( - record.body, - ) as DynamoDBRecord; + const dynamoRecord: DynamoDBRecord = JSON.parse(JSON.parse(record.body).Message) as DynamoDBRecord; debugLog('Original DynamoDB stream event body (parsed): ', dynamoRecord); @@ -55,6 +55,11 @@ export const processStreamEvent: Handler = async ( dynamoRecord.eventSourceARN!, ); + if (tableName.includes('flat-tech-records')) { + transformTechRecord(dynamoRecord as _Record); + debugLog(`Dynamo Record after transformation: ${dynamoRecord}`); + } + // is this an INSERT, UPDATE, or DELETE? const operationType: SqlOperation = deriveSqlOperation( dynamoRecord.eventName!, diff --git a/src/utils/transform-tech-record.ts b/src/utils/transform-tech-record.ts new file mode 100644 index 0000000..a7a9027 --- /dev/null +++ b/src/utils/transform-tech-record.ts @@ -0,0 +1,73 @@ +import { _Record } from '@aws-sdk/client-dynamodb-streams'; +import { marshall, unmarshall } from '@aws-sdk/util-dynamodb'; +import { debugLog } from '../services/logger'; + +interface LegacyKeyStructure { + [index: string]: string | boolean | number | Array | Array | LegacyKeyStructure; +} + +interface NewKeyStructure { + [index: string]: string | boolean | number | Array; +} + +interface LegacyTechRecord extends LegacyKeyStructure { + techRecord: LegacyKeyStructure[] +} + +const nestItem = (record: LegacyKeyStructure, key: string, value: string | number | boolean | string[], position: number) => { + const idx = key.indexOf('_', position); + + if (idx === -1) { + record[key.substring(position)] = value; + return; + } + const realKey = key.substring(position, idx); + const isArray = !isNaN(parseInt(key[idx + 1])); + + if (!record[realKey.toString()]) { + if (isArray) { + record[realKey.toString()] = []; + } else { + record[realKey.toString()] = {}; + } + } + + nestItem(record[realKey.toString()] as LegacyKeyStructure, key, value, idx + 1); + return record; +}; + +const transformImage = (image: NewKeyStructure) => { + const vehicle = {} as LegacyTechRecord; + vehicle.techRecord = []; + + const legacyRecord = {} as LegacyKeyStructure; + + for (const [key, value] of Object.entries(image)) { + if (key.indexOf('_') === -1 && !vehicle[key.toString()]) { + vehicle[key.toString()] = value; + continue; + } + nestItem(legacyRecord, key, value, 0); + } + + delete vehicle.createdTimestamp; + + vehicle.techRecord.push(legacyRecord.techRecord as LegacyKeyStructure); + + return (marshall(vehicle)); +}; + +export const transformTechRecord = (record: _Record) => { + if (record.dynamodb?.OldImage) { + debugLog('Transforming old image of flat-tech-record'); + const OldImage: NewKeyStructure = unmarshall(record.dynamodb.OldImage); + record.dynamodb.OldImage = transformImage(OldImage); + } + + if (record.dynamodb?.NewImage) { + debugLog('Transforming new image of flat-tech-record'); + const NewImage: NewKeyStructure = unmarshall(record.dynamodb.NewImage); + record.dynamodb.NewImage = transformImage(NewImage); + } + debugLog('Succesfully transformed flat-tech-record stream record'); +}; diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index 2712d02..839cfb5 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -71,12 +71,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], @@ -164,12 +166,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -240,12 +244,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -295,12 +301,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -375,12 +383,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], @@ -433,12 +443,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -493,12 +505,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), }), }, ], @@ -572,14 +586,16 @@ describe('convertTechRecordDocument() integration tests', () => { const event = { Records: [ { - body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + body: JSON.stringify( { + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }), + }) }, ], }; diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index 19bbb5f..f616d23 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -43,12 +43,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJson, + }, + }) }), }, ], @@ -604,12 +606,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], @@ -650,12 +654,14 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, + }) }), }, ], diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index 6decab8..277412c 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -71,12 +71,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -344,12 +346,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -642,12 +646,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }) }), }, ], @@ -932,14 +938,16 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }), }), - }, + } ], }; @@ -1201,12 +1209,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, + }) }), }, ], @@ -1519,12 +1529,14 @@ describe('convertTestResults() integration tests with delete', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, + }) }), }, ], @@ -1563,12 +1575,14 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, + }) }), }, ], diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index aeeed17..d0a3f5b 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -71,12 +71,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -344,12 +346,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJson, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, + }) }), }, ], @@ -642,12 +646,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }) }), }, ], @@ -932,12 +938,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: serializedJSONb, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, + }) }), }, ], @@ -1201,12 +1209,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, + }) }), }, ], @@ -1519,12 +1529,14 @@ describe('convertTestResults() integration tests with upsert', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, + }) }), }, ], @@ -1563,12 +1575,14 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', - eventName: 'INSERT', - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, + Message: JSON.stringify({ + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, + }) }), }, ], diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 776ddfe..4ca7157 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -23,12 +23,14 @@ describe('processStreamEvent()', () => { Records: [ { body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, ], @@ -187,34 +189,40 @@ describe('processStreamEvent()', () => { { messageId: 'SUCCESS', body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, { messageId: 'FAILURE', body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, { messageId: 'SUCCESS', body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + Message: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + }) }), }, ], diff --git a/tests/utils/transform-tech-record.unitTest.ts b/tests/utils/transform-tech-record.unitTest.ts new file mode 100644 index 0000000..c5ec555 --- /dev/null +++ b/tests/utils/transform-tech-record.unitTest.ts @@ -0,0 +1,787 @@ +import { DynamoDBRecord } from 'aws-lambda'; +import { DynamoDB } from 'aws-sdk'; +import { transformTechRecord } from '../../src/utils/transform-tech-record'; + +const dbRecordOld: DynamoDBRecord = { + dynamodb: { + NewImage: { + systemNumber: { + S: '11000017', + }, + vin: { + S: 'P012301957486', + }, + partialVin: { + S: '957486', + }, + primaryVrm: { + S: 'AD35GHT', + }, + secondaryVrms: { + L: [ + { + S: 'CT96DRG', + }, + ], + }, + techRecord: { + L: [ + { + M: { + axles: { + L: [ + { + M: { + axleNumber: { + N: '1', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '1234', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1800', + }, + gbWeight: { + N: '1400', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '2', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '3', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '4', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + { + M: { + axleNumber: { + N: '5', + }, + tyres: { + M: { + dataTrAxles: { + N: '345', + }, + fitmentCode: { + S: 'single', + }, + plyRating: { + S: 'AB', + }, + speedCategorySymbol: { + S: 'a7', + }, + tyreCode: { + N: '5678', + }, + tyreSize: { + S: '9.23648E+11', + }, + }, + }, + weights: { + M: { + designWeight: { + N: '1900', + }, + gbWeight: { + N: '1600', + }, + }, + }, + }, + }, + ], + }, + bodyType: { + M: { + code: { + S: 'r', + }, + description: { + S: 'refuse', + }, + }, + }, + brakeCode: { + S: '178202', + }, + brakes: { + M: { + antilockBrakingSystem: { + BOOL: true, + }, + brakeCode: { + S: '123', + }, + brakeCodeOriginal: { + S: '12412', + }, + brakeForceWheelsNotLocked: { + M: { + parkingBrakeForceA: { + N: '2332', + }, + secondaryBrakeForceA: { + N: '2512', + }, + serviceBrakeForceA: { + N: '6424', + }, + }, + }, + brakeForceWheelsUpToHalfLocked: { + M: { + parkingBrakeForceB: { + N: '3512', + }, + secondaryBrakeForceB: { + N: '2512', + }, + serviceBrakeForceB: { + N: '5521', + }, + }, + }, + dataTrBrakeOne: { + S: 'None', + }, + dataTrBrakeThree: { + S: 'None', + }, + dataTrBrakeTwo: { + S: 'None', + }, + dtpNumber: { + S: 'sdgs', + }, + loadSensingValve: { + BOOL: true, + }, + retarderBrakeOne: { + S: 'electric', + }, + retarderBrakeTwo: { + S: 'exhaust', + }, + }, + }, + conversionRefNo: { + S: '7891234', + }, + createdAt: { + S: '2019-06-24T10:26:54.903Z', + }, + dimensions: { + M: { + length: { + N: '7500', + }, + width: { + N: '2200', + }, + }, + }, + drawbarCouplingFitted: { + BOOL: true, + }, + euroStandard: { + S: '7', + }, + frontVehicleTo5thWheelCouplingMax: { + N: '1900', + }, + frontVehicleTo5thWheelCouplingMin: { + N: '1700', + }, + frontAxleTo5thWheelMax: { + N: '1500', + }, + frontAxleTo5thWheelMin: { + N: '1200', + }, + functionCode: { + S: 'A', + }, + grossKerbWeight: { + N: '2500', + }, + grossLadenWeight: { + N: '3000', + }, + lastUpdatedAt: { + S: '2019-06-24T10:28:58.999Z', + }, + make: { + S: 'Isuzu', + }, + manufactureYear: { + N: '2018', + }, + maxTrainDesignWeight: { + N: '500', + }, + maxTrainGbWeight: { + N: '1000', + }, + model: { + S: 'FM', + }, + noOfAxles: { + N: '5', + }, + notes: { + S: 'test notes', + }, + ntaNumber: { + S: '123456', + }, + numberOfWheelsDriven: { + NULL: true, + }, + reasonForCreation: { + S: 'new vehicle', + }, + recordCompleteness: { + S: 'complete', + }, + regnDate: { + S: '2019-06-24', + }, + roadFriendly: { + BOOL: true, + }, + speedLimiterMrk: { + BOOL: true, + }, + statusCode: { + S: 'current', + }, + tachoExemptMrk: { + BOOL: true, + }, + trainDesignWeight: { + N: '2000', + }, + trainGbWeight: { + N: '1500', + }, + tyreUseCode: { + S: '2B', + }, + vehicleClass: { + M: { + code: { + S: 'v', + }, + description: { + S: 'heavy goods vehicle', + }, + }, + }, + vehicleConfiguration: { + S: 'centre axle drawbar', + }, + vehicleSubclass: { + L: [ + { + S: 'string', + }, + ], + }, + vehicleType: { + S: 'hgv', + }, + }, + }, + ], + }, + }, + }, +}; + +const dbRecordNew = { + dynamodb: { + NewImage: { + systemNumber: { + S: '11000017', + }, + createdTimestamp: { + S: '2019-06-24T10:26:54.903Z', + }, + partialVin: { + S: '957486', + }, + primaryVrm: { + S: 'AD35GHT', + }, + secondaryVrms: { + L: [ + { + S: 'CT96DRG', + }, + ], + }, + techRecord_axles_0_axleNumber: { + N: '1', + }, + techRecord_axles_0_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_0_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_0_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_0_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_0_tyres_tyreCode: { + N: '1234', + }, + techRecord_axles_0_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_0_weights_designWeight: { + N: '1800', + }, + techRecord_axles_0_weights_gbWeight: { + N: '1400', + }, + techRecord_axles_1_axleNumber: { + N: '2', + }, + techRecord_axles_1_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_1_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_1_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_1_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_1_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_1_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_1_weights_designWeight: { + N: '1900', + }, + techRecord_axles_1_weights_gbWeight: { + N: '1600', + }, + techRecord_axles_2_axleNumber: { + N: '3', + }, + techRecord_axles_2_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_2_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_2_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_2_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_2_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_2_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_2_weights_designWeight: { + N: '1900', + }, + techRecord_axles_2_weights_gbWeight: { + N: '1600', + }, + techRecord_axles_3_axleNumber: { + N: '4', + }, + techRecord_axles_3_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_3_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_3_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_3_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_3_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_3_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_3_weights_designWeight: { + N: '1900', + }, + techRecord_axles_3_weights_gbWeight: { + N: '1600', + }, + techRecord_axles_4_axleNumber: { + N: '5', + }, + techRecord_axles_4_tyres_dataTrAxles: { + N: '345', + }, + techRecord_axles_4_tyres_fitmentCode: { + S: 'single', + }, + techRecord_axles_4_tyres_plyRating: { + S: 'AB', + }, + techRecord_axles_4_tyres_speedCategorySymbol: { + S: 'a7', + }, + techRecord_axles_4_tyres_tyreCode: { + N: '5678', + }, + techRecord_axles_4_tyres_tyreSize: { + S: '9.23648E+11', + }, + techRecord_axles_4_weights_designWeight: { + N: '1900', + }, + techRecord_axles_4_weights_gbWeight: { + N: '1600', + }, + techRecord_bodyType_code: { + S: 'r', + }, + techRecord_bodyType_description: { + S: 'refuse', + }, + techRecord_brakeCode: { + S: '178202', + }, + techRecord_brakes_antilockBrakingSystem: { + BOOL: true, + }, + techRecord_brakes_brakeCode: { + S: '123', + }, + techRecord_brakes_brakeCodeOriginal: { + S: '12412', + }, + techRecord_brakes_brakeForceWheelsNotLocked_parkingBrakeForceA: { + N: '2332', + }, + techRecord_brakes_brakeForceWheelsNotLocked_secondaryBrakeForceA: { + N: '2512', + }, + techRecord_brakes_brakeForceWheelsNotLocked_serviceBrakeForceA: { + N: '6424', + }, + techRecord_brakes_brakeForceWheelsUpToHalfLocked_parkingBrakeForceB: { + N: '3512', + }, + techRecord_brakes_brakeForceWheelsUpToHalfLocked_secondaryBrakeForceB: { + N: '2512', + }, + techRecord_brakes_brakeForceWheelsUpToHalfLocked_serviceBrakeForceB: { + N: '5521', + }, + techRecord_brakes_dataTrBrakeOne: { + S: 'None', + }, + techRecord_brakes_dataTrBrakeThree: { + S: 'None', + }, + techRecord_brakes_dataTrBrakeTwo: { + S: 'None', + }, + techRecord_brakes_dtpNumber: { + S: 'sdgs', + }, + techRecord_brakes_loadSensingValve: { + BOOL: true, + }, + techRecord_brakes_retarderBrakeOne: { + S: 'electric', + }, + techRecord_brakes_retarderBrakeTwo: { + S: 'exhaust', + }, + techRecord_conversionRefNo: { + S: '7891234', + }, + techRecord_createdAt: { + S: '2019-06-24T10:26:54.903Z', + }, + techRecord_dimensions_length: { + N: '7500', + }, + techRecord_dimensions_width: { + N: '2200', + }, + techRecord_drawbarCouplingFitted: { + BOOL: true, + }, + techRecord_euroStandard: { + S: '7', + }, + techRecord_frontVehicleTo5thWheelCouplingMax: { + N: '1900', + }, + techRecord_frontVehicleTo5thWheelCouplingMin: { + N: '1700', + }, + techRecord_frontAxleTo5thWheelMax: { + N: '1500', + }, + techRecord_frontAxleTo5thWheelMin: { + N: '1200', + }, + techRecord_functionCode: { + S: 'A', + }, + techRecord_grossKerbWeight: { + N: '2500', + }, + techRecord_grossLadenWeight: { + N: '3000', + }, + techRecord_lastUpdatedAt: { + S: '2019-06-24T10:28:58.999Z', + }, + techRecord_make: { + S: 'Isuzu', + }, + techRecord_manufactureYear: { + N: '2018', + }, + techRecord_maxTrainDesignWeight: { + N: '500', + }, + techRecord_maxTrainGbWeight: { + N: '1000', + }, + techRecord_model: { + S: 'FM', + }, + techRecord_noOfAxles: { + N: '5', + }, + techRecord_notes: { + S: 'test notes', + }, + techRecord_ntaNumber: { + S: '123456', + }, + techRecord_numberOfWheelsDriven: { + NULL: true, + }, + techRecord_reasonForCreation: { + S: 'new vehicle', + }, + techRecord_recordCompleteness: { + S: 'complete', + }, + techRecord_regnDate: { + S: '2019-06-24', + }, + techRecord_roadFriendly: { + BOOL: true, + }, + techRecord_speedLimiterMrk: { + BOOL: true, + }, + techRecord_statusCode: { + S: 'current', + }, + techRecord_tachoExemptMrk: { + BOOL: true, + }, + techRecord_trainDesignWeight: { + N: '2000', + }, + techRecord_trainGbWeight: { + N: '1500', + }, + techRecord_tyreUseCode: { + S: '2B', + }, + techRecord_vehicleClass_code: { + S: 'v', + }, + techRecord_vehicleClass_description: { + S: 'heavy goods vehicle', + }, + techRecord_vehicleConfiguration: { + S: 'centre axle drawbar', + }, + techRecord_vehicleSubclass_0: { + S: 'string', + }, + techRecord_vehicleType: { + S: 'hgv', + }, + vin: { + S: 'P012301957486', + }, + }, + }, +}; + +describe('transformTechRecord', () => { + it('should transform tech record', () => { + transformTechRecord(dbRecordNew); + + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + const result = DynamoDB.Converter.unmarshall(dbRecordNew.dynamodb.NewImage); + + expect(result.systemNumber).toBeTruthy(); + expect(result.vin).toBeTruthy(); + expect(result.partialVin).toBeTruthy(); + expect(result.primaryVrm).toBeTruthy(); + expect(Array.isArray(result.secondaryVrms)).toBeTruthy(); + expect(Array.isArray(result.techRecord)).toBeTruthy(); + expect(dbRecordOld).toEqual(dbRecordNew); + }); +}); From 43e5c0da675cd331997862548630b5ecb43859ed Mon Sep 17 00:00:00 2001 From: Kristian Carr <127743278+kcarr-bjss@users.noreply.github.com> Date: Fri, 14 Jun 2024 14:03:37 +0100 Subject: [PATCH 14/20] feat(cb2-12587): changed handler to deal with raw events instead of json encoded ones (#111) --- src/functions/process-stream-event.ts | 2 +- ...nto-service-document-conversion.intTest.ts | 100 ++++++++---------- ...tech-record-document-conversion.intTest.ts | 42 ++++---- ...-results-conversion-with-delete.intTest.ts | 98 ++++++++--------- ...-results-conversion-with-upsert.intTest.ts | 98 ++++++++--------- .../process-stream-event.unitTest.ts | 58 +++++----- 6 files changed, 170 insertions(+), 228 deletions(-) diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index b2a0b03..fbccff0 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -44,7 +44,7 @@ export const processStreamEvent: Handler = async ( for await (const record of event.Records) { const id = record.messageId; - const dynamoRecord: DynamoDBRecord = JSON.parse(JSON.parse(record.body).Message) as DynamoDBRecord; + const dynamoRecord: DynamoDBRecord = JSON.parse(record.body) as DynamoDBRecord; debugLog('Original DynamoDB stream event body (parsed): ', dynamoRecord); diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index 839cfb5..f67a851 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -71,14 +71,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -166,14 +164,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -244,14 +240,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -301,14 +295,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -383,14 +375,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ eventSourceARN: "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", eventName: "INSERT", dynamodb: { NewImage: techRecordDocumentJsonNew, }, - }) }), }, ], @@ -443,14 +433,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -505,14 +493,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -587,14 +573,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify( { - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }) }, ], diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index f616d23..4115ec9 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -43,14 +43,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJson, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJson, + }, }), }, ], @@ -606,14 +604,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -654,14 +650,12 @@ describe('convertTechRecordDocument() integration tests', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index 277412c..a466151 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -71,14 +71,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -346,14 +344,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -646,14 +642,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, }), }, ], @@ -938,14 +932,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }), + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, }), } ], @@ -1209,14 +1201,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, }), }, ], @@ -1529,14 +1519,12 @@ describe('convertTestResults() integration tests with delete', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, }), }, ], @@ -1575,14 +1563,12 @@ describe('convertTestResults() integration tests with delete', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, }), }, ], diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index d0a3f5b..b84104f 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -71,14 +71,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -346,14 +344,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJson, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJson, + }, }), }, ], @@ -646,14 +642,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, }), }, ], @@ -938,14 +932,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: serializedJSONb, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: serializedJSONb, + }, }), }, ], @@ -1209,14 +1201,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithTestTypes, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithTestTypes, + }, }), }, ], @@ -1529,14 +1519,12 @@ describe('convertTestResults() integration tests with upsert', () => { { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithNoSystemNumber, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithNoSystemNumber, + }, }), }, ], @@ -1575,14 +1563,12 @@ describe('convertTestResults() integration tests with upsert', () => { Records: [ { body: JSON.stringify({ - Message: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: testResultsJsonWithoutTestTypes, - }, - }) + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", + eventName: "INSERT", + dynamodb: { + NewImage: testResultsJsonWithoutTestTypes, + }, }), }, ], diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 4ca7157..2960f7e 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -22,15 +22,13 @@ describe('processStreamEvent()', () => { { Records: [ { - body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + body: JSON.stringify({ + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", }), }, ], @@ -189,40 +187,34 @@ describe('processStreamEvent()', () => { { messageId: 'SUCCESS', body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", }), }, { messageId: 'FAILURE', body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", }), }, { messageId: 'SUCCESS', body: JSON.stringify({ - Message: JSON.stringify({ - eventName: "INSERT", - dynamodb: { - NewImage: {}, - }, - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - }) + eventName: "INSERT", + dynamodb: { + NewImage: {}, + }, + eventSourceARN: + "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", }), }, ], From 36f886af38dba93c8bdd672b6f26d243a559a4af Mon Sep 17 00:00:00 2001 From: Nathan Brown Date: Thu, 20 Jun 2024 12:12:29 +0100 Subject: [PATCH 15/20] feat(cb2-1101): stringify event log (#113) --- src/functions/process-stream-event.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index fbccff0..907ecdd 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -29,7 +29,7 @@ export const processStreamEvent: Handler = async ( }; try { - debugLog('Received SQS event: ', event); + debugLog('Received SQS event: ', JSON.stringify(event)); validateEvent(event); From 2cb4d81ab8ed82422bd8106bdf54af0f083fc97c Mon Sep 17 00:00:00 2001 From: Nat-McCabe-BJSS <135129881+Nat-McCabe-BJSS@users.noreply.github.com> Date: Fri, 21 Jun 2024 14:41:04 +0100 Subject: [PATCH 16/20] Feature/cb2 11667 - Trailer entry into service column changes (#112) * fix: trailer entry into service fixes * fix: fixed auth into service unit test to line up with swapped columns * fix: using feature/cb2-11667 cvs-nop branch * fix: using feature/cb2-11667 cvs-nop branch * fix: removed additional packages * cvs-nop updates * remove sensitive * test: change int tests to use V3 tech record --------- Co-authored-by: Pete Mallam Co-authored-by: Daniel Fry --- cvs-nop | 2 +- package-lock.json | 246 ++------ src/models/auth-into-service.ts | 4 +- .../tech-record-document-conversion.ts | 4 +- ...nto-service-document-conversion.intTest.ts | 149 ++--- ...tech-record-document-conversion.intTest.ts | 14 +- ...-results-conversion-with-delete.intTest.ts | 30 +- ...-results-conversion-with-upsert.intTest.ts | 28 +- .../dynamodb-image-technical-record-V3.json | 537 ++++++++++++++++++ .../dynamodb-image-technical-record.json | 4 +- .../process-stream-event.unitTest.ts | 18 +- .../unit/models/auth-into-service.unitTest.ts | 9 +- 12 files changed, 720 insertions(+), 325 deletions(-) create mode 100644 tests/resources/dynamodb-image-technical-record-V3.json diff --git a/cvs-nop b/cvs-nop index 3b66757..250403c 160000 --- a/cvs-nop +++ b/cvs-nop @@ -1 +1 @@ -Subproject commit 3b66757f917c50cd86e8246dfb6d7f8d2fd28abe +Subproject commit 250403c9f0ec4439a9d72a6a92b69a9061638d54 diff --git a/package-lock.json b/package-lock.json index 35456e8..25e8a64 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,11 +14,13 @@ "@aws-sdk/client-secrets-manager": "3.565.0", "@aws-sdk/util-dynamodb": "3.577.0", "@types/lambda-tester": "4.0.3", + "aws-sdk": "2.1643.0", "aws-xray-sdk": "3.6.0", "date-fns": "3.6.0", "moment": "2.30.1", "mysql2": "3.9.8", "reflect-metadata": "0.2.2", + "semver": "7.6.2", "ts-node-register": "1.0.0", "uuid": "9.0.1" }, @@ -6972,18 +6974,6 @@ "node": ">=v18" } }, - "node_modules/@commitlint/is-ignored/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@commitlint/lint": { "version": "19.2.2", "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.2.2.tgz", @@ -8438,18 +8428,6 @@ "node": ">=10" } }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -8946,18 +8924,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@serverless/dashboard-plugin/node_modules/split2": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", @@ -10714,18 +10680,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", @@ -11324,7 +11278,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -11336,10 +11289,9 @@ } }, "node_modules/aws-sdk": { - "version": "2.1628.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1628.0.tgz", - "integrity": "sha512-mUjvITHmV46JbCTQR8TovWzJEHZtbC9cTRySXyuIuuYQNjA2RrbfqLXXKR/xru+vPFKnfTLw+QQ/BC2l1/Ln5g==", - "dev": true, + "version": "2.1643.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1643.0.tgz", + "integrity": "sha512-1k8W0cU7K9rPwPBzv84Z2IE5aT3jhv3Jswn8XerZliiLl1MTj6F4wjxCeY5BpmAv+Zyy4zM0w98M8vVqKeHEeA==", "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -11457,7 +11409,6 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -11492,20 +11443,6 @@ "node": ">= 14.x" } }, - "node_modules/aws-xray-sdk-core/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/aws-xray-sdk-express": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.6.0.tgz", @@ -11802,7 +11739,6 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, "funding": [ { "type": "github", @@ -12101,7 +12037,6 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -12237,7 +12172,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -12360,6 +12294,15 @@ "node": ">=4" } }, + "node_modules/child-process-ext/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/child-process-ext/node_modules/shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", @@ -12621,6 +12564,14 @@ "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" } }, + "node_modules/cls-hooked/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -13460,7 +13411,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -13833,7 +13783,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -13845,7 +13794,6 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -14778,7 +14726,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", - "dev": true, "engines": { "node": ">=0.4.x" } @@ -15215,7 +15162,6 @@ "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, "dependencies": { "is-callable": "^1.1.3" } @@ -15356,7 +15302,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15418,7 +15363,6 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -15608,7 +15552,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -15684,7 +15627,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -15696,7 +15638,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -15708,7 +15649,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -15720,7 +15660,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, "dependencies": { "has-symbols": "^1.0.3" }, @@ -15735,7 +15674,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "dependencies": { "function-bind": "^1.1.2" }, @@ -15828,8 +15766,7 @@ "node_modules/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "dev": true + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "node_modules/ignore": { "version": "5.3.1", @@ -15922,8 +15859,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { "version": "4.1.1", @@ -16062,7 +15998,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -16156,7 +16091,6 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -16265,7 +16199,6 @@ "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -16535,7 +16468,6 @@ "version": "1.1.13", "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", - "dev": true, "dependencies": { "which-typed-array": "^1.1.14" }, @@ -16615,8 +16547,7 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "node_modules/isexe": { "version": "2.0.0", @@ -18006,18 +17937,6 @@ "node": ">=8" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -18357,7 +18276,6 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "dev": true, "engines": { "node": ">= 0.6.0" } @@ -19114,17 +19032,6 @@ "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", @@ -19158,18 +19065,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -19649,18 +19544,6 @@ "node": ">=12.0" } }, - "node_modules/npm-registry-utilities/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -20416,7 +20299,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -20632,8 +20514,7 @@ "node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, "node_modules/pure-rand": { "version": "6.1.0", @@ -20671,7 +20552,6 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, "engines": { "node": ">=0.4.x" } @@ -21130,8 +21010,7 @@ "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", - "dev": true + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" }, "node_modules/seek-bzip": { "version": "1.0.6", @@ -21153,11 +21032,14 @@ "dev": true }, "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "bin": { - "semver": "bin/semver" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/seq-queue": { @@ -21470,9 +21352,9 @@ } }, "node_modules/serverless-offline/node_modules/ws": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", - "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -21638,18 +21520,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/serverless/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/serverless/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -21669,7 +21539,6 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -22272,18 +22141,6 @@ "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/superagent/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -22633,21 +22490,6 @@ } } }, - "node_modules/ts-jest/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -23044,7 +22886,6 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", - "dev": true, "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -23054,7 +22895,6 @@ "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -23249,7 +23089,6 @@ "version": "1.1.15", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -23409,9 +23248,9 @@ } }, "node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, "engines": { "node": ">=8.3.0" @@ -23439,7 +23278,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", - "dev": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -23452,7 +23290,6 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -23478,7 +23315,8 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/yaml": { "version": "2.4.2", diff --git a/src/models/auth-into-service.ts b/src/models/auth-into-service.ts index 56f26bd..f8c8252 100644 --- a/src/models/auth-into-service.ts +++ b/src/models/auth-into-service.ts @@ -14,9 +14,9 @@ export const parseAuthIntoService = ( ): Maybe => { const authIntoService = { cocIssueDate: authIntoServiceImage?.getString('cocIssueDate'), - dateAuthorised: authIntoServiceImage?.getString('dateAuthorised'), - datePending: authIntoServiceImage?.getString('datePending'), dateReceived: authIntoServiceImage?.getString('dateReceived'), + datePending: authIntoServiceImage?.getString('datePending'), + dateAuthorised: authIntoServiceImage?.getString('dateAuthorised'), dateRejected: authIntoServiceImage?.getString('dateRejected'), }; diff --git a/src/services/tech-record-document-conversion.ts b/src/services/tech-record-document-conversion.ts index 596f416..13721b9 100644 --- a/src/services/tech-record-document-conversion.ts +++ b/src/services/tech-record-document-conversion.ts @@ -607,9 +607,9 @@ const upsertAuthIntoService = async ( [ techRecordId, techRecord.authIntoService?.cocIssueDate, - techRecord.authIntoService?.dateAuthorised, - techRecord.authIntoService?.datePending, techRecord.authIntoService?.dateReceived, + techRecord.authIntoService?.datePending, + techRecord.authIntoService?.dateAuthorised, techRecord.authIntoService?.dateRejected, ], connection, diff --git a/tests/integration/auth-into-service-document-conversion.intTest.ts b/tests/integration/auth-into-service-document-conversion.intTest.ts index f67a851..a1273eb 100644 --- a/tests/integration/auth-into-service-document-conversion.intTest.ts +++ b/tests/integration/auth-into-service-document-conversion.intTest.ts @@ -4,7 +4,7 @@ import { executeSql, } from '../../src/services/connection-pool'; import { exampleContext, useLocalDb } from '../utils'; -import techRecordDocumentJson from '../resources/dynamodb-image-technical-record.json'; +import techRecordDocumentJson from '../resources/dynamodb-image-technical-record-V3.json'; import { getContainerizedDatabase } from './cvsbnop-container'; import { processStreamEvent } from '../../src/functions/process-stream-event'; import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; @@ -47,24 +47,21 @@ describe('convertTechRecordDocument() integration tests', () => { ); techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1a' }; techRecordDocumentJsonNew.vin = { S: 'VIN1a' }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { - M: { - cocIssueDate: { - S: '2020-01-01', - }, - dateAuthorised: { - NULL: true, - }, - datePending: { - S: '2020-03-03', - }, - dateReceived: { - NULL: true, - }, - dateRejected: { - S: '2020-05-05', - }, - }, + techRecordDocumentJsonNew.techRecord_authIntoService_cocIssueDate = { + S: '2020-01-01', + }; + techRecordDocumentJsonNew.techRecord_authIntoService_dateAuthorised = { + NULL: true, + }; + techRecordDocumentJsonNew.techRecord_authIntoService_datePending = { + S: '2020-03-03', + }; + techRecordDocumentJsonNew.techRecord_authIntoService_dateReceived = { + NULL: true, + }; + + techRecordDocumentJsonNew.techRecord_authIntoService_dateRejected = { + S: '2020-05-05', }; const event = { @@ -72,8 +69,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -140,24 +137,21 @@ describe('convertTechRecordDocument() integration tests', () => { ); techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1a' }; techRecordDocumentJsonNew.vin = { S: 'VIN1a' }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { - M: { - cocIssueDate: { - NULL: true, - }, - dateAuthorised: { - S: '2020-02-02', - }, - datePending: { - NULL: true, - }, - dateReceived: { - S: '2020-04-04', - }, - dateRejected: { - NULL: true, - }, - }, + techRecordDocumentJsonNew.techRecord_authIntoService_cocIssueDate = { + NULL: true, + }; + techRecordDocumentJsonNew.techRecord_authIntoService_dateAuthorised = { + S: '2020-04-04', + }; + techRecordDocumentJsonNew.techRecord_authIntoService_datePending = { + NULL: true, + }; + techRecordDocumentJsonNew.techRecord_authIntoService_dateReceived = { + S: '2020-02-02', + }; + + techRecordDocumentJsonNew.techRecord_authIntoService_dateRejected = { + NULL: true, }; const event = { @@ -165,8 +159,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -234,15 +228,30 @@ describe('convertTechRecordDocument() integration tests', () => { ); techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1b' }; techRecordDocumentJsonNew.vin = { S: 'VIN1b' }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; + techRecordDocumentJsonNew.techRecord_authIntoService_cocIssueDate = { + NULL: true, + }; + techRecordDocumentJsonNew.techRecord_authIntoService_dateAuthorised = { + NULL: true, + }; + techRecordDocumentJsonNew.techRecord_authIntoService_datePending = { + NULL: true, + }; + techRecordDocumentJsonNew.techRecord_authIntoService_dateReceived = { + NULL: true, + }; + + techRecordDocumentJsonNew.techRecord_authIntoService_dateRejected = { + NULL: true, + }; const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -296,8 +305,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -369,18 +378,22 @@ describe('convertTechRecordDocument() integration tests', () => { ); techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1b' }; techRecordDocumentJsonNew.vin = { S: 'VIN1b' }; - techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService = { M: {} }; + delete techRecordDocumentJsonNew.techRecord_authIntoService_cocIssueDate; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateAuthorised; + delete techRecordDocumentJsonNew.techRecord_authIntoService_datePending; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateReceived; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateRejected; const event = { Records: [ { body: JSON.stringify({ - eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", - dynamodb: { - NewImage: techRecordDocumentJsonNew, - }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonNew, + }, }), }, ], @@ -427,15 +440,19 @@ describe('convertTechRecordDocument() integration tests', () => { ); techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1c' }; techRecordDocumentJsonNew.vin = { S: 'VIN1c' }; - delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; + delete techRecordDocumentJsonNew.techRecord_authIntoService_cocIssueDate; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateAuthorised; + delete techRecordDocumentJsonNew.techRecord_authIntoService_datePending; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateReceived; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateRejected; const event = { Records: [ { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -494,8 +511,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -567,19 +584,23 @@ describe('convertTechRecordDocument() integration tests', () => { ); techRecordDocumentJsonNew.systemNumber = { S: 'SYSTEM-NUMBER-1c' }; techRecordDocumentJsonNew.vin = { S: 'VIN1c' }; - delete techRecordDocumentJsonNew.techRecord.L[0].M.authIntoService; + delete techRecordDocumentJsonNew.techRecord_authIntoService_cocIssueDate; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateAuthorised; + delete techRecordDocumentJsonNew.techRecord_authIntoService_datePending; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateReceived; + delete techRecordDocumentJsonNew.techRecord_authIntoService_dateRejected; const event = { Records: [ { - body: JSON.stringify( { + body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, - }, - }) + }, + }), }, ], }; diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index 4115ec9..66d0e06 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -4,7 +4,7 @@ import { executeSql, } from '../../src/services/connection-pool'; import { exampleContext, useLocalDb } from '../utils'; -import techRecordDocumentJson from '../resources/dynamodb-image-technical-record.json'; +import techRecordDocumentJson from '../resources/dynamodb-image-technical-record-V3.json'; import { getContainerizedDatabase } from './cvsbnop-container'; import { processStreamEvent } from '../../src/functions/process-stream-event'; import { getConnectionPoolOptions } from '../../src/services/connection-pool-options'; @@ -44,8 +44,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJson, }, @@ -605,8 +605,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, @@ -651,8 +651,8 @@ describe('convertTechRecordDocument() integration tests', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: techRecordDocumentJsonNew, }, diff --git a/tests/integration/test-results-conversion-with-delete.intTest.ts b/tests/integration/test-results-conversion-with-delete.intTest.ts index a466151..0f0c4ac 100644 --- a/tests/integration/test-results-conversion-with-delete.intTest.ts +++ b/tests/integration/test-results-conversion-with-delete.intTest.ts @@ -72,8 +72,8 @@ describe('convertTestResults() integration tests with delete', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -345,8 +345,8 @@ describe('convertTestResults() integration tests with delete', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -643,8 +643,8 @@ describe('convertTestResults() integration tests with delete', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -933,13 +933,13 @@ describe('convertTestResults() integration tests with delete', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, }), - } + }, ], }; @@ -1202,8 +1202,8 @@ describe('convertTestResults() integration tests with delete', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithTestTypes, }, @@ -1520,8 +1520,8 @@ describe('convertTestResults() integration tests with delete', () => { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithNoSystemNumber, }, @@ -1564,8 +1564,8 @@ describe('convertTestResults() integration tests with delete', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithoutTestTypes, }, diff --git a/tests/integration/test-results-conversion-with-upsert.intTest.ts b/tests/integration/test-results-conversion-with-upsert.intTest.ts index b84104f..30bb2ce 100644 --- a/tests/integration/test-results-conversion-with-upsert.intTest.ts +++ b/tests/integration/test-results-conversion-with-upsert.intTest.ts @@ -72,8 +72,8 @@ describe('convertTestResults() integration tests with upsert', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -345,8 +345,8 @@ describe('convertTestResults() integration tests with upsert', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJson, }, @@ -643,8 +643,8 @@ describe('convertTestResults() integration tests with upsert', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -933,8 +933,8 @@ describe('convertTestResults() integration tests with upsert', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: serializedJSONb, }, @@ -1202,8 +1202,8 @@ describe('convertTestResults() integration tests with upsert', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithTestTypes, }, @@ -1520,8 +1520,8 @@ describe('convertTestResults() integration tests with upsert', () => { messageId: 'faf41ab1-5b42-462c-b242-c4450e15c724', body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithNoSystemNumber, }, @@ -1564,8 +1564,8 @@ describe('convertTestResults() integration tests with upsert', () => { { body: JSON.stringify({ eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000", - eventName: "INSERT", + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', dynamodb: { NewImage: testResultsJsonWithoutTestTypes, }, diff --git a/tests/resources/dynamodb-image-technical-record-V3.json b/tests/resources/dynamodb-image-technical-record-V3.json new file mode 100644 index 0000000..aac5eb1 --- /dev/null +++ b/tests/resources/dynamodb-image-technical-record-V3.json @@ -0,0 +1,537 @@ +{ + "systemNumber": { + "S": "SYSTEM-NUMBER-1" + }, + "createdTimestamp": { + "S": "2020-01-01T00:00:00.055Z" + }, + "partialVin": { + "S": "PARTIAL-VIN" + }, + "primaryVrm": { + "S": "VRM-1" + }, + "secondaryVrms": { + "L": [ + { + "S": "SECONDARY-VRM" + } + ] + }, + "techRecord_alterationMarker": { + "BOOL": true + }, + "techRecord_applicantDetails_address1": { + "S": "ADDRESS-1" + }, + "techRecord_applicantDetails_address2": { + "S": "ADDRESS-2" + }, + "techRecord_applicantDetails_address3": { + "S": "ADDRESS-3" + }, + "techRecord_applicantDetails_emailAddress": { + "S": "EMAIL-ADDRESS" + }, + "techRecord_applicantDetails_name": { + "S": "NAME" + }, + "techRecord_applicantDetails_postCode": { + "S": "POST-CODE" + }, + "techRecord_applicantDetails_postTown": { + "S": "POST-TOWN" + }, + "techRecord_applicantDetails_telephoneNumber": { + "S": "TELEPHONE-NUMBER" + }, + "techRecord_approvalType": { + "S": "NTA" + }, + "techRecord_approvalTypeNumber": { + "S": "1" + }, + "techRecord_authIntoService_cocIssueDate": { + "S": "2020-01-01" + }, + "techRecord_authIntoService_dateAuthorised": { + "S": "2020-04-04" + }, + "techRecord_authIntoService_datePending": { + "S": "2020-03-03" + }, + "techRecord_authIntoService_dateReceived": { + "S": "2020-02-02" + }, + "techRecord_authIntoService_dateRejected": { + "S": "2020-05-05" + }, + "techRecord_axles_0_axleNumber": { + "N": "1" + }, + "techRecord_axles_0_brakes_brakeActuator": { + "N": "1" + }, + "techRecord_axles_0_brakes_leverLength": { + "N": "1" + }, + "techRecord_axles_0_brakes_springBrakeParking": { + "BOOL": true + }, + "techRecord_axles_0_parkingBrakeMrk": { + "BOOL": true + }, + "techRecord_axles_0_tyres_dataTrAxles": { + "N": "1" + }, + "techRecord_axles_0_tyres_fitmentCode": { + "S": "double" + }, + "techRecord_axles_0_tyres_plyRating": { + "S": "22" + }, + "techRecord_axles_0_tyres_speedCategorySymbol": { + "S": "a7" + }, + "techRecord_axles_0_tyres_tyreCode": { + "N": "1" + }, + "techRecord_axles_0_tyres_tyreSize": { + "S": "TYRE-SIZE" + }, + "techRecord_axles_0_weights_designWeight": { + "N": "1" + }, + "techRecord_axles_0_weights_eecWeight": { + "N": "1" + }, + "techRecord_axles_0_weights_gbWeight": { + "N": "1" + }, + "techRecord_axles_0_weights_kerbWeight": { + "N": "1" + }, + "techRecord_axles_0_weights_ladenWeight": { + "N": "1" + }, + "techRecord_bodyMake": { + "S": "BODY-MAKE" + }, + "techRecord_bodyModel": { + "S": "BODY-MODEL" + }, + "techRecord_bodyType_code": { + "S": "a" + }, + "techRecord_bodyType_description": { + "S": "articulated" + }, + "techRecord_brakeCode": { + "S": "1" + }, + "techRecord_brakes_antilockBrakingSystem": { + "BOOL": true + }, + "techRecord_brakes_brakeCode": { + "S": "666666" + }, + "techRecord_brakes_brakeCodeOriginal": { + "S": "333" + }, + "techRecord_brakes_brakeForceWheelsNotLocked_parkingBrakeForceA": { + "N": "1" + }, + "techRecord_brakes_brakeForceWheelsNotLocked_secondaryBrakeForceA": { + "N": "1" + }, + "techRecord_brakes_brakeForceWheelsNotLocked_serviceBrakeForceA": { + "N": "1" + }, + "techRecord_brakes_brakeForceWheelsUpToHalfLocked_parkingBrakeForceB": { + "N": "1" + }, + "techRecord_brakes_brakeForceWheelsUpToHalfLocked_secondaryBrakeForceB": { + "N": "1" + }, + "techRecord_brakes_brakeForceWheelsUpToHalfLocked_serviceBrakeForceB": { + "N": "1" + }, + "techRecord_brakes_dataTrBrakeOne": { + "S": "DATA-TR-BRAKE-ONE" + }, + "techRecord_brakes_dataTrBrakeThree": { + "S": "DATA-TR-BRAKE-THREE" + }, + "techRecord_brakes_dataTrBrakeTwo": { + "S": "DATA-TR-BRAKE-TWO" + }, + "techRecord_brakes_dtpNumber": { + "S": "666666" + }, + "techRecord_brakes_loadSensingValve": { + "BOOL": true + }, + "techRecord_brakes_retarderBrakeOne": { + "S": "electric" + }, + "techRecord_brakes_retarderBrakeTwo": { + "S": "electric" + }, + "techRecord_centreOfRearmostAxleToRearOfTrl": { + "N": "1" + }, + "techRecord_chassisMake": { + "S": "CHASSIS-MAKE" + }, + "techRecord_chassisModel": { + "S": "CHASSIS-MODEL" + }, + "techRecord_coifCertifierName": { + "S": "COIF-CERTIFIER-NAME" + }, + "techRecord_coifDate": { + "S": "2020-01-01" + }, + "techRecord_coifSerialNumber": { + "S": "88888888" + }, + "techRecord_conversionRefNo": { + "S": "1010101010" + }, + "techRecord_couplingCenterToRearAxleMax": { + "N": "1" + }, + "techRecord_couplingCenterToRearAxleMin": { + "N": "1" + }, + "techRecord_couplingCenterToRearTrlMax": { + "N": "1" + }, + "techRecord_couplingCenterToRearTrlMin": { + "N": "1" + }, + "techRecord_couplingType": { + "S": "1" + }, + "techRecord_createdAt": { + "S": "2020-01-01T00:00:00.055Z" + }, + "techRecord_createdById": { + "S": "CREATED-BY-ID-2" + }, + "techRecord_createdByName": { + "S": "CREATED-BY-NAME-2" + }, + "techRecord_departmentalVehicleMarker": { + "BOOL": true + }, + "techRecord_dimensions_axleSpacing_0_axles": { + "S": "1-2" + }, + "techRecord_dimensions_axleSpacing_0_value": { + "N": "1" + }, + "techRecord_dimensions_height": { + "N": "1" + }, + "techRecord_dimensions_length": { + "N": "1" + }, + "techRecord_dimensions_width": { + "N": "1" + }, + "techRecord_dispensations": { + "S": "DISPENSATIONS" + }, + "techRecord_drawbarCouplingFitted": { + "BOOL": true + }, + "techRecord_emissionsLimit": { + "N": "1" + }, + "techRecord_euroStandard": { + "S": "euroStd" + }, + "techRecord_euVehicleCategory": { + "S": "m1" + }, + "techRecord_firstUseDate": { + "S": "2020-01-01" + }, + "techRecord_frameDescription": { + "S": "Channel section" + }, + "techRecord_frontAxleTo5thWheelMax": { + "N": "1" + }, + "techRecord_frontAxleTo5thWheelMin": { + "N": "1" + }, + "techRecord_frontAxleToRearAxle": { + "N": "1" + }, + "techRecord_frontVehicleTo5thWheelCouplingMax": { + "N": "1" + }, + "techRecord_frontVehicleTo5thWheelCouplingMin": { + "N": "1" + }, + "techRecord_fuelPropulsionSystem": { + "S": "DieselPetrol" + }, + "techRecord_functionCode": { + "S": "1" + }, + "techRecord_grossDesignWeight": { + "N": "1" + }, + "techRecord_grossEecWeight": { + "N": "1" + }, + "techRecord_grossGbWeight": { + "N": "1" + }, + "techRecord_grossKerbWeight": { + "N": "1" + }, + "techRecord_grossLadenWeight": { + "N": "1" + }, + "techRecord_lastUpdatedAt": { + "S": "2020-01-01T00:00:00.000000Z" + }, + "techRecord_lastUpdatedById": { + "S": "LAST-UPDATED-BY-ID-2" + }, + "techRecord_lastUpdatedByName": { + "S": "LAST-UPDATED-BY-NAME-2" + }, + "techRecord_lettersOfAuth_letterContents": { + "S": "LETTER-CONTENTS" + }, + "techRecord_lettersOfAuth_letterDateRequested": { + "S": "2020-01-01" + }, + "techRecord_lettersOfAuth_letterType": { + "S": "Trailer authorization" + }, + "techRecord_make": { + "S": "MAKE" + }, + "techRecord_manufacturerDetails_address1": { + "S": "ADDRESS-1" + }, + "techRecord_manufacturerDetails_address2": { + "S": "ADDRESS-2" + }, + "techRecord_manufacturerDetails_address3": { + "S": "ADDRESS-3" + }, + "techRecord_manufacturerDetails_emailAddress": { + "S": "EMAIL-ADDRESS" + }, + "techRecord_manufacturerDetails_faxNumber": { + "S": "FAX-NUMBER" + }, + "techRecord_manufacturerDetails_manufacturerNotes": { + "S": "MANUFACTURER-NOTES" + }, + "techRecord_manufacturerDetails_name": { + "S": "NAME" + }, + "techRecord_manufacturerDetails_postCode": { + "S": "POST-CODE" + }, + "techRecord_manufacturerDetails_postTown": { + "S": "POST-TOWN" + }, + "techRecord_manufacturerDetails_telephoneNumber": { + "S": "TELEPHONE-NUMBER" + }, + "techRecord_manufactureYear": { + "N": "2020" + }, + "techRecord_maxLoadOnCoupling": { + "N": "1" + }, + "techRecord_maxTrainDesignWeight": { + "N": "1" + }, + "techRecord_maxTrainEecWeight": { + "N": "1" + }, + "techRecord_maxTrainGbWeight": { + "N": "1" + }, + "techRecord_microfilm_microfilmDocumentType": { + "S": "PSV Miscellaneous" + }, + "techRecord_microfilm_microfilmRollNumber": { + "S": "1" + }, + "techRecord_microfilm_microfilmSerialNumber": { + "S": "1" + }, + "techRecord_model": { + "S": "MODEL" + }, + "techRecord_modelLiteral": { + "S": "MODEL-LITERAL" + }, + "techRecord_noOfAxles": { + "N": "1" + }, + "techRecord_notes": { + "S": "NOTES" + }, + "techRecord_ntaNumber": { + "S": "NTA-NUMBER" + }, + "techRecord_numberOfSeatbelts": { + "S": "NUMBER-OF-SEATBELTS" + }, + "techRecord_numberOfWheelsDriven": { + "N": "1" + }, + "techRecord_offRoad": { + "BOOL": true + }, + "techRecord_plates_0_plateIssueDate": { + "S": "2020-01-01" + }, + "techRecord_plates_0_plateIssuer": { + "S": "PLATE-ISSUER" + }, + "techRecord_plates_0_plateReasonForIssue": { + "S": "Free replacement" + }, + "techRecord_plates_0_plateSerialNumber": { + "S": "1" + }, + "techRecord_plates_0_toEmailAddress": { + "S": "TO-EMAIL-ADDRESS" + }, + "techRecord_purchaserDetails_address1": { + "S": "ADDRESS-1" + }, + "techRecord_purchaserDetails_address2": { + "S": "ADDRESS-2" + }, + "techRecord_purchaserDetails_address3": { + "S": "ADDRESS-3" + }, + "techRecord_purchaserDetails_emailAddress": { + "S": "EMAIL-ADDRESS" + }, + "techRecord_purchaserDetails_faxNumber": { + "S": "FAX-NUMBER" + }, + "techRecord_purchaserDetails_name": { + "S": "NAME" + }, + "techRecord_purchaserDetails_postCode": { + "S": "POST-CODE" + }, + "techRecord_purchaserDetails_postTown": { + "S": "POST-TOWN" + }, + "techRecord_purchaserDetails_purchaserNotes": { + "S": "PURCHASER-NOTES" + }, + "techRecord_purchaserDetails_telephoneNumber": { + "S": "TELEPHONE-NUMBER" + }, + "techRecord_rearAxleToRearTrl": { + "N": "1" + }, + "techRecord_reasonForCreation": { + "S": "REASON-FOR-CREATION" + }, + "techRecord_recordCompleteness": { + "S": "88888888" + }, + "techRecord_regnDate": { + "S": "2020-01-01" + }, + "techRecord_remarks": { + "S": "REMARKS" + }, + "techRecord_roadFriendly": { + "BOOL": true + }, + "techRecord_seatbeltInstallationApprovalDate": { + "S": "2020-01-01" + }, + "techRecord_seatsLowerDeck": { + "N": "1" + }, + "techRecord_seatsUpperDeck": { + "N": "1" + }, + "techRecord_speedLimiterMrk": { + "BOOL": true + }, + "techRecord_speedRestriction": { + "N": "1" + }, + "techRecord_standingCapacity": { + "N": "1" + }, + "techRecord_statusCode": { + "S": "STATUS-CODE" + }, + "techRecord_suspensionType": { + "S": "1" + }, + "techRecord_tachoExemptMrk": { + "BOOL": true + }, + "techRecord_trainDesignWeight": { + "N": "1" + }, + "techRecord_trainEecWeight": { + "N": "1" + }, + "techRecord_trainGbWeight": { + "N": "1" + }, + "techRecord_tyreUseCode": { + "S": "22" + }, + "techRecord_unladenWeight": { + "N": "1" + }, + "techRecord_updateType": { + "S": "adrUpdate" + }, + "techRecord_variantNumber": { + "S": "1" + }, + "techRecord_variantVersionNumber": { + "S": "1" + }, + "techRecord_vehicleClass_code": { + "S": "2" + }, + "techRecord_vehicleClass_description": { + "S": "motorbikes over 200cc or with a sidecar" + }, + "techRecord_vehicleConfiguration": { + "S": "rigid" + }, + "techRecord_vehicleSize": { + "S": "small" + }, + "techRecord_vehicleSubclass_0": { + "S": "1" + }, + "techRecord_vehicleType": { + "S": "psv" + }, + "trailerId": { + "S": "TRL-1" + }, + "vin": { + "S": "VIN-1" + } +} \ No newline at end of file diff --git a/tests/resources/dynamodb-image-technical-record.json b/tests/resources/dynamodb-image-technical-record.json index 0e24b81..006131c 100644 --- a/tests/resources/dynamodb-image-technical-record.json +++ b/tests/resources/dynamodb-image-technical-record.json @@ -66,13 +66,13 @@ "cocIssueDate": { "S": "2020-01-01" }, - "dateAuthorised": { + "dateReceived": { "S": "2020-02-02" }, "datePending": { "S": "2020-03-03" }, - "dateReceived": { + "dateAuthorised": { "S": "2020-04-04" }, "dateRejected": { diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 2960f7e..776ddfe 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -22,13 +22,13 @@ describe('processStreamEvent()', () => { { Records: [ { - body: JSON.stringify({ - eventName: "INSERT", + body: JSON.stringify({ + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, ], @@ -187,34 +187,34 @@ describe('processStreamEvent()', () => { { messageId: 'SUCCESS', body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, { messageId: 'FAILURE', body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, { messageId: 'SUCCESS', body: JSON.stringify({ - eventName: "INSERT", + eventName: 'INSERT', dynamodb: { NewImage: {}, }, eventSourceARN: - "arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000", + 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', }), }, ], diff --git a/tests/unit/models/auth-into-service.unitTest.ts b/tests/unit/models/auth-into-service.unitTest.ts index 6f4b27d..1f7c04b 100644 --- a/tests/unit/models/auth-into-service.unitTest.ts +++ b/tests/unit/models/auth-into-service.unitTest.ts @@ -13,13 +13,13 @@ describe('parseAuthIntoService()', () => { cocIssueDate: { S: '2020-01-01', }, - dateAuthorised: { + dateReceived: { S: '2020-02-02', }, datePending: { S: '2020-03-03', }, - dateReceived: { + dateAuthorised: { S: '2020-04-04', }, dateRejected: { @@ -27,7 +27,6 @@ describe('parseAuthIntoService()', () => { }, }, }; - const image = DynamoDbImage.parse(castToImageShape(techRecordDocumentJson)); const techRecordDocument: TechRecordDocument = parseTechRecordDocument( image, @@ -38,13 +37,13 @@ describe('parseAuthIntoService()', () => { techRecordDocument.techRecord![0].authIntoService?.cocIssueDate, ).toBe('2020-01-01'); expect( - techRecordDocument.techRecord![0].authIntoService?.dateAuthorised, + techRecordDocument.techRecord![0].authIntoService?.dateReceived, ).toBe('2020-02-02'); expect( techRecordDocument.techRecord![0].authIntoService?.datePending, ).toBe('2020-03-03'); expect( - techRecordDocument.techRecord![0].authIntoService?.dateReceived, + techRecordDocument.techRecord![0].authIntoService?.dateAuthorised, ).toBe('2020-04-04'); expect( techRecordDocument.techRecord![0].authIntoService?.dateRejected, From 56c20f6f864b6f25ae12e2d82efdf92a05387f55 Mon Sep 17 00:00:00 2001 From: Daniel Searle <84069850+Daniel-Searle@users.noreply.github.com> Date: Mon, 15 Jul 2024 09:50:09 +0100 Subject: [PATCH 17/20] feat(CB2-12965): Added additional logs (#114) * feat(CB2-12695): Added addiitonal logs * feat(CB2-12695): fixed linting issue * feat(CB2-12695): fixed linting issue * feat(CB2-12965): fixed linting issue * feat(CB2-12965): added semi colons * feat(CB2-12965): added semi colons * feat(CB2-12965): unit test to cover console log * feat(CB2-12965): unit test to cover console log * feat(CB2-12965): change let ot const * feat(CB2-12965): Added operation type to the log * feat(CB2-12965): Formatting in logger unit test --- package-lock.json | 249 +++++++++++++----- package.json | 1 + src/functions/process-stream-event.ts | 63 +++-- src/models/ILog.ts | 7 + src/utils/transform-tech-record.ts | 2 +- .../process-stream-event.unitTest.ts | 63 ++++- tests/unit/services/logger.unitTest.ts | 10 + 7 files changed, 308 insertions(+), 87 deletions(-) create mode 100644 src/models/ILog.ts create mode 100644 tests/unit/services/logger.unitTest.ts diff --git a/package-lock.json b/package-lock.json index 25e8a64..a059920 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,14 +13,13 @@ "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", "@aws-sdk/util-dynamodb": "3.577.0", + "@dvsa/cvs-type-definitions": "^7.2.0", "@types/lambda-tester": "4.0.3", - "aws-sdk": "2.1643.0", "aws-xray-sdk": "3.6.0", "date-fns": "3.6.0", "moment": "2.30.1", "mysql2": "3.9.8", "reflect-metadata": "0.2.2", - "semver": "7.6.2", "ts-node-register": "1.0.0", "uuid": "9.0.1" }, @@ -7419,6 +7418,17 @@ "node": ">=12" } }, + "node_modules/@dvsa/cvs-type-definitions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@dvsa/cvs-type-definitions/-/cvs-type-definitions-7.2.0.tgz", + "integrity": "sha512-xgJ1WpIpKkUkKrCtle9OqDbnmpm9VZ8ePdl+QPvayRHxGpDgLTTgj9wyhsz9+XW2bqOepAGbBM1jO+JMPLZAog==", + "dependencies": { + "ajv": "^8.12.0", + "json-schema-deref-sync": "^0.14.0", + "pretty-js": "^0.2.2", + "util": "^0.12.5" + } + }, "node_modules/@dvsa/eslint-config-ts": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@dvsa/eslint-config-ts/-/eslint-config-ts-3.0.1.tgz", @@ -10794,7 +10804,6 @@ "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -11017,7 +11026,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "dev": true, "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -11185,7 +11193,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -11292,6 +11299,7 @@ "version": "2.1643.0", "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1643.0.tgz", "integrity": "sha512-1k8W0cU7K9rPwPBzv84Z2IE5aT3jhv3Jswn8XerZliiLl1MTj6F4wjxCeY5BpmAv+Zyy4zM0w98M8vVqKeHEeA==", + "dev": true, "hasInstallScript": true, "dependencies": { "buffer": "4.9.2", @@ -11409,6 +11417,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -11739,6 +11748,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, "funding": [ { "type": "github", @@ -12037,6 +12047,7 @@ "version": "4.9.2", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", @@ -12256,6 +12267,14 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" + } + }, "node_modules/child-process-ext": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/child-process-ext/-/child-process-ext-2.1.1.tgz", @@ -12650,6 +12669,19 @@ "dot-prop": "^5.1.0" } }, + "node_modules/complexion": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/complexion/-/complexion-0.2.2.tgz", + "integrity": "sha512-YAfDsYc27CsPQPzZU4i1OklMCyigN7VHPylWba0AWf5VmVr34NpLhHjJm0gumFh9m2aX8fYGCTTgne7oLfXXug==" + }, + "node_modules/complexion-js": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/complexion-js/-/complexion-js-0.2.2.tgz", + "integrity": "sha512-qxqJq0nEBwSEZtoqK8bHIR2VwzbPatjtlU+ZH9IPObitTQqa2xMEryoAlCsjOH+ATgIScHt0aiCUBabPG2Mmcg==", + "peerDependencies": { + "complexion": "^0.2.2" + } + }, "node_modules/component-emitter": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", @@ -13004,6 +13036,14 @@ "node": ">= 8" } }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, "node_modules/d": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", @@ -13017,6 +13057,11 @@ "node": ">=0.12" } }, + "node_modules/dag-map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", + "integrity": "sha512-+LSAiGFwQ9dRnRdOeaj7g47ZFJcOUPukAP8J3A3fuZ1g9Y44BG+P1sgApjLXTQPOzC4+7S9Wr8kXsfpINM4jpw==" + }, "node_modules/damerau-levenshtein": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", @@ -13040,7 +13085,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -13057,7 +13101,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -13074,7 +13117,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -13436,7 +13478,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -13723,7 +13764,6 @@ "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -13828,7 +13868,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, "dependencies": { "es-errors": "^1.3.0" }, @@ -13840,7 +13879,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "dev": true, "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -13864,7 +13902,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14726,6 +14763,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true, "engines": { "node": ">=0.4.x" } @@ -14862,8 +14900,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-fifo": { "version": "1.3.2", @@ -15310,7 +15347,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -15328,7 +15364,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15426,7 +15461,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", - "dev": true, "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -15516,7 +15550,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -15609,7 +15642,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15766,7 +15798,8 @@ "node_modules/ieee754": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true }, "node_modules/ignore": { "version": "5.3.1", @@ -15984,7 +16017,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "dev": true, "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -16013,7 +16045,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -16051,7 +16082,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -16075,7 +16105,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -16087,6 +16116,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -16114,7 +16148,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", - "dev": true, "dependencies": { "is-typed-array": "^1.1.13" }, @@ -16129,7 +16162,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -16263,6 +16295,36 @@ "node": ">=8" } }, + "node_modules/is-invalid-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-invalid-path/-/is-invalid-path-0.1.0.tgz", + "integrity": "sha512-aZMG0T3F34mTg4eTdszcGXx54oiZ4NtHSft3hWNJMGJXUUqdIj3cOZuHcU0nCWWcY3jd7yRe/3AEm3vSNTpBGQ==", + "dependencies": { + "is-glob": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-invalid-path/node_modules/is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dependencies": { + "is-extglob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -16286,7 +16348,6 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -16307,7 +16368,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -16373,7 +16433,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -16402,7 +16461,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", - "dev": true, "dependencies": { "call-bind": "^1.0.7" }, @@ -16426,7 +16484,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -16441,7 +16498,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -16490,6 +16546,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-valid-path": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-valid-path/-/is-valid-path-0.1.1.tgz", + "integrity": "sha512-+kwPrVDu9Ms03L90Qaml+79+6DZHqHyRoANI6IsZJ/g8frhnfchDOBCa0RbQ6/kdHt5CS5OeIEyrYznNuVN+8A==", + "dependencies": { + "is-invalid-path": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -16507,7 +16574,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -16547,7 +16613,8 @@ "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true }, "node_modules/isexe": { "version": "2.0.0", @@ -18276,6 +18343,7 @@ "version": "0.16.0", "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "dev": true, "engines": { "node": ">= 0.6.0" } @@ -18382,11 +18450,36 @@ "node": ">=0.8" } }, + "node_modules/json-schema-deref-sync": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/json-schema-deref-sync/-/json-schema-deref-sync-0.14.0.tgz", + "integrity": "sha512-yGR1xmhdiD6R0MSrwWcFxQzAj5b3i5Gb/mt5tvQKgFMMeNe0KZYNEN/jWr7G+xn39Azqgcvk4ZKMs8dQl8e4wA==", + "dependencies": { + "clone": "^2.1.2", + "dag-map": "~1.0.0", + "is-valid-path": "^0.1.1", + "lodash": "^4.17.13", + "md5": "~2.2.0", + "memory-cache": "~0.2.0", + "traverse": "~0.6.6", + "valid-url": "~1.0.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/json-schema-deref-sync/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -18759,8 +18852,7 @@ "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash.camelcase": { "version": "4.3.0", @@ -19079,6 +19171,16 @@ "tmpl": "1.0.5" } }, + "node_modules/md5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", + "integrity": "sha512-PlGG4z5mBANDGCKsYQe0CaUYHdZYZt8ZPZLmEt+Urf0W4GlpTX4HescwHU+dc9+Z/G/vZKYZYFrwgm9VxK6QOQ==", + "dependencies": { + "charenc": "~0.0.1", + "crypt": "~0.0.1", + "is-buffer": "~1.1.1" + } + }, "node_modules/memoizee": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", @@ -19098,6 +19200,11 @@ "node": ">=0.12" } }, + "node_modules/memory-cache": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/memory-cache/-/memory-cache-0.2.0.tgz", + "integrity": "sha512-OcjA+jzjOYzKmKS6IQVALHLVz+rNTMPoJvCztFaZxwG14wtAW7VRZjwTQu06vKCYOxh4jVnik7ya0SXTB0W+xA==" + }, "node_modules/meow": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", @@ -19578,7 +19685,6 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19587,7 +19693,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -19596,7 +19701,6 @@ "version": "4.1.5", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -19746,6 +19850,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/option-parser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/option-parser/-/option-parser-1.0.2.tgz", + "integrity": "sha512-Q56FmRi6TZX+S9jAl9f0Tnrk7W8faAZULf6Y0IgJR6Cy7/MxhzvBFoyL1Sz2DD7WbOY2Fxtkz2S/3kzlbn/VsQ==" + }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -20394,6 +20503,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/pretty-js": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/pretty-js/-/pretty-js-0.2.2.tgz", + "integrity": "sha512-SJIz4tGlSC4LBqSAb82yf1911C4HGILMiDoNn4aoYuHetdFbefdIyMHZ9c1mDsiv0CNSn9ac/kNM1xXdujZ/AA==", + "dependencies": { + "complexion": "^0.2.2", + "complexion-js": "^0.2.2", + "option-parser": "^1.0.0", + "process-files": "^1.0.0" + }, + "bin": { + "pretty-js": "bin/pretty-js.js" + } + }, "node_modules/printj": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", @@ -20406,6 +20529,11 @@ "node": ">=0.8" } }, + "node_modules/process-files": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-files/-/process-files-1.0.0.tgz", + "integrity": "sha512-0hxz8bXkV3zO9yi5gausGcagj6iaUK4cZsK9OeL8ekVWkXuD0SC/1iE1cJntRxFWGNpZCc/hjYhc7XCwz8WuWQ==" + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -20514,7 +20642,8 @@ "node_modules/punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true }, "node_modules/pure-rand": { "version": "6.1.0", @@ -20552,6 +20681,7 @@ "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, "engines": { "node": ">=0.4.x" } @@ -20720,7 +20850,6 @@ "version": "1.5.2", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -20747,7 +20876,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -20935,7 +21063,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -20952,8 +21079,7 @@ "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/safe-buffer": { "version": "5.2.1", @@ -20989,7 +21115,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", - "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -21010,7 +21135,8 @@ "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==" + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "dev": true }, "node_modules/seek-bzip": { "version": "1.0.6", @@ -21555,7 +21681,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -21614,7 +21739,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -21988,7 +22112,6 @@ "version": "1.2.9", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22006,7 +22129,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22020,7 +22142,6 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22406,7 +22527,6 @@ "version": "0.6.9", "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", - "dev": true, "dependencies": { "gopd": "^1.0.1", "typedarray.prototype.slice": "^1.0.3", @@ -22640,7 +22760,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -22654,7 +22773,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -22673,7 +22791,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", - "dev": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -22693,7 +22810,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -22713,7 +22829,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", - "dev": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -22745,7 +22860,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -22868,7 +22982,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -22877,7 +22990,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -22886,6 +22998,7 @@ "version": "0.10.3", "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "dev": true, "dependencies": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -22950,6 +23063,11 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/valid-url": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", + "integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==" + }, "node_modules/validate-npm-package-name": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", @@ -23020,7 +23138,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -23278,6 +23395,7 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dev": true, "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" @@ -23290,6 +23408,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, "engines": { "node": ">=4.0" } diff --git a/package.json b/package.json index 0677489..4f4a5b7 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "author": "", "license": "ISC", "dependencies": { + "@dvsa/cvs-type-definitions": "^7.2.0", "@aws-sdk/client-dynamodb": "3.577.0", "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index 907ecdd..2846b53 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -14,6 +14,9 @@ import { convert } from '../services/entity-conversion'; import { debugLog } from '../services/logger'; import { SqlOperation, deriveSqlOperation } from '../services/sql-operations'; import { transformTechRecord } from '../utils/transform-tech-record'; +import { unmarshall } from "@aws-sdk/util-dynamodb"; + +let logManager: ILog[] = []; /** * λ function: convert a DynamoDB document to Aurora RDS rows @@ -21,15 +24,16 @@ import { transformTechRecord } from '../utils/transform-tech-record'; * @param context - λ context */ export const processStreamEvent: Handler = async ( - event: SQSEvent, - context: Context, + event: SQSEvent, + context: Context, ): Promise => { const res: BatchItemFailuresResponse = { batchItemFailures: [], }; - try { + const processStartTime: Date = new Date(); debugLog('Received SQS event: ', JSON.stringify(event)); + let iLog: ILog = { changeType: "", identifier: "", operationType: "" }; validateEvent(event); @@ -52,50 +56,69 @@ export const processStreamEvent: Handler = async ( // parse source ARN const tableName: string = getTableNameFromArn( - dynamoRecord.eventSourceARN!, + dynamoRecord.eventSourceARN!, ); if (tableName.includes('flat-tech-records')) { transformTechRecord(dynamoRecord as _Record); debugLog(`Dynamo Record after transformation: ${dynamoRecord}`); + const technicalRecord: any = dynamoRecord.dynamodb?.NewImage; + const unmarshalledTechnicalRecord = unmarshall(technicalRecord); + iLog.statusCode = unmarshalledTechnicalRecord.statusCode; + iLog.changeType = "Technical Record Change"; + iLog.identifier = unmarshalledTechnicalRecord.vehicleType === 'trl' + ? unmarshalledTechnicalRecord.trailerId + : unmarshalledTechnicalRecord.primaryVrm; + } else if (tableName.includes('test-results')) { + const testResult: any = dynamoRecord.dynamodb?.NewImage; + const unmarshalledTestResult = unmarshall(testResult); + iLog.changeType = 'Test record change'; + iLog.testResultId = unmarshalledTestResult.testResultId; + iLog.identifier = unmarshalledTestResult.vehicleType === 'trl' + ? unmarshalledTestResult.trailerId : + unmarshalledTestResult.primaryVrm; } - // is this an INSERT, UPDATE, or DELETE? const operationType: SqlOperation = deriveSqlOperation( - dynamoRecord.eventName!, + dynamoRecord.eventName!, ); + iLog.operationType = operationType; + addToILog(iLog); + // parse native DynamoDB format to usable TS map const image: DynamoDbImage = selectImage( - operationType, - dynamoRecord.dynamodb!, + operationType, + dynamoRecord.dynamodb!, ); debugLog('Dynamo image dump:', image); try { debugLog( - `DynamoDB ---> Aurora | START (event ID: ${dynamoRecord.eventID})`, + `DynamoDB ---> Aurora | START (event ID: ${dynamoRecord.eventID})`, ); await convert(tableName, operationType, image); debugLog( - `DynamoDB ---> Aurora | END (event ID: ${dynamoRecord.eventID})`, + `DynamoDB ---> Aurora | END (event ID: ${dynamoRecord.eventID})`, ); + console.log(`** RESULTS **\nProcess start time is: ${processStartTime.toISOString()} \n${JSON.stringify(logManager)}`, + ) } catch (err) { console.error( - "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", - [`messageId: ${id}`, err], + "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", + [`messageId: ${id}`, err], ); - res.batchItemFailures.push({ itemIdentifier: id }); + res.batchItemFailures.push({itemIdentifier: id}); dumpArguments(event, context); } } } catch (err) { console.error( - 'An error unrelated to Dynamo-to-Aurora conversion has occurred, event will not be retried', - err, + 'An error unrelated to Dynamo-to-Aurora conversion has occurred, event will not be retried', + err, ); dumpArguments(event, context); await destroyConnectionPool(); @@ -107,9 +130,9 @@ export const processStreamEvent: Handler = async ( export const getTableNameFromArn = (eventSourceArn: string): string => eventSourceArn.split(':')[5].split('/')[1]; const selectImage = ( - operationType: SqlOperation, - streamRecord: StreamRecord, - // eslint-disable-next-line consistent-return + operationType: SqlOperation, + streamRecord: StreamRecord, + // eslint-disable-next-line consistent-return ): DynamoDbImage => { // eslint-disable-next-line default-case switch (operationType) { @@ -165,3 +188,7 @@ const dumpArguments = (event: DynamoDBStreamEvent, context: Context): void => { console.error('Event dump : ', JSON.stringify(event)); console.error('Context dump: ', JSON.stringify(context)); }; + +const addToILog = (iLog: ILog) => { + if (iLog.identifier && iLog.changeType) logManager.push(iLog); +}; diff --git a/src/models/ILog.ts b/src/models/ILog.ts new file mode 100644 index 0000000..58ff934 --- /dev/null +++ b/src/models/ILog.ts @@ -0,0 +1,7 @@ +interface ILog { + changeType: string; + identifier: string; + operationType: string; + statusCode?: string; + testResultId?: string; +} diff --git a/src/utils/transform-tech-record.ts b/src/utils/transform-tech-record.ts index a7a9027..7b628b3 100644 --- a/src/utils/transform-tech-record.ts +++ b/src/utils/transform-tech-record.ts @@ -36,7 +36,7 @@ const nestItem = (record: LegacyKeyStructure, key: string, value: string | numbe return record; }; -const transformImage = (image: NewKeyStructure) => { +export const transformImage = (image: NewKeyStructure) => { const vehicle = {} as LegacyTechRecord; vehicle.techRecord = []; diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 776ddfe..6e75f6f 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -5,6 +5,9 @@ import { } from '../../../src/functions/process-stream-event'; import { convert } from '../../../src/services/entity-conversion'; import { exampleContext } from '../../utils'; +import testResultWithTestType from '../../resources/dynamodb-image-test-results-with-testtypes.json'; +import techRecordV3 from '../../resources/dynamodb-image-technical-record-V3.json'; + jest.mock('../../../src/services/entity-conversion', () => ({ convert: jest.fn(), @@ -16,7 +19,7 @@ describe('processStreamEvent()', () => { mocked(convert).mockResolvedValueOnce({}); }); - it('should allow valid events to reach the entity conversion procedure', async () => { + it('should allow valid events to reach the entity conversion procedure TECHNICAL RECORD', async () => { await expect( processStreamEvent( { @@ -25,10 +28,10 @@ describe('processStreamEvent()', () => { body: JSON.stringify({ eventName: 'INSERT', dynamodb: { - NewImage: {}, + NewImage: techRecordV3 }, eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/technical-records/stream/2020-01-01T00:00:00.000', + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', }), }, ], @@ -42,6 +45,60 @@ describe('processStreamEvent()', () => { expect(convert).toHaveBeenCalledTimes(1); }); + it('should allow valid events to reach the entity conversion procedure test RECORD TRL', async () => { + await expect( + processStreamEvent( + { + Records: [ + { + body: JSON.stringify({ + eventName: 'INSERT', + dynamodb: { + NewImage: testResultWithTestType, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-result/stream/2020-01-01T00:00:00.000', + }), + }, + ], + }, + exampleContext(), + () => { + + }, + ), + ).resolves.not.toThrow(); + expect(convert).toHaveBeenCalledTimes(1); + }); + + it('should allow valid events to reach the entity conversion procedure test RECORD TRL and produce result log', async () => { + const consoleSpy = jest.spyOn(console, 'log'); + + await expect( + processStreamEvent( + { + Records: [ + { + body: JSON.stringify({ + eventName: 'INSERT', + dynamodb: { + NewImage: testResultWithTestType, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-result/stream/2020-01-01T00:00:00.000', + }), + }, + ], + }, + exampleContext(), + () => { + }, + ), + ).resolves.not.toThrow(); + expect(convert).toHaveBeenCalledTimes(1); + expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('[{\"changeType\":\"Technical Record Change\",\"identifier\":\"VRM-1\",\"operationType\":\"INSERT\"}]')); + }); + it('should fail on null event', async () => { await expect( processStreamEvent(null, exampleContext(), () => { diff --git a/tests/unit/services/logger.unitTest.ts b/tests/unit/services/logger.unitTest.ts new file mode 100644 index 0000000..480ac79 --- /dev/null +++ b/tests/unit/services/logger.unitTest.ts @@ -0,0 +1,10 @@ +import { debugLog } from "../../../src/services/logger"; + +describe('logger service', () => { + it('Should be able to get a logger instance', () => { + process.env.DEBUG = 'true' + let consoleSpy = jest.spyOn(console, 'info'); + debugLog("Test"); + expect(consoleSpy).toHaveBeenCalledWith('Test', []); + }) +}) From c131241bd9f35f98a6c0c0de50914e860dbed889 Mon Sep 17 00:00:00 2001 From: Daniel Searle <84069850+Daniel-Searle@users.noreply.github.com> Date: Thu, 25 Jul 2024 14:00:47 +0100 Subject: [PATCH 18/20] CB2-12965: Refactor test result and technical record logs (#115) * feat(CB2-12695): Added addiitonal logs * feat(CB2-12695): fixed linting issue * feat(CB2-12695): fixed linting issue * feat(CB2-12965): fixed linting issue * feat(CB2-12965): added semi colons * feat(CB2-12965): added semi colons * feat(CB2-12965): unit test to cover console log * feat(CB2-12965): unit test to cover console log * feat(CB2-12965): change let ot const * feat(CB2-12965): Added operation type to the log * feat(CB2-12965): Formatting in logger unit test * feat(cb2-12965): linting * feat(cb2-12965): refactor logging * feat(cb2-12965): remove type definitions * feat(CB2-12965): format imports and linting --- package.json | 1 - src/functions/process-stream-event.ts | 86 ++++++++-------- src/models/ILog.ts | 11 ++- src/services/logger.ts | 14 +++ .../process-stream-event.unitTest.ts | 97 ++++++++++++------- tests/unit/services/logger.unitTest.ts | 16 +-- 6 files changed, 134 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 4f4a5b7..0677489 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,6 @@ "author": "", "license": "ISC", "dependencies": { - "@dvsa/cvs-type-definitions": "^7.2.0", "@aws-sdk/client-dynamodb": "3.577.0", "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index 2846b53..f1678e8 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -7,16 +7,16 @@ import type { SQSEvent, StreamRecord, } from 'aws-lambda'; +import { unmarshall } from '@aws-sdk/util-dynamodb'; import { BatchItemFailuresResponse } from '../models/batch-item-failure-response'; import { destroyConnectionPool } from '../services/connection-pool'; import { DynamoDbImage } from '../services/dynamodb-images'; import { convert } from '../services/entity-conversion'; -import { debugLog } from '../services/logger'; +import { + addToLogManager, clearLogs, createLogEntry, debugLog, printLogs, updateLogEntry, +} from '../services/logger'; import { SqlOperation, deriveSqlOperation } from '../services/sql-operations'; import { transformTechRecord } from '../utils/transform-tech-record'; -import { unmarshall } from "@aws-sdk/util-dynamodb"; - -let logManager: ILog[] = []; /** * λ function: convert a DynamoDB document to Aurora RDS rows @@ -24,21 +24,19 @@ let logManager: ILog[] = []; * @param context - λ context */ export const processStreamEvent: Handler = async ( - event: SQSEvent, - context: Context, + event: SQSEvent, + context: Context, ): Promise => { const res: BatchItemFailuresResponse = { batchItemFailures: [], }; try { - const processStartTime: Date = new Date(); debugLog('Received SQS event: ', JSON.stringify(event)); - let iLog: ILog = { changeType: "", identifier: "", operationType: "" }; + const currentLog = createLogEntry(); validateEvent(event); const region = process.env.AWS_REGION; - if (!region) { console.error('AWS_REGION envvar not available'); return; @@ -56,69 +54,75 @@ export const processStreamEvent: Handler = async ( // parse source ARN const tableName: string = getTableNameFromArn( - dynamoRecord.eventSourceARN!, + dynamoRecord.eventSourceARN!, ); - if (tableName.includes('flat-tech-records')) { transformTechRecord(dynamoRecord as _Record); debugLog(`Dynamo Record after transformation: ${dynamoRecord}`); + const technicalRecord: any = dynamoRecord.dynamodb?.NewImage; const unmarshalledTechnicalRecord = unmarshall(technicalRecord); - iLog.statusCode = unmarshalledTechnicalRecord.statusCode; - iLog.changeType = "Technical Record Change"; - iLog.identifier = unmarshalledTechnicalRecord.vehicleType === 'trl' + updateLogEntry(currentLog, { + changeType: 'Technical Record Change', + identifier: unmarshalledTechnicalRecord.vehicleType === 'trl' ? unmarshalledTechnicalRecord.trailerId - : unmarshalledTechnicalRecord.primaryVrm; - } else if (tableName.includes('test-results')) { + : unmarshalledTechnicalRecord.primaryVrm, + statusCode: unmarshalledTechnicalRecord.techRecord[0]?.statusCode, + }); + } + if (tableName.includes('test-result')) { const testResult: any = dynamoRecord.dynamodb?.NewImage; const unmarshalledTestResult = unmarshall(testResult); - iLog.changeType = 'Test record change'; - iLog.testResultId = unmarshalledTestResult.testResultId; - iLog.identifier = unmarshalledTestResult.vehicleType === 'trl' - ? unmarshalledTestResult.trailerId : - unmarshalledTestResult.primaryVrm; + updateLogEntry(currentLog, { + changeType: 'Test Record Change', + testResultId: unmarshalledTestResult.testResultId, + identifier: unmarshalledTestResult.vehicleType === 'trl' + ? unmarshalledTestResult.trailerId + : unmarshalledTestResult.vrm, + }); } + // is this an INSERT, UPDATE, or DELETE? const operationType: SqlOperation = deriveSqlOperation( - dynamoRecord.eventName!, + dynamoRecord.eventName!, ); - - iLog.operationType = operationType; - addToILog(iLog); + updateLogEntry(currentLog, { operationType }); + addToLogManager(currentLog); // parse native DynamoDB format to usable TS map const image: DynamoDbImage = selectImage( - operationType, - dynamoRecord.dynamodb!, + operationType, + dynamoRecord.dynamodb!, ); debugLog('Dynamo image dump:', image); try { debugLog( - `DynamoDB ---> Aurora | START (event ID: ${dynamoRecord.eventID})`, + `DynamoDB ---> Aurora | START (event ID: ${dynamoRecord.eventID})`, ); await convert(tableName, operationType, image); + printLogs(); + clearLogs(); + debugLog( - `DynamoDB ---> Aurora | END (event ID: ${dynamoRecord.eventID})`, + `DynamoDB ---> Aurora | END (event ID: ${dynamoRecord.eventID})`, ); - console.log(`** RESULTS **\nProcess start time is: ${processStartTime.toISOString()} \n${JSON.stringify(logManager)}`, - ) } catch (err) { console.error( - "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", - [`messageId: ${id}`, err], + "Couldn't convert DynamoDB entity to Aurora, will return record to SQS for retry", + [`messageId: ${id}`, err], ); - res.batchItemFailures.push({itemIdentifier: id}); + res.batchItemFailures.push({ itemIdentifier: id }); dumpArguments(event, context); } } } catch (err) { console.error( - 'An error unrelated to Dynamo-to-Aurora conversion has occurred, event will not be retried', - err, + 'An error unrelated to Dynamo-to-Aurora conversion has occurred, event will not be retried', + err, ); dumpArguments(event, context); await destroyConnectionPool(); @@ -130,9 +134,9 @@ export const processStreamEvent: Handler = async ( export const getTableNameFromArn = (eventSourceArn: string): string => eventSourceArn.split(':')[5].split('/')[1]; const selectImage = ( - operationType: SqlOperation, - streamRecord: StreamRecord, - // eslint-disable-next-line consistent-return + operationType: SqlOperation, + streamRecord: StreamRecord, + // eslint-disable-next-line consistent-return ): DynamoDbImage => { // eslint-disable-next-line default-case switch (operationType) { @@ -188,7 +192,3 @@ const dumpArguments = (event: DynamoDBStreamEvent, context: Context): void => { console.error('Event dump : ', JSON.stringify(event)); console.error('Context dump: ', JSON.stringify(context)); }; - -const addToILog = (iLog: ILog) => { - if (iLog.identifier && iLog.changeType) logManager.push(iLog); -}; diff --git a/src/models/ILog.ts b/src/models/ILog.ts index 58ff934..57a55bb 100644 --- a/src/models/ILog.ts +++ b/src/models/ILog.ts @@ -1,7 +1,8 @@ interface ILog { - changeType: string; - identifier: string; - operationType: string; - statusCode?: string; - testResultId?: string; + timestamp: string; + changeType: string; + identifier: string; + operationType: string; + statusCode?: string; + testResultId?: string; } diff --git a/src/services/logger.ts b/src/services/logger.ts index f80496b..4efc01c 100644 --- a/src/services/logger.ts +++ b/src/services/logger.ts @@ -3,3 +3,17 @@ export const debugLog = (message?: any, ...optionalParams: any[]) => { console.info(message, optionalParams); } }; + +let logManager: ILog[] = []; + +export const createLogEntry = (): Partial => ({ + timestamp: new Date().toISOString(), +}); + +export const updateLogEntry = (entry: Partial, updates: Partial) => Object.assign(entry, updates); + +export const addToLogManager = (entry: Partial) => logManager.push(entry); + +export const printLogs = () => console.log(JSON.stringify(logManager)); + +export const clearLogs = () => logManager = []; diff --git a/tests/unit/functions/process-stream-event.unitTest.ts b/tests/unit/functions/process-stream-event.unitTest.ts index 6e75f6f..7d0e4a9 100644 --- a/tests/unit/functions/process-stream-event.unitTest.ts +++ b/tests/unit/functions/process-stream-event.unitTest.ts @@ -8,7 +8,6 @@ import { exampleContext } from '../../utils'; import testResultWithTestType from '../../resources/dynamodb-image-test-results-with-testtypes.json'; import techRecordV3 from '../../resources/dynamodb-image-technical-record-V3.json'; - jest.mock('../../../src/services/entity-conversion', () => ({ convert: jest.fn(), })); @@ -16,6 +15,7 @@ jest.mock('../../../src/services/entity-conversion', () => ({ describe('processStreamEvent()', () => { beforeEach(() => { jest.resetAllMocks(); + jest.restoreAllMocks(); mocked(convert).mockResolvedValueOnce({}); }); @@ -28,7 +28,7 @@ describe('processStreamEvent()', () => { body: JSON.stringify({ eventName: 'INSERT', dynamodb: { - NewImage: techRecordV3 + NewImage: techRecordV3, }, eventSourceARN: 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', @@ -47,26 +47,26 @@ describe('processStreamEvent()', () => { it('should allow valid events to reach the entity conversion procedure test RECORD TRL', async () => { await expect( - processStreamEvent( + processStreamEvent( + { + Records: [ { - Records: [ - { - body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: testResultWithTestType, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-result/stream/2020-01-01T00:00:00.000', - }), + body: JSON.stringify({ + eventName: 'INSERT', + dynamodb: { + NewImage: testResultWithTestType, }, - ], + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-result/stream/2020-01-01T00:00:00.000', + }), }, - exampleContext(), - () => { + ], + }, + exampleContext(), + () => { - }, - ), + }, + ), ).resolves.not.toThrow(); expect(convert).toHaveBeenCalledTimes(1); }); @@ -75,28 +75,57 @@ describe('processStreamEvent()', () => { const consoleSpy = jest.spyOn(console, 'log'); await expect( - processStreamEvent( + processStreamEvent( + { + Records: [ { - Records: [ - { - body: JSON.stringify({ - eventName: 'INSERT', - dynamodb: { - NewImage: testResultWithTestType, - }, - eventSourceARN: - 'arn:aws:dynamodb:eu-west-1:1:table/test-result/stream/2020-01-01T00:00:00.000', - }), + body: JSON.stringify({ + eventName: 'INSERT', + dynamodb: { + NewImage: testResultWithTestType, }, - ], + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/test-results/stream/2020-01-01T00:00:00.000', + }), }, - exampleContext(), - () => { + ], + }, + exampleContext(), + () => { + }, + ), + ).resolves.not.toThrow(); + expect(convert).toHaveBeenCalledTimes(1); + expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('changeType\":\"Test Record Change\",\"testResultId\":\"TEST-RESULT-ID-3\",\"identifier\":\"VRM-3\",\"operationType\":\"INSERT\"}]')); + }); + + it('should allow valid events to reach the entity conversion procedure tech RECORD TRL and produce result log', async () => { + const consoleSpy = jest.spyOn(console, 'log'); + + await expect( + processStreamEvent( + { + Records: [ + { + body: JSON.stringify({ + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordV3, + }, + eventSourceARN: + 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + }), }, - ), + ], + }, + exampleContext(), + () => { + }, + ), ).resolves.not.toThrow(); expect(convert).toHaveBeenCalledTimes(1); - expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('[{\"changeType\":\"Technical Record Change\",\"identifier\":\"VRM-1\",\"operationType\":\"INSERT\"}]')); + expect(consoleSpy).toHaveBeenCalledWith(expect.stringContaining('"changeType\":\"Technical Record Change\",\"identifier\":\"VRM-1\",\"statusCode\":\"STATUS-CODE\",\"operationType\":\"INSERT\"}]')); + consoleSpy.mockRestore(); }); it('should fail on null event', async () => { diff --git a/tests/unit/services/logger.unitTest.ts b/tests/unit/services/logger.unitTest.ts index 480ac79..bec34e3 100644 --- a/tests/unit/services/logger.unitTest.ts +++ b/tests/unit/services/logger.unitTest.ts @@ -1,10 +1,10 @@ -import { debugLog } from "../../../src/services/logger"; +import { debugLog } from '../../../src/services/logger'; describe('logger service', () => { - it('Should be able to get a logger instance', () => { - process.env.DEBUG = 'true' - let consoleSpy = jest.spyOn(console, 'info'); - debugLog("Test"); - expect(consoleSpy).toHaveBeenCalledWith('Test', []); - }) -}) + it('Should be able to get a logger instance', () => { + process.env.DEBUG = 'true'; + const consoleSpy = jest.spyOn(console, 'info'); + debugLog('Test'); + expect(consoleSpy).toHaveBeenCalledWith('Test', []); + }); +}); From a5dd986fc258e421998f0ceaa70bf3387b0f8517 Mon Sep 17 00:00:00 2001 From: Daniel Searle <84069850+Daniel-Searle@users.noreply.github.com> Date: Tue, 20 Aug 2024 10:02:00 +0100 Subject: [PATCH 19/20] feat(CB2-13178): added in vef to the test station types array (#117) * feat(CB2-13178): added in vef to the test station types array * feat(CB2-13178): use type definitions type instead * feat(CB2-13178): use type definitions type instead * feat(CB2-13178): update to the package lock --- package-lock.json | 8 ++++---- package.json | 1 + src/models/test-results.ts | 7 +++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index a059920..36c5d78 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", "@aws-sdk/util-dynamodb": "3.577.0", - "@dvsa/cvs-type-definitions": "^7.2.0", + "@dvsa/cvs-type-definitions": "^7.4.0", "@types/lambda-tester": "4.0.3", "aws-xray-sdk": "3.6.0", "date-fns": "3.6.0", @@ -7419,9 +7419,9 @@ } }, "node_modules/@dvsa/cvs-type-definitions": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@dvsa/cvs-type-definitions/-/cvs-type-definitions-7.2.0.tgz", - "integrity": "sha512-xgJ1WpIpKkUkKrCtle9OqDbnmpm9VZ8ePdl+QPvayRHxGpDgLTTgj9wyhsz9+XW2bqOepAGbBM1jO+JMPLZAog==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/@dvsa/cvs-type-definitions/-/cvs-type-definitions-7.4.0.tgz", + "integrity": "sha512-MGiIQ2It0xBlu9n+RqgrnlEpsHWUoZFPqIGF4VcaMpTCgVzcNE9TriuJMmdGI6TiegzxByOIhYNNtjQYQ1x5cA==", "dependencies": { "ajv": "^8.12.0", "json-schema-deref-sync": "^0.14.0", diff --git a/package.json b/package.json index 0677489..9a81c6c 100644 --- a/package.json +++ b/package.json @@ -59,6 +59,7 @@ "@aws-sdk/client-dynamodb-streams": "3.577.0", "@aws-sdk/client-secrets-manager": "3.565.0", "@aws-sdk/util-dynamodb": "3.577.0", + "@dvsa/cvs-type-definitions": "^7.4.0", "@types/lambda-tester": "4.0.3", "aws-xray-sdk": "3.6.0", "date-fns": "3.6.0", diff --git a/src/models/test-results.ts b/src/models/test-results.ts index 131dea7..18dea05 100644 --- a/src/models/test-results.ts +++ b/src/models/test-results.ts @@ -8,11 +8,10 @@ import { } from './shared-enums'; import { DynamoDbImage, parseStringArray } from '../services/dynamodb-images'; import { debugLog } from '../services/logger'; +import { TestStationTypes } from "@dvsa/cvs-type-definitions/types/v1/enums/testStationType.enum"; export type TestVersion = 'current' | 'archived'; -export type TestStationType = 'atf' | 'gvts' | 'hq'; - export type TestStatus = 'submitted' | 'cancelled'; export type OdometerReadingUnits = 'kilometres' | 'miles'; @@ -37,7 +36,7 @@ export interface TestResult { shouldEmailCertificate?: string; testStationName?: string; testStationPNumber?: string; - testStationType?: TestStationType; + testStationType?: TestStationTypes; testerName?: string; testerStaffId?: string; testResultId?: string; @@ -98,7 +97,7 @@ export const parseTestResult = (image: DynamoDbImage): TestResult => ({ shouldEmailCertificate: image.getString('shouldEmailCertificate'), testStationName: image.getString('testStationName'), testStationPNumber: image.getString('testStationPNumber'), - testStationType: image.getString('testStationType') as TestStationType, + testStationType: image.getString('testStationType') as TestStationTypes, testerName: image.getString('testerName'), testerStaffId: image.getString('testerStaffId'), testResultId: image.getString('testResultId'), From 2da66417abb95e5bcf2ba627e1cc4ab7e7a3a2c7 Mon Sep 17 00:00:00 2001 From: Craig Broady <79261988+cb-cs@users.noreply.github.com> Date: Fri, 13 Sep 2024 15:20:47 +0100 Subject: [PATCH 20/20] feat(cb2-13479): update-status logic (#120) * feat(cb2-13479): added logic to stop vehicle update when statusCode of archived feat(cb2-13479): corrected logic feat(cb2-13479): removed uneccesary test change feat(cb2-13479): updated logic as per data fb feat(cb2-13479): added integration tests feat(cb2-13479): corrected typo feat(cb2-13479): removed logs used for testing * feat(cb2-13479): pr comments --- package-lock.json | 4847 +++++++---------- package.json | 6 +- src/functions/process-stream-event.ts | 2 +- .../tech-record-document-conversion.ts | 28 +- ...tech-record-document-conversion.intTest.ts | 91 + .../unit/services/secrets-manager.unitTest.ts | 3 +- 6 files changed, 2234 insertions(+), 2743 deletions(-) diff --git a/package-lock.json b/package-lock.json index 36c5d78..0da035d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,9 +9,9 @@ "version": "0.0.1", "license": "ISC", "dependencies": { - "@aws-sdk/client-dynamodb": "3.577.0", - "@aws-sdk/client-dynamodb-streams": "3.577.0", - "@aws-sdk/client-secrets-manager": "3.565.0", + "@aws-sdk/client-dynamodb": "3.632.0", + "@aws-sdk/client-dynamodb-streams": "3.632.0", + "@aws-sdk/client-secrets-manager": "3.632.0", "@aws-sdk/util-dynamodb": "3.577.0", "@dvsa/cvs-type-definitions": "^7.4.0", "@types/lambda-tester": "4.0.3", @@ -102,6 +102,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -110,6 +111,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "dev": true, "dependencies": { "@aws-crypto/ie11-detection": "^3.0.0", "@aws-crypto/sha256-js": "^3.0.0", @@ -125,6 +127,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "dev": true, "dependencies": { "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", @@ -135,6 +138,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "dev": true, "dependencies": { "tslib": "^1.11.1" } @@ -143,6 +147,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dev": true, "dependencies": { "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-utf8-browser": "^3.0.0", @@ -1236,52 +1241,52 @@ "dev": true }, "node_modules/@aws-sdk/client-dynamodb": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.577.0.tgz", - "integrity": "sha512-jR+rhYz25aPcMQgQy9tyQS9bsZ2bUKf7gaJ89jvhrrt61dcvw2iXzoO++2SCJWTx8WE1nsT6Vcw70RYpc5y71g==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sso-oidc": "3.577.0", - "@aws-sdk/client-sts": "3.577.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/credential-provider-node": "3.577.0", - "@aws-sdk/middleware-endpoint-discovery": "3.577.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb/-/client-dynamodb-3.632.0.tgz", + "integrity": "sha512-Y7u/B/lyLdLZBrBSXjYZviyck0e3dZLL/Va6HIShNlDG8FyWuArefWr57/bu9Q8smdqpEduldprSRSWI7MPykg==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.632.0", + "@aws-sdk/client-sts": "3.632.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-endpoint-discovery": "3.620.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", - "@smithy/util-waiter": "^3.0.0", + "@smithy/util-waiter": "^3.1.2", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -1290,49 +1295,49 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.577.0.tgz", - "integrity": "sha512-A4d7a3UCTS1aVmKUtGAENPJS0cHQOVdEJ2Su8jBICWKYDJmKL3lai3O7qRa/yiFmaAdjvfVkGBW5XQBwWH0/jw==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sso-oidc": "3.577.0", - "@aws-sdk/client-sts": "3.577.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/credential-provider-node": "3.577.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-dynamodb-streams/-/client-dynamodb-streams-3.632.0.tgz", + "integrity": "sha512-vy44vep7i1ZzVC/3cv11Jh3hDOxQnqz3ftXDEAJEC9t+Ltz74Z9drPdxR3DyA8//hZI3SfIMdURAaTUXBb6e1A==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.632.0", + "@aws-sdk/client-sts": "3.632.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1340,47 +1345,116 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.577.0.tgz", - "integrity": "sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==", + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz", + "integrity": "sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1389,98 +1463,100 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.577.0.tgz", - "integrity": "sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.577.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/credential-provider-node": "3.577.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz", + "integrity": "sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.632.0" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/client-sts": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.577.0.tgz", - "integrity": "sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sso-oidc": "3.577.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/credential-provider-node": "3.577.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz", + "integrity": "sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.632.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -1489,16 +1565,19 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/core": { - "version": "3.576.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.576.0.tgz", - "integrity": "sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==", + "version": "3.629.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz", + "integrity": "sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==", "dependencies": { - "@smithy/core": "^2.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/signature-v4": "^3.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "fast-xml-parser": "4.2.5", + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, "engines": { @@ -1506,13 +1585,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", - "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1520,18 +1599,18 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.577.0.tgz", - "integrity": "sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==", + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" }, "engines": { @@ -1539,44 +1618,45 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.577.0.tgz", - "integrity": "sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz", + "integrity": "sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.577.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.632.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.577.0" + "@aws-sdk/client-sts": "^3.632.0" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.577.0.tgz", - "integrity": "sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz", + "integrity": "sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-http": "3.577.0", - "@aws-sdk/credential-provider-ini": "3.577.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.577.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.632.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.632.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1584,14 +1664,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", - "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1599,16 +1679,16 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.577.0.tgz", - "integrity": "sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz", + "integrity": "sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==", "dependencies": { - "@aws-sdk/client-sso": "3.577.0", - "@aws-sdk/token-providers": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/client-sso": "3.632.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1616,30 +1696,30 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", - "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.577.0" + "@aws-sdk/client-sts": "^3.621.0" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", - "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1647,12 +1727,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-logger": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", - "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1660,13 +1740,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", - "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1674,14 +1754,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.577.0.tgz", - "integrity": "sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz", + "integrity": "sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1689,15 +1769,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", - "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -1705,29 +1785,29 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/token-providers": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", - "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.577.0" + "@aws-sdk/client-sso-oidc": "^3.614.0" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/types": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", - "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1735,13 +1815,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-endpoints": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.577.0.tgz", - "integrity": "sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz", + "integrity": "sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", "tslib": "^2.6.2" }, "engines": { @@ -1749,24 +1829,24 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", - "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", - "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1782,11 +1862,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1794,14 +1874,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/config-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", - "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -1809,17 +1889,19 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", - "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", - "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz", + "integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { @@ -1827,14 +1909,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/credential-provider-imds": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", - "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -1842,23 +1924,23 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/fetch-http-handler": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", - "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/hash-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", - "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -1867,12 +1949,24 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/invalid-dependency": { + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", - "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/invalid-dependency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", + "dependencies": { + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" } }, @@ -1888,12 +1982,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-content-length": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", - "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1901,16 +1995,16 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-endpoint": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", - "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", "dependencies": { - "@smithy/middleware-serde": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -1918,17 +2012,17 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", - "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", - "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/service-error-classification": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz", + "integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -1937,11 +2031,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-serde": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", - "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1949,11 +2043,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/middleware-stack": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", - "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1961,13 +2055,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/node-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", - "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1975,14 +2069,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/node-http-handler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", - "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", "dependencies": { - "@smithy/abort-controller": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -1990,11 +2084,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/property-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", - "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2002,11 +2096,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/protocol-http": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", - "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2014,11 +2108,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/querystring-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", - "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, @@ -2027,11 +2121,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/querystring-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", - "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2039,22 +2133,22 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/service-error-classification": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", - "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", "dependencies": { - "@smithy/types": "^3.0.0" + "@smithy/types": "^3.3.0" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", - "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2062,14 +2156,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/signature-v4": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", - "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -2079,15 +2174,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/smithy-client": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", - "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz", + "integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.1", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" }, "engines": { @@ -2095,9 +2190,9 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dependencies": { "tslib": "^2.6.2" }, @@ -2106,12 +2201,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/url-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", - "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", "dependencies": { - "@smithy/querystring-parser": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" } }, @@ -2128,6 +2223,18 @@ "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-body-length-browser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", @@ -2147,18 +2254,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-config-provider": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", @@ -2171,13 +2266,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", - "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz", + "integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -2186,16 +2281,16 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", - "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz", + "integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==", "dependencies": { - "@smithy/config-resolver": "^3.0.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2203,12 +2298,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-endpoints": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", - "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2227,11 +2322,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", - "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2239,12 +2334,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-retry": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", - "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", "dependencies": { - "@smithy/service-error-classification": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2252,13 +2347,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", - "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", "dependencies": { - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-hex-encoding": "^3.0.0", @@ -2269,6 +2364,18 @@ "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-uri-escape": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", @@ -2292,52 +2399,154 @@ "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-dynamodb-streams/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.577.0.tgz", - "integrity": "sha512-BwujdXrydlk6UEyPmewm5GqG4nkQ6OVyRhS/SyZP/6UKSFv2/sf391Cmz0hN0itUTH1rR4XeLln8XCOtarkrzg==", + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz", + "integrity": "sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2346,98 +2555,100 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.577.0.tgz", - "integrity": "sha512-njmKSPDWueWWYVFpFcZ2P3fI6/pdQVDa0FgCyYZhOnJLgEHZIcBBg1AsnkVWacBuLopp9XVt2m+7hO6ugY1/1g==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.577.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/credential-provider-node": "3.577.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz", + "integrity": "sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.632.0" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/client-sts": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.577.0.tgz", - "integrity": "sha512-509Kklimva1XVlhGbpTpeX3kOP6ORpm44twJxDHpa9TURbmoaxj7veWlnLCbDorxDTrbsDghvYZshvcLsojVpg==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sso-oidc": "3.577.0", - "@aws-sdk/core": "3.576.0", - "@aws-sdk/credential-provider-node": "3.577.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.577.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.0", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz", + "integrity": "sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.632.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "@smithy/util-base64": "^3.0.0", "@smithy/util-body-length-browser": "^3.0.0", "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.0", - "@smithy/util-defaults-mode-node": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, @@ -2446,16 +2657,19 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/core": { - "version": "3.576.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.576.0.tgz", - "integrity": "sha512-KDvDlbeipSTIf+ffKtTg1m419TK7s9mZSWC8bvuZ9qx6/sjQFOXIKOVqyuli6DnfxGbvRcwoRuY99OcCH1N/0w==", + "version": "3.629.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz", + "integrity": "sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==", "dependencies": { - "@smithy/core": "^2.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/signature-v4": "^3.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "fast-xml-parser": "4.2.5", + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, "engines": { @@ -2463,13 +2677,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", - "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2477,18 +2691,18 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.577.0.tgz", - "integrity": "sha512-n++yhCp67b9+ZRGEdY1jhamB5E/O+QsIDOPSuRmdaSGMCOd82oUEKPgIVEU1bkqxDsBxgiEWuvtfhK6sNiDS0A==", + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/fetch-http-handler": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" }, "engines": { @@ -2496,44 +2710,45 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.577.0.tgz", - "integrity": "sha512-q7lHPtv6BjRvChUE3m0tIaEZKxPTaZ1B3lKxGYsFl3VLAu5N8yGCUKwuA1izf4ucT+LyKscVGqK6VDZx1ev3nw==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz", + "integrity": "sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.577.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.632.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.577.0" + "@aws-sdk/client-sts": "^3.632.0" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.577.0.tgz", - "integrity": "sha512-epZ1HOMsrXBNczc0HQpv0VMjqAEpc09DUA7Rg3gUJfn8umhML7A7bXnUyqPA+S54q397UYg1leQKdSn23OiwQQ==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz", + "integrity": "sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-http": "3.577.0", - "@aws-sdk/credential-provider-ini": "3.577.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.577.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.632.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.632.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2541,14 +2756,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", - "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2556,16 +2771,16 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.577.0.tgz", - "integrity": "sha512-iVm5SQvS7EgZTJsRaqUOmDQpBQPPPat42SCbWFvFQOLrl8qewq8OP94hFS5w2mP62zngeYzqhJnDel79HXbxew==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz", + "integrity": "sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==", "dependencies": { - "@aws-sdk/client-sso": "3.577.0", - "@aws-sdk/token-providers": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/client-sso": "3.632.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2573,30 +2788,30 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", - "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.577.0" + "@aws-sdk/client-sts": "^3.621.0" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", - "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2604,12 +2819,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-logger": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", - "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2617,13 +2832,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", - "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2631,14 +2846,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.577.0.tgz", - "integrity": "sha512-P55HAXgwmiHHpFx5JEPvOnAbfhN7v6sWv9PBQs+z2tC7QiBcPS0cdJR6PfV7J1n4VPK52/OnrK3l9VxdQ7Ms0g==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz", + "integrity": "sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2646,15 +2861,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", - "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -2662,29 +2877,29 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/token-providers": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", - "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.577.0" + "@aws-sdk/client-sso-oidc": "^3.614.0" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/types": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", - "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2692,13 +2907,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-endpoints": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.577.0.tgz", - "integrity": "sha512-FjuUz1Kdy4Zly2q/c58tpdqHd6z7iOdU/caYzoc8jwgAHBDBbIJNQLCU9hXJnPV2M8pWxQDyIZsoVwtmvErPzw==", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz", + "integrity": "sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", "tslib": "^2.6.2" }, "engines": { @@ -2706,24 +2921,24 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", - "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", - "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2739,11 +2954,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2751,14 +2966,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/config-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", - "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -2766,17 +2981,19 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", - "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", - "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz", + "integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { @@ -2784,14 +3001,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/credential-provider-imds": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", - "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -2799,23 +3016,23 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/fetch-http-handler": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", - "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/hash-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", - "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -2824,12 +3041,24 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/invalid-dependency": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", - "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/invalid-dependency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", + "dependencies": { + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" } }, @@ -2845,12 +3074,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-content-length": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", - "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2858,16 +3087,16 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-endpoint": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", - "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", "dependencies": { - "@smithy/middleware-serde": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { @@ -2875,17 +3104,17 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", - "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", - "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/service-error-classification": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz", + "integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", "tslib": "^2.6.2", "uuid": "^9.0.1" }, @@ -2894,11 +3123,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-serde": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", - "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2906,11 +3135,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/middleware-stack": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", - "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2918,13 +3147,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/node-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", - "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2932,14 +3161,14 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/node-http-handler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", - "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", "dependencies": { - "@smithy/abort-controller": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2947,11 +3176,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/property-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", - "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2959,11 +3188,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/protocol-http": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", - "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2971,11 +3200,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/querystring-builder": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", - "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, @@ -2984,11 +3213,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/querystring-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", - "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -2996,22 +3225,22 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/service-error-classification": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", - "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", "dependencies": { - "@smithy/types": "^3.0.0" + "@smithy/types": "^3.3.0" }, "engines": { "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", - "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -3019,14 +3248,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/signature-v4": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", - "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { "@smithy/is-array-buffer": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "@smithy/util-uri-escape": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -3036,15 +3266,15 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/smithy-client": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", - "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz", + "integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.1", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" }, "engines": { @@ -3052,9 +3282,9 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dependencies": { "tslib": "^2.6.2" }, @@ -3063,12 +3293,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/url-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", - "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", "dependencies": { - "@smithy/querystring-parser": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" } }, @@ -3085,6 +3315,18 @@ "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-body-length-browser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", @@ -3104,18 +3346,6 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-config-provider": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", @@ -3128,13 +3358,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", - "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz", + "integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", "bowser": "^2.11.0", "tslib": "^2.6.2" }, @@ -3143,16 +3373,16 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", - "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz", + "integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==", "dependencies": { - "@smithy/config-resolver": "^3.0.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -3160,12 +3390,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-endpoints": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", - "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -3184,11 +3414,11 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", - "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -3196,12 +3426,12 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-retry": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", - "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", "dependencies": { - "@smithy/service-error-classification": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -3209,13 +3439,13 @@ } }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", - "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", "dependencies": { - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", "@smithy/util-base64": "^3.0.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-hex-encoding": "^3.0.0", @@ -3226,6 +3456,18 @@ "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-uri-escape": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", @@ -3249,23 +3491,56 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-waiter": { + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.0.0.tgz", - "integrity": "sha512-+fEXJxGDLCoqRKVSmo0auGxaqbiCo+8oph+4auefYjaNxjOLKSY2MxVQfRzo65PaZv4fr+5lWg+au7vSuJJ/zw==", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/abort-controller": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/@smithy/util-waiter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", + "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", + "dependencies": { + "@smithy/abort-controller": "^3.1.1", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-dynamodb/node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-dynamodb/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@aws-sdk/client-lambda": { "version": "3.554.0", @@ -3330,1644 +3605,653 @@ "dev": true }, "node_modules/@aws-sdk/client-secrets-manager": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.565.0.tgz", - "integrity": "sha512-C31ZIoY6d0Fz+U12ygXkemjbp2CsMZzQd34i2PYb+AzsuGeNukvAs+LnumJ0if5HM7rfaC9m68Qw+NRMn9lRLA==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/credential-provider-node": "3.565.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-secrets-manager/-/client-secrets-manager-3.632.0.tgz", + "integrity": "sha512-WsQhPHHK1yPfALcP1B7nBSGDzky6vFTUEXnUdfzb5Xy2cT+JTBTS6ChtQGqqOuGHDP/3t/9soqZ+L6rUCYBb/Q==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.632.0", + "@aws-sdk/client-sts": "3.632.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2", "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz", - "integrity": "sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.556.0", - "@aws-sdk/middleware-host-header": "3.535.0", - "@aws-sdk/middleware-logger": "3.535.0", - "@aws-sdk/middleware-recursion-detection": "3.535.0", - "@aws-sdk/middleware-user-agent": "3.540.0", - "@aws-sdk/region-config-resolver": "3.535.0", - "@aws-sdk/types": "3.535.0", - "@aws-sdk/util-endpoints": "3.540.0", - "@aws-sdk/util-user-agent-browser": "3.535.0", - "@aws-sdk/util-user-agent-node": "3.535.0", - "@smithy/config-resolver": "^2.2.0", - "@smithy/core": "^1.4.2", - "@smithy/fetch-http-handler": "^2.5.0", - "@smithy/hash-node": "^2.2.0", - "@smithy/invalid-dependency": "^2.2.0", - "@smithy/middleware-content-length": "^2.2.0", - "@smithy/middleware-endpoint": "^2.5.1", - "@smithy/middleware-retry": "^2.3.1", - "@smithy/middleware-serde": "^2.3.0", - "@smithy/middleware-stack": "^2.2.0", - "@smithy/node-config-provider": "^2.3.0", - "@smithy/node-http-handler": "^2.5.0", - "@smithy/protocol-http": "^3.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "@smithy/url-parser": "^2.2.0", - "@smithy/util-base64": "^2.3.0", - "@smithy/util-body-length-browser": "^2.2.0", - "@smithy/util-body-length-node": "^2.3.0", - "@smithy/util-defaults-mode-browser": "^2.2.1", - "@smithy/util-defaults-mode-node": "^2.3.1", - "@smithy/util-endpoints": "^1.2.0", - "@smithy/util-middleware": "^2.2.0", - "@smithy/util-retry": "^2.2.0", - "@smithy/util-utf8": "^2.3.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.583.0.tgz", - "integrity": "sha512-LO3wmrFXPi2kNE46lD1XATfRrvdNxXd4DlTFouoWmr7lvqoUkcbmtkV2r/XChZA2z0HiDauphC1e8b8laJVeSg==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.583.0", - "@aws-sdk/core": "3.582.0", - "@aws-sdk/credential-provider-node": "3.583.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.583.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.583.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.1", - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.1", - "@smithy/util-defaults-mode-node": "^3.0.1", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/client-sso": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.583.0.tgz", - "integrity": "sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.582.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.583.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.583.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.1", - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.1", - "@smithy/util-defaults-mode-node": "^3.0.1", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/core": { - "version": "3.582.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.582.0.tgz", - "integrity": "sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dependencies": { - "@smithy/core": "^2.0.1", - "@smithy/protocol-http": "^4.0.0", - "@smithy/signature-v4": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", - "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.582.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.582.0.tgz", - "integrity": "sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.583.0.tgz", - "integrity": "sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ==", - "peer": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.583.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.583.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.583.0.tgz", - "integrity": "sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw==", - "peer": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-http": "3.582.0", - "@aws-sdk/credential-provider-ini": "3.583.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.583.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", - "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.583.0.tgz", - "integrity": "sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg==", - "peer": true, - "dependencies": { - "@aws-sdk/client-sso": "3.583.0", - "@aws-sdk/token-providers": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", - "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.577.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", - "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-logger": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", - "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", - "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.583.0.tgz", - "integrity": "sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.583.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", - "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/token-providers": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", - "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.577.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/types": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", - "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-endpoints": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.583.0.tgz", - "integrity": "sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", - "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", - "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/config-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", - "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", - "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/credential-provider-imds": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", - "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/fetch-http-handler": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", - "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/hash-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", - "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/invalid-dependency": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", - "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-content-length": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", - "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-endpoint": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", - "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", - "peer": true, - "dependencies": { - "@smithy/middleware-serde": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", - "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/service-error-classification": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-serde": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", - "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/middleware-stack": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", - "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", - "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/node-http-handler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", - "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", - "peer": true, - "dependencies": { - "@smithy/abort-controller": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/property-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", - "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/protocol-http": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", - "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", - "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/signature-v4": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", - "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", - "peer": true, - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/smithy-client": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", - "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/url-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", - "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", - "peer": true, - "dependencies": { - "@smithy/querystring-parser": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "peer": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", - "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", - "peer": true, - "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", - "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", - "peer": true, - "dependencies": { - "@smithy/config-resolver": "^3.0.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-endpoints": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", - "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", - "peer": true, - "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", - "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", - "peer": true, - "dependencies": { - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-retry": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", - "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", - "peer": true, - "dependencies": { - "@smithy/service-error-classification": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "peer": true, - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.583.0.tgz", - "integrity": "sha512-xDMxiemPDWr9dY2Q4AyixkRnk/hvS6fs6OWxuVCz1WO47YhaAfOsEGAgQMgDLLaOfj/oLU5D14uTNBEPGh4rBA==", - "peer": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sso-oidc": "3.583.0", - "@aws-sdk/core": "3.582.0", - "@aws-sdk/credential-provider-node": "3.583.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.583.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.583.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.1", - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.1", - "@smithy/util-defaults-mode-node": "^3.0.1", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/client-sso": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.583.0.tgz", - "integrity": "sha512-FNJ2MmiBtZZwgkj4+GLVrzqwmD6D8FBptrFZk7PnGkSf7v1Q8txYNI6gY938RRhYJ4lBW4cNbhPvWoDxAl90Hw==", - "peer": true, - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.582.0", - "@aws-sdk/middleware-host-header": "3.577.0", - "@aws-sdk/middleware-logger": "3.577.0", - "@aws-sdk/middleware-recursion-detection": "3.577.0", - "@aws-sdk/middleware-user-agent": "3.583.0", - "@aws-sdk/region-config-resolver": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.583.0", - "@aws-sdk/util-user-agent-browser": "3.577.0", - "@aws-sdk/util-user-agent-node": "3.577.0", - "@smithy/config-resolver": "^3.0.0", - "@smithy/core": "^2.0.1", - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/hash-node": "^3.0.0", - "@smithy/invalid-dependency": "^3.0.0", - "@smithy/middleware-content-length": "^3.0.0", - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-body-length-browser": "^3.0.0", - "@smithy/util-body-length-node": "^3.0.0", - "@smithy/util-defaults-mode-browser": "^3.0.1", - "@smithy/util-defaults-mode-node": "^3.0.1", - "@smithy/util-endpoints": "^2.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/core": { - "version": "3.582.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.582.0.tgz", - "integrity": "sha512-ofmD96IQc9g1dbyqlCyxu5fCG7kIl9p1NoN5+vGBUyLdbmPCV3Pdg99nRHYEJuv2MgGx5AUFGDPMHcqbJpnZIw==", - "peer": true, - "dependencies": { - "@smithy/core": "^2.0.1", - "@smithy/protocol-http": "^4.0.0", - "@smithy/signature-v4": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "fast-xml-parser": "4.2.5", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.577.0.tgz", - "integrity": "sha512-Jxu255j0gToMGEiqufP8ZtKI8HW90lOLjwJ3LrdlD/NLsAY0tOQf1fWc53u28hWmmNGMxmCrL2p66IOgMDhDUw==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-http": { - "version": "3.582.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.582.0.tgz", - "integrity": "sha512-kGOUKw5ryPkDIYB69PjK3SicVLTbWB06ouFN2W1EvqUJpkQGPAUGzYcomKtt3mJaCTf/1kfoaHwARAl6KKSP8Q==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.583.0.tgz", - "integrity": "sha512-8I0oWNg/yps6ctjhEeL/qJ9BIa/+xXP7RPDQqFKZ2zBkWbmLLOoMWXRvl8uKUBD6qCe+DGmcu9skfVXeXSesEQ==", - "peer": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.583.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.583.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.583.0.tgz", - "integrity": "sha512-yBNypBXny7zJH85SzxDj8s1mbLXv9c/Vbq0qR3R3POj2idZ6ywB/qlIRC1XwBuv49Wvg8kA1wKXk3K3jrpcVIw==", - "peer": true, - "dependencies": { - "@aws-sdk/credential-provider-env": "3.577.0", - "@aws-sdk/credential-provider-http": "3.582.0", - "@aws-sdk/credential-provider-ini": "3.583.0", - "@aws-sdk/credential-provider-process": "3.577.0", - "@aws-sdk/credential-provider-sso": "3.583.0", - "@aws-sdk/credential-provider-web-identity": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.577.0.tgz", - "integrity": "sha512-Gin6BWtOiXxIgITrJ3Nwc+Y2P1uVT6huYR4EcbA/DJUPWyO0n9y5UFLewPvVbLkRn15JeEqErBLUrHclkiOKtw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">=14.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.583.0.tgz", - "integrity": "sha512-G/1EvL9tBezSiU+06tG4K/kOvFfPjnheT4JSXqjPM7+vjKzgp2jxp1J9MMd69zs4jVWon932zMeGgjrCplzMEg==", - "peer": true, - "dependencies": { - "@aws-sdk/client-sso": "3.583.0", - "@aws-sdk/token-providers": "3.577.0", - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.632.0.tgz", + "integrity": "sha512-iYWHiKBz44m3chCFvtvHnvCpL2rALzyr1e6tOZV3dLlOKtQtDUlPy6OtnXDu4y+wyJCniy8ivG3+LAe4klzn1Q==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.577.0.tgz", - "integrity": "sha512-ZGHGNRaCtJJmszb9UTnC7izNCtRUttdPlLdMkh41KPS32vfdrBDHs1JrpbZijItRj1xKuOXsiYSXLAaHGcLh8Q==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.632.0.tgz", + "integrity": "sha512-Oh1fIWaoZluihOCb/zDEpRTi+6an82fgJz7fyRBugyLhEtDjmvpCQ3oKjzaOhoN+4EvXAm1ZS/ZgpvXBlIRTgw==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "@aws-sdk/client-sts": "^3.577.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.577.0.tgz", - "integrity": "sha512-9ca5MJz455CODIVXs0/sWmJm7t3QO4EUa1zf8pE8grLpzf0J94bz/skDWm37Pli13T3WaAQBHCTiH2gUVfCsWg==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-logger": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.577.0.tgz", - "integrity": "sha512-aPFGpGjTZcJYk+24bg7jT4XdIp42mFXSuPt49lw5KygefLyJM/sB0bKKqPYYivW0rcuZ9brQ58eZUNthrzYAvg==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.577.0.tgz", - "integrity": "sha512-pn3ZVEd2iobKJlR3H+bDilHjgRnNrQ6HMmK9ZzZw89Ckn3Dcbv48xOv4RJvu0aU8SDLl/SNCxppKjeLDTPGBNA==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.583.0.tgz", - "integrity": "sha512-xVNXXXDWvBVI/AeVtSdA9SVumqxiZaESk/JpUn9GMkmtTKfter0Cweap+1iQ9j8bRAO0vNhmIkbcvdB1S4WVUw==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@aws-sdk/util-endpoints": "3.583.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.577.0.tgz", - "integrity": "sha512-4ChCFACNwzqx/xjg3zgFcW8Ali6R9C95cFECKWT/7CUM1D0MGvkclSH2cLarmHCmJgU6onKkJroFtWp0kHhgyg==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" + "@aws-sdk/client-sts": "^3.632.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/token-providers": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.577.0.tgz", - "integrity": "sha512-0CkIZpcC3DNQJQ1hDjm2bdSy/Xjs7Ny5YvSsacasGOkNfk+FdkiQy6N67bZX3Zbc9KIx+Nz4bu3iDeNSNplnnQ==", - "peer": true, - "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.632.0.tgz", + "integrity": "sha512-Ss5cBH09icpTvT+jtGGuQlRdwtO7RyE9BF4ZV/CEPATdd9whtJt4Qxdya8BUnkWR7h5HHTrQHqai3YVYjku41A==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.632.0", + "@aws-sdk/core": "3.629.0", + "@aws-sdk/credential-provider-node": "3.632.0", + "@aws-sdk/middleware-host-header": "3.620.0", + "@aws-sdk/middleware-logger": "3.609.0", + "@aws-sdk/middleware-recursion-detection": "3.620.0", + "@aws-sdk/middleware-user-agent": "3.632.0", + "@aws-sdk/region-config-resolver": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@aws-sdk/util-user-agent-browser": "3.609.0", + "@aws-sdk/util-user-agent-node": "3.614.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/core": "^2.3.2", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/hash-node": "^3.0.3", + "@smithy/invalid-dependency": "^3.0.3", + "@smithy/middleware-content-length": "^3.0.5", + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.14", + "@smithy/util-defaults-mode-node": "^3.0.14", + "@smithy/util-endpoints": "^2.0.5", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.577.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/types": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", - "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { + "version": "3.629.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.629.0.tgz", + "integrity": "sha512-+/ShPU/tyIBM3oY1cnjgNA/tFyHtlWq+wXF9xEKRv19NOpYbWQ+xzNwVjGq8vR07cCRqy/sDQLWPhxjtuV/FiQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/core": "^2.3.2", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/signature-v4": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-endpoints": { - "version": "3.583.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.583.0.tgz", - "integrity": "sha512-ZC9mb2jq6BFXPYsUsD2tmYcnlmd+9PGNwnFNn8jk4abna5Jjk2wDknN81ybktmBR5ttN9W8ugmktuKtvAMIDCQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.620.1.tgz", + "integrity": "sha512-ExuILJ2qLW5ZO+rgkNRj0xiAipKT16Rk77buvPP8csR7kkCflT/gXTyzRe/uzIiETTxM7tr8xuO9MP/DQXqkfg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "@smithy/util-endpoints": "^2.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.577.0.tgz", - "integrity": "sha512-zEAzHgR6HWpZOH7xFgeJLc6/CzMcx4nxeQolZxVZoB5pPaJd3CjyRhZN0xXeZB0XIRCWmb4yJBgyiugXLNMkLA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.622.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.622.0.tgz", + "integrity": "sha512-VUHbr24Oll1RK3WR8XLUugLpgK9ZuxEm/NVeVqyFts1Ck9gsKpRg1x4eH7L7tW3SJ4TDEQNMbD7/7J+eoL2svg==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/types": "^3.0.0", - "bowser": "^2.11.0", + "@aws-sdk/types": "3.609.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.577.0.tgz", - "integrity": "sha512-XqvtFjbSMtycZTWVwDe8DRWovuoMbA54nhUoZwVU6rW9OSD6NZWGR512BUGHFaWzW0Wg8++Dj10FrKTG2XtqfA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.632.0.tgz", + "integrity": "sha512-m6epoW41xa1ajU5OiHcmQHoGVtrbXBaRBOUhlCLZmcaqMLYsboM4iD/WZP8aatKEON5tTnVXh/4StV8D/+wemw==", "dependencies": { - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.632.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" }, "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "@aws-sdk/client-sts": "^3.632.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/config-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.0.tgz", - "integrity": "sha512-2GzOfADwYLQugYkKQhIyZyQlM05K+tMKvRnc6eFfZcpJGRfKoMUMYdPlBKmqHwQFXQKBrGV6cxL9oymWgDzvFw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.632.0.tgz", + "integrity": "sha512-cL8fuJWm/xQBO4XJPkeuZzl3XinIn9EExWgzpG48NRMKR5us1RI/ucv7xFbBBaG+r/sDR2HpYBIA3lVIpm1H3Q==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@aws-sdk/credential-provider-env": "3.620.1", + "@aws-sdk/credential-provider-http": "3.622.0", + "@aws-sdk/credential-provider-ini": "3.632.0", + "@aws-sdk/credential-provider-process": "3.620.1", + "@aws-sdk/credential-provider-sso": "3.632.0", + "@aws-sdk/credential-provider-web-identity": "3.621.0", + "@aws-sdk/types": "3.609.0", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.0.1.tgz", - "integrity": "sha512-rcMkjvwxH/bER+oZUPR0yTA0ELD6m3A+d92+CFkdF6HJFCBB1bXo7P5pm21L66XwTN01B6bUhSCQ7cymWRD8zg==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.620.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.620.1.tgz", + "integrity": "sha512-hWqFMidqLAkaV9G460+1at6qa9vySbjQKKc04p59OT7lZ5cO5VH5S4aI05e+m4j364MBROjjk2ugNvfNf/8ILg==", "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-retry": "^3.0.1", - "@smithy/middleware-serde": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/credential-provider-imds": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.0.0.tgz", - "integrity": "sha512-lfmBiFQcA3FsDAPxNfY0L7CawcWtbyWsBOHo34nF095728JLkBX4Y9q/VPPE2r7fqMVK+drmDigqE2/SSQeVRA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.632.0.tgz", + "integrity": "sha512-P/4wB6j7ym5QCPTL2xlMfvf2NcXSh+z0jmsZP4WW/tVwab4hvgabPPbLeEZDSWZ0BpgtxKGvRq0GSHuGeirQbA==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", + "@aws-sdk/client-sso": "3.632.0", + "@aws-sdk/token-providers": "3.614.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/fetch-http-handler": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", - "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/hash-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.0.tgz", - "integrity": "sha512-84qXstNemP3XS5jcof0el6+bDfjzuvhJPQTEfro3lgtbCtKgzPm3MgiS6ehXVPjeQ5+JS0HqmTz8f/RYfzHVxw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.621.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.621.0.tgz", + "integrity": "sha512-w7ASSyfNvcx7+bYGep3VBgC3K6vEdLmlpjT7nSIHxxQf+WSdvy+HynwJosrpZax0sK5q0D1Jpn/5q+r5lwwW6w==", "dependencies": { - "@smithy/types": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.621.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/invalid-dependency": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.0.tgz", - "integrity": "sha512-F6wBBaEFgJzj0s4KUlliIGPmqXemwP6EavgvDqYwCH40O5Xr2iMHvS8todmGVZtuJCorBkXsYLyTu4PuizVq5g==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.620.0.tgz", + "integrity": "sha512-VMtPEZwqYrII/oUkffYsNWY9PZ9xpNJpMgmyU0rlDQ25O1c0Hk3fJmZRe6pEkAJ0omD7kLrqGl1DUjQVxpd/Rg==", "dependencies": { - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-content-length": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.0.tgz", - "integrity": "sha512-3C4s4d/iGobgCtk2tnWW6+zSTOBg1PRAm2vtWZLdriwTroFbbWNSr3lcyzHdrQHnEXYCC5K52EbpfodaIUY8sg==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-logger": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.609.0.tgz", + "integrity": "sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==", "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-endpoint": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.0.tgz", - "integrity": "sha512-aXOAWztw/5qAfp0NcA2OWpv6ZI/E+Dh9mByif7i91D/0iyYNUcKvskmXiowKESFkuZ7PIMd3VOR4fTibZDs2OQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.620.0.tgz", + "integrity": "sha512-nh91S7aGK3e/o1ck64sA/CyoFw+gAYj2BDOnoNa6ouyCrVJED96ZXWbhye/fz9SgmNUZR2g7GdVpiLpMKZoI5w==", "dependencies": { - "@smithy/middleware-serde": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/url-parser": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-retry": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.1.tgz", - "integrity": "sha512-hBhSEuL841FhJBK/19WpaGk5YWSzFk/P2UaVjANGKRv3eYNO8Y1lANWgqnuPWjOyCEWMPr58vELFDWpxvRKANw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.632.0.tgz", + "integrity": "sha512-yY/sFsHKwG9yzSf/DTclqWJaGPI2gPBJDCGBujSqTG1zlS7Ot4fqi91DZ6088BFWzbOorDzJFcAhAEFzc6LuQg==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/service-error-classification": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-retry": "^3.0.0", - "tslib": "^2.6.2", - "uuid": "^9.0.1" + "@aws-sdk/types": "3.609.0", + "@aws-sdk/util-endpoints": "3.632.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-serde": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.0.tgz", - "integrity": "sha512-I1vKG1foI+oPgG9r7IMY1S+xBnmAn1ISqployvqkwHoSb8VPsngHDTOgYGYBonuOKndaWRUGJZrKYYLB+Ane6w==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.614.0.tgz", + "integrity": "sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==", "dependencies": { - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/middleware-stack": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.0.tgz", - "integrity": "sha512-+H0jmyfAyHRFXm6wunskuNAqtj7yfmwFB6Fp37enytp2q047/Od9xetEaUbluyImOlGnGpaVGaVfjwawSr+i6Q==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.614.0.tgz", + "integrity": "sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.614.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/node-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", - "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/types": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/node-http-handler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", - "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-endpoints": { + "version": "3.632.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.632.0.tgz", + "integrity": "sha512-LlYMU8pAbcEQphOpE6xaNLJ8kPGhklZZTVzZVpVW477NaaGgoGTMYNXTABYHcxeF5E2lLrxql9OmVpvr8GWN8Q==", "dependencies": { - "@smithy/abort-controller": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "@smithy/util-endpoints": "^2.0.5", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/property-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", - "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.609.0.tgz", + "integrity": "sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/protocol-http": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", - "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.614.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.614.0.tgz", + "integrity": "sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", - "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/signature-v4": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.0.0.tgz", - "integrity": "sha512-kXFOkNX+BQHe2qnLxpMEaCRGap9J6tUGLzc3A9jdn+nD4JdMwCKTJ+zFwQ20GkY+mAXGatyTw3HcoUlR39HwmA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/config-resolver": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.0", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/smithy-client": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.0.1.tgz", - "integrity": "sha512-KAiFY4Y4jdHxR+4zerH/VBhaFKM8pbaVmJZ/CWJRwtM/CmwzTfXfvYwf6GoUwiHepdv+lwiOXCuOl6UBDUEINw==", - "peer": true, - "dependencies": { - "@smithy/middleware-endpoint": "^3.0.0", - "@smithy/middleware-stack": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-stream": "^3.0.1", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/core": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.0.tgz", + "integrity": "sha512-cHXq+FneIF/KJbt4q4pjN186+Jf4ZB0ZOqEaZMBhT79srEyGDDBV31NqBRBjazz8ppQ1bJbDJMY9ba5wKFV36w==", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.15", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/credential-provider-imds": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/url-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.0.tgz", - "integrity": "sha512-2XLazFgUu+YOGHtWihB3FSLAfCUajVfNBXGGYjOaVKjLAuAxx3pSBY3hBgLzIgB17haf59gOG3imKqTy8mcrjw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/fetch-http-handler": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", "dependencies": { - "@smithy/querystring-parser": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/hash-node": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", "dependencies": { + "@smithy/types": "^3.3.0", "@smithy/util-buffer-from": "^3.0.0", "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" @@ -4976,20 +4260,31 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-body-length-browser": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/invalid-dependency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", "dependencies": { + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-body-length-node": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/is-array-buffer": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { "tslib": "^2.6.2" }, @@ -4997,238 +4292,218 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.1.tgz", - "integrity": "sha512-nW5kEzdJn1Bn5TF+gOPHh2rcPli8JU9vSSXLbfg7uPnfR1TMRQqs9zlYRhIb87NeSxIbpdXOI94tvXSy+fvDYg==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/middleware-content-length": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", - "bowser": "^2.11.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.1.tgz", - "integrity": "sha512-TFk+Qb+elLc/MOhtSp+50fstyfZ6avQbgH2d96xUBpeScu+Al9elxv+UFAjaTHe0HQe5n+wem8ZLpXvU8lwV6Q==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/middleware-endpoint": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", "dependencies": { - "@smithy/config-resolver": "^3.0.0", - "@smithy/credential-provider-imds": "^3.0.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/property-provider": "^3.0.0", - "@smithy/smithy-client": "^3.0.1", - "@smithy/types": "^3.0.0", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/middleware-retry": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.15.tgz", + "integrity": "sha512-iTMedvNt1ApdvkaoE8aSDuwaoc+BhvHqttbA/FO4Ty+y/S5hW6Ci/CTScG7vam4RYJWZxdTElc3MEfHRVH6cgQ==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-endpoints": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.0.tgz", - "integrity": "sha512-+exaXzEY3DNt2qtA2OtRNSDlVrE4p32j1JSsQkzA5AdP0YtJNjkYbYhJxkFmPYcjI1abuwopOZCwUmv682QkiQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/middleware-serde": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", "dependencies": { - "@smithy/node-config-provider": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-middleware": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.0.tgz", - "integrity": "sha512-q5ITdOnV2pXHSVDnKWrwgSNTDBAMHLptFE07ua/5Ty5WJ11bvr0vk2a7agu7qRhrCFRQlno5u3CneU5EELK+DQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/middleware-stack": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-retry": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.0.tgz", - "integrity": "sha512-nK99bvJiziGv/UOKJlDvFF45F00WgPLKVIGUfAK+mDhzVN2hb/S33uW2Tlhg5PVBoqY7tDVqL0zmu4OxAHgo9g==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/node-config-provider": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dependencies": { - "@smithy/service-error-classification": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/client-sts/node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/node-http-handler": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/core": { - "version": "3.556.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.556.0.tgz", - "integrity": "sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/property-provider": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", "dependencies": { - "@smithy/core": "^1.4.2", - "@smithy/protocol-http": "^3.3.0", - "@smithy/signature-v4": "^2.3.0", - "@smithy/smithy-client": "^2.5.1", - "@smithy/types": "^2.12.0", - "fast-xml-parser": "4.2.5", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.565.0.tgz", - "integrity": "sha512-H9+etKKjeQot3vKzuE/osTb1xMzYW0UNQZSLSt1T4fZYSMdEgnOFXRwT0kw8yGMtSQuWMYZcXYHv0jMYetho4A==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/protocol-http": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.565.0.tgz", - "integrity": "sha512-d9xlnyd6Ba7DMJNTy0hoAHexFTOx8LWn1XPWbHZqgyRb+0YDIOhPN2ADYxE4Zq+Dc03MLTqq15zWOUhIqAPLuQ==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-builder": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", "dependencies": { - "@aws-sdk/credential-provider-env": "3.535.0", - "@aws-sdk/credential-provider-http": "3.552.0", - "@aws-sdk/credential-provider-ini": "3.565.0", - "@aws-sdk/credential-provider-process": "3.535.0", - "@aws-sdk/credential-provider-sso": "3.565.0", - "@aws-sdk/credential-provider-web-identity": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/credential-provider-imds": "^2.3.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.3.0", + "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.565.0.tgz", - "integrity": "sha512-MWefgFWt5BvVMlbjS0mxolxJPA8BKSnzfbdgGCoyEImuHa3GzVArYDQru4oWk6lD+naZFVHzPjHzEDYMag2KGw==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", "dependencies": { - "@aws-sdk/client-sso": "3.556.0", - "@aws-sdk/token-providers": "3.565.0", - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.565.0.tgz", - "integrity": "sha512-+MWMp3jxn93Ol2E2gjjXjqoZDNMao03OErGmGoDKMIlu322jNHTvYZo5W0WBy+615mnDKahbX55MmVBge/FwDg==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/service-error-classification": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/types": "^2.12.0", - "tslib": "^2.6.2" + "@smithy/types": "^3.3.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sts": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@aws-sdk/token-providers": { - "version": "3.565.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.565.0.tgz", - "integrity": "sha512-QPoQUTWijvFZD+7yqu9oJORG6FxqUseD4uhV3iZKVZsj7/Rlpvlh8oEZVCrcnsZ17vKzy+RMUVlnj3vf7Pwp8Q==", + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dependencies": { - "@aws-sdk/types": "3.535.0", - "@smithy/property-provider": "^2.2.0", - "@smithy/shared-ini-file-loader": "^2.4.0", - "@smithy/types": "^2.12.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/client-sso-oidc": "^3.565.0" + "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-p6GlFGBt9K4MYLu72YuJ523NVR4A8oHlC5M2JO6OmQqN8kAc/uh1JqLE+FizTokrSJGg0CSvC+BrsmGzKtsZKA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/abort-controller/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/smithy-client": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.2.0.tgz", + "integrity": "sha512-pDbtxs8WOhJLJSeaF/eAbPgXg4VVYFlRcL/zoNYA5WbG3wBL06CHtBSg53ppkttDpAJ/hdiede+xApip1CwSLw==", "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/types": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dependencies": { "tslib": "^2.6.2" }, @@ -5236,50 +4511,53 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-builder": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/url-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", + "dependencies": { + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-base64": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.0.tgz", - "integrity": "sha512-bW8Fi0NzyfkE0TmQphDXr1AmBDbK01cA4C1Z7ggwMAU5RDz5AAv/KmoRwzQAS0kxXNf/D2ALTEgwK0U2c4LtRg==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dependencies": { - "@smithy/types": "^3.0.0", - "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-builder/node_modules/@smithy/types": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-parser": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-body-length-browser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.0.tgz", - "integrity": "sha512-UzHwthk0UEccV4dHzPySnBy34AWw3V9lIqUTxmozQ+wPDAO9csCWMfOLe7V9A2agNYy7xE+Pb0S6K/J23JSzfQ==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dependencies": { - "@smithy/types": "^3.0.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/querystring-parser/node_modules/@smithy/types": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-body-length-node": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dependencies": { "tslib": "^2.6.2" }, @@ -5287,49 +4565,56 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/service-error-classification": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-config-provider": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.0.tgz", - "integrity": "sha512-3BsBtOUt2Gsnc3X23ew+r2M71WwtpHfEDGhHYHSDg6q1t8FrWh15jT25DLajFV1H+PpxAJ6gqe9yYeRUsmSdFA==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dependencies": { - "@smithy/types": "^3.0.0" + "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/service-error-classification/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.15.tgz", + "integrity": "sha512-FZ4Psa3vjp8kOXcd3HJOiDPBCWtiilLl57r0cnNtq/Ga9RSDrM5ERL6xt+tO43+2af6Pn5Yp92x2n5vPuduNfg==", "dependencies": { + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.15.tgz", + "integrity": "sha512-KSyAAx2q6d0t6f/S4XB2+3+6aQacm3aLMhs9aLMqn18uYGUepbdssfogW5JQZpc6lXNBnp0tEnR5e9CEKmEd7A==", "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.2.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=16.0.0" + "node": ">= 10.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-endpoints": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5340,7 +4625,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "peer": true, "dependencies": { "tslib": "^2.6.2" }, @@ -5348,98 +4632,76 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.1.tgz", - "integrity": "sha512-7F7VNNhAsfMRA8I986YdOY5fE0/T1/ZjFF6OLsqkvQVNP3vZ/szYDfGCyphb7ioA09r32K/0qbSFfNFU68aSzA==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-middleware": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", "dependencies": { - "@smithy/fetch-http-handler": "^3.0.1", - "@smithy/node-http-handler": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/fetch-http-handler": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.1.tgz", - "integrity": "sha512-uaH74i5BDj+rBwoQaXioKpI0SHBJFtOVwzrCpxZxphOW0ki5jhj7dXvDMYM2IJem8TpdFvS2iC08sjOblfFGFg==", - "peer": true, - "dependencies": { - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/node-http-handler": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.0.tgz", - "integrity": "sha512-3trD4r7NOMygwLbUJo4eodyQuypAWr7uvPnebNJ9a70dQhVn+US8j/lCnvoJS6BXfZeF7PkkkI0DemVJw+n+eQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-retry": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", "dependencies": { - "@smithy/abort-controller": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/querystring-builder": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/protocol-http": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", - "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", - "peer": true, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/types": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/util-base64": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-uri-escape": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-stream/node_modules/@smithy/util-utf8": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-utf8": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "peer": true, "dependencies": { "@smithy/util-buffer-from": "^3.0.0", "tslib": "^2.6.2" @@ -5448,22 +4710,43 @@ "node": ">=16.0.0" } }, - "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-uri-escape": { + "node_modules/@aws-sdk/client-secrets-manager/node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "peer": true, + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { "node": ">=16.0.0" } }, + "node_modules/@aws-sdk/client-secrets-manager/node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, "node_modules/@aws-sdk/client-secrets-manager/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@aws-sdk/client-sso": { "version": "3.554.0", @@ -5665,6 +4948,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz", "integrity": "sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -5678,12 +4962,14 @@ "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/credential-provider-http": { "version": "3.552.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz", "integrity": "sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/fetch-http-handler": "^2.5.0", @@ -5702,7 +4988,8 @@ "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/credential-provider-ini": { "version": "3.554.0", @@ -5765,6 +5052,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz", "integrity": "sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/property-provider": "^2.2.0", @@ -5779,7 +5067,8 @@ "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/credential-provider-sso": { "version": "3.554.0", @@ -5840,20 +5129,20 @@ } }, "node_modules/@aws-sdk/endpoint-cache/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@aws-sdk/middleware-endpoint-discovery": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.577.0.tgz", - "integrity": "sha512-duLI1awiBV7xyi+SQQnFy0J2s9Fhk5miHR5LsyEpk4p4M1Zi9hbBMg3wOdoxGCnNGn56PcP70isD79BfrbWwlA==", + "version": "3.620.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.620.0.tgz", + "integrity": "sha512-T6kuydHBF4BPP5CVH53Fze7c2b9rqxWP88XrGtmNMXXdY4sXur1v/itGdS2l3gqRjxKo0LsmjmuQm9zL4vGneQ==", "dependencies": { "@aws-sdk/endpoint-cache": "3.572.0", - "@aws-sdk/types": "3.577.0", - "@smithy/node-config-provider": "^3.0.0", - "@smithy/protocol-http": "^4.0.0", - "@smithy/types": "^3.0.0", + "@aws-sdk/types": "3.609.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5861,11 +5150,11 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@aws-sdk/types": { - "version": "3.577.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.577.0.tgz", - "integrity": "sha512-FT2JZES3wBKN/alfmhlo+3ZOq/XJ0C7QOZcDNrpKjB0kqYoKjhVKZ/Hx6ArR0czkKfHzBBEs6y40ebIHx2nSmA==", + "version": "3.609.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.609.0.tgz", + "integrity": "sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5873,13 +5162,13 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/node-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.0.0.tgz", - "integrity": "sha512-buqfaSdDh0zo62EPLf8rGDvcpKwGpO5ho4bXS2cdFhlOta7tBkWJt+O5uiaAeICfIOfPclNOndshDNSanX2X9g==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", "dependencies": { - "@smithy/property-provider": "^3.0.0", - "@smithy/shared-ini-file-loader": "^3.0.0", - "@smithy/types": "^3.0.0", + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5887,11 +5176,11 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/property-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.0.0.tgz", - "integrity": "sha512-LmbPgHBswdXCrkWWuUwBm9w72S2iLWyC/5jet9/Y9cGHtzqxi+GVjfCfahkvNV4KXEwgnH8EMpcrD9RUYe0eLQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5899,11 +5188,11 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/protocol-http": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.0.tgz", - "integrity": "sha512-qOQZOEI2XLWRWBO9AgIYuHuqjZ2csyr8/IlgFDHDNuIgLAMRx2Bl8ck5U5D6Vh9DPdoaVpuzwWMa0xcdL4O/AQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5911,11 +5200,11 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/shared-ini-file-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.0.0.tgz", - "integrity": "sha512-REVw6XauXk8xE4zo5aGL7Rz4ywA8qNMUn8RtWeTRQsgAlmlvbJ7CEPBcaXU2NDC3AYBgYAXrGyWD8XrN8UGDog==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", "dependencies": { - "@smithy/types": "^3.0.0", + "@smithy/types": "^3.3.0", "tslib": "^2.6.2" }, "engines": { @@ -5923,9 +5212,9 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/@smithy/types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.0.0.tgz", - "integrity": "sha512-VvWuQk2RKFuOr98gFhjca7fkBS+xLLURT8bUjk5XQoV0ZLm7WPwWPPY3/AwzTLuUBDeoKDCthfe1AsTUWaSEhw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", "dependencies": { "tslib": "^2.6.2" }, @@ -5934,14 +5223,15 @@ } }, "node_modules/@aws-sdk/middleware-endpoint-discovery/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@aws-sdk/middleware-host-header": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz", "integrity": "sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -5955,12 +5245,14 @@ "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/middleware-logger": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz", "integrity": "sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -5973,12 +5265,14 @@ "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/middleware-recursion-detection": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz", "integrity": "sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/protocol-http": "^3.3.0", @@ -5992,12 +5286,14 @@ "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/middleware-user-agent": { "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz", "integrity": "sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@aws-sdk/util-endpoints": "3.540.0", @@ -6012,12 +5308,14 @@ "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/region-config-resolver": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz", "integrity": "sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -6033,7 +5331,8 @@ "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/token-providers": { "version": "3.554.0", @@ -6098,6 +5397,7 @@ "version": "3.540.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz", "integrity": "sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -6111,7 +5411,8 @@ "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-locate-window": { "version": "3.535.0", @@ -6133,6 +5434,7 @@ "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz", "integrity": "sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/types": "^2.12.0", @@ -6143,12 +5445,14 @@ "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-user-agent-node": { "version": "3.535.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz", "integrity": "sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ==", + "dev": true, "dependencies": { "@aws-sdk/types": "3.535.0", "@smithy/node-config-provider": "^2.3.0", @@ -6170,12 +5474,14 @@ "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@aws-sdk/util-utf8-browser": { "version": "3.259.0", "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, "dependencies": { "tslib": "^2.3.1" } @@ -6183,7 +5489,8 @@ "node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@babel/code-frame": { "version": "7.24.2", @@ -9241,6 +8548,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.2.0.tgz", "integrity": "sha512-wRlta7GuLWpTqtFfGo+nZyOO1vEvewdNR1R4rTxpC8XU6vG/NDyrFBhwLZsqg1NUoR1noVaXJPC/7ZK47QCySw==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9252,12 +8560,14 @@ "node_modules/@smithy/abort-controller/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/config-resolver": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.2.0.tgz", "integrity": "sha512-fsiMgd8toyUba6n1WRmr+qACzXltpdDkPTAaDqc8QqPBUzO+/JKwL6bUBseHVi8tu9l+3JOK+tSf7cay+4B3LA==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -9272,12 +8582,14 @@ "node_modules/@smithy/config-resolver/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/core": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.4.2.tgz", "integrity": "sha512-2fek3I0KZHWJlRLvRTqxTEri+qV0GRHrJIoLFuBMZB4EMg4WgeBGfF0X6abnrNYpq55KJ6R4D6x4f0vLnhzinA==", + "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-retry": "^2.3.1", @@ -9295,12 +8607,14 @@ "node_modules/@smithy/core/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/credential-provider-imds": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.3.0.tgz", "integrity": "sha512-BWB9mIukO1wjEOo1Ojgl6LrG4avcaC7T/ZP6ptmAaW4xluhSIPZhY+/PI5YKzlk+jsm+4sQZB45Bt1OfMeQa3w==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/property-provider": "^2.2.0", @@ -9315,7 +8629,8 @@ "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/eventstream-codec": { "version": "2.2.0", @@ -9418,6 +8733,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.5.0.tgz", "integrity": "sha512-BOWEBeppWhLn/no/JxUL/ghTfANTjT7kg3Ww2rPqTUY9R4yHPXxJ9JhMe3Z03LN3aPwiwlpDIUcVw1xDyHqEhw==", + "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/querystring-builder": "^2.2.0", @@ -9429,12 +8745,14 @@ "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/hash-node": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.2.0.tgz", "integrity": "sha512-zLWaC/5aWpMrHKpoDF6nqpNtBhlAYKF/7+9yMN7GpdR8CzohnWfGtMznPybnwSS8saaXBMxIGwJqR4HmRp6b3g==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-buffer-from": "^2.2.0", @@ -9448,12 +8766,14 @@ "node_modules/@smithy/hash-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/invalid-dependency": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.2.0.tgz", "integrity": "sha512-nEDASdbKFKPXN2O6lOlTgrEEOO9NHIeO+HVvZnkqc8h5U9g3BIhWsvzFo+UcUbliMHvKNPD/zVxDrkP1Sbgp8Q==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9462,7 +8782,8 @@ "node_modules/@smithy/invalid-dependency/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/is-array-buffer": { "version": "2.2.0", @@ -9484,6 +8805,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.2.0.tgz", "integrity": "sha512-5bl2LG1Ah/7E5cMSC+q+h3IpVHMeOkG0yLRyQT1p2aMJkSrZG7RlXHPuAgb7EyaFeidKEnnd/fNaLLaKlHGzDQ==", + "dev": true, "dependencies": { "@smithy/protocol-http": "^3.3.0", "@smithy/types": "^2.12.0", @@ -9496,12 +8818,14 @@ "node_modules/@smithy/middleware-content-length/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-endpoint": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.5.1.tgz", "integrity": "sha512-1/8kFp6Fl4OsSIVTWHnNjLnTL8IqpIb/D3sTSczrKFnrE9VMNWxnrRKNvpUHOJ6zpGD5f62TPm7+17ilTJpiCQ==", + "dev": true, "dependencies": { "@smithy/middleware-serde": "^2.3.0", "@smithy/node-config-provider": "^2.3.0", @@ -9518,12 +8842,14 @@ "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-retry": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.3.1.tgz", "integrity": "sha512-P2bGufFpFdYcWvqpyqqmalRtwFUNUA8vHjJR5iGqbfR6mp65qKOLcUd6lTr4S9Gn/enynSrSf3p3FVgVAf6bXA==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/protocol-http": "^3.3.0", @@ -9542,12 +8868,14 @@ "node_modules/@smithy/middleware-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-serde": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.3.0.tgz", "integrity": "sha512-sIADe7ojwqTyvEQBe1nc/GXB9wdHhi9UwyX0lTyttmUWDJLP655ZYE1WngnNyXREme8I27KCaUhyhZWRXL0q7Q==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9559,12 +8887,14 @@ "node_modules/@smithy/middleware-serde/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/middleware-stack": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.2.0.tgz", "integrity": "sha512-Qntc3jrtwwrsAC+X8wms8zhrTr0sFXnyEGhZd9sLtsJ/6gGQKFzNB+wWbOcpJd7BR8ThNCoKt76BuQahfMvpeA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9576,12 +8906,14 @@ "node_modules/@smithy/middleware-stack/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/node-config-provider": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.3.0.tgz", "integrity": "sha512-0elK5/03a1JPWMDPaS726Iw6LpQg80gFut1tNpPfxFuChEEklo2yL823V94SpTZTxmKlXFtFgsP55uh3dErnIg==", + "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/shared-ini-file-loader": "^2.4.0", @@ -9595,12 +8927,14 @@ "node_modules/@smithy/node-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/node-http-handler": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.5.0.tgz", "integrity": "sha512-mVGyPBzkkGQsPoxQUbxlEfRjrj6FPyA3u3u2VXGr9hT8wilsoQdZdvKpMBFMB8Crfhv5dNkKHIW0Yyuc7eABqA==", + "dev": true, "dependencies": { "@smithy/abort-controller": "^2.2.0", "@smithy/protocol-http": "^3.3.0", @@ -9615,12 +8949,14 @@ "node_modules/@smithy/node-http-handler/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/property-provider": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.2.0.tgz", "integrity": "sha512-+xiil2lFhtTRzXkx8F053AV46QnIw6e7MV8od5Mi68E1ICOjCeCHw2XfLnDEUHnT9WGUIkwcqavXjfwuJbGlpg==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9632,12 +8968,14 @@ "node_modules/@smithy/property-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/protocol-http": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.3.0.tgz", "integrity": "sha512-Xy5XK1AFWW2nlY/biWZXu6/krgbaf2dg0q492D8M5qthsnU2H+UgFeZLbM76FnH7s6RO/xhQRkj+T6KBO3JzgQ==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9649,12 +8987,14 @@ "node_modules/@smithy/protocol-http/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/querystring-builder": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.2.0.tgz", "integrity": "sha512-L1kSeviUWL+emq3CUVSgdogoM/D9QMFaqxL/dd0X7PCNWmPXqt+ExtrBjqT0V7HLN03Vs9SuiLrG3zy3JGnE5A==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "@smithy/util-uri-escape": "^2.2.0", @@ -9667,12 +9007,14 @@ "node_modules/@smithy/querystring-builder/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/querystring-parser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.2.0.tgz", "integrity": "sha512-BvHCDrKfbG5Yhbpj4vsbuPV2GgcpHiAkLeIlcA1LtfpMz3jrqizP1+OguSNSj1MwBHEiN+jwNisXLGdajGDQJA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9684,7 +9026,8 @@ "node_modules/@smithy/querystring-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/service-error-classification": { "version": "2.1.5", @@ -9701,6 +9044,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.4.0.tgz", "integrity": "sha512-WyujUJL8e1B6Z4PBfAqC/aGY1+C7T0w20Gih3yrvJSk97gpiVfB+y7c46T4Nunk+ZngLq0rOIdeVeIklk0R3OA==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9712,12 +9056,14 @@ "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/signature-v4": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.3.0.tgz", "integrity": "sha512-ui/NlpILU+6HAQBfJX8BBsDXuKSNrjTSuOYArRblcrErwKFutjrCNb/OExfVRyj9+26F9J+ZmfWT+fKWuDrH3Q==", + "dev": true, "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "@smithy/types": "^2.12.0", @@ -9734,12 +9080,14 @@ "node_modules/@smithy/signature-v4/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/smithy-client": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.5.1.tgz", "integrity": "sha512-jrbSQrYCho0yDaaf92qWgd+7nAeap5LtHTI51KXqmpIFCceKU3K9+vIVTUH72bOJngBMqa4kyu1VJhRcSrk/CQ==", + "dev": true, "dependencies": { "@smithy/middleware-endpoint": "^2.5.1", "@smithy/middleware-stack": "^2.2.0", @@ -9755,7 +9103,8 @@ "node_modules/@smithy/smithy-client/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/types": { "version": "2.12.0", @@ -9777,6 +9126,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.2.0.tgz", "integrity": "sha512-hoA4zm61q1mNTpksiSWp2nEl1dt3j726HdRhiNgVJQMj7mLp7dprtF57mOB6JvEk/x9d2bsuL5hlqZbBuHQylQ==", + "dev": true, "dependencies": { "@smithy/querystring-parser": "^2.2.0", "@smithy/types": "^2.12.0", @@ -9786,12 +9136,14 @@ "node_modules/@smithy/url-parser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-base64": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.3.0.tgz", "integrity": "sha512-s3+eVwNeJuXUwuMbusncZNViuhv2LjVJ1nMwTqSA0XAC7gjKhqqxRdJPhR8+YrkoZ9IiIbFk/yK6ACe/xlF+hw==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "@smithy/util-utf8": "^2.3.0", @@ -9804,12 +9156,14 @@ "node_modules/@smithy/util-base64/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-body-length-browser": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.2.0.tgz", "integrity": "sha512-dtpw9uQP7W+n3vOtx0CfBD5EWd7EPdIdsQnWTDoFf77e3VUf05uA7R7TGipIo8e4WL2kuPdnsr3hMQn9ziYj5w==", + "dev": true, "dependencies": { "tslib": "^2.6.2" } @@ -9817,12 +9171,14 @@ "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-body-length-node": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.3.0.tgz", "integrity": "sha512-ITWT1Wqjubf2CJthb0BuT9+bpzBfXeMokH/AAa5EJQgbv9aPMVfnM76iFIZVFf50hYXGbtiV71BHAthNWd6+dw==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -9833,7 +9189,8 @@ "node_modules/@smithy/util-body-length-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-buffer-from": { "version": "2.2.0", @@ -9856,6 +9213,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.3.0.tgz", "integrity": "sha512-HZkzrRcuFN1k70RLqlNK4FnPXKOpkik1+4JaBoHNJn+RnJGYqaa3c5/+XtLOXhlKzlRgNvyaLieHTW2VwGN0VQ==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -9866,12 +9224,14 @@ "node_modules/@smithy/util-config-provider/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-defaults-mode-browser": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.2.1.tgz", "integrity": "sha512-RtKW+8j8skk17SYowucwRUjeh4mCtnm5odCL0Lm2NtHQBsYKrNW0od9Rhopu9wF1gHMfHeWF7i90NwBz/U22Kw==", + "dev": true, "dependencies": { "@smithy/property-provider": "^2.2.0", "@smithy/smithy-client": "^2.5.1", @@ -9886,12 +9246,14 @@ "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-defaults-mode-node": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.3.1.tgz", "integrity": "sha512-vkMXHQ0BcLFysBMWgSBLSk3+leMpFSyyFj8zQtv5ZyUBx8/owVh1/pPEkzmW/DR/Gy/5c8vjLDD9gZjXNKbrpA==", + "dev": true, "dependencies": { "@smithy/config-resolver": "^2.2.0", "@smithy/credential-provider-imds": "^2.3.0", @@ -9908,12 +9270,14 @@ "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-endpoints": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.2.0.tgz", "integrity": "sha512-BuDHv8zRjsE5zXd3PxFXFknzBG3owCpjq8G3FcsXW3CykYXuEqM3nTSsmLzw5q+T12ZYuDlVUZKBdpNbhVtlrQ==", + "dev": true, "dependencies": { "@smithy/node-config-provider": "^2.3.0", "@smithy/types": "^2.12.0", @@ -9926,12 +9290,14 @@ "node_modules/@smithy/util-endpoints/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-hex-encoding": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.2.0.tgz", "integrity": "sha512-7iKXR+/4TpLK194pVjKiasIyqMtTYJsgKgM242Y9uzt5dhHnUDvMNb+3xIhRJ9QhvqGii/5cRUt4fJn3dtXNHQ==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -9942,12 +9308,14 @@ "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-middleware": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.2.0.tgz", "integrity": "sha512-L1qpleXf9QD6LwLCJ5jddGkgWyuSvWBkJwWAZ6kFkdifdso+sk3L3O1HdmPvCdnCK3IS4qWyPxev01QMnfHSBw==", + "dev": true, "dependencies": { "@smithy/types": "^2.12.0", "tslib": "^2.6.2" @@ -9959,12 +9327,14 @@ "node_modules/@smithy/util-middleware/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-retry": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.2.0.tgz", "integrity": "sha512-q9+pAFPTfftHXRytmZ7GzLFFrEGavqapFc06XxzZFcSIGERXMerXxCitjOG1prVDR9QdjqotF40SWvbqcCpf8g==", + "dev": true, "dependencies": { "@smithy/service-error-classification": "^2.1.5", "@smithy/types": "^2.12.0", @@ -9977,12 +9347,14 @@ "node_modules/@smithy/util-retry/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-stream": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.2.0.tgz", "integrity": "sha512-17faEXbYWIRst1aU9SvPZyMdWmqIrduZjVOqCPMIsWFNxs5yQQgFrJL6b2SdiCzyW9mJoDjFtgi53xx7EH+BXA==", + "dev": true, "dependencies": { "@smithy/fetch-http-handler": "^2.5.0", "@smithy/node-http-handler": "^2.5.0", @@ -10000,12 +9372,14 @@ "node_modules/@smithy/util-stream/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-uri-escape": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.2.0.tgz", "integrity": "sha512-jtmJMyt1xMD/d8OtbVJ2gFZOSKc+ueYJZPW20ULW1GOp/q/YIM0wNh+u8ZFao9UaIGz4WoPW8hC64qlWLIfoDA==", + "dev": true, "dependencies": { "tslib": "^2.6.2" }, @@ -10016,12 +9390,14 @@ "node_modules/@smithy/util-uri-escape/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-utf8": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dev": true, "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -10033,7 +9409,8 @@ "node_modules/@smithy/util-utf8/node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true }, "node_modules/@smithy/util-waiter": { "version": "2.2.0", @@ -14947,6 +14324,7 @@ "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", "integrity": "sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==", + "dev": true, "funding": [ { "type": "paypal", @@ -22707,7 +22085,8 @@ "node_modules/tslib": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tweetnacl": { "version": "0.14.5", diff --git a/package.json b/package.json index 9a81c6c..d58727a 100644 --- a/package.json +++ b/package.json @@ -55,9 +55,9 @@ "author": "", "license": "ISC", "dependencies": { - "@aws-sdk/client-dynamodb": "3.577.0", - "@aws-sdk/client-dynamodb-streams": "3.577.0", - "@aws-sdk/client-secrets-manager": "3.565.0", + "@aws-sdk/client-dynamodb": "3.632.0", + "@aws-sdk/client-dynamodb-streams": "3.632.0", + "@aws-sdk/client-secrets-manager": "3.632.0", "@aws-sdk/util-dynamodb": "3.577.0", "@dvsa/cvs-type-definitions": "^7.4.0", "@types/lambda-tester": "4.0.3", diff --git a/src/functions/process-stream-event.ts b/src/functions/process-stream-event.ts index f1678e8..2f9cd11 100644 --- a/src/functions/process-stream-event.ts +++ b/src/functions/process-stream-event.ts @@ -58,7 +58,7 @@ export const processStreamEvent: Handler = async ( ); if (tableName.includes('flat-tech-records')) { transformTechRecord(dynamoRecord as _Record); - debugLog(`Dynamo Record after transformation: ${dynamoRecord}`); + debugLog(`Dynamo Record after transformation: ${JSON.stringify(dynamoRecord)}`); const technicalRecord: any = dynamoRecord.dynamodb?.NewImage; const unmarshalledTechnicalRecord = unmarshall(technicalRecord); diff --git a/src/services/tech-record-document-conversion.ts b/src/services/tech-record-document-conversion.ts index 13721b9..f48b37e 100644 --- a/src/services/tech-record-document-conversion.ts +++ b/src/services/tech-record-document-conversion.ts @@ -6,7 +6,7 @@ import { parseTechRecordDocument, TechRecordDocument, } from '../models/tech-record-document'; -import { getFaxNumber, TechRecord } from '../models/tech-record'; +import {getFaxNumber, StatusCode, TechRecord} from '../models/tech-record'; import { AXLE_SPACING_TABLE, AXLES_TABLE, @@ -24,9 +24,10 @@ import { AUTH_INTO_SERVICE_TABLE, } from './table-details'; import { - deleteBasedOnWhereIn, - executeFullUpsert, - executePartialUpsertIfNotExists, + deleteBasedOnWhereIn, + executeFullUpsert, + executePartialUpsertIfNotExists, + selectRecordIds, } from './sql-execution'; import { getConnectionPool } from './connection-pool'; import { EntityConverter } from './entity-conversion'; @@ -69,6 +70,7 @@ const upsertTechRecords = async ( const techRecords = techRecordDocument.techRecord; if (!techRecords) { + debugLog(`there are no tech records - returning ...`); return; } @@ -241,6 +243,24 @@ const upsertVehicle = async ( connection: Connection, techRecordDocument: TechRecordDocument, ): Promise => { + + if (techRecordDocument.techRecord && techRecordDocument.techRecord[0].statusCode === 'archived' as StatusCode) { + debugLog('upsertTechRecords: Retrieving vehicle...'); + // retrieve records associated with systemNumber + const existingRecordIds = await selectRecordIds( + VEHICLE_TABLE.tableName, + { system_number: techRecordDocument.systemNumber, vin: vinCleanser(techRecordDocument.vin) }, + connection, + ); + if (existingRecordIds.rows.length > 0) { + return existingRecordIds.rows[0].id; + } else { + debugLog( + `archived tech record, but no associated vehicle record found for systemNumber: ${techRecordDocument.systemNumber} and vin: ${vinCleanser(techRecordDocument.vin)}`, + ); + } + } + debugLog('upsertTechRecords: Upserting vehicle...'); const response = await executeFullUpsert( diff --git a/tests/integration/tech-record-document-conversion.intTest.ts b/tests/integration/tech-record-document-conversion.intTest.ts index 66d0e06..05a5d91 100644 --- a/tests/integration/tech-record-document-conversion.intTest.ts +++ b/tests/integration/tech-record-document-conversion.intTest.ts @@ -683,4 +683,95 @@ describe('convertTechRecordDocument() integration tests', () => { ).not.toBeNull(); // todo This returns null }); }); + + describe('when updating an existing technical record to be archived', () => { + it('then the existing vehicle record id is returned and used in the update', async () => { + const techRecordDocumentJsonInsert = JSON.parse(JSON.stringify(techRecordDocumentJson)); + techRecordDocumentJsonInsert.systemNumber = { S: 'SYSTEM-NUMBER-6' }; + techRecordDocumentJsonInsert.vin = { S: 'VIN6' }; + techRecordDocumentJsonInsert.primaryVrm = { S: 'VRM666NEW' }; + + const insertEvent = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonInsert, + }, + }), + }, + ], + }; + + await processStreamEvent(insertEvent, exampleContext(), () => {}); + + const insertResultSet = await executeSql( + `SELECT \`id\` FROM \`vehicle\` WHERE \`system_number\` = "SYSTEM-NUMBER-6"` + ); + const vehicleIdInsert = insertResultSet.rows[0].id; + + // Create a record for the MODIFY operation + const techRecordDocumentJsonModify = JSON.parse(JSON.stringify(techRecordDocumentJsonInsert)); + techRecordDocumentJsonModify.statusCode = { S: 'archived' }; + + const modifyEvent = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'MODIFY', + dynamodb: { + NewImage: techRecordDocumentJsonModify, + }, + }), + }, + ], + }; + + await processStreamEvent(modifyEvent, exampleContext(), () => {}); + + const modifyResultSet = await executeSql( + `SELECT \`id\` FROM \`vehicle\` WHERE \`system_number\` = "SYSTEM-NUMBER-6"` + ); + const vehicleIdModify = modifyResultSet.rows[0].id; + + expect(vehicleIdModify).toBe(vehicleIdInsert); + } + ); + }); + + describe('when adding a new technical record that is archived', () => { + it('then a new vehicle id is returned and used', async () => { + const techRecordDocumentJsonInsert = JSON.parse(JSON.stringify(techRecordDocumentJson)); + techRecordDocumentJsonInsert.systemNumber = { S: 'SYSTEM-NUMBER-7' }; + techRecordDocumentJsonInsert.vin = { S: 'VIN7' }; + techRecordDocumentJsonInsert.primaryVrm = { S: 'VRM777NEW' }; + techRecordDocumentJsonInsert.statusCode = { S: 'archived' }; + + const insertEvent = { + Records: [ + { + body: JSON.stringify({ + eventSourceARN: 'arn:aws:dynamodb:eu-west-1:1:table/flat-tech-records/stream/2020-01-01T00:00:00.000', + eventName: 'INSERT', + dynamodb: { + NewImage: techRecordDocumentJsonInsert, + }, + }), + }, + ], + }; + + await processStreamEvent(insertEvent, exampleContext(), () => {}); + + const insertResultSet = await executeSql( + `SELECT \`id\` FROM \`vehicle\` WHERE \`system_number\` = "SYSTEM-NUMBER-7"` + ); + const vehicleIdInsert = insertResultSet.rows[0].id; + + expect(vehicleIdInsert).not.toBeNull(); + }); + }); }); diff --git a/tests/unit/services/secrets-manager.unitTest.ts b/tests/unit/services/secrets-manager.unitTest.ts index a54e433..13465f1 100644 --- a/tests/unit/services/secrets-manager.unitTest.ts +++ b/tests/unit/services/secrets-manager.unitTest.ts @@ -2,8 +2,9 @@ import { GetSecretValueCommand, SecretsManagerClient } from '@aws-sdk/client-sec import { mockClient } from 'aws-sdk-client-mock'; import { getSecretValue } from '../../../src/services/secrets-manager'; -const mockSecretsManager = mockClient(SecretsManagerClient); +const mockSecretsManager = mockClient(SecretsManagerClient as any); const mockSecretValue = (expectedSecretKey: string, secretValue: any) => { + // @ts-ignore mockSecretsManager.on(GetSecretValueCommand).callsFake((actualSecretKey) => { if (expectedSecretKey === actualSecretKey?.SecretId) { return Promise.resolve(secretValue);