From 243882e1bf71fa2c019f52f9d974f8cf1c433912 Mon Sep 17 00:00:00 2001 From: Victor Korzunin <5180700+floydspace@users.noreply.github.com> Date: Wed, 27 Sep 2023 09:58:07 +0200 Subject: [PATCH] feat: implement effectful dynamodb, eventbridge and lambda clients --- .changeset/nice-eggs-lick.md | 7 + .projenrc.ts | 31 +- README.md | 7 +- package.json | 11 +- packages/client-dynamodb/.eslintrc.json | 131 ++ packages/client-dynamodb/.gitattributes | 21 + packages/client-dynamodb/.gitignore | 46 + packages/client-dynamodb/.npmignore | 19 + packages/client-dynamodb/.prettierignore | 1 + packages/client-dynamodb/.prettierrc.json | 3 + packages/client-dynamodb/.projen/deps.json | 107 ++ packages/client-dynamodb/.projen/files.json | 20 + packages/client-dynamodb/.projen/tasks.json | 112 ++ packages/client-dynamodb/LICENSE | 19 + packages/client-dynamodb/README.md | 1 + packages/client-dynamodb/jest.config.json | 37 + packages/client-dynamodb/package.json | 59 + packages/client-dynamodb/project.json | 77 + packages/client-dynamodb/src/Context.ts | 47 + packages/client-dynamodb/src/DynamoDB.ts | 692 ++++++++ packages/client-dynamodb/src/index.ts | 2 + .../client-dynamodb/test/DynamoDB.test.ts | 155 ++ packages/client-dynamodb/tsconfig.dev.json | 37 + packages/client-dynamodb/tsconfig.esm.json | 10 + packages/client-dynamodb/tsconfig.json | 35 + packages/client-eventbridge/.eslintrc.json | 131 ++ packages/client-eventbridge/.gitattributes | 21 + packages/client-eventbridge/.gitignore | 46 + packages/client-eventbridge/.npmignore | 19 + packages/client-eventbridge/.prettierignore | 1 + packages/client-eventbridge/.prettierrc.json | 3 + packages/client-eventbridge/.projen/deps.json | 107 ++ .../client-eventbridge/.projen/files.json | 20 + .../client-eventbridge/.projen/tasks.json | 112 ++ packages/client-eventbridge/LICENSE | 19 + packages/client-eventbridge/README.md | 1 + packages/client-eventbridge/jest.config.json | 37 + packages/client-eventbridge/package.json | 59 + packages/client-eventbridge/project.json | 77 + packages/client-eventbridge/src/Context.ts | 52 + .../client-eventbridge/src/EventBridge.ts | 713 ++++++++ packages/client-eventbridge/src/index.ts | 2 + .../test/EventBridge.test.ts | 150 ++ packages/client-eventbridge/tsconfig.dev.json | 37 + packages/client-eventbridge/tsconfig.esm.json | 10 + packages/client-eventbridge/tsconfig.json | 35 + packages/client-lambda/.eslintrc.json | 131 ++ packages/client-lambda/.gitattributes | 21 + packages/client-lambda/.gitignore | 46 + packages/client-lambda/.npmignore | 19 + packages/client-lambda/.prettierignore | 1 + packages/client-lambda/.prettierrc.json | 3 + packages/client-lambda/.projen/deps.json | 107 ++ packages/client-lambda/.projen/files.json | 20 + packages/client-lambda/.projen/tasks.json | 112 ++ packages/client-lambda/LICENSE | 19 + packages/client-lambda/README.md | 1 + packages/client-lambda/jest.config.json | 37 + packages/client-lambda/package.json | 59 + packages/client-lambda/project.json | 77 + packages/client-lambda/src/Context.ts | 46 + packages/client-lambda/src/Lambda.ts | 864 ++++++++++ packages/client-lambda/src/index.ts | 2 + packages/client-lambda/test/Lambda.test.ts | 139 ++ packages/client-lambda/tsconfig.dev.json | 37 + packages/client-lambda/tsconfig.esm.json | 10 + packages/client-lambda/tsconfig.json | 35 + packages/client-s3/package.json | 4 +- packages/client-sns/package.json | 4 +- packages/client-sqs/package.json | 4 +- packages/powertools-logger/package.json | 6 +- pnpm-lock.yaml | 1513 ++++++++++------- pnpm-workspace.yaml | 3 + 73 files changed, 6071 insertions(+), 588 deletions(-) create mode 100644 .changeset/nice-eggs-lick.md create mode 100644 packages/client-dynamodb/.eslintrc.json create mode 100644 packages/client-dynamodb/.gitattributes create mode 100644 packages/client-dynamodb/.gitignore create mode 100644 packages/client-dynamodb/.npmignore create mode 100644 packages/client-dynamodb/.prettierignore create mode 100644 packages/client-dynamodb/.prettierrc.json create mode 100644 packages/client-dynamodb/.projen/deps.json create mode 100644 packages/client-dynamodb/.projen/files.json create mode 100644 packages/client-dynamodb/.projen/tasks.json create mode 100644 packages/client-dynamodb/LICENSE create mode 100644 packages/client-dynamodb/README.md create mode 100644 packages/client-dynamodb/jest.config.json create mode 100644 packages/client-dynamodb/package.json create mode 100644 packages/client-dynamodb/project.json create mode 100644 packages/client-dynamodb/src/Context.ts create mode 100644 packages/client-dynamodb/src/DynamoDB.ts create mode 100644 packages/client-dynamodb/src/index.ts create mode 100644 packages/client-dynamodb/test/DynamoDB.test.ts create mode 100644 packages/client-dynamodb/tsconfig.dev.json create mode 100644 packages/client-dynamodb/tsconfig.esm.json create mode 100644 packages/client-dynamodb/tsconfig.json create mode 100644 packages/client-eventbridge/.eslintrc.json create mode 100644 packages/client-eventbridge/.gitattributes create mode 100644 packages/client-eventbridge/.gitignore create mode 100644 packages/client-eventbridge/.npmignore create mode 100644 packages/client-eventbridge/.prettierignore create mode 100644 packages/client-eventbridge/.prettierrc.json create mode 100644 packages/client-eventbridge/.projen/deps.json create mode 100644 packages/client-eventbridge/.projen/files.json create mode 100644 packages/client-eventbridge/.projen/tasks.json create mode 100644 packages/client-eventbridge/LICENSE create mode 100644 packages/client-eventbridge/README.md create mode 100644 packages/client-eventbridge/jest.config.json create mode 100644 packages/client-eventbridge/package.json create mode 100644 packages/client-eventbridge/project.json create mode 100644 packages/client-eventbridge/src/Context.ts create mode 100644 packages/client-eventbridge/src/EventBridge.ts create mode 100644 packages/client-eventbridge/src/index.ts create mode 100644 packages/client-eventbridge/test/EventBridge.test.ts create mode 100644 packages/client-eventbridge/tsconfig.dev.json create mode 100644 packages/client-eventbridge/tsconfig.esm.json create mode 100644 packages/client-eventbridge/tsconfig.json create mode 100644 packages/client-lambda/.eslintrc.json create mode 100644 packages/client-lambda/.gitattributes create mode 100644 packages/client-lambda/.gitignore create mode 100644 packages/client-lambda/.npmignore create mode 100644 packages/client-lambda/.prettierignore create mode 100644 packages/client-lambda/.prettierrc.json create mode 100644 packages/client-lambda/.projen/deps.json create mode 100644 packages/client-lambda/.projen/files.json create mode 100644 packages/client-lambda/.projen/tasks.json create mode 100644 packages/client-lambda/LICENSE create mode 100644 packages/client-lambda/README.md create mode 100644 packages/client-lambda/jest.config.json create mode 100644 packages/client-lambda/package.json create mode 100644 packages/client-lambda/project.json create mode 100644 packages/client-lambda/src/Context.ts create mode 100644 packages/client-lambda/src/Lambda.ts create mode 100644 packages/client-lambda/src/index.ts create mode 100644 packages/client-lambda/test/Lambda.test.ts create mode 100644 packages/client-lambda/tsconfig.dev.json create mode 100644 packages/client-lambda/tsconfig.esm.json create mode 100644 packages/client-lambda/tsconfig.json diff --git a/.changeset/nice-eggs-lick.md b/.changeset/nice-eggs-lick.md new file mode 100644 index 00000000..49deccd3 --- /dev/null +++ b/.changeset/nice-eggs-lick.md @@ -0,0 +1,7 @@ +--- +"@effect-aws/client-eventbridge": minor +"@effect-aws/client-dynamodb": minor +"@effect-aws/client-lambda": minor +--- + +implement effectful dynamodb, eventbridge and lambda clients diff --git a/.projenrc.ts b/.projenrc.ts index 08405021..3257c96a 100644 --- a/.projenrc.ts +++ b/.projenrc.ts @@ -26,6 +26,7 @@ new Changesets(project, { onlyUpdatePeerDependentsWhenOutOfRange: true, }); +const commonDeps = ["@aws-sdk/types@^3"]; const commonDevDeps = ["aws-sdk-client-mock", "aws-sdk-client-mock-jest"]; const commonPeerDeps = ["@effect/data@^0.18.4", "@effect/io@^0.40.0"]; @@ -40,10 +41,34 @@ new TypeScriptLibProject({ peerDeps: commonPeerDeps, }); +new TypeScriptLibProject({ + parent: project, + name: "client-dynamodb", + deps: [...commonDeps, "@aws-sdk/client-dynamodb@^3"], + devDeps: [...commonPeerDeps, ...commonDevDeps], + peerDeps: commonPeerDeps, +}); + +new TypeScriptLibProject({ + parent: project, + name: "client-eventbridge", + deps: [...commonDeps, "@aws-sdk/client-eventbridge@^3"], + devDeps: [...commonPeerDeps, ...commonDevDeps], + peerDeps: commonPeerDeps, +}); + +new TypeScriptLibProject({ + parent: project, + name: "client-lambda", + deps: [...commonDeps, "@aws-sdk/client-lambda@^3"], + devDeps: [...commonPeerDeps, ...commonDevDeps], + peerDeps: commonPeerDeps, +}); + new TypeScriptLibProject({ parent: project, name: "client-s3", - deps: ["@aws-sdk/types@^3", "@aws-sdk/client-s3@^3"], + deps: [...commonDeps, "@aws-sdk/client-s3@^3"], devDeps: [...commonPeerDeps, ...commonDevDeps], peerDeps: commonPeerDeps, }); @@ -51,7 +76,7 @@ new TypeScriptLibProject({ new TypeScriptLibProject({ parent: project, name: "client-sns", - deps: ["@aws-sdk/types@^3", "@aws-sdk/client-sns@^3"], + deps: [...commonDeps, "@aws-sdk/client-sns@^3"], devDeps: [...commonPeerDeps, ...commonDevDeps], peerDeps: commonPeerDeps, }); @@ -59,7 +84,7 @@ new TypeScriptLibProject({ new TypeScriptLibProject({ parent: project, name: "client-sqs", - deps: ["@aws-sdk/types@^3", "@aws-sdk/client-sqs@^3"], + deps: [...commonDeps, "@aws-sdk/client-sqs@^3"], devDeps: [...commonPeerDeps, ...commonDevDeps], peerDeps: commonPeerDeps, }); diff --git a/README.md b/README.md index 24693d40..8837856a 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,12 @@ Effect Docs: https://www.effect.website
- [x] PowerTools Logger - [x] S3 Client -- [ ] DynamoDB Client +- [x] DynamoDB Client - [x] SQS Client - [x] SNS Client -- [ ] EventBridge Client -- [ ] Lambda Client +- [x] EventBridge Client +- [x] Lambda Client +- [ ] Other AWS Clients (By Request) # Contributing Guidelines diff --git a/package.json b/package.json index 021da9d1..9a487085 100644 --- a/package.json +++ b/package.json @@ -39,13 +39,13 @@ "eslint": "^8", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prettier": "^5.0.0", "npm-check-updates": "^16.14.4", "nx": "16.0.0", "prettier": "^3.0.3", - "projen": "^0.73.25", + "projen": "^0.73.33", "syncpack": "^11.2.1", "ts-node": "^10.9.1", "typescript": "^5.2.2" @@ -54,8 +54,8 @@ "nx": "^16" }, "dependencies": { - "aws-cdk-lib": "^2.96.2", - "cdk-nag": "^2.27.135", + "aws-cdk-lib": "^2.98.0", + "cdk-nag": "^2.27.143", "constructs": "^10.2.70" }, "pnpm": { @@ -76,6 +76,9 @@ "private": true, "workspaces": { "packages": [ + "packages/client-dynamodb", + "packages/client-eventbridge", + "packages/client-lambda", "packages/client-s3", "packages/client-sns", "packages/client-sqs", diff --git a/packages/client-dynamodb/.eslintrc.json b/packages/client-dynamodb/.eslintrc.json new file mode 100644 index 00000000..140ba19b --- /dev/null +++ b/packages/client-dynamodb/.eslintrc.json @@ -0,0 +1,131 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "env": { + "jest": true, + "node": true + }, + "root": true, + "plugins": [ + "@typescript-eslint", + "import", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module", + "project": "./tsconfig.dev.json" + }, + "extends": [ + "plugin:import/typescript", + "prettier", + "plugin:prettier/recommended" + ], + "settings": { + "import/parsers": { + "@typescript-eslint/parser": [ + ".ts", + ".tsx" + ] + }, + "import/resolver": { + "node": {}, + "typescript": { + "project": "./tsconfig.dev.json", + "alwaysTryTypes": true + } + } + }, + "ignorePatterns": [ + "*.js", + "*.d.ts", + "node_modules/", + "*.generated.ts", + "coverage" + ], + "rules": { + "prettier/prettier": [ + "error" + ], + "@typescript-eslint/no-require-imports": [ + "error" + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": [ + "**/test/**", + "**/build-tools/**" + ], + "optionalDependencies": false, + "peerDependencies": true + } + ], + "import/no-unresolved": [ + "error" + ], + "import/order": [ + "warn", + { + "groups": [ + "builtin", + "external" + ], + "alphabetize": { + "order": "asc", + "caseInsensitive": true + } + } + ], + "no-duplicate-imports": [ + "error" + ], + "no-shadow": [ + "off" + ], + "@typescript-eslint/no-shadow": [ + "error" + ], + "key-spacing": [ + "error" + ], + "no-multiple-empty-lines": [ + "error" + ], + "@typescript-eslint/no-floating-promises": [ + "error" + ], + "no-return-await": [ + "off" + ], + "@typescript-eslint/return-await": [ + "error" + ], + "no-trailing-spaces": [ + "error" + ], + "dot-notation": [ + "error" + ], + "no-bitwise": [ + "error" + ], + "@typescript-eslint/member-ordering": [ + "error", + { + "default": [ + "public-static-field", + "public-static-method", + "protected-static-field", + "protected-static-method", + "private-static-field", + "private-static-method", + "field", + "constructor", + "method" + ] + } + ] + }, + "overrides": [] +} diff --git a/packages/client-dynamodb/.gitattributes b/packages/client-dynamodb/.gitattributes new file mode 100644 index 00000000..3d4472e4 --- /dev/null +++ b/packages/client-dynamodb/.gitattributes @@ -0,0 +1,21 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". + +/./tsconfig.esm.json linguist-generated +/.eslintrc.json linguist-generated +/.gitattributes linguist-generated +/.gitignore linguist-generated +/.npmignore linguist-generated +/.npmrc linguist-generated +/.prettierignore linguist-generated +/.prettierrc.json linguist-generated +/.projen/** linguist-generated +/.projen/deps.json linguist-generated +/.projen/files.json linguist-generated +/.projen/tasks.json linguist-generated +/jest.config.json linguist-generated +/LICENSE linguist-generated +/package.json linguist-generated +/pnpm-lock.yaml linguist-generated +/project.json linguist-generated +/tsconfig.dev.json linguist-generated +/tsconfig.json linguist-generated \ No newline at end of file diff --git a/packages/client-dynamodb/.gitignore b/packages/client-dynamodb/.gitignore new file mode 100644 index 00000000..cd4750b6 --- /dev/null +++ b/packages/client-dynamodb/.gitignore @@ -0,0 +1,46 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +!/.gitattributes +!/.projen/tasks.json +!/.projen/deps.json +!/.projen/files.json +!/package.json +!/LICENSE +!/.npmignore +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json +pids +*.pid +*.seed +*.pid.lock +lib-cov +coverage +*.lcov +.nyc_output +build/Release +node_modules/ +jspm_packages/ +*.tsbuildinfo +.eslintcache +*.tgz +.yarn-integrity +.cache +!/.projenrc.js +!/jest.config.json +/coverage/ +!/.prettierignore +!/.prettierrc.json +!/.npmrc +!/test/ +!/tsconfig.json +!/tsconfig.dev.json +!/src/ +/lib +/dist/ +!/.eslintrc.json +!/./tsconfig.esm.json +!/project.json diff --git a/packages/client-dynamodb/.npmignore b/packages/client-dynamodb/.npmignore new file mode 100644 index 00000000..aaeff689 --- /dev/null +++ b/packages/client-dynamodb/.npmignore @@ -0,0 +1,19 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +/.projen/ +/jest.config.json +/coverage/ +/test/ +/tsconfig.dev.json +/src/ +!/lib/ +!/lib/**/*.js +!/lib/**/*.d.ts +dist +/tsconfig.json +/.github/ +/.vscode/ +/.idea/ +/.projenrc.js +tsconfig.tsbuildinfo +/.eslintrc.json +/tsconfig.esm.json diff --git a/packages/client-dynamodb/.prettierignore b/packages/client-dynamodb/.prettierignore new file mode 100644 index 00000000..46704c73 --- /dev/null +++ b/packages/client-dynamodb/.prettierignore @@ -0,0 +1 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". diff --git a/packages/client-dynamodb/.prettierrc.json b/packages/client-dynamodb/.prettierrc.json new file mode 100644 index 00000000..84c85a38 --- /dev/null +++ b/packages/client-dynamodb/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "overrides": [] +} diff --git a/packages/client-dynamodb/.projen/deps.json b/packages/client-dynamodb/.projen/deps.json new file mode 100644 index 00000000..38b05c7a --- /dev/null +++ b/packages/client-dynamodb/.projen/deps.json @@ -0,0 +1,107 @@ +{ + "dependencies": [ + { + "name": "@effect/data", + "version": "0.18.4", + "type": "build" + }, + { + "name": "@effect/io", + "version": "0.40.0", + "type": "build" + }, + { + "name": "@types/jest", + "type": "build" + }, + { + "name": "@types/node", + "version": "^16", + "type": "build" + }, + { + "name": "@typescript-eslint/eslint-plugin", + "version": "^6", + "type": "build" + }, + { + "name": "@typescript-eslint/parser", + "version": "^6", + "type": "build" + }, + { + "name": "aws-sdk-client-mock", + "type": "build" + }, + { + "name": "aws-sdk-client-mock-jest", + "type": "build" + }, + { + "name": "eslint-config-prettier", + "type": "build" + }, + { + "name": "eslint-import-resolver-node", + "type": "build" + }, + { + "name": "eslint-import-resolver-typescript", + "type": "build" + }, + { + "name": "eslint-plugin-import", + "type": "build" + }, + { + "name": "eslint-plugin-prettier", + "type": "build" + }, + { + "name": "eslint", + "version": "^8", + "type": "build" + }, + { + "name": "jest", + "type": "build" + }, + { + "name": "prettier", + "type": "build" + }, + { + "name": "projen", + "type": "build" + }, + { + "name": "ts-jest", + "type": "build" + }, + { + "name": "typescript", + "type": "build" + }, + { + "name": "@effect/data", + "version": "^0.18.4", + "type": "peer" + }, + { + "name": "@effect/io", + "version": "^0.40.0", + "type": "peer" + }, + { + "name": "@aws-sdk/client-dynamodb", + "version": "^3", + "type": "runtime" + }, + { + "name": "@aws-sdk/types", + "version": "^3", + "type": "runtime" + } + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/.projen/files.json b/packages/client-dynamodb/.projen/files.json new file mode 100644 index 00000000..312ff318 --- /dev/null +++ b/packages/client-dynamodb/.projen/files.json @@ -0,0 +1,20 @@ +{ + "files": [ + "./tsconfig.esm.json", + ".eslintrc.json", + ".gitattributes", + ".gitignore", + ".npmignore", + ".prettierignore", + ".prettierrc.json", + ".projen/deps.json", + ".projen/files.json", + ".projen/tasks.json", + "jest.config.json", + "LICENSE", + "project.json", + "tsconfig.dev.json", + "tsconfig.json" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/.projen/tasks.json b/packages/client-dynamodb/.projen/tasks.json new file mode 100644 index 00000000..de5fc109 --- /dev/null +++ b/packages/client-dynamodb/.projen/tasks.json @@ -0,0 +1,112 @@ +{ + "tasks": { + "build": { + "name": "build", + "description": "Full release build", + "steps": [ + { + "spawn": "pre-compile" + }, + { + "spawn": "compile" + }, + { + "spawn": "post-compile" + }, + { + "spawn": "test" + }, + { + "spawn": "package" + } + ] + }, + "compile": { + "name": "compile", + "description": "Only compile", + "steps": [ + { + "exec": "tsc -b ./tsconfig.json ./tsconfig.esm.json" + } + ] + }, + "default": { + "name": "default", + "description": "Synthesize project files" + }, + "eslint": { + "name": "eslint", + "description": "Runs eslint against the codebase", + "steps": [ + { + "exec": "eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test build-tools" + } + ] + }, + "install": { + "name": "install", + "description": "Install project dependencies and update lockfile (non-frozen)", + "steps": [ + { + "exec": "pnpm i --no-frozen-lockfile" + } + ] + }, + "install:ci": { + "name": "install:ci", + "description": "Install project dependencies using frozen lockfile", + "steps": [ + { + "exec": "pnpm i --frozen-lockfile" + } + ] + }, + "package": { + "name": "package", + "description": "Creates the distribution package" + }, + "post-compile": { + "name": "post-compile", + "description": "Runs after successful compilation" + }, + "pre-compile": { + "name": "pre-compile", + "description": "Prepare the project for compilation" + }, + "test": { + "name": "test", + "description": "Run tests", + "steps": [ + { + "exec": "jest --passWithNoTests --updateSnapshot", + "receiveArgs": true + }, + { + "spawn": "eslint" + } + ] + }, + "test:watch": { + "name": "test:watch", + "description": "Run jest in watch mode", + "steps": [ + { + "exec": "jest --watch" + } + ] + }, + "watch": { + "name": "watch", + "description": "Watch & compile in the background", + "steps": [ + { + "exec": "tsc --build -w" + } + ] + } + }, + "env": { + "PATH": "$(pnpm -c exec \"node --print process.env.PATH\")" + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/LICENSE b/packages/client-dynamodb/LICENSE new file mode 100644 index 00000000..c5b4e3d9 --- /dev/null +++ b/packages/client-dynamodb/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2023 Victor Korzunin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/client-dynamodb/README.md b/packages/client-dynamodb/README.md new file mode 100644 index 00000000..b3fa7ddc --- /dev/null +++ b/packages/client-dynamodb/README.md @@ -0,0 +1 @@ +# replace this \ No newline at end of file diff --git a/packages/client-dynamodb/jest.config.json b/packages/client-dynamodb/jest.config.json new file mode 100644 index 00000000..894210f7 --- /dev/null +++ b/packages/client-dynamodb/jest.config.json @@ -0,0 +1,37 @@ +{ + "transform": { + "^.+\\.tsx?$": [ + "ts-jest", + { + "tsconfig": "tsconfig.dev.json" + } + ] + }, + "testMatch": [ + "/src/**/__tests__/**/*.ts?(x)", + "/(test|src)/**/*(*.)@(spec|test).ts?(x)" + ], + "clearMocks": true, + "collectCoverage": true, + "coverageReporters": [ + "json", + "lcov", + "clover", + "cobertura", + "text" + ], + "coverageDirectory": "coverage", + "coveragePathIgnorePatterns": [ + "/node_modules/" + ], + "testPathIgnorePatterns": [ + "/node_modules/" + ], + "watchPathIgnorePatterns": [ + "/node_modules/" + ], + "reporters": [ + "default" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/package.json b/packages/client-dynamodb/package.json new file mode 100644 index 00000000..a22749ba --- /dev/null +++ b/packages/client-dynamodb/package.json @@ -0,0 +1,59 @@ +{ + "name": "@effect-aws/client-dynamodb", + "scripts": { + "build": "npx projen build", + "compile": "npx projen compile", + "default": "npx projen default", + "eslint": "npx projen eslint", + "package": "npx projen package", + "post-compile": "npx projen post-compile", + "pre-compile": "npx projen pre-compile", + "test": "npx projen test", + "test:watch": "npx projen test:watch", + "watch": "npx projen watch" + }, + "author": { + "name": "Victor Korzunin", + "email": "ifloydrose@gmail.com", + "organization": false + }, + "devDependencies": { + "@effect/data": "0.18.4", + "@effect/io": "0.40.0", + "@types/jest": "^29.5.5", + "@types/node": "^16", + "@typescript-eslint/eslint-plugin": "^6", + "@typescript-eslint/parser": "^6", + "aws-sdk-client-mock": "^3.0.0", + "aws-sdk-client-mock-jest": "^3.0.0", + "eslint": "^8", + "eslint-config-prettier": "^9.0.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.7.0", + "prettier": "^3.0.3", + "projen": "^0.73.33", + "ts-jest": "^29.1.1", + "typescript": "^5.2.2" + }, + "peerDependencies": { + "@effect/data": "^0.18.4", + "@effect/io": "^0.40.0" + }, + "dependencies": { + "@aws-sdk/client-dynamodb": "^3", + "@aws-sdk/types": "^3" + }, + "pnpm": {}, + "main": "lib/index.js", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "version": "0.0.0", + "types": "lib/index.d.ts", + "module": "lib/esm/index.js", + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/project.json b/packages/client-dynamodb/project.json new file mode 100644 index 00000000..ee80a650 --- /dev/null +++ b/packages/client-dynamodb/project.json @@ -0,0 +1,77 @@ +{ + "name": "@effect-aws/client-dynamodb", + "root": "packages/client-dynamodb", + "targets": { + "default": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen default", + "cwd": "packages/client-dynamodb" + } + }, + "pre-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen pre-compile", + "cwd": "packages/client-dynamodb" + } + }, + "compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen compile", + "cwd": "packages/client-dynamodb" + } + }, + "post-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen post-compile", + "cwd": "packages/client-dynamodb" + } + }, + "test": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen test", + "cwd": "packages/client-dynamodb" + } + }, + "package": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen package", + "cwd": "packages/client-dynamodb" + } + }, + "build": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen build", + "cwd": "packages/client-dynamodb" + } + }, + "test:watch": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen test:watch", + "cwd": "packages/client-dynamodb" + } + }, + "watch": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen watch", + "cwd": "packages/client-dynamodb" + } + }, + "eslint": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen eslint", + "cwd": "packages/client-dynamodb" + } + } + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/src/Context.ts b/packages/client-dynamodb/src/Context.ts new file mode 100644 index 00000000..00aa2e78 --- /dev/null +++ b/packages/client-dynamodb/src/Context.ts @@ -0,0 +1,47 @@ +import { DynamoDBClient, DynamoDBClientConfig } from "@aws-sdk/client-dynamodb"; +import * as Context from "@effect/data/Context"; +import * as Data from "@effect/data/Data"; +import { flow } from "@effect/data/Function"; +import * as Effect from "@effect/io/Effect"; +import * as Layer from "@effect/io/Layer"; +import * as Runtime from "@effect/io/Runtime"; + +export class DynamoDBClientOptions extends Data.TaggedClass( + "DynamoDBClientOptions", +) {} + +export const DynamoDBClientConfigTag = Context.Tag( + "@effect-aws/DynamoDBClient/Config", +); + +export const DefaultDynamoDBClientConfigLayer = Layer.effect( + DynamoDBClientConfigTag, + Effect.runtime().pipe( + Effect.map( + (runtime) => + new DynamoDBClientOptions({ + logger: { + info: flow(Effect.logInfo, Runtime.runSync(runtime)), + warn: flow(Effect.logWarning, Runtime.runSync(runtime)), + error: flow(Effect.logError, Runtime.runSync(runtime)), + debug: flow(Effect.logDebug, Runtime.runSync(runtime)), + trace: flow(Effect.logTrace, Runtime.runSync(runtime)), + }, + }), + ), + ), +); + +export const DynamoDBClientInstanceTag = Context.Tag( + "@effect-aws/DynamoDBClient/Instance", +); + +export const DynamoDBClientInstanceLayer = Layer.effect( + DynamoDBClientInstanceTag, + DynamoDBClientConfigTag.pipe( + Effect.map((config) => new DynamoDBClient(config)), + ), +); + +export const DefaultDynamoDBClientInstanceLayer = + DynamoDBClientInstanceLayer.pipe(Layer.use(DefaultDynamoDBClientConfigLayer)); diff --git a/packages/client-dynamodb/src/DynamoDB.ts b/packages/client-dynamodb/src/DynamoDB.ts new file mode 100644 index 00000000..6435135e --- /dev/null +++ b/packages/client-dynamodb/src/DynamoDB.ts @@ -0,0 +1,692 @@ +import { + BatchExecuteStatementCommand, + BatchExecuteStatementCommandInput, + BatchExecuteStatementCommandOutput, + BatchGetItemCommand, + BatchGetItemCommandInput, + BatchGetItemCommandOutput, + BatchWriteItemCommand, + BatchWriteItemCommandInput, + BatchWriteItemCommandOutput, + CreateBackupCommand, + CreateBackupCommandInput, + CreateBackupCommandOutput, + CreateGlobalTableCommand, + CreateGlobalTableCommandInput, + CreateGlobalTableCommandOutput, + CreateTableCommand, + CreateTableCommandInput, + CreateTableCommandOutput, + DeleteBackupCommand, + DeleteBackupCommandInput, + DeleteBackupCommandOutput, + DeleteItemCommand, + DeleteItemCommandInput, + DeleteItemCommandOutput, + DeleteTableCommand, + DeleteTableCommandInput, + DeleteTableCommandOutput, + DescribeBackupCommand, + DescribeBackupCommandInput, + DescribeBackupCommandOutput, + DescribeContinuousBackupsCommand, + DescribeContinuousBackupsCommandInput, + DescribeContinuousBackupsCommandOutput, + DescribeContributorInsightsCommand, + DescribeContributorInsightsCommandInput, + DescribeContributorInsightsCommandOutput, + DescribeEndpointsCommand, + DescribeEndpointsCommandInput, + DescribeEndpointsCommandOutput, + DescribeExportCommand, + DescribeExportCommandInput, + DescribeExportCommandOutput, + DescribeGlobalTableCommand, + DescribeGlobalTableCommandInput, + DescribeGlobalTableCommandOutput, + DescribeGlobalTableSettingsCommand, + DescribeGlobalTableSettingsCommandInput, + DescribeGlobalTableSettingsCommandOutput, + DescribeImportCommand, + DescribeImportCommandInput, + DescribeImportCommandOutput, + DescribeKinesisStreamingDestinationCommand, + DescribeKinesisStreamingDestinationCommandInput, + DescribeKinesisStreamingDestinationCommandOutput, + DescribeLimitsCommand, + DescribeLimitsCommandInput, + DescribeLimitsCommandOutput, + DescribeTableCommand, + DescribeTableCommandInput, + DescribeTableCommandOutput, + DescribeTableReplicaAutoScalingCommand, + DescribeTableReplicaAutoScalingCommandInput, + DescribeTableReplicaAutoScalingCommandOutput, + DescribeTimeToLiveCommand, + DescribeTimeToLiveCommandInput, + DescribeTimeToLiveCommandOutput, + DisableKinesisStreamingDestinationCommand, + DisableKinesisStreamingDestinationCommandInput, + DisableKinesisStreamingDestinationCommandOutput, + EnableKinesisStreamingDestinationCommand, + EnableKinesisStreamingDestinationCommandInput, + EnableKinesisStreamingDestinationCommandOutput, + ExecuteStatementCommand, + ExecuteStatementCommandInput, + ExecuteStatementCommandOutput, + ExecuteTransactionCommand, + ExecuteTransactionCommandInput, + ExecuteTransactionCommandOutput, + ExportTableToPointInTimeCommand, + ExportTableToPointInTimeCommandInput, + ExportTableToPointInTimeCommandOutput, + GetItemCommand, + GetItemCommandInput, + GetItemCommandOutput, + ImportTableCommand, + ImportTableCommandInput, + ImportTableCommandOutput, + ListBackupsCommand, + ListBackupsCommandInput, + ListBackupsCommandOutput, + ListContributorInsightsCommand, + ListContributorInsightsCommandInput, + ListContributorInsightsCommandOutput, + ListExportsCommand, + ListExportsCommandInput, + ListExportsCommandOutput, + ListGlobalTablesCommand, + ListGlobalTablesCommandInput, + ListGlobalTablesCommandOutput, + ListImportsCommand, + ListImportsCommandInput, + ListImportsCommandOutput, + ListTablesCommand, + ListTablesCommandInput, + ListTablesCommandOutput, + ListTagsOfResourceCommand, + ListTagsOfResourceCommandInput, + ListTagsOfResourceCommandOutput, + PutItemCommand, + PutItemCommandInput, + PutItemCommandOutput, + QueryCommand, + QueryCommandInput, + QueryCommandOutput, + RestoreTableFromBackupCommand, + RestoreTableFromBackupCommandInput, + RestoreTableFromBackupCommandOutput, + RestoreTableToPointInTimeCommand, + RestoreTableToPointInTimeCommandInput, + RestoreTableToPointInTimeCommandOutput, + ScanCommand, + ScanCommandInput, + ScanCommandOutput, + TagResourceCommand, + TagResourceCommandInput, + TagResourceCommandOutput, + TransactGetItemsCommand, + TransactGetItemsCommandInput, + TransactGetItemsCommandOutput, + TransactWriteItemsCommand, + TransactWriteItemsCommandInput, + TransactWriteItemsCommandOutput, + UntagResourceCommand, + UntagResourceCommandInput, + UntagResourceCommandOutput, + UpdateContinuousBackupsCommand, + UpdateContinuousBackupsCommandInput, + UpdateContinuousBackupsCommandOutput, + UpdateContributorInsightsCommand, + UpdateContributorInsightsCommandInput, + UpdateContributorInsightsCommandOutput, + UpdateGlobalTableCommand, + UpdateGlobalTableCommandInput, + UpdateGlobalTableCommandOutput, + UpdateGlobalTableSettingsCommand, + UpdateGlobalTableSettingsCommandInput, + UpdateGlobalTableSettingsCommandOutput, + UpdateItemCommand, + UpdateItemCommandInput, + UpdateItemCommandOutput, + UpdateTableCommand, + UpdateTableCommandInput, + UpdateTableCommandOutput, + UpdateTableReplicaAutoScalingCommand, + UpdateTableReplicaAutoScalingCommandInput, + UpdateTableReplicaAutoScalingCommandOutput, + UpdateTimeToLiveCommand, + UpdateTimeToLiveCommandInput, + UpdateTimeToLiveCommandOutput, +} from "@aws-sdk/client-dynamodb"; +import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types"; +import * as RR from "@effect/data/ReadonlyRecord"; +import * as Effect from "@effect/io/Effect"; +import { + DefaultDynamoDBClientInstanceLayer, + DynamoDBClientInstanceLayer, + DynamoDBClientInstanceTag, +} from "./Context"; + +const commands = { + BatchExecuteStatementCommand, + BatchGetItemCommand, + BatchWriteItemCommand, + CreateBackupCommand, + CreateGlobalTableCommand, + CreateTableCommand, + DeleteBackupCommand, + DeleteItemCommand, + DeleteTableCommand, + DescribeBackupCommand, + DescribeContinuousBackupsCommand, + DescribeContributorInsightsCommand, + DescribeEndpointsCommand, + DescribeExportCommand, + DescribeGlobalTableCommand, + DescribeGlobalTableSettingsCommand, + DescribeImportCommand, + DescribeKinesisStreamingDestinationCommand, + DescribeLimitsCommand, + DescribeTableCommand, + DescribeTableReplicaAutoScalingCommand, + DescribeTimeToLiveCommand, + DisableKinesisStreamingDestinationCommand, + EnableKinesisStreamingDestinationCommand, + ExecuteStatementCommand, + ExecuteTransactionCommand, + ExportTableToPointInTimeCommand, + GetItemCommand, + ImportTableCommand, + ListBackupsCommand, + ListContributorInsightsCommand, + ListExportsCommand, + ListGlobalTablesCommand, + ListImportsCommand, + ListTablesCommand, + ListTagsOfResourceCommand, + PutItemCommand, + QueryCommand, + RestoreTableFromBackupCommand, + RestoreTableToPointInTimeCommand, + ScanCommand, + TagResourceCommand, + TransactGetItemsCommand, + TransactWriteItemsCommand, + UntagResourceCommand, + UpdateContinuousBackupsCommand, + UpdateContributorInsightsCommand, + UpdateGlobalTableCommand, + UpdateGlobalTableSettingsCommand, + UpdateItemCommand, + UpdateTableCommand, + UpdateTableReplicaAutoScalingCommand, + UpdateTimeToLiveCommand, +}; + +export interface DynamoDBService { + /** + * @see {@link BatchExecuteStatementCommand} + */ + batchExecuteStatement( + args: BatchExecuteStatementCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link BatchGetItemCommand} + */ + batchGetItem( + args: BatchGetItemCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link BatchWriteItemCommand} + */ + batchWriteItem( + args: BatchWriteItemCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateBackupCommand} + */ + createBackup( + args: CreateBackupCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateGlobalTableCommand} + */ + createGlobalTable( + args: CreateGlobalTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateTableCommand} + */ + createTable( + args: CreateTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteBackupCommand} + */ + deleteBackup( + args: DeleteBackupCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteItemCommand} + */ + deleteItem( + args: DeleteItemCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteTableCommand} + */ + deleteTable( + args: DeleteTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeBackupCommand} + */ + describeBackup( + args: DescribeBackupCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeContinuousBackupsCommand} + */ + describeContinuousBackups( + args: DescribeContinuousBackupsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeContributorInsightsCommand} + */ + describeContributorInsights( + args: DescribeContributorInsightsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeEndpointsCommand} + */ + describeEndpoints( + args: DescribeEndpointsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeExportCommand} + */ + describeExport( + args: DescribeExportCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeGlobalTableCommand} + */ + describeGlobalTable( + args: DescribeGlobalTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeGlobalTableSettingsCommand} + */ + describeGlobalTableSettings( + args: DescribeGlobalTableSettingsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeImportCommand} + */ + describeImport( + args: DescribeImportCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeKinesisStreamingDestinationCommand} + */ + describeKinesisStreamingDestination( + args: DescribeKinesisStreamingDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + DescribeKinesisStreamingDestinationCommandOutput + >; + + /** + * @see {@link DescribeLimitsCommand} + */ + describeLimits( + args: DescribeLimitsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeTableCommand} + */ + describeTable( + args: DescribeTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeTableReplicaAutoScalingCommand} + */ + describeTableReplicaAutoScaling( + args: DescribeTableReplicaAutoScalingCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + DescribeTableReplicaAutoScalingCommandOutput + >; + + /** + * @see {@link DescribeTimeToLiveCommand} + */ + describeTimeToLive( + args: DescribeTimeToLiveCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DisableKinesisStreamingDestinationCommand} + */ + disableKinesisStreamingDestination( + args: DisableKinesisStreamingDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + DisableKinesisStreamingDestinationCommandOutput + >; + + /** + * @see {@link EnableKinesisStreamingDestinationCommand} + */ + enableKinesisStreamingDestination( + args: EnableKinesisStreamingDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + EnableKinesisStreamingDestinationCommandOutput + >; + + /** + * @see {@link ExecuteStatementCommand} + */ + executeStatement( + args: ExecuteStatementCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ExecuteTransactionCommand} + */ + executeTransaction( + args: ExecuteTransactionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ExportTableToPointInTimeCommand} + */ + exportTableToPointInTime( + args: ExportTableToPointInTimeCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetItemCommand} + */ + getItem( + args: GetItemCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ImportTableCommand} + */ + importTable( + args: ImportTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListBackupsCommand} + */ + listBackups( + args: ListBackupsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListContributorInsightsCommand} + */ + listContributorInsights( + args: ListContributorInsightsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListExportsCommand} + */ + listExports( + args: ListExportsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListGlobalTablesCommand} + */ + listGlobalTables( + args: ListGlobalTablesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListImportsCommand} + */ + listImports( + args: ListImportsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListTablesCommand} + */ + listTables( + args: ListTablesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListTagsOfResourceCommand} + */ + listTagsOfResource( + args: ListTagsOfResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutItemCommand} + */ + putItem( + args: PutItemCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link QueryCommand} + */ + query( + args: QueryCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link RestoreTableFromBackupCommand} + */ + restoreTableFromBackup( + args: RestoreTableFromBackupCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link RestoreTableToPointInTimeCommand} + */ + restoreTableToPointInTime( + args: RestoreTableToPointInTimeCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ScanCommand} + */ + scan( + args: ScanCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link TagResourceCommand} + */ + tagResource( + args: TagResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link TransactGetItemsCommand} + */ + transactGetItems( + args: TransactGetItemsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link TransactWriteItemsCommand} + */ + transactWriteItems( + args: TransactWriteItemsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UntagResourceCommand} + */ + untagResource( + args: UntagResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateContinuousBackupsCommand} + */ + updateContinuousBackups( + args: UpdateContinuousBackupsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateContributorInsightsCommand} + */ + updateContributorInsights( + args: UpdateContributorInsightsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateGlobalTableCommand} + */ + updateGlobalTable( + args: UpdateGlobalTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateGlobalTableSettingsCommand} + */ + updateGlobalTableSettings( + args: UpdateGlobalTableSettingsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateItemCommand} + */ + updateItem( + args: UpdateItemCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateTableCommand} + */ + updateTable( + args: UpdateTableCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateTableReplicaAutoScalingCommand} + */ + updateTableReplicaAutoScaling( + args: UpdateTableReplicaAutoScalingCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateTimeToLiveCommand} + */ + updateTimeToLive( + args: UpdateTimeToLiveCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; +} + +export const BaseDynamoDBServiceEffect = Effect.gen(function* (_) { + const client = yield* _(DynamoDBClientInstanceTag); + + return RR.toEntries(commands).reduce((acc, [command]) => { + const CommandCtor = commands[command] as any; + const methodImpl = (args: any, options: any) => + Effect.tryPromise(() => + client.send(new CommandCtor(args), options ?? {}), + ); + const methodName = (command[0].toLowerCase() + command.slice(1)).replace( + /Command$/, + "", + ); + return { ...acc, [methodName]: methodImpl }; + }, {}) as DynamoDBService; +}); + +export const DynamoDBServiceEffect = BaseDynamoDBServiceEffect.pipe( + Effect.provideLayer(DynamoDBClientInstanceLayer), +); + +export const DefaultDynamoDBServiceEffect = BaseDynamoDBServiceEffect.pipe( + Effect.provideLayer(DefaultDynamoDBClientInstanceLayer), +); diff --git a/packages/client-dynamodb/src/index.ts b/packages/client-dynamodb/src/index.ts new file mode 100644 index 00000000..eb6ccb90 --- /dev/null +++ b/packages/client-dynamodb/src/index.ts @@ -0,0 +1,2 @@ +export * from "./Context"; +export * from "./DynamoDB"; diff --git a/packages/client-dynamodb/test/DynamoDB.test.ts b/packages/client-dynamodb/test/DynamoDB.test.ts new file mode 100644 index 00000000..da685d88 --- /dev/null +++ b/packages/client-dynamodb/test/DynamoDB.test.ts @@ -0,0 +1,155 @@ +import { + PutItemCommand, + DynamoDBClient, + PutItemCommandInput, +} from "@aws-sdk/client-dynamodb"; +import { pipe } from "@effect/data/Function"; +import * as Effect from "@effect/io/Effect"; +import * as Exit from "@effect/io/Exit"; +import * as Layer from "@effect/io/Layer"; +import { mockClient } from "aws-sdk-client-mock"; +import { + BaseDynamoDBServiceEffect, + DefaultDynamoDBClientConfigLayer, + DefaultDynamoDBServiceEffect, + DynamoDBClientConfigTag, + DynamoDBClientInstanceTag, + DynamoDBClientOptions, + DynamoDBServiceEffect, +} from "../src"; + +import "aws-sdk-client-mock-jest"; + +const dynamodbMock = mockClient(DynamoDBClient); + +describe("DynamoDBClientImpl", () => { + it("default", async () => { + dynamodbMock.reset().on(PutItemCommand).resolves({}); + + const args: PutItemCommandInput = { + TableName: "test", + Item: { testAttr: { S: "test" } }, + }; + + const program = Effect.flatMap(DefaultDynamoDBServiceEffect, (dynamodb) => + dynamodb.putItem(args), + ); + + const result = await pipe(program, Effect.runPromiseExit); + + expect(result).toEqual(Exit.succeed({})); + expect(dynamodbMock).toHaveReceivedCommandTimes(PutItemCommand, 1); + expect(dynamodbMock).toHaveReceivedCommandWith(PutItemCommand, args); + }); + + it("configurable", async () => { + dynamodbMock.reset().on(PutItemCommand).resolves({}); + + const args: PutItemCommandInput = { + TableName: "test", + Item: { testAttr: { S: "test" } }, + }; + + const program = Effect.flatMap(DynamoDBServiceEffect, (dynamodb) => + dynamodb.putItem(args), + ); + + const DynamoDBClientConfigLayer = Layer.succeed( + DynamoDBClientConfigTag, + new DynamoDBClientOptions({ region: "eu-central-1" }), + ); + + const result = await pipe( + program, + Effect.provideLayer(DynamoDBClientConfigLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(dynamodbMock).toHaveReceivedCommandTimes(PutItemCommand, 1); + expect(dynamodbMock).toHaveReceivedCommandWith(PutItemCommand, args); + }); + + it("base", async () => { + dynamodbMock.reset().on(PutItemCommand).resolves({}); + + const args: PutItemCommandInput = { + TableName: "test", + Item: { testAttr: { S: "test" } }, + }; + + const program = Effect.flatMap(BaseDynamoDBServiceEffect, (dynamodb) => + dynamodb.putItem(args), + ); + + const DynamoDBClientInstanceLayer = Layer.succeed( + DynamoDBClientInstanceTag, + new DynamoDBClient({ region: "eu-central-1" }), + ); + + const result = await pipe( + program, + Effect.provideLayer(DynamoDBClientInstanceLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(dynamodbMock).toHaveReceivedCommandTimes(PutItemCommand, 1); + expect(dynamodbMock).toHaveReceivedCommandWith(PutItemCommand, args); + }); + + it("extended", async () => { + dynamodbMock.reset().on(PutItemCommand).resolves({}); + + const args: PutItemCommandInput = { + TableName: "test", + Item: { testAttr: { S: "test" } }, + }; + + const program = Effect.flatMap(BaseDynamoDBServiceEffect, (dynamodb) => + dynamodb.putItem(args), + ); + + const DynamoDBClientInstanceLayer = Layer.provide( + DefaultDynamoDBClientConfigLayer, + Layer.effect( + DynamoDBClientInstanceTag, + DynamoDBClientConfigTag.pipe( + Effect.map( + (config) => + new DynamoDBClient({ ...config, region: "eu-central-1" }), + ), + ), + ), + ); + + const result = await pipe( + program, + Effect.provideLayer(DynamoDBClientInstanceLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(dynamodbMock).toHaveReceivedCommandTimes(PutItemCommand, 1); + expect(dynamodbMock).toHaveReceivedCommandWith(PutItemCommand, args); + }); + + it("fail", async () => { + dynamodbMock.reset().on(PutItemCommand).rejects(new Error("test")); + + const args: PutItemCommandInput = { + TableName: "test", + Item: { testAttr: { S: "test" } }, + }; + + const program = Effect.flatMap(DefaultDynamoDBServiceEffect, (dynamodb) => + dynamodb.putItem(args, { requestTimeout: 1000 }), + ); + + const result = await pipe(program, Effect.runPromiseExit); + + expect(result).toEqual(Exit.fail(new Error("test"))); + expect(dynamodbMock).toHaveReceivedCommandTimes(PutItemCommand, 1); + expect(dynamodbMock).toHaveReceivedCommandWith(PutItemCommand, args); + }); +}); diff --git a/packages/client-dynamodb/tsconfig.dev.json b/packages/client-dynamodb/tsconfig.dev.json new file mode 100644 index 00000000..bdb2a8aa --- /dev/null +++ b/packages/client-dynamodb/tsconfig.dev.json @@ -0,0 +1,37 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "compilerOptions": { + "alwaysStrict": true, + "declaration": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "inlineSourceMap": true, + "inlineSources": true, + "lib": [ + "es2019" + ], + "module": "CommonJS", + "noEmitOnError": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2019", + "moduleResolution": "node" + }, + "include": [ + ".projenrc.js", + "src/**/*.ts", + "test/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/packages/client-dynamodb/tsconfig.esm.json b/packages/client-dynamodb/tsconfig.esm.json new file mode 100644 index 00000000..1b046684 --- /dev/null +++ b/packages/client-dynamodb/tsconfig.esm.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./lib/esm", + "module": "es6", + "resolveJsonModule": false, + "declaration": false + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-dynamodb/tsconfig.json b/packages/client-dynamodb/tsconfig.json new file mode 100644 index 00000000..2c65812c --- /dev/null +++ b/packages/client-dynamodb/tsconfig.json @@ -0,0 +1,35 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "compilerOptions": { + "rootDir": "src", + "outDir": "lib", + "alwaysStrict": true, + "declaration": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "inlineSourceMap": true, + "inlineSources": true, + "lib": [ + "es2019" + ], + "module": "CommonJS", + "noEmitOnError": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2019", + "moduleResolution": "node" + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [] +} diff --git a/packages/client-eventbridge/.eslintrc.json b/packages/client-eventbridge/.eslintrc.json new file mode 100644 index 00000000..140ba19b --- /dev/null +++ b/packages/client-eventbridge/.eslintrc.json @@ -0,0 +1,131 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "env": { + "jest": true, + "node": true + }, + "root": true, + "plugins": [ + "@typescript-eslint", + "import", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module", + "project": "./tsconfig.dev.json" + }, + "extends": [ + "plugin:import/typescript", + "prettier", + "plugin:prettier/recommended" + ], + "settings": { + "import/parsers": { + "@typescript-eslint/parser": [ + ".ts", + ".tsx" + ] + }, + "import/resolver": { + "node": {}, + "typescript": { + "project": "./tsconfig.dev.json", + "alwaysTryTypes": true + } + } + }, + "ignorePatterns": [ + "*.js", + "*.d.ts", + "node_modules/", + "*.generated.ts", + "coverage" + ], + "rules": { + "prettier/prettier": [ + "error" + ], + "@typescript-eslint/no-require-imports": [ + "error" + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": [ + "**/test/**", + "**/build-tools/**" + ], + "optionalDependencies": false, + "peerDependencies": true + } + ], + "import/no-unresolved": [ + "error" + ], + "import/order": [ + "warn", + { + "groups": [ + "builtin", + "external" + ], + "alphabetize": { + "order": "asc", + "caseInsensitive": true + } + } + ], + "no-duplicate-imports": [ + "error" + ], + "no-shadow": [ + "off" + ], + "@typescript-eslint/no-shadow": [ + "error" + ], + "key-spacing": [ + "error" + ], + "no-multiple-empty-lines": [ + "error" + ], + "@typescript-eslint/no-floating-promises": [ + "error" + ], + "no-return-await": [ + "off" + ], + "@typescript-eslint/return-await": [ + "error" + ], + "no-trailing-spaces": [ + "error" + ], + "dot-notation": [ + "error" + ], + "no-bitwise": [ + "error" + ], + "@typescript-eslint/member-ordering": [ + "error", + { + "default": [ + "public-static-field", + "public-static-method", + "protected-static-field", + "protected-static-method", + "private-static-field", + "private-static-method", + "field", + "constructor", + "method" + ] + } + ] + }, + "overrides": [] +} diff --git a/packages/client-eventbridge/.gitattributes b/packages/client-eventbridge/.gitattributes new file mode 100644 index 00000000..3d4472e4 --- /dev/null +++ b/packages/client-eventbridge/.gitattributes @@ -0,0 +1,21 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". + +/./tsconfig.esm.json linguist-generated +/.eslintrc.json linguist-generated +/.gitattributes linguist-generated +/.gitignore linguist-generated +/.npmignore linguist-generated +/.npmrc linguist-generated +/.prettierignore linguist-generated +/.prettierrc.json linguist-generated +/.projen/** linguist-generated +/.projen/deps.json linguist-generated +/.projen/files.json linguist-generated +/.projen/tasks.json linguist-generated +/jest.config.json linguist-generated +/LICENSE linguist-generated +/package.json linguist-generated +/pnpm-lock.yaml linguist-generated +/project.json linguist-generated +/tsconfig.dev.json linguist-generated +/tsconfig.json linguist-generated \ No newline at end of file diff --git a/packages/client-eventbridge/.gitignore b/packages/client-eventbridge/.gitignore new file mode 100644 index 00000000..cd4750b6 --- /dev/null +++ b/packages/client-eventbridge/.gitignore @@ -0,0 +1,46 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +!/.gitattributes +!/.projen/tasks.json +!/.projen/deps.json +!/.projen/files.json +!/package.json +!/LICENSE +!/.npmignore +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json +pids +*.pid +*.seed +*.pid.lock +lib-cov +coverage +*.lcov +.nyc_output +build/Release +node_modules/ +jspm_packages/ +*.tsbuildinfo +.eslintcache +*.tgz +.yarn-integrity +.cache +!/.projenrc.js +!/jest.config.json +/coverage/ +!/.prettierignore +!/.prettierrc.json +!/.npmrc +!/test/ +!/tsconfig.json +!/tsconfig.dev.json +!/src/ +/lib +/dist/ +!/.eslintrc.json +!/./tsconfig.esm.json +!/project.json diff --git a/packages/client-eventbridge/.npmignore b/packages/client-eventbridge/.npmignore new file mode 100644 index 00000000..aaeff689 --- /dev/null +++ b/packages/client-eventbridge/.npmignore @@ -0,0 +1,19 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +/.projen/ +/jest.config.json +/coverage/ +/test/ +/tsconfig.dev.json +/src/ +!/lib/ +!/lib/**/*.js +!/lib/**/*.d.ts +dist +/tsconfig.json +/.github/ +/.vscode/ +/.idea/ +/.projenrc.js +tsconfig.tsbuildinfo +/.eslintrc.json +/tsconfig.esm.json diff --git a/packages/client-eventbridge/.prettierignore b/packages/client-eventbridge/.prettierignore new file mode 100644 index 00000000..46704c73 --- /dev/null +++ b/packages/client-eventbridge/.prettierignore @@ -0,0 +1 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". diff --git a/packages/client-eventbridge/.prettierrc.json b/packages/client-eventbridge/.prettierrc.json new file mode 100644 index 00000000..84c85a38 --- /dev/null +++ b/packages/client-eventbridge/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "overrides": [] +} diff --git a/packages/client-eventbridge/.projen/deps.json b/packages/client-eventbridge/.projen/deps.json new file mode 100644 index 00000000..5c880432 --- /dev/null +++ b/packages/client-eventbridge/.projen/deps.json @@ -0,0 +1,107 @@ +{ + "dependencies": [ + { + "name": "@effect/data", + "version": "0.18.4", + "type": "build" + }, + { + "name": "@effect/io", + "version": "0.40.0", + "type": "build" + }, + { + "name": "@types/jest", + "type": "build" + }, + { + "name": "@types/node", + "version": "^16", + "type": "build" + }, + { + "name": "@typescript-eslint/eslint-plugin", + "version": "^6", + "type": "build" + }, + { + "name": "@typescript-eslint/parser", + "version": "^6", + "type": "build" + }, + { + "name": "aws-sdk-client-mock", + "type": "build" + }, + { + "name": "aws-sdk-client-mock-jest", + "type": "build" + }, + { + "name": "eslint-config-prettier", + "type": "build" + }, + { + "name": "eslint-import-resolver-node", + "type": "build" + }, + { + "name": "eslint-import-resolver-typescript", + "type": "build" + }, + { + "name": "eslint-plugin-import", + "type": "build" + }, + { + "name": "eslint-plugin-prettier", + "type": "build" + }, + { + "name": "eslint", + "version": "^8", + "type": "build" + }, + { + "name": "jest", + "type": "build" + }, + { + "name": "prettier", + "type": "build" + }, + { + "name": "projen", + "type": "build" + }, + { + "name": "ts-jest", + "type": "build" + }, + { + "name": "typescript", + "type": "build" + }, + { + "name": "@effect/data", + "version": "^0.18.4", + "type": "peer" + }, + { + "name": "@effect/io", + "version": "^0.40.0", + "type": "peer" + }, + { + "name": "@aws-sdk/client-eventbridge", + "version": "^3", + "type": "runtime" + }, + { + "name": "@aws-sdk/types", + "version": "^3", + "type": "runtime" + } + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/.projen/files.json b/packages/client-eventbridge/.projen/files.json new file mode 100644 index 00000000..312ff318 --- /dev/null +++ b/packages/client-eventbridge/.projen/files.json @@ -0,0 +1,20 @@ +{ + "files": [ + "./tsconfig.esm.json", + ".eslintrc.json", + ".gitattributes", + ".gitignore", + ".npmignore", + ".prettierignore", + ".prettierrc.json", + ".projen/deps.json", + ".projen/files.json", + ".projen/tasks.json", + "jest.config.json", + "LICENSE", + "project.json", + "tsconfig.dev.json", + "tsconfig.json" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/.projen/tasks.json b/packages/client-eventbridge/.projen/tasks.json new file mode 100644 index 00000000..de5fc109 --- /dev/null +++ b/packages/client-eventbridge/.projen/tasks.json @@ -0,0 +1,112 @@ +{ + "tasks": { + "build": { + "name": "build", + "description": "Full release build", + "steps": [ + { + "spawn": "pre-compile" + }, + { + "spawn": "compile" + }, + { + "spawn": "post-compile" + }, + { + "spawn": "test" + }, + { + "spawn": "package" + } + ] + }, + "compile": { + "name": "compile", + "description": "Only compile", + "steps": [ + { + "exec": "tsc -b ./tsconfig.json ./tsconfig.esm.json" + } + ] + }, + "default": { + "name": "default", + "description": "Synthesize project files" + }, + "eslint": { + "name": "eslint", + "description": "Runs eslint against the codebase", + "steps": [ + { + "exec": "eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test build-tools" + } + ] + }, + "install": { + "name": "install", + "description": "Install project dependencies and update lockfile (non-frozen)", + "steps": [ + { + "exec": "pnpm i --no-frozen-lockfile" + } + ] + }, + "install:ci": { + "name": "install:ci", + "description": "Install project dependencies using frozen lockfile", + "steps": [ + { + "exec": "pnpm i --frozen-lockfile" + } + ] + }, + "package": { + "name": "package", + "description": "Creates the distribution package" + }, + "post-compile": { + "name": "post-compile", + "description": "Runs after successful compilation" + }, + "pre-compile": { + "name": "pre-compile", + "description": "Prepare the project for compilation" + }, + "test": { + "name": "test", + "description": "Run tests", + "steps": [ + { + "exec": "jest --passWithNoTests --updateSnapshot", + "receiveArgs": true + }, + { + "spawn": "eslint" + } + ] + }, + "test:watch": { + "name": "test:watch", + "description": "Run jest in watch mode", + "steps": [ + { + "exec": "jest --watch" + } + ] + }, + "watch": { + "name": "watch", + "description": "Watch & compile in the background", + "steps": [ + { + "exec": "tsc --build -w" + } + ] + } + }, + "env": { + "PATH": "$(pnpm -c exec \"node --print process.env.PATH\")" + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/LICENSE b/packages/client-eventbridge/LICENSE new file mode 100644 index 00000000..c5b4e3d9 --- /dev/null +++ b/packages/client-eventbridge/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2023 Victor Korzunin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/client-eventbridge/README.md b/packages/client-eventbridge/README.md new file mode 100644 index 00000000..b3fa7ddc --- /dev/null +++ b/packages/client-eventbridge/README.md @@ -0,0 +1 @@ +# replace this \ No newline at end of file diff --git a/packages/client-eventbridge/jest.config.json b/packages/client-eventbridge/jest.config.json new file mode 100644 index 00000000..894210f7 --- /dev/null +++ b/packages/client-eventbridge/jest.config.json @@ -0,0 +1,37 @@ +{ + "transform": { + "^.+\\.tsx?$": [ + "ts-jest", + { + "tsconfig": "tsconfig.dev.json" + } + ] + }, + "testMatch": [ + "/src/**/__tests__/**/*.ts?(x)", + "/(test|src)/**/*(*.)@(spec|test).ts?(x)" + ], + "clearMocks": true, + "collectCoverage": true, + "coverageReporters": [ + "json", + "lcov", + "clover", + "cobertura", + "text" + ], + "coverageDirectory": "coverage", + "coveragePathIgnorePatterns": [ + "/node_modules/" + ], + "testPathIgnorePatterns": [ + "/node_modules/" + ], + "watchPathIgnorePatterns": [ + "/node_modules/" + ], + "reporters": [ + "default" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/package.json b/packages/client-eventbridge/package.json new file mode 100644 index 00000000..3aae5f17 --- /dev/null +++ b/packages/client-eventbridge/package.json @@ -0,0 +1,59 @@ +{ + "name": "@effect-aws/client-eventbridge", + "scripts": { + "build": "npx projen build", + "compile": "npx projen compile", + "default": "npx projen default", + "eslint": "npx projen eslint", + "package": "npx projen package", + "post-compile": "npx projen post-compile", + "pre-compile": "npx projen pre-compile", + "test": "npx projen test", + "test:watch": "npx projen test:watch", + "watch": "npx projen watch" + }, + "author": { + "name": "Victor Korzunin", + "email": "ifloydrose@gmail.com", + "organization": false + }, + "devDependencies": { + "@effect/data": "0.18.4", + "@effect/io": "0.40.0", + "@types/jest": "^29.5.5", + "@types/node": "^16", + "@typescript-eslint/eslint-plugin": "^6", + "@typescript-eslint/parser": "^6", + "aws-sdk-client-mock": "^3.0.0", + "aws-sdk-client-mock-jest": "^3.0.0", + "eslint": "^8", + "eslint-config-prettier": "^9.0.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.7.0", + "prettier": "^3.0.3", + "projen": "^0.73.33", + "ts-jest": "^29.1.1", + "typescript": "^5.2.2" + }, + "peerDependencies": { + "@effect/data": "^0.18.4", + "@effect/io": "^0.40.0" + }, + "dependencies": { + "@aws-sdk/client-eventbridge": "^3", + "@aws-sdk/types": "^3" + }, + "pnpm": {}, + "main": "lib/index.js", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "version": "0.0.0", + "types": "lib/index.d.ts", + "module": "lib/esm/index.js", + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/project.json b/packages/client-eventbridge/project.json new file mode 100644 index 00000000..44d8daa4 --- /dev/null +++ b/packages/client-eventbridge/project.json @@ -0,0 +1,77 @@ +{ + "name": "@effect-aws/client-eventbridge", + "root": "packages/client-eventbridge", + "targets": { + "default": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen default", + "cwd": "packages/client-eventbridge" + } + }, + "pre-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen pre-compile", + "cwd": "packages/client-eventbridge" + } + }, + "compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen compile", + "cwd": "packages/client-eventbridge" + } + }, + "post-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen post-compile", + "cwd": "packages/client-eventbridge" + } + }, + "test": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen test", + "cwd": "packages/client-eventbridge" + } + }, + "package": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen package", + "cwd": "packages/client-eventbridge" + } + }, + "build": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen build", + "cwd": "packages/client-eventbridge" + } + }, + "test:watch": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen test:watch", + "cwd": "packages/client-eventbridge" + } + }, + "watch": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen watch", + "cwd": "packages/client-eventbridge" + } + }, + "eslint": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen eslint", + "cwd": "packages/client-eventbridge" + } + } + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/src/Context.ts b/packages/client-eventbridge/src/Context.ts new file mode 100644 index 00000000..5196b746 --- /dev/null +++ b/packages/client-eventbridge/src/Context.ts @@ -0,0 +1,52 @@ +import { + EventBridgeClient, + EventBridgeClientConfig, +} from "@aws-sdk/client-eventbridge"; +import * as Context from "@effect/data/Context"; +import * as Data from "@effect/data/Data"; +import { flow } from "@effect/data/Function"; +import * as Effect from "@effect/io/Effect"; +import * as Layer from "@effect/io/Layer"; +import * as Runtime from "@effect/io/Runtime"; + +export class EventBridgeClientOptions extends Data.TaggedClass( + "EventBridgeClientOptions", +) {} + +export const EventBridgeClientConfigTag = Context.Tag( + "@effect-aws/EventBridgeClient/Config", +); + +export const DefaultEventBridgeClientConfigLayer = Layer.effect( + EventBridgeClientConfigTag, + Effect.runtime().pipe( + Effect.map( + (runtime) => + new EventBridgeClientOptions({ + logger: { + info: flow(Effect.logInfo, Runtime.runSync(runtime)), + warn: flow(Effect.logWarning, Runtime.runSync(runtime)), + error: flow(Effect.logError, Runtime.runSync(runtime)), + debug: flow(Effect.logDebug, Runtime.runSync(runtime)), + trace: flow(Effect.logTrace, Runtime.runSync(runtime)), + }, + }), + ), + ), +); + +export const EventBridgeClientInstanceTag = Context.Tag( + "@effect-aws/EventBridgeClient/Instance", +); + +export const EventBridgeClientInstanceLayer = Layer.effect( + EventBridgeClientInstanceTag, + EventBridgeClientConfigTag.pipe( + Effect.map((config) => new EventBridgeClient(config)), + ), +); + +export const DefaultEventBridgeClientInstanceLayer = + EventBridgeClientInstanceLayer.pipe( + Layer.use(DefaultEventBridgeClientConfigLayer), + ); diff --git a/packages/client-eventbridge/src/EventBridge.ts b/packages/client-eventbridge/src/EventBridge.ts new file mode 100644 index 00000000..0c7f7256 --- /dev/null +++ b/packages/client-eventbridge/src/EventBridge.ts @@ -0,0 +1,713 @@ +import { + ActivateEventSourceCommand, + ActivateEventSourceCommandInput, + ActivateEventSourceCommandOutput, + CancelReplayCommand, + CancelReplayCommandInput, + CancelReplayCommandOutput, + CreateApiDestinationCommand, + CreateApiDestinationCommandInput, + CreateApiDestinationCommandOutput, + CreateArchiveCommand, + CreateArchiveCommandInput, + CreateArchiveCommandOutput, + CreateConnectionCommand, + CreateConnectionCommandInput, + CreateConnectionCommandOutput, + CreateEndpointCommand, + CreateEndpointCommandInput, + CreateEndpointCommandOutput, + CreateEventBusCommand, + CreateEventBusCommandInput, + CreateEventBusCommandOutput, + CreatePartnerEventSourceCommand, + CreatePartnerEventSourceCommandInput, + CreatePartnerEventSourceCommandOutput, + DeactivateEventSourceCommand, + DeactivateEventSourceCommandInput, + DeactivateEventSourceCommandOutput, + DeauthorizeConnectionCommand, + DeauthorizeConnectionCommandInput, + DeauthorizeConnectionCommandOutput, + DeleteApiDestinationCommand, + DeleteApiDestinationCommandInput, + DeleteApiDestinationCommandOutput, + DeleteArchiveCommand, + DeleteArchiveCommandInput, + DeleteArchiveCommandOutput, + DeleteConnectionCommand, + DeleteConnectionCommandInput, + DeleteConnectionCommandOutput, + DeleteEndpointCommand, + DeleteEndpointCommandInput, + DeleteEndpointCommandOutput, + DeleteEventBusCommand, + DeleteEventBusCommandInput, + DeleteEventBusCommandOutput, + DeletePartnerEventSourceCommand, + DeletePartnerEventSourceCommandInput, + DeletePartnerEventSourceCommandOutput, + DeleteRuleCommand, + DeleteRuleCommandInput, + DeleteRuleCommandOutput, + DescribeApiDestinationCommand, + DescribeApiDestinationCommandInput, + DescribeApiDestinationCommandOutput, + DescribeArchiveCommand, + DescribeArchiveCommandInput, + DescribeArchiveCommandOutput, + DescribeConnectionCommand, + DescribeConnectionCommandInput, + DescribeConnectionCommandOutput, + DescribeEndpointCommand, + DescribeEndpointCommandInput, + DescribeEndpointCommandOutput, + DescribeEventBusCommand, + DescribeEventBusCommandInput, + DescribeEventBusCommandOutput, + DescribeEventSourceCommand, + DescribeEventSourceCommandInput, + DescribeEventSourceCommandOutput, + DescribePartnerEventSourceCommand, + DescribePartnerEventSourceCommandInput, + DescribePartnerEventSourceCommandOutput, + DescribeReplayCommand, + DescribeReplayCommandInput, + DescribeReplayCommandOutput, + DescribeRuleCommand, + DescribeRuleCommandInput, + DescribeRuleCommandOutput, + DisableRuleCommand, + DisableRuleCommandInput, + DisableRuleCommandOutput, + EnableRuleCommand, + EnableRuleCommandInput, + EnableRuleCommandOutput, + ListApiDestinationsCommand, + ListApiDestinationsCommandInput, + ListApiDestinationsCommandOutput, + ListArchivesCommand, + ListArchivesCommandInput, + ListArchivesCommandOutput, + ListConnectionsCommand, + ListConnectionsCommandInput, + ListConnectionsCommandOutput, + ListEndpointsCommand, + ListEndpointsCommandInput, + ListEndpointsCommandOutput, + ListEventBusesCommand, + ListEventBusesCommandInput, + ListEventBusesCommandOutput, + ListEventSourcesCommand, + ListEventSourcesCommandInput, + ListEventSourcesCommandOutput, + ListPartnerEventSourceAccountsCommand, + ListPartnerEventSourceAccountsCommandInput, + ListPartnerEventSourceAccountsCommandOutput, + ListPartnerEventSourcesCommand, + ListPartnerEventSourcesCommandInput, + ListPartnerEventSourcesCommandOutput, + ListReplaysCommand, + ListReplaysCommandInput, + ListReplaysCommandOutput, + ListRuleNamesByTargetCommand, + ListRuleNamesByTargetCommandInput, + ListRuleNamesByTargetCommandOutput, + ListRulesCommand, + ListRulesCommandInput, + ListRulesCommandOutput, + ListTagsForResourceCommand, + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, + ListTargetsByRuleCommand, + ListTargetsByRuleCommandInput, + ListTargetsByRuleCommandOutput, + PutEventsCommand, + PutEventsCommandInput, + PutEventsCommandOutput, + PutPartnerEventsCommand, + PutPartnerEventsCommandInput, + PutPartnerEventsCommandOutput, + PutPermissionCommand, + PutPermissionCommandInput, + PutPermissionCommandOutput, + PutRuleCommand, + PutRuleCommandInput, + PutRuleCommandOutput, + PutTargetsCommand, + PutTargetsCommandInput, + PutTargetsCommandOutput, + RemovePermissionCommand, + RemovePermissionCommandInput, + RemovePermissionCommandOutput, + RemoveTargetsCommand, + RemoveTargetsCommandInput, + RemoveTargetsCommandOutput, + StartReplayCommand, + StartReplayCommandInput, + StartReplayCommandOutput, + TagResourceCommand, + TagResourceCommandInput, + TagResourceCommandOutput, + TestEventPatternCommand, + TestEventPatternCommandInput, + TestEventPatternCommandOutput, + UntagResourceCommand, + UntagResourceCommandInput, + UntagResourceCommandOutput, + UpdateApiDestinationCommand, + UpdateApiDestinationCommandInput, + UpdateApiDestinationCommandOutput, + UpdateArchiveCommand, + UpdateArchiveCommandInput, + UpdateArchiveCommandOutput, + UpdateConnectionCommand, + UpdateConnectionCommandInput, + UpdateConnectionCommandOutput, + UpdateEndpointCommand, + UpdateEndpointCommandInput, + UpdateEndpointCommandOutput, +} from "@aws-sdk/client-eventbridge"; +import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types"; +import * as RR from "@effect/data/ReadonlyRecord"; +import * as Effect from "@effect/io/Effect"; +import { + DefaultEventBridgeClientInstanceLayer, + EventBridgeClientInstanceLayer, + EventBridgeClientInstanceTag, +} from "./Context"; + +const commands = { + ActivateEventSourceCommand, + CancelReplayCommand, + CreateApiDestinationCommand, + CreateArchiveCommand, + CreateConnectionCommand, + CreateEndpointCommand, + CreateEventBusCommand, + CreatePartnerEventSourceCommand, + DeactivateEventSourceCommand, + DeauthorizeConnectionCommand, + DeleteApiDestinationCommand, + DeleteArchiveCommand, + DeleteConnectionCommand, + DeleteEndpointCommand, + DeleteEventBusCommand, + DeletePartnerEventSourceCommand, + DeleteRuleCommand, + DescribeApiDestinationCommand, + DescribeArchiveCommand, + DescribeConnectionCommand, + DescribeEndpointCommand, + DescribeEventBusCommand, + DescribeEventSourceCommand, + DescribePartnerEventSourceCommand, + DescribeReplayCommand, + DescribeRuleCommand, + DisableRuleCommand, + EnableRuleCommand, + ListApiDestinationsCommand, + ListArchivesCommand, + ListConnectionsCommand, + ListEndpointsCommand, + ListEventBusesCommand, + ListEventSourcesCommand, + ListPartnerEventSourceAccountsCommand, + ListPartnerEventSourcesCommand, + ListReplaysCommand, + ListRuleNamesByTargetCommand, + ListRulesCommand, + ListTagsForResourceCommand, + ListTargetsByRuleCommand, + PutEventsCommand, + PutPartnerEventsCommand, + PutPermissionCommand, + PutRuleCommand, + PutTargetsCommand, + RemovePermissionCommand, + RemoveTargetsCommand, + StartReplayCommand, + TagResourceCommand, + TestEventPatternCommand, + UntagResourceCommand, + UpdateApiDestinationCommand, + UpdateArchiveCommand, + UpdateConnectionCommand, + UpdateEndpointCommand, +}; + +export interface EventBridgeService { + /** + * @see {@link ActivateEventSourceCommand} + */ + activateEventSource( + args: ActivateEventSourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CancelReplayCommand} + */ + cancelReplay( + args: CancelReplayCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateApiDestinationCommand} + */ + createApiDestination( + args: CreateApiDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateArchiveCommand} + */ + createArchive( + args: CreateArchiveCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateConnectionCommand} + */ + createConnection( + args: CreateConnectionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateEndpointCommand} + */ + createEndpoint( + args: CreateEndpointCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateEventBusCommand} + */ + createEventBus( + args: CreateEventBusCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreatePartnerEventSourceCommand} + */ + createPartnerEventSource( + args: CreatePartnerEventSourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeactivateEventSourceCommand} + */ + deactivateEventSource( + args: DeactivateEventSourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeauthorizeConnectionCommand} + */ + deauthorizeConnection( + args: DeauthorizeConnectionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteApiDestinationCommand} + */ + deleteApiDestination( + args: DeleteApiDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteArchiveCommand} + */ + deleteArchive( + args: DeleteArchiveCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteConnectionCommand} + */ + deleteConnection( + args: DeleteConnectionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteEndpointCommand} + */ + deleteEndpoint( + args: DeleteEndpointCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteEventBusCommand} + */ + deleteEventBus( + args: DeleteEventBusCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeletePartnerEventSourceCommand} + */ + deletePartnerEventSource( + args: DeletePartnerEventSourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteRuleCommand} + */ + deleteRule( + args: DeleteRuleCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeApiDestinationCommand} + */ + describeApiDestination( + args: DescribeApiDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeArchiveCommand} + */ + describeArchive( + args: DescribeArchiveCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeConnectionCommand} + */ + describeConnection( + args: DescribeConnectionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeEndpointCommand} + */ + describeEndpoint( + args: DescribeEndpointCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeEventBusCommand} + */ + describeEventBus( + args: DescribeEventBusCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeEventSourceCommand} + */ + describeEventSource( + args: DescribeEventSourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribePartnerEventSourceCommand} + */ + describePartnerEventSource( + args: DescribePartnerEventSourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeReplayCommand} + */ + describeReplay( + args: DescribeReplayCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DescribeRuleCommand} + */ + describeRule( + args: DescribeRuleCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DisableRuleCommand} + */ + disableRule( + args: DisableRuleCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link EnableRuleCommand} + */ + enableRule( + args: EnableRuleCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListApiDestinationsCommand} + */ + listApiDestinations( + args: ListApiDestinationsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListArchivesCommand} + */ + listArchives( + args: ListArchivesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListConnectionsCommand} + */ + listConnections( + args: ListConnectionsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListEndpointsCommand} + */ + listEndpoints( + args: ListEndpointsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListEventBusesCommand} + */ + listEventBuses( + args: ListEventBusesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListEventSourcesCommand} + */ + listEventSources( + args: ListEventSourcesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListPartnerEventSourceAccountsCommand} + */ + listPartnerEventSourceAccounts( + args: ListPartnerEventSourceAccountsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListPartnerEventSourcesCommand} + */ + listPartnerEventSources( + args: ListPartnerEventSourcesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListReplaysCommand} + */ + listReplays( + args: ListReplaysCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListRuleNamesByTargetCommand} + */ + listRuleNamesByTarget( + args: ListRuleNamesByTargetCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListRulesCommand} + */ + listRules( + args: ListRulesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListTagsForResourceCommand} + */ + listTagsForResource( + args: ListTagsForResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListTargetsByRuleCommand} + */ + listTargetsByRule( + args: ListTargetsByRuleCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutEventsCommand} + */ + putEvents( + args: PutEventsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutPartnerEventsCommand} + */ + putPartnerEvents( + args: PutPartnerEventsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutPermissionCommand} + */ + putPermission( + args: PutPermissionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutRuleCommand} + */ + putRule( + args: PutRuleCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutTargetsCommand} + */ + putTargets( + args: PutTargetsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link RemovePermissionCommand} + */ + removePermission( + args: RemovePermissionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link RemoveTargetsCommand} + */ + removeTargets( + args: RemoveTargetsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link StartReplayCommand} + */ + startReplay( + args: StartReplayCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link TagResourceCommand} + */ + tagResource( + args: TagResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link TestEventPatternCommand} + */ + testEventPattern( + args: TestEventPatternCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UntagResourceCommand} + */ + untagResource( + args: UntagResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateApiDestinationCommand} + */ + updateApiDestination( + args: UpdateApiDestinationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateArchiveCommand} + */ + updateArchive( + args: UpdateArchiveCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateConnectionCommand} + */ + updateConnection( + args: UpdateConnectionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateEndpointCommand} + */ + updateEndpoint( + args: UpdateEndpointCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; +} + +export const BaseEventBridgeServiceEffect = Effect.gen(function* (_) { + const client = yield* _(EventBridgeClientInstanceTag); + + return RR.toEntries(commands).reduce((acc, [command]) => { + const CommandCtor = commands[command] as any; + const methodImpl = (args: any, options: any) => + Effect.tryPromise(() => + client.send(new CommandCtor(args), options ?? {}), + ); + const methodName = (command[0].toLowerCase() + command.slice(1)).replace( + /Command$/, + "", + ); + return { ...acc, [methodName]: methodImpl }; + }, {}) as EventBridgeService; +}); + +export const EventBridgeServiceEffect = BaseEventBridgeServiceEffect.pipe( + Effect.provideLayer(EventBridgeClientInstanceLayer), +); + +export const DefaultEventBridgeServiceEffect = + BaseEventBridgeServiceEffect.pipe( + Effect.provideLayer(DefaultEventBridgeClientInstanceLayer), + ); diff --git a/packages/client-eventbridge/src/index.ts b/packages/client-eventbridge/src/index.ts new file mode 100644 index 00000000..7a0170ee --- /dev/null +++ b/packages/client-eventbridge/src/index.ts @@ -0,0 +1,2 @@ +export * from "./Context"; +export * from "./EventBridge"; diff --git a/packages/client-eventbridge/test/EventBridge.test.ts b/packages/client-eventbridge/test/EventBridge.test.ts new file mode 100644 index 00000000..978b5ea2 --- /dev/null +++ b/packages/client-eventbridge/test/EventBridge.test.ts @@ -0,0 +1,150 @@ +import { + PutEventsCommand, + PutEventsCommandInput, + EventBridgeClient, +} from "@aws-sdk/client-eventbridge"; +import { pipe } from "@effect/data/Function"; +import * as Effect from "@effect/io/Effect"; +import * as Exit from "@effect/io/Exit"; +import * as Layer from "@effect/io/Layer"; +import { mockClient } from "aws-sdk-client-mock"; +import { + BaseEventBridgeServiceEffect, + DefaultEventBridgeClientConfigLayer, + DefaultEventBridgeServiceEffect, + EventBridgeClientConfigTag, + EventBridgeClientInstanceTag, + EventBridgeClientOptions, + EventBridgeServiceEffect, +} from "../src"; + +import "aws-sdk-client-mock-jest"; + +const ebMock = mockClient(EventBridgeClient); + +describe("EventBridgeClientImpl", () => { + it("default", async () => { + ebMock.reset().on(PutEventsCommand).resolves({}); + + const args: PutEventsCommandInput = { + Entries: [{ Detail: "test" }], + }; + + const program = Effect.flatMap(DefaultEventBridgeServiceEffect, (eb) => + eb.putEvents(args), + ); + + const result = await pipe(program, Effect.runPromiseExit); + + expect(result).toEqual(Exit.succeed({})); + expect(ebMock).toHaveReceivedCommandTimes(PutEventsCommand, 1); + expect(ebMock).toHaveReceivedCommandWith(PutEventsCommand, args); + }); + + it("configurable", async () => { + ebMock.reset().on(PutEventsCommand).resolves({}); + + const args: PutEventsCommandInput = { + Entries: [{ Detail: "test" }], + }; + + const program = Effect.flatMap(EventBridgeServiceEffect, (eb) => + eb.putEvents(args), + ); + + const EventBridgeClientConfigLayer = Layer.succeed( + EventBridgeClientConfigTag, + new EventBridgeClientOptions({ region: "eu-central-1" }), + ); + + const result = await pipe( + program, + Effect.provideLayer(EventBridgeClientConfigLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(ebMock).toHaveReceivedCommandTimes(PutEventsCommand, 1); + expect(ebMock).toHaveReceivedCommandWith(PutEventsCommand, args); + }); + + it("base", async () => { + ebMock.reset().on(PutEventsCommand).resolves({}); + + const args: PutEventsCommandInput = { + Entries: [{ Detail: "test" }], + }; + + const program = Effect.flatMap(BaseEventBridgeServiceEffect, (eb) => + eb.putEvents(args), + ); + + const EventBridgeClientInstanceLayer = Layer.succeed( + EventBridgeClientInstanceTag, + new EventBridgeClient({ region: "eu-central-1" }), + ); + + const result = await pipe( + program, + Effect.provideLayer(EventBridgeClientInstanceLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(ebMock).toHaveReceivedCommandTimes(PutEventsCommand, 1); + expect(ebMock).toHaveReceivedCommandWith(PutEventsCommand, args); + }); + + it("extended", async () => { + ebMock.reset().on(PutEventsCommand).resolves({}); + + const args: PutEventsCommandInput = { + Entries: [{ Detail: "test" }], + }; + + const program = Effect.flatMap(BaseEventBridgeServiceEffect, (eb) => + eb.putEvents(args), + ); + + const EventBridgeClientInstanceLayer = Layer.provide( + DefaultEventBridgeClientConfigLayer, + Layer.effect( + EventBridgeClientInstanceTag, + EventBridgeClientConfigTag.pipe( + Effect.map( + (config) => + new EventBridgeClient({ ...config, region: "eu-central-1" }), + ), + ), + ), + ); + + const result = await pipe( + program, + Effect.provideLayer(EventBridgeClientInstanceLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(ebMock).toHaveReceivedCommandTimes(PutEventsCommand, 1); + expect(ebMock).toHaveReceivedCommandWith(PutEventsCommand, args); + }); + + it("fail", async () => { + ebMock.reset().on(PutEventsCommand).rejects(new Error("test")); + + const args: PutEventsCommandInput = { + Entries: [{ Detail: "test" }], + }; + + const program = Effect.flatMap(DefaultEventBridgeServiceEffect, (eb) => + eb.putEvents(args, { requestTimeout: 1000 }), + ); + + const result = await pipe(program, Effect.runPromiseExit); + + expect(result).toEqual(Exit.fail(new Error("test"))); + expect(ebMock).toHaveReceivedCommandTimes(PutEventsCommand, 1); + expect(ebMock).toHaveReceivedCommandWith(PutEventsCommand, args); + }); +}); diff --git a/packages/client-eventbridge/tsconfig.dev.json b/packages/client-eventbridge/tsconfig.dev.json new file mode 100644 index 00000000..bdb2a8aa --- /dev/null +++ b/packages/client-eventbridge/tsconfig.dev.json @@ -0,0 +1,37 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "compilerOptions": { + "alwaysStrict": true, + "declaration": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "inlineSourceMap": true, + "inlineSources": true, + "lib": [ + "es2019" + ], + "module": "CommonJS", + "noEmitOnError": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2019", + "moduleResolution": "node" + }, + "include": [ + ".projenrc.js", + "src/**/*.ts", + "test/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/packages/client-eventbridge/tsconfig.esm.json b/packages/client-eventbridge/tsconfig.esm.json new file mode 100644 index 00000000..1b046684 --- /dev/null +++ b/packages/client-eventbridge/tsconfig.esm.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./lib/esm", + "module": "es6", + "resolveJsonModule": false, + "declaration": false + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-eventbridge/tsconfig.json b/packages/client-eventbridge/tsconfig.json new file mode 100644 index 00000000..2c65812c --- /dev/null +++ b/packages/client-eventbridge/tsconfig.json @@ -0,0 +1,35 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "compilerOptions": { + "rootDir": "src", + "outDir": "lib", + "alwaysStrict": true, + "declaration": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "inlineSourceMap": true, + "inlineSources": true, + "lib": [ + "es2019" + ], + "module": "CommonJS", + "noEmitOnError": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2019", + "moduleResolution": "node" + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [] +} diff --git a/packages/client-lambda/.eslintrc.json b/packages/client-lambda/.eslintrc.json new file mode 100644 index 00000000..140ba19b --- /dev/null +++ b/packages/client-lambda/.eslintrc.json @@ -0,0 +1,131 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "env": { + "jest": true, + "node": true + }, + "root": true, + "plugins": [ + "@typescript-eslint", + "import", + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module", + "project": "./tsconfig.dev.json" + }, + "extends": [ + "plugin:import/typescript", + "prettier", + "plugin:prettier/recommended" + ], + "settings": { + "import/parsers": { + "@typescript-eslint/parser": [ + ".ts", + ".tsx" + ] + }, + "import/resolver": { + "node": {}, + "typescript": { + "project": "./tsconfig.dev.json", + "alwaysTryTypes": true + } + } + }, + "ignorePatterns": [ + "*.js", + "*.d.ts", + "node_modules/", + "*.generated.ts", + "coverage" + ], + "rules": { + "prettier/prettier": [ + "error" + ], + "@typescript-eslint/no-require-imports": [ + "error" + ], + "import/no-extraneous-dependencies": [ + "error", + { + "devDependencies": [ + "**/test/**", + "**/build-tools/**" + ], + "optionalDependencies": false, + "peerDependencies": true + } + ], + "import/no-unresolved": [ + "error" + ], + "import/order": [ + "warn", + { + "groups": [ + "builtin", + "external" + ], + "alphabetize": { + "order": "asc", + "caseInsensitive": true + } + } + ], + "no-duplicate-imports": [ + "error" + ], + "no-shadow": [ + "off" + ], + "@typescript-eslint/no-shadow": [ + "error" + ], + "key-spacing": [ + "error" + ], + "no-multiple-empty-lines": [ + "error" + ], + "@typescript-eslint/no-floating-promises": [ + "error" + ], + "no-return-await": [ + "off" + ], + "@typescript-eslint/return-await": [ + "error" + ], + "no-trailing-spaces": [ + "error" + ], + "dot-notation": [ + "error" + ], + "no-bitwise": [ + "error" + ], + "@typescript-eslint/member-ordering": [ + "error", + { + "default": [ + "public-static-field", + "public-static-method", + "protected-static-field", + "protected-static-method", + "private-static-field", + "private-static-method", + "field", + "constructor", + "method" + ] + } + ] + }, + "overrides": [] +} diff --git a/packages/client-lambda/.gitattributes b/packages/client-lambda/.gitattributes new file mode 100644 index 00000000..3d4472e4 --- /dev/null +++ b/packages/client-lambda/.gitattributes @@ -0,0 +1,21 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". + +/./tsconfig.esm.json linguist-generated +/.eslintrc.json linguist-generated +/.gitattributes linguist-generated +/.gitignore linguist-generated +/.npmignore linguist-generated +/.npmrc linguist-generated +/.prettierignore linguist-generated +/.prettierrc.json linguist-generated +/.projen/** linguist-generated +/.projen/deps.json linguist-generated +/.projen/files.json linguist-generated +/.projen/tasks.json linguist-generated +/jest.config.json linguist-generated +/LICENSE linguist-generated +/package.json linguist-generated +/pnpm-lock.yaml linguist-generated +/project.json linguist-generated +/tsconfig.dev.json linguist-generated +/tsconfig.json linguist-generated \ No newline at end of file diff --git a/packages/client-lambda/.gitignore b/packages/client-lambda/.gitignore new file mode 100644 index 00000000..cd4750b6 --- /dev/null +++ b/packages/client-lambda/.gitignore @@ -0,0 +1,46 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +!/.gitattributes +!/.projen/tasks.json +!/.projen/deps.json +!/.projen/files.json +!/package.json +!/LICENSE +!/.npmignore +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json +pids +*.pid +*.seed +*.pid.lock +lib-cov +coverage +*.lcov +.nyc_output +build/Release +node_modules/ +jspm_packages/ +*.tsbuildinfo +.eslintcache +*.tgz +.yarn-integrity +.cache +!/.projenrc.js +!/jest.config.json +/coverage/ +!/.prettierignore +!/.prettierrc.json +!/.npmrc +!/test/ +!/tsconfig.json +!/tsconfig.dev.json +!/src/ +/lib +/dist/ +!/.eslintrc.json +!/./tsconfig.esm.json +!/project.json diff --git a/packages/client-lambda/.npmignore b/packages/client-lambda/.npmignore new file mode 100644 index 00000000..aaeff689 --- /dev/null +++ b/packages/client-lambda/.npmignore @@ -0,0 +1,19 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +/.projen/ +/jest.config.json +/coverage/ +/test/ +/tsconfig.dev.json +/src/ +!/lib/ +!/lib/**/*.js +!/lib/**/*.d.ts +dist +/tsconfig.json +/.github/ +/.vscode/ +/.idea/ +/.projenrc.js +tsconfig.tsbuildinfo +/.eslintrc.json +/tsconfig.esm.json diff --git a/packages/client-lambda/.prettierignore b/packages/client-lambda/.prettierignore new file mode 100644 index 00000000..46704c73 --- /dev/null +++ b/packages/client-lambda/.prettierignore @@ -0,0 +1 @@ +# ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". diff --git a/packages/client-lambda/.prettierrc.json b/packages/client-lambda/.prettierrc.json new file mode 100644 index 00000000..84c85a38 --- /dev/null +++ b/packages/client-lambda/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "overrides": [] +} diff --git a/packages/client-lambda/.projen/deps.json b/packages/client-lambda/.projen/deps.json new file mode 100644 index 00000000..017e2b28 --- /dev/null +++ b/packages/client-lambda/.projen/deps.json @@ -0,0 +1,107 @@ +{ + "dependencies": [ + { + "name": "@effect/data", + "version": "0.18.4", + "type": "build" + }, + { + "name": "@effect/io", + "version": "0.40.0", + "type": "build" + }, + { + "name": "@types/jest", + "type": "build" + }, + { + "name": "@types/node", + "version": "^16", + "type": "build" + }, + { + "name": "@typescript-eslint/eslint-plugin", + "version": "^6", + "type": "build" + }, + { + "name": "@typescript-eslint/parser", + "version": "^6", + "type": "build" + }, + { + "name": "aws-sdk-client-mock", + "type": "build" + }, + { + "name": "aws-sdk-client-mock-jest", + "type": "build" + }, + { + "name": "eslint-config-prettier", + "type": "build" + }, + { + "name": "eslint-import-resolver-node", + "type": "build" + }, + { + "name": "eslint-import-resolver-typescript", + "type": "build" + }, + { + "name": "eslint-plugin-import", + "type": "build" + }, + { + "name": "eslint-plugin-prettier", + "type": "build" + }, + { + "name": "eslint", + "version": "^8", + "type": "build" + }, + { + "name": "jest", + "type": "build" + }, + { + "name": "prettier", + "type": "build" + }, + { + "name": "projen", + "type": "build" + }, + { + "name": "ts-jest", + "type": "build" + }, + { + "name": "typescript", + "type": "build" + }, + { + "name": "@effect/data", + "version": "^0.18.4", + "type": "peer" + }, + { + "name": "@effect/io", + "version": "^0.40.0", + "type": "peer" + }, + { + "name": "@aws-sdk/client-lambda", + "version": "^3", + "type": "runtime" + }, + { + "name": "@aws-sdk/types", + "version": "^3", + "type": "runtime" + } + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/.projen/files.json b/packages/client-lambda/.projen/files.json new file mode 100644 index 00000000..312ff318 --- /dev/null +++ b/packages/client-lambda/.projen/files.json @@ -0,0 +1,20 @@ +{ + "files": [ + "./tsconfig.esm.json", + ".eslintrc.json", + ".gitattributes", + ".gitignore", + ".npmignore", + ".prettierignore", + ".prettierrc.json", + ".projen/deps.json", + ".projen/files.json", + ".projen/tasks.json", + "jest.config.json", + "LICENSE", + "project.json", + "tsconfig.dev.json", + "tsconfig.json" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/.projen/tasks.json b/packages/client-lambda/.projen/tasks.json new file mode 100644 index 00000000..de5fc109 --- /dev/null +++ b/packages/client-lambda/.projen/tasks.json @@ -0,0 +1,112 @@ +{ + "tasks": { + "build": { + "name": "build", + "description": "Full release build", + "steps": [ + { + "spawn": "pre-compile" + }, + { + "spawn": "compile" + }, + { + "spawn": "post-compile" + }, + { + "spawn": "test" + }, + { + "spawn": "package" + } + ] + }, + "compile": { + "name": "compile", + "description": "Only compile", + "steps": [ + { + "exec": "tsc -b ./tsconfig.json ./tsconfig.esm.json" + } + ] + }, + "default": { + "name": "default", + "description": "Synthesize project files" + }, + "eslint": { + "name": "eslint", + "description": "Runs eslint against the codebase", + "steps": [ + { + "exec": "eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test build-tools" + } + ] + }, + "install": { + "name": "install", + "description": "Install project dependencies and update lockfile (non-frozen)", + "steps": [ + { + "exec": "pnpm i --no-frozen-lockfile" + } + ] + }, + "install:ci": { + "name": "install:ci", + "description": "Install project dependencies using frozen lockfile", + "steps": [ + { + "exec": "pnpm i --frozen-lockfile" + } + ] + }, + "package": { + "name": "package", + "description": "Creates the distribution package" + }, + "post-compile": { + "name": "post-compile", + "description": "Runs after successful compilation" + }, + "pre-compile": { + "name": "pre-compile", + "description": "Prepare the project for compilation" + }, + "test": { + "name": "test", + "description": "Run tests", + "steps": [ + { + "exec": "jest --passWithNoTests --updateSnapshot", + "receiveArgs": true + }, + { + "spawn": "eslint" + } + ] + }, + "test:watch": { + "name": "test:watch", + "description": "Run jest in watch mode", + "steps": [ + { + "exec": "jest --watch" + } + ] + }, + "watch": { + "name": "watch", + "description": "Watch & compile in the background", + "steps": [ + { + "exec": "tsc --build -w" + } + ] + } + }, + "env": { + "PATH": "$(pnpm -c exec \"node --print process.env.PATH\")" + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/LICENSE b/packages/client-lambda/LICENSE new file mode 100644 index 00000000..c5b4e3d9 --- /dev/null +++ b/packages/client-lambda/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2023 Victor Korzunin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/packages/client-lambda/README.md b/packages/client-lambda/README.md new file mode 100644 index 00000000..b3fa7ddc --- /dev/null +++ b/packages/client-lambda/README.md @@ -0,0 +1 @@ +# replace this \ No newline at end of file diff --git a/packages/client-lambda/jest.config.json b/packages/client-lambda/jest.config.json new file mode 100644 index 00000000..894210f7 --- /dev/null +++ b/packages/client-lambda/jest.config.json @@ -0,0 +1,37 @@ +{ + "transform": { + "^.+\\.tsx?$": [ + "ts-jest", + { + "tsconfig": "tsconfig.dev.json" + } + ] + }, + "testMatch": [ + "/src/**/__tests__/**/*.ts?(x)", + "/(test|src)/**/*(*.)@(spec|test).ts?(x)" + ], + "clearMocks": true, + "collectCoverage": true, + "coverageReporters": [ + "json", + "lcov", + "clover", + "cobertura", + "text" + ], + "coverageDirectory": "coverage", + "coveragePathIgnorePatterns": [ + "/node_modules/" + ], + "testPathIgnorePatterns": [ + "/node_modules/" + ], + "watchPathIgnorePatterns": [ + "/node_modules/" + ], + "reporters": [ + "default" + ], + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/package.json b/packages/client-lambda/package.json new file mode 100644 index 00000000..7a182c3e --- /dev/null +++ b/packages/client-lambda/package.json @@ -0,0 +1,59 @@ +{ + "name": "@effect-aws/client-lambda", + "scripts": { + "build": "npx projen build", + "compile": "npx projen compile", + "default": "npx projen default", + "eslint": "npx projen eslint", + "package": "npx projen package", + "post-compile": "npx projen post-compile", + "pre-compile": "npx projen pre-compile", + "test": "npx projen test", + "test:watch": "npx projen test:watch", + "watch": "npx projen watch" + }, + "author": { + "name": "Victor Korzunin", + "email": "ifloydrose@gmail.com", + "organization": false + }, + "devDependencies": { + "@effect/data": "0.18.4", + "@effect/io": "0.40.0", + "@types/jest": "^29.5.5", + "@types/node": "^16", + "@typescript-eslint/eslint-plugin": "^6", + "@typescript-eslint/parser": "^6", + "aws-sdk-client-mock": "^3.0.0", + "aws-sdk-client-mock-jest": "^3.0.0", + "eslint": "^8", + "eslint-config-prettier": "^9.0.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-prettier": "^5.0.0", + "jest": "^29.7.0", + "prettier": "^3.0.3", + "projen": "^0.73.33", + "ts-jest": "^29.1.1", + "typescript": "^5.2.2" + }, + "peerDependencies": { + "@effect/data": "^0.18.4", + "@effect/io": "^0.40.0" + }, + "dependencies": { + "@aws-sdk/client-lambda": "^3", + "@aws-sdk/types": "^3" + }, + "pnpm": {}, + "main": "lib/index.js", + "license": "MIT", + "publishConfig": { + "access": "public" + }, + "version": "0.0.0", + "types": "lib/index.d.ts", + "module": "lib/esm/index.js", + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/project.json b/packages/client-lambda/project.json new file mode 100644 index 00000000..7fb69b9e --- /dev/null +++ b/packages/client-lambda/project.json @@ -0,0 +1,77 @@ +{ + "name": "@effect-aws/client-lambda", + "root": "packages/client-lambda", + "targets": { + "default": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen default", + "cwd": "packages/client-lambda" + } + }, + "pre-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen pre-compile", + "cwd": "packages/client-lambda" + } + }, + "compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen compile", + "cwd": "packages/client-lambda" + } + }, + "post-compile": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen post-compile", + "cwd": "packages/client-lambda" + } + }, + "test": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen test", + "cwd": "packages/client-lambda" + } + }, + "package": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen package", + "cwd": "packages/client-lambda" + } + }, + "build": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen build", + "cwd": "packages/client-lambda" + } + }, + "test:watch": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen test:watch", + "cwd": "packages/client-lambda" + } + }, + "watch": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen watch", + "cwd": "packages/client-lambda" + } + }, + "eslint": { + "executor": "nx:run-commands", + "options": { + "command": "pnpm exec projen eslint", + "cwd": "packages/client-lambda" + } + } + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/src/Context.ts b/packages/client-lambda/src/Context.ts new file mode 100644 index 00000000..05db3b2f --- /dev/null +++ b/packages/client-lambda/src/Context.ts @@ -0,0 +1,46 @@ +import { LambdaClient, LambdaClientConfig } from "@aws-sdk/client-lambda"; +import * as Context from "@effect/data/Context"; +import * as Data from "@effect/data/Data"; +import { flow } from "@effect/data/Function"; +import * as Effect from "@effect/io/Effect"; +import * as Layer from "@effect/io/Layer"; +import * as Runtime from "@effect/io/Runtime"; + +export class LambdaClientOptions extends Data.TaggedClass( + "LambdaClientOptions", +) {} + +export const LambdaClientConfigTag = Context.Tag( + "@effect-aws/LambdaClient/Config", +); + +export const DefaultLambdaClientConfigLayer = Layer.effect( + LambdaClientConfigTag, + Effect.runtime().pipe( + Effect.map( + (runtime) => + new LambdaClientOptions({ + logger: { + info: flow(Effect.logInfo, Runtime.runSync(runtime)), + warn: flow(Effect.logWarning, Runtime.runSync(runtime)), + error: flow(Effect.logError, Runtime.runSync(runtime)), + debug: flow(Effect.logDebug, Runtime.runSync(runtime)), + trace: flow(Effect.logTrace, Runtime.runSync(runtime)), + }, + }), + ), + ), +); + +export const LambdaClientInstanceTag = Context.Tag( + "@effect-aws/LambdaClient/Instance", +); + +export const LambdaClientInstanceLayer = Layer.effect( + LambdaClientInstanceTag, + LambdaClientConfigTag.pipe(Effect.map((config) => new LambdaClient(config))), +); + +export const DefaultLambdaClientInstanceLayer = LambdaClientInstanceLayer.pipe( + Layer.use(DefaultLambdaClientConfigLayer), +); diff --git a/packages/client-lambda/src/Lambda.ts b/packages/client-lambda/src/Lambda.ts new file mode 100644 index 00000000..c80f32e6 --- /dev/null +++ b/packages/client-lambda/src/Lambda.ts @@ -0,0 +1,864 @@ +import { + AddLayerVersionPermissionCommand, + AddLayerVersionPermissionCommandInput, + AddLayerVersionPermissionCommandOutput, + AddPermissionCommand, + AddPermissionCommandInput, + AddPermissionCommandOutput, + CreateAliasCommand, + CreateAliasCommandInput, + CreateAliasCommandOutput, + CreateCodeSigningConfigCommand, + CreateCodeSigningConfigCommandInput, + CreateCodeSigningConfigCommandOutput, + CreateEventSourceMappingCommand, + CreateEventSourceMappingCommandInput, + CreateEventSourceMappingCommandOutput, + CreateFunctionCommand, + CreateFunctionCommandInput, + CreateFunctionCommandOutput, + CreateFunctionUrlConfigCommand, + CreateFunctionUrlConfigCommandInput, + CreateFunctionUrlConfigCommandOutput, + DeleteAliasCommand, + DeleteAliasCommandInput, + DeleteAliasCommandOutput, + DeleteCodeSigningConfigCommand, + DeleteCodeSigningConfigCommandInput, + DeleteCodeSigningConfigCommandOutput, + DeleteEventSourceMappingCommand, + DeleteEventSourceMappingCommandInput, + DeleteEventSourceMappingCommandOutput, + DeleteFunctionCodeSigningConfigCommand, + DeleteFunctionCodeSigningConfigCommandInput, + DeleteFunctionCodeSigningConfigCommandOutput, + DeleteFunctionCommand, + DeleteFunctionCommandInput, + DeleteFunctionCommandOutput, + DeleteFunctionConcurrencyCommand, + DeleteFunctionConcurrencyCommandInput, + DeleteFunctionConcurrencyCommandOutput, + DeleteFunctionEventInvokeConfigCommand, + DeleteFunctionEventInvokeConfigCommandInput, + DeleteFunctionEventInvokeConfigCommandOutput, + DeleteFunctionUrlConfigCommand, + DeleteFunctionUrlConfigCommandInput, + DeleteFunctionUrlConfigCommandOutput, + DeleteLayerVersionCommand, + DeleteLayerVersionCommandInput, + DeleteLayerVersionCommandOutput, + DeleteProvisionedConcurrencyConfigCommand, + DeleteProvisionedConcurrencyConfigCommandInput, + DeleteProvisionedConcurrencyConfigCommandOutput, + GetAccountSettingsCommand, + GetAccountSettingsCommandInput, + GetAccountSettingsCommandOutput, + GetAliasCommand, + GetAliasCommandInput, + GetAliasCommandOutput, + GetCodeSigningConfigCommand, + GetCodeSigningConfigCommandInput, + GetCodeSigningConfigCommandOutput, + GetEventSourceMappingCommand, + GetEventSourceMappingCommandInput, + GetEventSourceMappingCommandOutput, + GetFunctionCodeSigningConfigCommand, + GetFunctionCodeSigningConfigCommandInput, + GetFunctionCodeSigningConfigCommandOutput, + GetFunctionCommand, + GetFunctionCommandInput, + GetFunctionCommandOutput, + GetFunctionConcurrencyCommand, + GetFunctionConcurrencyCommandInput, + GetFunctionConcurrencyCommandOutput, + GetFunctionConfigurationCommand, + GetFunctionConfigurationCommandInput, + GetFunctionConfigurationCommandOutput, + GetFunctionEventInvokeConfigCommand, + GetFunctionEventInvokeConfigCommandInput, + GetFunctionEventInvokeConfigCommandOutput, + GetFunctionUrlConfigCommand, + GetFunctionUrlConfigCommandInput, + GetFunctionUrlConfigCommandOutput, + GetLayerVersionByArnCommand, + GetLayerVersionByArnCommandInput, + GetLayerVersionByArnCommandOutput, + GetLayerVersionCommand, + GetLayerVersionCommandInput, + GetLayerVersionCommandOutput, + GetLayerVersionPolicyCommand, + GetLayerVersionPolicyCommandInput, + GetLayerVersionPolicyCommandOutput, + GetPolicyCommand, + GetPolicyCommandInput, + GetPolicyCommandOutput, + GetProvisionedConcurrencyConfigCommand, + GetProvisionedConcurrencyConfigCommandInput, + GetProvisionedConcurrencyConfigCommandOutput, + GetRuntimeManagementConfigCommand, + GetRuntimeManagementConfigCommandInput, + GetRuntimeManagementConfigCommandOutput, + InvokeAsyncCommand, + InvokeAsyncCommandInput, + InvokeAsyncCommandOutput, + InvokeCommand, + InvokeCommandInput, + InvokeCommandOutput, + InvokeWithResponseStreamCommand, + InvokeWithResponseStreamCommandInput, + InvokeWithResponseStreamCommandOutput, + ListAliasesCommand, + ListAliasesCommandInput, + ListAliasesCommandOutput, + ListCodeSigningConfigsCommand, + ListCodeSigningConfigsCommandInput, + ListCodeSigningConfigsCommandOutput, + ListEventSourceMappingsCommand, + ListEventSourceMappingsCommandInput, + ListEventSourceMappingsCommandOutput, + ListFunctionEventInvokeConfigsCommand, + ListFunctionEventInvokeConfigsCommandInput, + ListFunctionEventInvokeConfigsCommandOutput, + ListFunctionUrlConfigsCommand, + ListFunctionUrlConfigsCommandInput, + ListFunctionUrlConfigsCommandOutput, + ListFunctionsByCodeSigningConfigCommand, + ListFunctionsByCodeSigningConfigCommandInput, + ListFunctionsByCodeSigningConfigCommandOutput, + ListFunctionsCommand, + ListFunctionsCommandInput, + ListFunctionsCommandOutput, + ListLayerVersionsCommand, + ListLayerVersionsCommandInput, + ListLayerVersionsCommandOutput, + ListLayersCommand, + ListLayersCommandInput, + ListLayersCommandOutput, + ListProvisionedConcurrencyConfigsCommand, + ListProvisionedConcurrencyConfigsCommandInput, + ListProvisionedConcurrencyConfigsCommandOutput, + ListTagsCommand, + ListTagsCommandInput, + ListTagsCommandOutput, + ListVersionsByFunctionCommand, + ListVersionsByFunctionCommandInput, + ListVersionsByFunctionCommandOutput, + PublishLayerVersionCommand, + PublishLayerVersionCommandInput, + PublishLayerVersionCommandOutput, + PublishVersionCommand, + PublishVersionCommandInput, + PublishVersionCommandOutput, + PutFunctionCodeSigningConfigCommand, + PutFunctionCodeSigningConfigCommandInput, + PutFunctionCodeSigningConfigCommandOutput, + PutFunctionConcurrencyCommand, + PutFunctionConcurrencyCommandInput, + PutFunctionConcurrencyCommandOutput, + PutFunctionEventInvokeConfigCommand, + PutFunctionEventInvokeConfigCommandInput, + PutFunctionEventInvokeConfigCommandOutput, + PutProvisionedConcurrencyConfigCommand, + PutProvisionedConcurrencyConfigCommandInput, + PutProvisionedConcurrencyConfigCommandOutput, + PutRuntimeManagementConfigCommand, + PutRuntimeManagementConfigCommandInput, + PutRuntimeManagementConfigCommandOutput, + RemoveLayerVersionPermissionCommand, + RemoveLayerVersionPermissionCommandInput, + RemoveLayerVersionPermissionCommandOutput, + RemovePermissionCommand, + RemovePermissionCommandInput, + RemovePermissionCommandOutput, + TagResourceCommand, + TagResourceCommandInput, + TagResourceCommandOutput, + UntagResourceCommand, + UntagResourceCommandInput, + UntagResourceCommandOutput, + UpdateAliasCommand, + UpdateAliasCommandInput, + UpdateAliasCommandOutput, + UpdateCodeSigningConfigCommand, + UpdateCodeSigningConfigCommandInput, + UpdateCodeSigningConfigCommandOutput, + UpdateEventSourceMappingCommand, + UpdateEventSourceMappingCommandInput, + UpdateEventSourceMappingCommandOutput, + UpdateFunctionCodeCommand, + UpdateFunctionCodeCommandInput, + UpdateFunctionCodeCommandOutput, + UpdateFunctionConfigurationCommand, + UpdateFunctionConfigurationCommandInput, + UpdateFunctionConfigurationCommandOutput, + UpdateFunctionEventInvokeConfigCommand, + UpdateFunctionEventInvokeConfigCommandInput, + UpdateFunctionEventInvokeConfigCommandOutput, + UpdateFunctionUrlConfigCommand, + UpdateFunctionUrlConfigCommandInput, + UpdateFunctionUrlConfigCommandOutput, +} from "@aws-sdk/client-lambda"; +import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types"; +import * as RR from "@effect/data/ReadonlyRecord"; +import * as Effect from "@effect/io/Effect"; +import { + DefaultLambdaClientInstanceLayer, + LambdaClientInstanceLayer, + LambdaClientInstanceTag, +} from "./Context"; + +const commands = { + AddLayerVersionPermissionCommand, + AddPermissionCommand, + CreateAliasCommand, + CreateCodeSigningConfigCommand, + CreateEventSourceMappingCommand, + CreateFunctionCommand, + CreateFunctionUrlConfigCommand, + DeleteAliasCommand, + DeleteCodeSigningConfigCommand, + DeleteEventSourceMappingCommand, + DeleteFunctionCommand, + DeleteFunctionCodeSigningConfigCommand, + DeleteFunctionConcurrencyCommand, + DeleteFunctionEventInvokeConfigCommand, + DeleteFunctionUrlConfigCommand, + DeleteLayerVersionCommand, + DeleteProvisionedConcurrencyConfigCommand, + GetAccountSettingsCommand, + GetAliasCommand, + GetCodeSigningConfigCommand, + GetEventSourceMappingCommand, + GetFunctionCommand, + GetFunctionCodeSigningConfigCommand, + GetFunctionConcurrencyCommand, + GetFunctionConfigurationCommand, + GetFunctionEventInvokeConfigCommand, + GetFunctionUrlConfigCommand, + GetLayerVersionCommand, + GetLayerVersionByArnCommand, + GetLayerVersionPolicyCommand, + GetPolicyCommand, + GetProvisionedConcurrencyConfigCommand, + GetRuntimeManagementConfigCommand, + InvokeCommand, + InvokeAsyncCommand, + InvokeWithResponseStreamCommand, + ListAliasesCommand, + ListCodeSigningConfigsCommand, + ListEventSourceMappingsCommand, + ListFunctionEventInvokeConfigsCommand, + ListFunctionsCommand, + ListFunctionsByCodeSigningConfigCommand, + ListFunctionUrlConfigsCommand, + ListLayersCommand, + ListLayerVersionsCommand, + ListProvisionedConcurrencyConfigsCommand, + ListTagsCommand, + ListVersionsByFunctionCommand, + PublishLayerVersionCommand, + PublishVersionCommand, + PutFunctionCodeSigningConfigCommand, + PutFunctionConcurrencyCommand, + PutFunctionEventInvokeConfigCommand, + PutProvisionedConcurrencyConfigCommand, + PutRuntimeManagementConfigCommand, + RemoveLayerVersionPermissionCommand, + RemovePermissionCommand, + TagResourceCommand, + UntagResourceCommand, + UpdateAliasCommand, + UpdateCodeSigningConfigCommand, + UpdateEventSourceMappingCommand, + UpdateFunctionCodeCommand, + UpdateFunctionConfigurationCommand, + UpdateFunctionEventInvokeConfigCommand, + UpdateFunctionUrlConfigCommand, +}; + +export interface LambdaService { + /** + * @see {@link AddLayerVersionPermissionCommand} + */ + addLayerVersionPermission( + args: AddLayerVersionPermissionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link AddPermissionCommand} + */ + addPermission( + args: AddPermissionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateAliasCommand} + */ + createAlias( + args: CreateAliasCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateCodeSigningConfigCommand} + */ + createCodeSigningConfig( + args: CreateCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateEventSourceMappingCommand} + */ + createEventSourceMapping( + args: CreateEventSourceMappingCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateFunctionCommand} + */ + createFunction( + args: CreateFunctionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link CreateFunctionUrlConfigCommand} + */ + createFunctionUrlConfig( + args: CreateFunctionUrlConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteAliasCommand} + */ + deleteAlias( + args: DeleteAliasCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteCodeSigningConfigCommand} + */ + deleteCodeSigningConfig( + args: DeleteCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteEventSourceMappingCommand} + */ + deleteEventSourceMapping( + args: DeleteEventSourceMappingCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteFunctionCommand} + */ + deleteFunction( + args: DeleteFunctionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteFunctionCodeSigningConfigCommand} + */ + deleteFunctionCodeSigningConfig( + args: DeleteFunctionCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + DeleteFunctionCodeSigningConfigCommandOutput + >; + + /** + * @see {@link DeleteFunctionConcurrencyCommand} + */ + deleteFunctionConcurrency( + args: DeleteFunctionConcurrencyCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteFunctionEventInvokeConfigCommand} + */ + deleteFunctionEventInvokeConfig( + args: DeleteFunctionEventInvokeConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + DeleteFunctionEventInvokeConfigCommandOutput + >; + + /** + * @see {@link DeleteFunctionUrlConfigCommand} + */ + deleteFunctionUrlConfig( + args: DeleteFunctionUrlConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteLayerVersionCommand} + */ + deleteLayerVersion( + args: DeleteLayerVersionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link DeleteProvisionedConcurrencyConfigCommand} + */ + deleteProvisionedConcurrencyConfig( + args: DeleteProvisionedConcurrencyConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + DeleteProvisionedConcurrencyConfigCommandOutput + >; + + /** + * @see {@link GetAccountSettingsCommand} + */ + getAccountSettings( + args: GetAccountSettingsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetAliasCommand} + */ + getAlias( + args: GetAliasCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetCodeSigningConfigCommand} + */ + getCodeSigningConfig( + args: GetCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetEventSourceMappingCommand} + */ + getEventSourceMapping( + args: GetEventSourceMappingCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetFunctionCommand} + */ + getFunction( + args: GetFunctionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetFunctionCodeSigningConfigCommand} + */ + getFunctionCodeSigningConfig( + args: GetFunctionCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetFunctionConcurrencyCommand} + */ + getFunctionConcurrency( + args: GetFunctionConcurrencyCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetFunctionConfigurationCommand} + */ + getFunctionConfiguration( + args: GetFunctionConfigurationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetFunctionEventInvokeConfigCommand} + */ + getFunctionEventInvokeConfig( + args: GetFunctionEventInvokeConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetFunctionUrlConfigCommand} + */ + getFunctionUrlConfig( + args: GetFunctionUrlConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetLayerVersionCommand} + */ + getLayerVersion( + args: GetLayerVersionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetLayerVersionByArnCommand} + */ + getLayerVersionByArn( + args: GetLayerVersionByArnCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetLayerVersionPolicyCommand} + */ + getLayerVersionPolicy( + args: GetLayerVersionPolicyCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetPolicyCommand} + */ + getPolicy( + args: GetPolicyCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link GetProvisionedConcurrencyConfigCommand} + */ + getProvisionedConcurrencyConfig( + args: GetProvisionedConcurrencyConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + GetProvisionedConcurrencyConfigCommandOutput + >; + + /** + * @see {@link GetRuntimeManagementConfigCommand} + */ + getRuntimeManagementConfig( + args: GetRuntimeManagementConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link InvokeCommand} + */ + invoke( + args: InvokeCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link InvokeAsyncCommand} + */ + invokeAsync( + args: InvokeAsyncCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link InvokeWithResponseStreamCommand} + */ + invokeWithResponseStream( + args: InvokeWithResponseStreamCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListAliasesCommand} + */ + listAliases( + args: ListAliasesCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListCodeSigningConfigsCommand} + */ + listCodeSigningConfigs( + args: ListCodeSigningConfigsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListEventSourceMappingsCommand} + */ + listEventSourceMappings( + args: ListEventSourceMappingsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListFunctionEventInvokeConfigsCommand} + */ + listFunctionEventInvokeConfigs( + args: ListFunctionEventInvokeConfigsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListFunctionsCommand} + */ + listFunctions( + args: ListFunctionsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListFunctionsByCodeSigningConfigCommand} + */ + listFunctionsByCodeSigningConfig( + args: ListFunctionsByCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + ListFunctionsByCodeSigningConfigCommandOutput + >; + + /** + * @see {@link ListFunctionUrlConfigsCommand} + */ + listFunctionUrlConfigs( + args: ListFunctionUrlConfigsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListLayersCommand} + */ + listLayers( + args: ListLayersCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListLayerVersionsCommand} + */ + listLayerVersions( + args: ListLayerVersionsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListProvisionedConcurrencyConfigsCommand} + */ + listProvisionedConcurrencyConfigs( + args: ListProvisionedConcurrencyConfigsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + ListProvisionedConcurrencyConfigsCommandOutput + >; + + /** + * @see {@link ListTagsCommand} + */ + listTags( + args: ListTagsCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link ListVersionsByFunctionCommand} + */ + listVersionsByFunction( + args: ListVersionsByFunctionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PublishLayerVersionCommand} + */ + publishLayerVersion( + args: PublishLayerVersionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PublishVersionCommand} + */ + publishVersion( + args: PublishVersionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutFunctionCodeSigningConfigCommand} + */ + putFunctionCodeSigningConfig( + args: PutFunctionCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutFunctionConcurrencyCommand} + */ + putFunctionConcurrency( + args: PutFunctionConcurrencyCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutFunctionEventInvokeConfigCommand} + */ + putFunctionEventInvokeConfig( + args: PutFunctionEventInvokeConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link PutProvisionedConcurrencyConfigCommand} + */ + putProvisionedConcurrencyConfig( + args: PutProvisionedConcurrencyConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + PutProvisionedConcurrencyConfigCommandOutput + >; + + /** + * @see {@link PutRuntimeManagementConfigCommand} + */ + putRuntimeManagementConfig( + args: PutRuntimeManagementConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link RemoveLayerVersionPermissionCommand} + */ + removeLayerVersionPermission( + args: RemoveLayerVersionPermissionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link RemovePermissionCommand} + */ + removePermission( + args: RemovePermissionCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link TagResourceCommand} + */ + tagResource( + args: TagResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UntagResourceCommand} + */ + untagResource( + args: UntagResourceCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateAliasCommand} + */ + updateAlias( + args: UpdateAliasCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateCodeSigningConfigCommand} + */ + updateCodeSigningConfig( + args: UpdateCodeSigningConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateEventSourceMappingCommand} + */ + updateEventSourceMapping( + args: UpdateEventSourceMappingCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateFunctionCodeCommand} + */ + updateFunctionCode( + args: UpdateFunctionCodeCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateFunctionConfigurationCommand} + */ + updateFunctionConfiguration( + args: UpdateFunctionConfigurationCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; + + /** + * @see {@link UpdateFunctionEventInvokeConfigCommand} + */ + updateFunctionEventInvokeConfig( + args: UpdateFunctionEventInvokeConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect< + never, + unknown, + UpdateFunctionEventInvokeConfigCommandOutput + >; + + /** + * @see {@link UpdateFunctionUrlConfigCommand} + */ + updateFunctionUrlConfig( + args: UpdateFunctionUrlConfigCommandInput, + options?: __HttpHandlerOptions, + ): Effect.Effect; +} + +export const BaseLambdaServiceEffect = Effect.gen(function* (_) { + const client = yield* _(LambdaClientInstanceTag); + + return RR.toEntries(commands).reduce((acc, [command]) => { + const CommandCtor = commands[command] as any; + const methodImpl = (args: any, options: any) => + Effect.tryPromise(() => + client.send(new CommandCtor(args), options ?? {}), + ); + const methodName = (command[0].toLowerCase() + command.slice(1)).replace( + /Command$/, + "", + ); + return { ...acc, [methodName]: methodImpl }; + }, {}) as LambdaService; +}); + +export const LambdaServiceEffect = BaseLambdaServiceEffect.pipe( + Effect.provideLayer(LambdaClientInstanceLayer), +); + +export const DefaultLambdaServiceEffect = BaseLambdaServiceEffect.pipe( + Effect.provideLayer(DefaultLambdaClientInstanceLayer), +); diff --git a/packages/client-lambda/src/index.ts b/packages/client-lambda/src/index.ts new file mode 100644 index 00000000..f4f0e460 --- /dev/null +++ b/packages/client-lambda/src/index.ts @@ -0,0 +1,2 @@ +export * from "./Context"; +export * from "./Lambda"; diff --git a/packages/client-lambda/test/Lambda.test.ts b/packages/client-lambda/test/Lambda.test.ts new file mode 100644 index 00000000..b9487db7 --- /dev/null +++ b/packages/client-lambda/test/Lambda.test.ts @@ -0,0 +1,139 @@ +import { + InvokeCommand, + LambdaClient, + InvokeCommandInput, +} from "@aws-sdk/client-lambda"; +import { pipe } from "@effect/data/Function"; +import * as Effect from "@effect/io/Effect"; +import * as Exit from "@effect/io/Exit"; +import * as Layer from "@effect/io/Layer"; +import { mockClient } from "aws-sdk-client-mock"; +import { + BaseLambdaServiceEffect, + DefaultLambdaClientConfigLayer, + DefaultLambdaServiceEffect, + LambdaClientConfigTag, + LambdaClientInstanceTag, + LambdaClientOptions, + LambdaServiceEffect, +} from "../src"; + +import "aws-sdk-client-mock-jest"; + +const lambdaMock = mockClient(LambdaClient); + +describe("LambdaClientImpl", () => { + it("default", async () => { + lambdaMock.reset().on(InvokeCommand).resolves({}); + + const args: InvokeCommandInput = { FunctionName: "test", Payload: "test" }; + + const program = Effect.flatMap(DefaultLambdaServiceEffect, (lambda) => + lambda.invoke(args), + ); + + const result = await pipe(program, Effect.runPromiseExit); + + expect(result).toEqual(Exit.succeed({})); + expect(lambdaMock).toHaveReceivedCommandTimes(InvokeCommand, 1); + expect(lambdaMock).toHaveReceivedCommandWith(InvokeCommand, args); + }); + + it("configurable", async () => { + lambdaMock.reset().on(InvokeCommand).resolves({}); + + const args: InvokeCommandInput = { FunctionName: "test", Payload: "test" }; + + const program = Effect.flatMap(LambdaServiceEffect, (lambda) => + lambda.invoke(args), + ); + + const LambdaClientConfigLayer = Layer.succeed( + LambdaClientConfigTag, + new LambdaClientOptions({ region: "eu-central-1" }), + ); + + const result = await pipe( + program, + Effect.provideLayer(LambdaClientConfigLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(lambdaMock).toHaveReceivedCommandTimes(InvokeCommand, 1); + expect(lambdaMock).toHaveReceivedCommandWith(InvokeCommand, args); + }); + + it("base", async () => { + lambdaMock.reset().on(InvokeCommand).resolves({}); + + const args: InvokeCommandInput = { FunctionName: "test", Payload: "test" }; + + const program = Effect.flatMap(BaseLambdaServiceEffect, (lambda) => + lambda.invoke(args), + ); + + const LambdaClientInstanceLayer = Layer.succeed( + LambdaClientInstanceTag, + new LambdaClient({ region: "eu-central-1" }), + ); + + const result = await pipe( + program, + Effect.provideLayer(LambdaClientInstanceLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(lambdaMock).toHaveReceivedCommandTimes(InvokeCommand, 1); + expect(lambdaMock).toHaveReceivedCommandWith(InvokeCommand, args); + }); + + it("extended", async () => { + lambdaMock.reset().on(InvokeCommand).resolves({}); + + const args: InvokeCommandInput = { FunctionName: "test", Payload: "test" }; + + const program = Effect.flatMap(BaseLambdaServiceEffect, (lambda) => + lambda.invoke(args), + ); + + const LambdaClientInstanceLayer = Layer.provide( + DefaultLambdaClientConfigLayer, + Layer.effect( + LambdaClientInstanceTag, + LambdaClientConfigTag.pipe( + Effect.map( + (config) => new LambdaClient({ ...config, region: "eu-central-1" }), + ), + ), + ), + ); + + const result = await pipe( + program, + Effect.provideLayer(LambdaClientInstanceLayer), + Effect.runPromiseExit, + ); + + expect(result).toEqual(Exit.succeed({})); + expect(lambdaMock).toHaveReceivedCommandTimes(InvokeCommand, 1); + expect(lambdaMock).toHaveReceivedCommandWith(InvokeCommand, args); + }); + + it("fail", async () => { + lambdaMock.reset().on(InvokeCommand).rejects(new Error("test")); + + const args: InvokeCommandInput = { FunctionName: "test", Payload: "test" }; + + const program = Effect.flatMap(DefaultLambdaServiceEffect, (lambda) => + lambda.invoke(args, { requestTimeout: 1000 }), + ); + + const result = await pipe(program, Effect.runPromiseExit); + + expect(result).toEqual(Exit.fail(new Error("test"))); + expect(lambdaMock).toHaveReceivedCommandTimes(InvokeCommand, 1); + expect(lambdaMock).toHaveReceivedCommandWith(InvokeCommand, args); + }); +}); diff --git a/packages/client-lambda/tsconfig.dev.json b/packages/client-lambda/tsconfig.dev.json new file mode 100644 index 00000000..bdb2a8aa --- /dev/null +++ b/packages/client-lambda/tsconfig.dev.json @@ -0,0 +1,37 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "compilerOptions": { + "alwaysStrict": true, + "declaration": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "inlineSourceMap": true, + "inlineSources": true, + "lib": [ + "es2019" + ], + "module": "CommonJS", + "noEmitOnError": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2019", + "moduleResolution": "node" + }, + "include": [ + ".projenrc.js", + "src/**/*.ts", + "test/**/*.ts" + ], + "exclude": [ + "node_modules" + ] +} diff --git a/packages/client-lambda/tsconfig.esm.json b/packages/client-lambda/tsconfig.esm.json new file mode 100644 index 00000000..1b046684 --- /dev/null +++ b/packages/client-lambda/tsconfig.esm.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./lib/esm", + "module": "es6", + "resolveJsonModule": false, + "declaration": false + }, + "//": "~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\"." +} diff --git a/packages/client-lambda/tsconfig.json b/packages/client-lambda/tsconfig.json new file mode 100644 index 00000000..2c65812c --- /dev/null +++ b/packages/client-lambda/tsconfig.json @@ -0,0 +1,35 @@ +// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen". +{ + "compilerOptions": { + "rootDir": "src", + "outDir": "lib", + "alwaysStrict": true, + "declaration": true, + "esModuleInterop": true, + "experimentalDecorators": true, + "inlineSourceMap": true, + "inlineSources": true, + "lib": [ + "es2019" + ], + "module": "CommonJS", + "noEmitOnError": false, + "noFallthroughCasesInSwitch": true, + "noImplicitAny": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "resolveJsonModule": true, + "strict": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, + "stripInternal": true, + "target": "ES2019", + "moduleResolution": "node" + }, + "include": [ + "src/**/*.ts" + ], + "exclude": [] +} diff --git a/packages/client-s3/package.json b/packages/client-s3/package.json index 1f298322..555aa4d6 100644 --- a/packages/client-s3/package.json +++ b/packages/client-s3/package.json @@ -29,12 +29,12 @@ "eslint": "^8", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prettier": "^5.0.0", "jest": "^29.7.0", "prettier": "^3.0.3", - "projen": "^0.73.25", + "projen": "^0.73.33", "ts-jest": "^29.1.1", "typescript": "^5.2.2" }, diff --git a/packages/client-sns/package.json b/packages/client-sns/package.json index 2a7672bf..137eb087 100644 --- a/packages/client-sns/package.json +++ b/packages/client-sns/package.json @@ -29,12 +29,12 @@ "eslint": "^8", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prettier": "^5.0.0", "jest": "^29.7.0", "prettier": "^3.0.3", - "projen": "^0.73.25", + "projen": "^0.73.33", "ts-jest": "^29.1.1", "typescript": "^5.2.2" }, diff --git a/packages/client-sqs/package.json b/packages/client-sqs/package.json index 9e58912b..90f1bc0b 100644 --- a/packages/client-sqs/package.json +++ b/packages/client-sqs/package.json @@ -29,12 +29,12 @@ "eslint": "^8", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prettier": "^5.0.0", "jest": "^29.7.0", "prettier": "^3.0.3", - "projen": "^0.73.25", + "projen": "^0.73.33", "ts-jest": "^29.1.1", "typescript": "^5.2.2" }, diff --git a/packages/powertools-logger/package.json b/packages/powertools-logger/package.json index cd6fdc97..a3401162 100644 --- a/packages/powertools-logger/package.json +++ b/packages/powertools-logger/package.json @@ -20,7 +20,7 @@ "devDependencies": { "@effect/data": "0.18.4", "@effect/io": "0.40.0", - "@types/aws-lambda": "^8.10.121", + "@types/aws-lambda": "^8.10.122", "@types/jest": "^29.5.5", "@types/node": "^16", "@typescript-eslint/eslint-plugin": "^6", @@ -28,12 +28,12 @@ "eslint": "^8", "eslint-config-prettier": "^9.0.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-import-resolver-typescript": "^3.6.0", + "eslint-import-resolver-typescript": "^3.6.1", "eslint-plugin-import": "^2.28.1", "eslint-plugin-prettier": "^5.0.0", "jest": "^29.7.0", "prettier": "^3.0.3", - "projen": "^0.73.25", + "projen": "^0.73.33", "ts-jest": "^29.1.1", "typescript": "^5.2.2" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9363ec68..96f0eeda 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,18 +10,18 @@ importers: .: dependencies: aws-cdk-lib: - specifier: ^2.96.2 - version: 2.96.2(constructs@10.2.70) + specifier: ^2.98.0 + version: 2.98.0(constructs@10.2.70) cdk-nag: - specifier: ^2.27.135 - version: 2.27.135(aws-cdk-lib@2.96.2)(constructs@10.2.70) + specifier: ^2.27.143 + version: 2.27.143(aws-cdk-lib@2.98.0)(constructs@10.2.70) constructs: specifier: ^10.2.70 version: 10.2.70 devDependencies: '@aws/pdk': specifier: ^0 - version: 0.22.4(@aws-cdk/aws-cognito-identitypool-alpha@2.93.0-alpha.0)(@pnpm/logger@5.0.0)(@types/node@16.18.52)(aws-cdk-lib@2.96.2)(cdk-nag@2.27.135)(constructs@10.2.70)(projen@0.73.25)(typescript@5.2.2) + version: 0.22.4(@aws-cdk/aws-cognito-identitypool-alpha@2.93.0-alpha.0)(@pnpm/logger@5.0.0)(@types/node@16.18.52)(aws-cdk-lib@2.98.0)(cdk-nag@2.27.143)(constructs@10.2.70)(projen@0.73.33)(typescript@5.2.2) '@changesets/changelog-github': specifier: ^0.4.8 version: 0.4.8 @@ -50,11 +50,11 @@ importers: specifier: ^0.3.9 version: 0.3.9 eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) eslint-plugin-prettier: specifier: ^5.0.0 version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) @@ -68,8 +68,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 projen: - specifier: ^0.73.25 - version: 0.73.25 + specifier: ^0.73.33 + version: 0.73.33 syncpack: specifier: ^11.2.1 version: 11.2.1 @@ -80,14 +80,215 @@ importers: specifier: ^5.2.2 version: 5.2.2 + packages/client-dynamodb: + dependencies: + '@aws-sdk/client-dynamodb': + specifier: ^3 + version: 3.420.0 + '@aws-sdk/types': + specifier: ^3 + version: 3.418.0 + devDependencies: + '@effect/data': + specifier: 0.18.4 + version: 0.18.4 + '@effect/io': + specifier: 0.40.0 + version: 0.40.0(@effect/data@0.18.4) + '@types/jest': + specifier: ^29.5.5 + version: 29.5.5 + '@types/node': + specifier: ^16 + version: 16.18.52 + '@typescript-eslint/eslint-plugin': + specifier: ^6 + version: 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6 + version: 6.7.0(eslint@8.49.0)(typescript@5.2.2) + aws-sdk-client-mock: + specifier: ^3.0.0 + version: 3.0.0 + aws-sdk-client-mock-jest: + specifier: ^3.0.0 + version: 3.0.0(aws-sdk-client-mock@3.0.0) + eslint: + specifier: ^8 + version: 8.49.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.49.0) + eslint-import-resolver-node: + specifier: ^0.3.9 + version: 0.3.9 + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-plugin-import: + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@16.18.52)(ts-node@10.9.1) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + projen: + specifier: ^0.73.33 + version: 0.73.33 + ts-jest: + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + packages/client-eventbridge: + dependencies: + '@aws-sdk/client-eventbridge': + specifier: ^3 + version: 3.418.0 + '@aws-sdk/types': + specifier: ^3 + version: 3.418.0 + devDependencies: + '@effect/data': + specifier: 0.18.4 + version: 0.18.4 + '@effect/io': + specifier: 0.40.0 + version: 0.40.0(@effect/data@0.18.4) + '@types/jest': + specifier: ^29.5.5 + version: 29.5.5 + '@types/node': + specifier: ^16 + version: 16.18.52 + '@typescript-eslint/eslint-plugin': + specifier: ^6 + version: 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6 + version: 6.7.0(eslint@8.49.0)(typescript@5.2.2) + aws-sdk-client-mock: + specifier: ^3.0.0 + version: 3.0.0 + aws-sdk-client-mock-jest: + specifier: ^3.0.0 + version: 3.0.0(aws-sdk-client-mock@3.0.0) + eslint: + specifier: ^8 + version: 8.49.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.49.0) + eslint-import-resolver-node: + specifier: ^0.3.9 + version: 0.3.9 + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-plugin-import: + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@16.18.52)(ts-node@10.9.1) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + projen: + specifier: ^0.73.33 + version: 0.73.33 + ts-jest: + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) + typescript: + specifier: ^5.2.2 + version: 5.2.2 + + packages/client-lambda: + dependencies: + '@aws-sdk/client-lambda': + specifier: ^3 + version: 3.418.0 + '@aws-sdk/types': + specifier: ^3 + version: 3.418.0 + devDependencies: + '@effect/data': + specifier: 0.18.4 + version: 0.18.4 + '@effect/io': + specifier: 0.40.0 + version: 0.40.0(@effect/data@0.18.4) + '@types/jest': + specifier: ^29.5.5 + version: 29.5.5 + '@types/node': + specifier: ^16 + version: 16.18.52 + '@typescript-eslint/eslint-plugin': + specifier: ^6 + version: 6.7.0(@typescript-eslint/parser@6.7.0)(eslint@8.49.0)(typescript@5.2.2) + '@typescript-eslint/parser': + specifier: ^6 + version: 6.7.0(eslint@8.49.0)(typescript@5.2.2) + aws-sdk-client-mock: + specifier: ^3.0.0 + version: 3.0.0 + aws-sdk-client-mock-jest: + specifier: ^3.0.0 + version: 3.0.0(aws-sdk-client-mock@3.0.0) + eslint: + specifier: ^8 + version: 8.49.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.49.0) + eslint-import-resolver-node: + specifier: ^0.3.9 + version: 0.3.9 + eslint-import-resolver-typescript: + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-plugin-import: + specifier: ^2.28.1 + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) + eslint-plugin-prettier: + specifier: ^5.0.0 + version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) + jest: + specifier: ^29.7.0 + version: 29.7.0(@types/node@16.18.52)(ts-node@10.9.1) + prettier: + specifier: ^3.0.3 + version: 3.0.3 + projen: + specifier: ^0.73.33 + version: 0.73.33 + ts-jest: + specifier: ^29.1.1 + version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) + typescript: + specifier: ^5.2.2 + version: 5.2.2 + packages/client-s3: dependencies: '@aws-sdk/client-s3': specifier: ^3 - version: 3.414.0 + version: 3.420.0 '@aws-sdk/types': specifier: ^3 - version: 3.413.0 + version: 3.418.0 devDependencies: '@effect/data': specifier: 0.18.4 @@ -123,11 +324,11 @@ importers: specifier: ^0.3.9 version: 0.3.9 eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) eslint-plugin-prettier: specifier: ^5.0.0 version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) @@ -138,8 +339,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 projen: - specifier: ^0.73.25 - version: 0.73.25 + specifier: ^0.73.33 + version: 0.73.33 ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) @@ -151,10 +352,10 @@ importers: dependencies: '@aws-sdk/client-sns': specifier: ^3 - version: 3.414.0 + version: 3.418.0 '@aws-sdk/types': specifier: ^3 - version: 3.413.0 + version: 3.418.0 devDependencies: '@effect/data': specifier: 0.18.4 @@ -190,11 +391,11 @@ importers: specifier: ^0.3.9 version: 0.3.9 eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) eslint-plugin-prettier: specifier: ^5.0.0 version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) @@ -205,8 +406,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 projen: - specifier: ^0.73.25 - version: 0.73.25 + specifier: ^0.73.33 + version: 0.73.33 ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) @@ -218,10 +419,10 @@ importers: dependencies: '@aws-sdk/client-sqs': specifier: ^3 - version: 3.414.0 + version: 3.418.0 '@aws-sdk/types': specifier: ^3 - version: 3.413.0 + version: 3.418.0 devDependencies: '@effect/data': specifier: 0.18.4 @@ -257,11 +458,11 @@ importers: specifier: ^0.3.9 version: 0.3.9 eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) eslint-plugin-prettier: specifier: ^5.0.0 version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) @@ -272,8 +473,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 projen: - specifier: ^0.73.25 - version: 0.73.25 + specifier: ^0.73.33 + version: 0.73.33 ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) @@ -285,7 +486,7 @@ importers: dependencies: '@aws-lambda-powertools/logger': specifier: ^1.9.0 - version: 1.13.0 + version: 1.13.1 devDependencies: '@effect/data': specifier: 0.18.4 @@ -294,8 +495,8 @@ importers: specifier: 0.40.0 version: 0.40.0(@effect/data@0.18.4) '@types/aws-lambda': - specifier: ^8.10.121 - version: 8.10.121 + specifier: ^8.10.122 + version: 8.10.122 '@types/jest': specifier: ^29.5.5 version: 29.5.5 @@ -318,11 +519,11 @@ importers: specifier: ^0.3.9 version: 0.3.9 eslint-import-resolver-typescript: - specifier: ^3.6.0 - version: 3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + specifier: ^3.6.1 + version: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) eslint-plugin-import: specifier: ^2.28.1 - version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + version: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) eslint-plugin-prettier: specifier: ^5.0.0 version: 5.0.0(eslint-config-prettier@9.0.0)(eslint@8.49.0)(prettier@3.0.3) @@ -333,8 +534,8 @@ importers: specifier: ^3.0.3 version: 3.0.3 projen: - specifier: ^0.73.25 - version: 0.73.25 + specifier: ^0.73.33 + version: 0.73.33 ts-jest: specifier: ^29.1.1 version: 29.1.1(@babel/core@7.22.20)(jest@29.7.0)(typescript@5.2.2) @@ -366,14 +567,14 @@ packages: /@aws-cdk/asset-node-proxy-agent-v6@2.0.1: resolution: {integrity: sha512-DDt4SLdLOwWCjGtltH4VCST7hpOI5DzieuhGZsBpZ+AgJdSI2GCjklCXm0GCTwJG/SolkL5dtQXyUKgg9luBDg==} - /@aws-cdk/aws-cognito-identitypool-alpha@2.93.0-alpha.0(aws-cdk-lib@2.96.2)(constructs@10.2.70): + /@aws-cdk/aws-cognito-identitypool-alpha@2.93.0-alpha.0(aws-cdk-lib@2.98.0)(constructs@10.2.70): resolution: {integrity: sha512-ZKCtsBaNDUnYXl6g2x45PzSxuXjMyZTzIg3yDWVSUhpvnnMH0nbPvLhAenGXre9Ax+ItKL3Ai4V5LRQWKXQHiA==} engines: {node: '>= 14.15.0'} peerDependencies: aws-cdk-lib: 2.93.0 constructs: ^10.0.0 dependencies: - aws-cdk-lib: 2.96.2(constructs@10.2.70) + aws-cdk-lib: 2.98.0(constructs@10.2.70) constructs: 10.2.70 dev: true @@ -381,7 +582,7 @@ packages: resolution: {integrity: sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 tslib: 1.14.1 dev: false @@ -389,7 +590,7 @@ packages: resolution: {integrity: sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 tslib: 1.14.1 dev: false @@ -405,7 +606,7 @@ packages: '@aws-crypto/ie11-detection': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 '@aws-sdk/util-locate-window': 3.310.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -418,7 +619,7 @@ packages: '@aws-crypto/sha256-js': 3.0.0 '@aws-crypto/supports-web-crypto': 3.0.0 '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 '@aws-sdk/util-locate-window': 3.310.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 @@ -428,7 +629,7 @@ packages: resolution: {integrity: sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==} dependencies: '@aws-crypto/util': 3.0.0 - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 tslib: 1.14.1 dev: false @@ -441,129 +642,273 @@ packages: /@aws-crypto/util@3.0.0: resolution: {integrity: sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==} dependencies: - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 '@aws-sdk/util-utf8-browser': 3.259.0 tslib: 1.14.1 dev: false - /@aws-lambda-powertools/commons@1.13.0: - resolution: {integrity: sha512-jIL1dj1pjAX5SOtQCagUF3ChIntbcDzy2Xwp08vTfvrRAqf4DMcWaW8z0Qb5A5CwrbIEXR0yFUIEEylkA4XXSQ==} + /@aws-lambda-powertools/commons@1.13.1: + resolution: {integrity: sha512-q0nRkiOBG1v1Mj16dYff5c27BtCxv2SZMpi5nqJ44NOp6MP1QVccjx1tvuEYKr+UvQzuBj7J7w5QhjmKDZqhGA==} dev: false - /@aws-lambda-powertools/logger@1.13.0: - resolution: {integrity: sha512-koACdj9RXwcrZTIdL8FBMujgqk3cFTHH9zYv0/gZ0ov21rSDXhMRkL4Xsu/Gdci9xtwJGPGiZFYxRa4MqtfegA==} + /@aws-lambda-powertools/logger@1.13.1: + resolution: {integrity: sha512-JZDrP/ow9lh6z3YArStahZciwCeaEYEDUaOnFQkJa+5hGnI9U2ZERkSK4xDFMXBxTna3lJKAZAkgoH69hHk9qA==} peerDependencies: - '@middy/core': '>=3.x <4.x' + '@middy/core': '>=3.x' peerDependenciesMeta: '@middy/core': optional: true dependencies: - '@aws-lambda-powertools/commons': 1.13.0 + '@aws-lambda-powertools/commons': 1.13.1 lodash.merge: 4.6.2 dev: false - /@aws-sdk/client-s3@3.414.0: - resolution: {integrity: sha512-uEag2GPuuxWmnzOxUhAy0EYo3LW3u/UyCw1IxU3zkaTRQnD6TZ07kjv3Q6Zytqt82yKzJPZInzNNRdtGJdyxbw==} + /@aws-sdk/client-dynamodb@3.420.0: + resolution: {integrity: sha512-0XkCoSezXUGIbWmgJ94JAjaXeJbtsQk8XgHcuAX9oyVClGmeJ2cZ/Ss0S9x/mz5mzNWFdgKDchurrX8cFa33CA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.418.0 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-endpoint-discovery': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.9 + tslib: 2.6.2 + uuid: 8.3.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-eventbridge@3.418.0: + resolution: {integrity: sha512-bpnU6MK4YUq2OGhmxxL3mIAKT10Lc24eVUpPlKY0U9xnngyYh+/vKFXVyeyMgwkz8J47x+XvtRiUqUOzYWlHVQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.418.0 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/signature-v4-multi-region': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 + '@smithy/util-utf8': 2.0.0 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-lambda@3.418.0: + resolution: {integrity: sha512-9EB4QNsd95/4va1JTekPqtM3K+cDSULCiGgM1KJ9NOqAaA3vVOM2/9NVzVjG2ohFw36skTmyu62+LmKLbpB4ng==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 3.0.0 + '@aws-crypto/sha256-js': 3.0.0 + '@aws-sdk/client-sts': 3.418.0 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/eventstream-serde-browser': 2.0.9 + '@smithy/eventstream-serde-config-resolver': 2.0.9 + '@smithy/eventstream-serde-node': 2.0.9 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 + '@smithy/util-base64': 2.0.0 + '@smithy/util-body-length-browser': 2.0.0 + '@smithy/util-body-length-node': 2.1.0 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 + '@smithy/util-stream': 2.0.12 + '@smithy/util-utf8': 2.0.0 + '@smithy/util-waiter': 2.0.9 + tslib: 2.6.2 + transitivePeerDependencies: + - aws-crt + dev: false + + /@aws-sdk/client-s3@3.420.0: + resolution: {integrity: sha512-fmU0b8tM8vPCrEW8kNcY2yhFQBGuN4asYUAqybiSpzyF9Xy3Q0diQQE9WmoJVTO+DXB8tOhZZqUC1kxHCUDjww==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha1-browser': 3.0.0 '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.414.0 - '@aws-sdk/credential-provider-node': 3.414.0 - '@aws-sdk/middleware-bucket-endpoint': 3.413.0 - '@aws-sdk/middleware-expect-continue': 3.413.0 - '@aws-sdk/middleware-flexible-checksums': 3.413.0 - '@aws-sdk/middleware-host-header': 3.413.0 - '@aws-sdk/middleware-location-constraint': 3.413.0 - '@aws-sdk/middleware-logger': 3.413.0 - '@aws-sdk/middleware-recursion-detection': 3.413.0 - '@aws-sdk/middleware-sdk-s3': 3.414.0 - '@aws-sdk/middleware-signing': 3.413.0 - '@aws-sdk/middleware-ssec': 3.413.0 - '@aws-sdk/middleware-user-agent': 3.413.0 - '@aws-sdk/region-config-resolver': 3.413.0 - '@aws-sdk/signature-v4-multi-region': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@aws-sdk/util-user-agent-browser': 3.413.0 - '@aws-sdk/util-user-agent-node': 3.413.0 + '@aws-sdk/client-sts': 3.418.0 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-bucket-endpoint': 3.418.0 + '@aws-sdk/middleware-expect-continue': 3.418.0 + '@aws-sdk/middleware-flexible-checksums': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-location-constraint': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-sdk-s3': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-ssec': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/signature-v4-multi-region': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 '@aws-sdk/xml-builder': 3.310.0 - '@smithy/config-resolver': 2.0.9 - '@smithy/eventstream-serde-browser': 2.0.8 - '@smithy/eventstream-serde-config-resolver': 2.0.8 - '@smithy/eventstream-serde-node': 2.0.8 - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/hash-blob-browser': 2.0.8 - '@smithy/hash-node': 2.0.8 - '@smithy/hash-stream-node': 2.0.8 - '@smithy/invalid-dependency': 2.0.8 - '@smithy/md5-js': 2.0.8 - '@smithy/middleware-content-length': 2.0.10 - '@smithy/middleware-endpoint': 2.0.8 - '@smithy/middleware-retry': 2.0.11 - '@smithy/middleware-serde': 2.0.8 - '@smithy/middleware-stack': 2.0.1 - '@smithy/node-config-provider': 2.0.11 - '@smithy/node-http-handler': 2.1.4 - '@smithy/protocol-http': 3.0.4 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@smithy/config-resolver': 2.0.10 + '@smithy/eventstream-serde-browser': 2.0.9 + '@smithy/eventstream-serde-config-resolver': 2.0.9 + '@smithy/eventstream-serde-node': 2.0.9 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-blob-browser': 2.0.9 + '@smithy/hash-node': 2.0.9 + '@smithy/hash-stream-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/md5-js': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.9 - '@smithy/util-defaults-mode-node': 2.0.11 - '@smithy/util-retry': 2.0.1 - '@smithy/util-stream': 2.0.11 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 + '@smithy/util-stream': 2.0.12 '@smithy/util-utf8': 2.0.0 - '@smithy/util-waiter': 2.0.8 + '@smithy/util-waiter': 2.0.9 fast-xml-parser: 4.2.5 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sns@3.414.0: - resolution: {integrity: sha512-i89Ornl2f1RgoZcB6ZkNcSaCKHVkP97WgDFiRNqx4nG3ukHFEp5B3N5jRVp4VBPQbgFIx7WKkXD8QzGpSzYLIQ==} + /@aws-sdk/client-sns@3.418.0: + resolution: {integrity: sha512-tfHbSejpFHDrKpaLE5saZivcc5T3y1v8mfN6Uk0UPBDoZcwckgSyCqO1nXep8/FgyeG23CABM/sAzcDMOOhpYw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.414.0 - '@aws-sdk/credential-provider-node': 3.414.0 - '@aws-sdk/middleware-host-header': 3.413.0 - '@aws-sdk/middleware-logger': 3.413.0 - '@aws-sdk/middleware-recursion-detection': 3.413.0 - '@aws-sdk/middleware-signing': 3.413.0 - '@aws-sdk/middleware-user-agent': 3.413.0 - '@aws-sdk/region-config-resolver': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@aws-sdk/util-user-agent-browser': 3.413.0 - '@aws-sdk/util-user-agent-node': 3.413.0 - '@smithy/config-resolver': 2.0.9 - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/hash-node': 2.0.8 - '@smithy/invalid-dependency': 2.0.8 - '@smithy/middleware-content-length': 2.0.10 - '@smithy/middleware-endpoint': 2.0.8 - '@smithy/middleware-retry': 2.0.11 - '@smithy/middleware-serde': 2.0.8 - '@smithy/middleware-stack': 2.0.1 - '@smithy/node-config-provider': 2.0.11 - '@smithy/node-http-handler': 2.1.4 - '@smithy/protocol-http': 3.0.4 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@aws-sdk/client-sts': 3.418.0 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.9 - '@smithy/util-defaults-mode-node': 2.0.11 - '@smithy/util-retry': 2.0.1 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 '@smithy/util-utf8': 2.0.0 fast-xml-parser: 4.2.5 tslib: 2.6.2 @@ -571,47 +916,47 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sqs@3.414.0: - resolution: {integrity: sha512-5LcMkhemWcdQj1AcMJ5p/VmOGARlldSREvjRGFB5PDp/ZtFQpUB5Zus72QNHqXS8J2N9CBy5xfeXNc4n8kMyoQ==} + /@aws-sdk/client-sqs@3.418.0: + resolution: {integrity: sha512-bkV2RGtm8r5PfFJNI+MglJUD/dFr4LNy3LPPFbjLaNfno0RHpDuxh4w/hg/U4vOcUhPOl7mbrTjNE2QETBHJpA==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/client-sts': 3.414.0 - '@aws-sdk/credential-provider-node': 3.414.0 - '@aws-sdk/middleware-host-header': 3.413.0 - '@aws-sdk/middleware-logger': 3.413.0 - '@aws-sdk/middleware-recursion-detection': 3.413.0 - '@aws-sdk/middleware-sdk-sqs': 3.413.0 - '@aws-sdk/middleware-signing': 3.413.0 - '@aws-sdk/middleware-user-agent': 3.413.0 - '@aws-sdk/region-config-resolver': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@aws-sdk/util-user-agent-browser': 3.413.0 - '@aws-sdk/util-user-agent-node': 3.413.0 - '@smithy/config-resolver': 2.0.9 - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/hash-node': 2.0.8 - '@smithy/invalid-dependency': 2.0.8 - '@smithy/md5-js': 2.0.8 - '@smithy/middleware-content-length': 2.0.10 - '@smithy/middleware-endpoint': 2.0.8 - '@smithy/middleware-retry': 2.0.11 - '@smithy/middleware-serde': 2.0.8 - '@smithy/middleware-stack': 2.0.1 - '@smithy/node-config-provider': 2.0.11 - '@smithy/node-http-handler': 2.1.4 - '@smithy/protocol-http': 3.0.4 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@aws-sdk/client-sts': 3.418.0 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-sdk-sqs': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/md5-js': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.9 - '@smithy/util-defaults-mode-node': 2.0.11 - '@smithy/util-retry': 2.0.1 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 '@smithy/util-utf8': 2.0.0 fast-xml-parser: 4.2.5 tslib: 2.6.2 @@ -619,87 +964,87 @@ packages: - aws-crt dev: false - /@aws-sdk/client-sso@3.414.0: - resolution: {integrity: sha512-GvRwQ7wA3edzsQEKS70ZPhkOUZ62PAiXasjp6GxrsADEb8sV1z4FxXNl9Un/7fQxKkh9QYaK1Wu1PmhLi9MLMg==} + /@aws-sdk/client-sso@3.418.0: + resolution: {integrity: sha512-fakz3YeSW/kCAOJ5w4ObrrQBxsYO8sU8i6WHLv6iWAsYZKAws2Mqa8g89P61+GitSH4z9waksdLouS6ep78/5A==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.413.0 - '@aws-sdk/middleware-logger': 3.413.0 - '@aws-sdk/middleware-recursion-detection': 3.413.0 - '@aws-sdk/middleware-user-agent': 3.413.0 - '@aws-sdk/region-config-resolver': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@aws-sdk/util-user-agent-browser': 3.413.0 - '@aws-sdk/util-user-agent-node': 3.413.0 - '@smithy/config-resolver': 2.0.9 - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/hash-node': 2.0.8 - '@smithy/invalid-dependency': 2.0.8 - '@smithy/middleware-content-length': 2.0.10 - '@smithy/middleware-endpoint': 2.0.8 - '@smithy/middleware-retry': 2.0.11 - '@smithy/middleware-serde': 2.0.8 - '@smithy/middleware-stack': 2.0.1 - '@smithy/node-config-provider': 2.0.11 - '@smithy/node-http-handler': 2.1.4 - '@smithy/protocol-http': 3.0.4 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.9 - '@smithy/util-defaults-mode-node': 2.0.11 - '@smithy/util-retry': 2.0.1 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/client-sts@3.414.0: - resolution: {integrity: sha512-xeYH3si6Imp1EWolWn1zuxJJu2AXKwXl1HDftQULwC5AWkm1mNFbXYSJN4hQul1IM+kn+JTRB0XRHByQkKhe+Q==} + /@aws-sdk/client-sts@3.418.0: + resolution: {integrity: sha512-L0n0Hw+Pm+BhXTN1bYZ0y4JAMArYgazdHf1nUSlEHndgZicCCuQtlMLxfo3i/IbtWi0dzfZcZ9d/MdAM8p4Jyw==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/credential-provider-node': 3.414.0 - '@aws-sdk/middleware-host-header': 3.413.0 - '@aws-sdk/middleware-logger': 3.413.0 - '@aws-sdk/middleware-recursion-detection': 3.413.0 - '@aws-sdk/middleware-sdk-sts': 3.413.0 - '@aws-sdk/middleware-signing': 3.413.0 - '@aws-sdk/middleware-user-agent': 3.413.0 - '@aws-sdk/region-config-resolver': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@aws-sdk/util-user-agent-browser': 3.413.0 - '@aws-sdk/util-user-agent-node': 3.413.0 - '@smithy/config-resolver': 2.0.9 - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/hash-node': 2.0.8 - '@smithy/invalid-dependency': 2.0.8 - '@smithy/middleware-content-length': 2.0.10 - '@smithy/middleware-endpoint': 2.0.8 - '@smithy/middleware-retry': 2.0.11 - '@smithy/middleware-serde': 2.0.8 - '@smithy/middleware-stack': 2.0.1 - '@smithy/node-config-provider': 2.0.11 - '@smithy/node-http-handler': 2.1.4 - '@smithy/protocol-http': 3.0.4 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@aws-sdk/credential-provider-node': 3.418.0 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-sdk-sts': 3.418.0 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/region-config-resolver': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.9 - '@smithy/util-defaults-mode-node': 2.0.11 - '@smithy/util-retry': 2.0.1 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 '@smithy/util-utf8': 2.0.0 fast-xml-parser: 4.2.5 tslib: 2.6.2 @@ -707,300 +1052,320 @@ packages: - aws-crt dev: false - /@aws-sdk/credential-provider-env@3.413.0: - resolution: {integrity: sha512-yeMOkfG20/RlzfPMtQuDB647AcPEvFEVYOWZzAWVJfldYQ5ybKr0d7sBkgG9sdAzGkK3Aw9dE4rigYI8EIqc1Q==} + /@aws-sdk/credential-provider-env@3.418.0: + resolution: {integrity: sha512-e74sS+x63EZUBO+HaI8zor886YdtmULzwKdctsZp5/37Xho1CVUNtEC+fYa69nigBD9afoiH33I4JggaHgrekQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/property-provider': 2.0.9 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.0.10 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-ini@3.414.0: - resolution: {integrity: sha512-rlpLLx70roJL/t40opWC96LbIASejdMbRlgSCRpK8b/hKngYDe5A7SRVacaw08vYrAywxRiybxpQOwOt9b++rA==} + /@aws-sdk/credential-provider-ini@3.418.0: + resolution: {integrity: sha512-LTAeKKV85unlSqGNIeqEZ4N9gufaSoH+670n5YTUEk564zHCkUQW0PJomzLF5jKBco6Yfzv6rPBTukd+x9XWqw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.413.0 - '@aws-sdk/credential-provider-process': 3.413.0 - '@aws-sdk/credential-provider-sso': 3.414.0 - '@aws-sdk/credential-provider-web-identity': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@smithy/credential-provider-imds': 2.0.11 - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@aws-sdk/credential-provider-env': 3.418.0 + '@aws-sdk/credential-provider-process': 3.418.0 + '@aws-sdk/credential-provider-sso': 3.418.0 + '@aws-sdk/credential-provider-web-identity': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/credential-provider-imds': 2.0.12 + '@smithy/property-provider': 2.0.10 + '@smithy/shared-ini-file-loader': 2.0.11 + '@smithy/types': 2.3.3 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-node@3.414.0: - resolution: {integrity: sha512-xlkcOUKeGHInxWKKrZKIPSBCUL/ozyCldJBjmMKEj7ZmBAEiDcjpMe3pZ//LibMkCSy0b/7jtyQBE/eaIT2o0A==} + /@aws-sdk/credential-provider-node@3.418.0: + resolution: {integrity: sha512-VveTjtSC6m8YXj3fQDkMKEZuHv+CR2Z4u/NAN51Fi4xOtIWUtOBj5rfZ8HmBYoBjRF0DtRlPXuMiNnXAzTctfQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/credential-provider-env': 3.413.0 - '@aws-sdk/credential-provider-ini': 3.414.0 - '@aws-sdk/credential-provider-process': 3.413.0 - '@aws-sdk/credential-provider-sso': 3.414.0 - '@aws-sdk/credential-provider-web-identity': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@smithy/credential-provider-imds': 2.0.11 - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@aws-sdk/credential-provider-env': 3.418.0 + '@aws-sdk/credential-provider-ini': 3.418.0 + '@aws-sdk/credential-provider-process': 3.418.0 + '@aws-sdk/credential-provider-sso': 3.418.0 + '@aws-sdk/credential-provider-web-identity': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/credential-provider-imds': 2.0.12 + '@smithy/property-provider': 2.0.10 + '@smithy/shared-ini-file-loader': 2.0.11 + '@smithy/types': 2.3.3 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-process@3.413.0: - resolution: {integrity: sha512-GFJdgS14GzJ1wc2DEnS44Z/34iBZ05CAkvDsLN2CMwcDgH4eZuif9/x0lwzIJBK3xVFHzYUeVvEzsqRPbCHRsw==} + /@aws-sdk/credential-provider-process@3.418.0: + resolution: {integrity: sha512-xPbdm2WKz1oH6pTkrJoUmr3OLuqvvcPYTQX0IIlc31tmDwDWPQjXGGFD/vwZGIZIkKaFpFxVMgAzfFScxox7dw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.0.10 + '@smithy/shared-ini-file-loader': 2.0.11 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/credential-provider-sso@3.414.0: - resolution: {integrity: sha512-w9g2hlkZn7WekWICRqk+L33py7KrjYMFryVpkKXOx2pjDchCfZDr6pL1ml782GZ0L3qsob4SbNpbtp13JprnWQ==} + /@aws-sdk/credential-provider-sso@3.418.0: + resolution: {integrity: sha512-tUF5Hg/HfaU5t+E7IuvohYlodSIlBXa28xAJPPFxhKrUnvP6AIoW6JLazOtCIQjQgJYEUILV29XX+ojUuITcaw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/client-sso': 3.414.0 - '@aws-sdk/token-providers': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@aws-sdk/client-sso': 3.418.0 + '@aws-sdk/token-providers': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.0.10 + '@smithy/shared-ini-file-loader': 2.0.11 + '@smithy/types': 2.3.3 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/credential-provider-web-identity@3.413.0: - resolution: {integrity: sha512-5cdA1Iq9JeEHtg59ERV9fdMQ7cS0JF6gH/BWA7HYEUGdSVPXCuwyEggPtG64QgpNU7SmxH+QdDG+Ldxz09ycIA==} + /@aws-sdk/credential-provider-web-identity@3.418.0: + resolution: {integrity: sha512-do7ang565n9p3dS1JdsQY01rUfRx8vkxQqz5M8OlcEHBNiCdi2PvSjNwcBdrv/FKkyIxZb0TImOfBSt40hVdxQ==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.0.10 + '@smithy/types': 2.3.3 + tslib: 2.6.2 + dev: false + + /@aws-sdk/endpoint-cache@3.310.0: + resolution: {integrity: sha512-y3wipforet41EDTI0vnzxILqwAGll1KfI5qcdX9pXF/WF1f+3frcOtPiWtQEZQpy4czRogKm3BHo70QBYAZxlQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/property-provider': 2.0.9 - '@smithy/types': 2.3.2 + mnemonist: 0.38.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-bucket-endpoint@3.413.0: - resolution: {integrity: sha512-hHfaKg4rbpdgB6iMNLW/ubAJFsPFMNOV/hHpZ7BJVdA05fW6Zj6es+TSr7DM3j4Dv49ckhWY0P+JrSkM3FXXpg==} + /@aws-sdk/middleware-bucket-endpoint@3.418.0: + resolution: {integrity: sha512-gj/mj1UfbKkGbQ1N4YUvjTTp8BVs5fO1QAL2AjFJ+jfJOToLReX72aNEkm7sPGbHML0TqOY4cQbJuWYy+zdD5g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 '@aws-sdk/util-arn-parser': 3.310.0 - '@smithy/node-config-provider': 2.0.11 - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@smithy/node-config-provider': 2.0.12 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 '@smithy/util-config-provider': 2.0.0 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-expect-continue@3.413.0: - resolution: {integrity: sha512-14L4Fit+3EEVZNHCZKxua4vCrh+dGaaDfC5Ng3A8nILAqCsG2dhbDbUOwbnAaM8MCEVOgZS/NwUUlLA9AZfKgQ==} + /@aws-sdk/middleware-endpoint-discovery@3.418.0: + resolution: {integrity: sha512-KRhvFQDzTrayXzswx6KhS+oBDH0NoDT+vERCqvFsGvus+/HhVGACVxINuOJ+b6mqdUPfipSD4Bje3XYunqxbSw==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/endpoint-cache': 3.310.0 + '@aws-sdk/types': 3.418.0 + '@smithy/node-config-provider': 2.0.12 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 + tslib: 2.6.2 + dev: false + + /@aws-sdk/middleware-expect-continue@3.418.0: + resolution: {integrity: sha512-6x4rcIj685EmqDLQkbWoCur3Dg5DRClHMen6nHXmD3CR5Xyt3z1Gk/+jmZICxyJo9c6M4AeZht8o95BopkmYAQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-flexible-checksums@3.413.0: - resolution: {integrity: sha512-xb7WIxmyCQoBCnzaN+Widuan0PbNxYegKLOW4XheYz/v7lBEttIcGMu+OIAIQs3KlTb3dx8jqjSj2rMNnru8MQ==} + /@aws-sdk/middleware-flexible-checksums@3.418.0: + resolution: {integrity: sha512-3O203dqS2JU5P1TAAbo7p1qplXQh59pevw9nqzPVb3EG8B+mSucVf2kKmF7kGHqKSk+nK/mB/4XGSsZBzGt6Wg==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/crc32': 3.0.0 '@aws-crypto/crc32c': 3.0.0 - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 '@smithy/is-array-buffer': 2.0.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-host-header@3.413.0: - resolution: {integrity: sha512-r9PQx468EzPHo9wRzZLfgROpKtVdbkteMrdhsuM12bifVHjU1OHr7yfhc1OdWv39X8Xiv6F8n5r+RBQEM0S6+g==} + /@aws-sdk/middleware-host-header@3.418.0: + resolution: {integrity: sha512-LrMTdzalkPw/1ujLCKPLwCGvPMCmT4P+vOZQRbSEVZPnlZk+Aj++aL/RaHou0jL4kJH3zl8iQepriBt4a7UvXQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-location-constraint@3.413.0: - resolution: {integrity: sha512-JecF1O1Lm8ZZtCgXHwJm0ZysVf8K0Z8DbrNMJfYkyfsP3CYuQNJbmjrehyRl7aCuxMJ16EUGdXgoP1M8TImLpA==} + /@aws-sdk/middleware-location-constraint@3.418.0: + resolution: {integrity: sha512-cc8M3VEaESHJhDsDV8tTpt2QYUprDWhvAVVSlcL43cTdZ54Quc0W+toDiaVOUlwrAZz2Y7g5NDj22ibJGFbOvw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-logger@3.413.0: - resolution: {integrity: sha512-jqcXDubcKvoqBy+kkEa0WoNjG6SveDeyNy+gdGnTV+DEtYjkcHrHJei4q0W5zFl0mzc+dP+z8tJF44rv95ZY3Q==} + /@aws-sdk/middleware-logger@3.418.0: + resolution: {integrity: sha512-StKGmyPVfoO/wdNTtKemYwoJsqIl4l7oqarQY7VSf2Mp3mqaa+njLViHsQbirYpyqpgUEusOnuTlH5utxJ1NsQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-recursion-detection@3.413.0: - resolution: {integrity: sha512-C6k0IKJk/A4/VBGwUjxEPG+WOjjnmWAZVRBUzaeM7PqRh+g5rLcuIV356ntV3pREVxyiSTePTYVYIHU9YXkLKQ==} + /@aws-sdk/middleware-recursion-detection@3.418.0: + resolution: {integrity: sha512-kKFrIQglBLUFPbHSDy1+bbe3Na2Kd70JSUC3QLMbUHmqipXN8KeXRfAj7vTv97zXl0WzG0buV++WcNwOm1rFjg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-s3@3.414.0: - resolution: {integrity: sha512-IKTiYMWN/2HZtgBinrDOGq+gKYkM9h477AqVr7EXSfll+gM9phwJKEitgxje7IaCi8ViQcFKtTRly3eCLX6GIA==} + /@aws-sdk/middleware-sdk-s3@3.418.0: + resolution: {integrity: sha512-rei32LF45SyqL3NlWDjEOfMwAca9A5F4QgUyXJqvASc43oWC1tJnLIhiCxNh8qkWAiRyRzFpcanTeqyaRSsZpA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 '@aws-sdk/util-arn-parser': 3.310.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 + '@smithy/protocol-http': 3.0.5 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-sqs@3.413.0: - resolution: {integrity: sha512-TgiHDPP3aGx8/kIn1U13fglgxqHdgA5lJlpulCbHQhWkfYrZTZk23K8E5jLlm3RBBM9Um+U4DBvt7ldNR9Tz0A==} + /@aws-sdk/middleware-sdk-sqs@3.418.0: + resolution: {integrity: sha512-OK4JSMbn90swbZ7djjSvslxUSfD0Jo3wlq2uajq4bw8TdYdbRK0mXkPiEXIdKu95jX5K1uNrBbHdV6zi2mE75g==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.3.3 '@smithy/util-hex-encoding': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-sdk-sts@3.413.0: - resolution: {integrity: sha512-t0u//JUyaEZRVnH5q+Ur3tWnuyIsTdwA0XOdDCZXcSlLYzGp2MI/tScLjn9IydRrceIFpFfmbjk4Nf/Q6TeBTQ==} + /@aws-sdk/middleware-sdk-sts@3.418.0: + resolution: {integrity: sha512-cW8ijrCTP+mgihvcq4+TbhAcE/we5lFl4ydRqvTdtcSnYQAVQADg47rnTScQiFsPFEB3NKq7BGeyTJF9MKolPA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/middleware-signing': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@smithy/types': 2.3.2 + '@aws-sdk/middleware-signing': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-signing@3.413.0: - resolution: {integrity: sha512-QFEnVvIKYPCermM+ESxEztgUgXzGSKpnPnohMYNvSZySqmOLu/4VvxiZbRO/BX9J3ZHcUgaw4vKm5VBZRrycxw==} + /@aws-sdk/middleware-signing@3.418.0: + resolution: {integrity: sha512-onvs5KoYQE8OlOE740RxWBGtsUyVIgAo0CzRKOQO63ZEYqpL1Os+MS1CGzdNhvQnJgJruE1WW+Ix8fjN30zKPA==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/property-provider': 2.0.9 - '@smithy/protocol-http': 3.0.4 - '@smithy/signature-v4': 2.0.8 - '@smithy/types': 2.3.2 - '@smithy/util-middleware': 2.0.1 + '@aws-sdk/types': 3.418.0 + '@smithy/property-provider': 2.0.10 + '@smithy/protocol-http': 3.0.5 + '@smithy/signature-v4': 2.0.9 + '@smithy/types': 2.3.3 + '@smithy/util-middleware': 2.0.2 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-ssec@3.413.0: - resolution: {integrity: sha512-MQNksEnhjObNLgE2zRd0OltdijQuqHaArP3FygtdeE2bCXc/D5mCpUX8fgDC5grQIBNdRdaar2YL62UxFsHWrw==} + /@aws-sdk/middleware-ssec@3.418.0: + resolution: {integrity: sha512-J7K+5h6aP7IYMlu/NwHEIjb0+WDu1eFvO8TCPo6j1H9xYRi8B/6h+6pa9Rk9IgRUzFnrdlDu9FazG8Tp0KKLyg==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/middleware-user-agent@3.413.0: - resolution: {integrity: sha512-eVMJyeWxNBqerhfD+sE9sTjDtwQiECrfU6wpUQP5fGPhJD2cVVZPxuTuJGDZCu/4k/V61dF85IYlsPUNLdVQ6w==} + /@aws-sdk/middleware-user-agent@3.418.0: + resolution: {integrity: sha512-Jdcztg9Tal9SEAL0dKRrnpKrm6LFlWmAhvuwv0dQ7bNTJxIxyEFbpqdgy7mpQHsLVZgq1Aad/7gT/72c9igyZw==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/region-config-resolver@3.413.0: - resolution: {integrity: sha512-h90e6yyOhvoc+1F5vFk3C5mxwB8RSDEMKTO/fxexyur94seczZ1yxyYkTMZv30oc9RUiToABlHNrh/wxL7TZPQ==} + /@aws-sdk/region-config-resolver@3.418.0: + resolution: {integrity: sha512-lJRZ/9TjZU6yLz+mAwxJkcJZ6BmyYoIJVo1p5+BN//EFdEmC8/c0c9gXMRzfISV/mqWSttdtccpAyN4/goHTYA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.11 - '@smithy/types': 2.3.2 + '@smithy/node-config-provider': 2.0.12 + '@smithy/types': 2.3.3 '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.1 + '@smithy/util-middleware': 2.0.2 tslib: 2.6.2 dev: false - /@aws-sdk/signature-v4-multi-region@3.413.0: - resolution: {integrity: sha512-4USefVS5HPeJ8Yx0j6l84837adWGTifGpnltD+4mIgvpGp/hW3EkwvJko6i4cnLbeY8D2+8XvgT9YN1LUhvFmg==} + /@aws-sdk/signature-v4-multi-region@3.418.0: + resolution: {integrity: sha512-LeVYMZeUQUURFqDf4yZxTEv016g64hi0LqYBjU0mjwd8aPc0k6hckwvshezc80jCNbuLyjNfQclvlg3iFliItQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/protocol-http': 3.0.4 - '@smithy/signature-v4': 2.0.8 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/protocol-http': 3.0.5 + '@smithy/signature-v4': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@aws-sdk/token-providers@3.413.0: - resolution: {integrity: sha512-NfP1Ib9LAWVLMTOa/1aJwt4TRrlRrNyukCpVZGfNaMnNNEoP5Rakdbcs8KFVHe/MJzU+GdKVzxQ4TgRkLOGTrA==} + /@aws-sdk/token-providers@3.418.0: + resolution: {integrity: sha512-9P7Q0VN0hEzTngy3Sz5eya2qEOEf0Q8qf1vB3um0gE6ID6EVAdz/nc/DztfN32MFxk8FeVBrCP5vWdoOzmd72g==} engines: {node: '>=14.0.0'} dependencies: '@aws-crypto/sha256-browser': 3.0.0 '@aws-crypto/sha256-js': 3.0.0 - '@aws-sdk/middleware-host-header': 3.413.0 - '@aws-sdk/middleware-logger': 3.413.0 - '@aws-sdk/middleware-recursion-detection': 3.413.0 - '@aws-sdk/middleware-user-agent': 3.413.0 - '@aws-sdk/types': 3.413.0 - '@aws-sdk/util-endpoints': 3.413.0 - '@aws-sdk/util-user-agent-browser': 3.413.0 - '@aws-sdk/util-user-agent-node': 3.413.0 - '@smithy/config-resolver': 2.0.9 - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/hash-node': 2.0.8 - '@smithy/invalid-dependency': 2.0.8 - '@smithy/middleware-content-length': 2.0.10 - '@smithy/middleware-endpoint': 2.0.8 - '@smithy/middleware-retry': 2.0.11 - '@smithy/middleware-serde': 2.0.8 - '@smithy/middleware-stack': 2.0.1 - '@smithy/node-config-provider': 2.0.11 - '@smithy/node-http-handler': 2.1.4 - '@smithy/property-provider': 2.0.9 - '@smithy/protocol-http': 3.0.4 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@aws-sdk/middleware-host-header': 3.418.0 + '@aws-sdk/middleware-logger': 3.418.0 + '@aws-sdk/middleware-recursion-detection': 3.418.0 + '@aws-sdk/middleware-user-agent': 3.418.0 + '@aws-sdk/types': 3.418.0 + '@aws-sdk/util-endpoints': 3.418.0 + '@aws-sdk/util-user-agent-browser': 3.418.0 + '@aws-sdk/util-user-agent-node': 3.418.0 + '@smithy/config-resolver': 2.0.10 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/hash-node': 2.0.9 + '@smithy/invalid-dependency': 2.0.9 + '@smithy/middleware-content-length': 2.0.11 + '@smithy/middleware-endpoint': 2.0.9 + '@smithy/middleware-retry': 2.0.12 + '@smithy/middleware-serde': 2.0.9 + '@smithy/middleware-stack': 2.0.3 + '@smithy/node-config-provider': 2.0.12 + '@smithy/node-http-handler': 2.1.5 + '@smithy/property-provider': 2.0.10 + '@smithy/protocol-http': 3.0.5 + '@smithy/shared-ini-file-loader': 2.0.11 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 '@smithy/util-base64': 2.0.0 '@smithy/util-body-length-browser': 2.0.0 '@smithy/util-body-length-node': 2.1.0 - '@smithy/util-defaults-mode-browser': 2.0.9 - '@smithy/util-defaults-mode-node': 2.0.11 - '@smithy/util-retry': 2.0.1 + '@smithy/util-defaults-mode-browser': 2.0.11 + '@smithy/util-defaults-mode-node': 2.0.13 + '@smithy/util-retry': 2.0.2 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 transitivePeerDependencies: - aws-crt dev: false - /@aws-sdk/types@3.413.0: - resolution: {integrity: sha512-j1xib0f/TazIFc5ySIKOlT1ujntRbaoG4LJFeEezz4ji03/wSJMI8Vi4KjzpBp8J1tTu0oRDnsxRIGixsUBeYQ==} + /@aws-sdk/types@3.418.0: + resolution: {integrity: sha512-y4PQSH+ulfFLY0+FYkaK4qbIaQI9IJNMO2xsxukW6/aNoApNymN1D2FSi2la8Qbp/iPjNDKsG8suNPm9NtsWXQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -1011,11 +1376,11 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/util-endpoints@3.413.0: - resolution: {integrity: sha512-VAwr7cITNb1L6/2XUPIbCOuhKGm0VtKCRblurrfUF2bxqG/wtuw/2Fm4ahYJPyxklOSXAMSq+RHdFWcir0YB/g==} + /@aws-sdk/util-endpoints@3.418.0: + resolution: {integrity: sha512-sYSDwRTl7yE7LhHkPzemGzmIXFVHSsi3AQ1KeNEk84eBqxMHHcCc2kqklaBk2roXWe50QDgRMy1ikZUxvtzNHQ==} engines: {node: '>=14.0.0'} dependencies: - '@aws-sdk/types': 3.413.0 + '@aws-sdk/types': 3.418.0 tslib: 2.6.2 dev: false @@ -1026,17 +1391,17 @@ packages: tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-browser@3.413.0: - resolution: {integrity: sha512-7j/qWcRO2OBZBre2fC6V6M0PAS9n7k6i+VtofPkkhxC2DZszLJElqnooF9hGmVGYK3zR47Np4WjURXKIEZclWg==} + /@aws-sdk/util-user-agent-browser@3.418.0: + resolution: {integrity: sha512-c4p4mc0VV/jIeNH0lsXzhJ1MpWRLuboGtNEpqE4s1Vl9ck2amv9VdUUZUmHbg+bVxlMgRQ4nmiovA4qIrqGuyg==} dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/types': 2.3.3 bowser: 2.11.0 tslib: 2.6.2 dev: false - /@aws-sdk/util-user-agent-node@3.413.0: - resolution: {integrity: sha512-vHm9TVZIzfWMeDvdmoOky6VarqOt8Pr68CESHN0jyuO6XbhCDnr9rpaXiBhbSR+N1Qm7R/AfJgAhQyTMu2G1OA==} + /@aws-sdk/util-user-agent-node@3.418.0: + resolution: {integrity: sha512-BXMskXFtg+dmzSCgmnWOffokxIbPr1lFqa1D9kvM3l3IFRiFGx2IyDg+8MAhq11aPDLvoa/BDuQ0Yqma5izOhg==} engines: {node: '>=14.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -1044,9 +1409,9 @@ packages: aws-crt: optional: true dependencies: - '@aws-sdk/types': 3.413.0 - '@smithy/node-config-provider': 2.0.11 - '@smithy/types': 2.3.2 + '@aws-sdk/types': 3.418.0 + '@smithy/node-config-provider': 2.0.12 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -1063,7 +1428,7 @@ packages: tslib: 2.6.2 dev: false - /@aws/pdk@0.22.4(@aws-cdk/aws-cognito-identitypool-alpha@2.93.0-alpha.0)(@pnpm/logger@5.0.0)(@types/node@16.18.52)(aws-cdk-lib@2.96.2)(cdk-nag@2.27.135)(constructs@10.2.70)(projen@0.73.25)(typescript@5.2.2): + /@aws/pdk@0.22.4(@aws-cdk/aws-cognito-identitypool-alpha@2.93.0-alpha.0)(@pnpm/logger@5.0.0)(@types/node@16.18.52)(aws-cdk-lib@2.98.0)(cdk-nag@2.27.143)(constructs@10.2.70)(projen@0.73.33)(typescript@5.2.2): resolution: {integrity: sha512-/OWaFoWXPJikmaQBSWaWqQ6MJH/wdPJJt+sPjBwwoEGhSfX/nLfnzfVle2I5VeyB6IcMWEaVY5iKTptGsDmqfQ==} hasBin: true peerDependencies: @@ -1073,11 +1438,11 @@ packages: constructs: ^10.2.70 projen: ^0.73 dependencies: - '@aws-cdk/aws-cognito-identitypool-alpha': 2.93.0-alpha.0(aws-cdk-lib@2.96.2)(constructs@10.2.70) + '@aws-cdk/aws-cognito-identitypool-alpha': 2.93.0-alpha.0(aws-cdk-lib@2.98.0)(constructs@10.2.70) '@hpcc-js/wasm': 2.14.0 '@pnpm/reviewing.dependencies-hierarchy': 2.0.11(@pnpm/logger@5.0.0) - aws-cdk-lib: 2.96.2(constructs@10.2.70) - cdk-nag: 2.27.135(aws-cdk-lib@2.96.2)(constructs@10.2.70) + aws-cdk-lib: 2.98.0(constructs@10.2.70) + cdk-nag: 2.27.143(aws-cdk-lib@2.98.0)(constructs@10.2.70) chalk: 4.1.2 constructs: 10.2.70 execa: 5.1.1 @@ -1098,7 +1463,7 @@ packages: log4js: 6.9.1 mustache: 4.2.0 openapi-types: 12.1.3 - projen: 0.73.25 + projen: 0.73.33 read-pkg-up: 7.0.1 semver: 7.5.4 sharp: 0.32.5 @@ -2656,11 +3021,11 @@ packages: resolution: {integrity: sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==} dev: true - /@smithy/abort-controller@2.0.8: - resolution: {integrity: sha512-2SOdVj5y0zE37Y9scSXoizoxgi6mgnDabi7a/SOfhl0p+50I0rIkuJTfyAuTPDtQ7e5dD6tSZPCLB3c/YM6Zig==} + /@smithy/abort-controller@2.0.9: + resolution: {integrity: sha512-8liHOEbx99xcy4VndeQNQhyA0LS+e7UqsuRnDTSIA26IKBv/7vA9w09KOd4fgNULrvX0r3WpA6cwsQTRJpSWkg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -2677,114 +3042,114 @@ packages: tslib: 2.6.2 dev: false - /@smithy/config-resolver@2.0.9: - resolution: {integrity: sha512-QBkGPLUqyPmis9Erz8v4q5lo/ErnF7+GD5WZHa6JZiXopUPfaaM+B21n8gzS5xCkIXZmnwzNQhObP9xQPu8oqQ==} + /@smithy/config-resolver@2.0.10: + resolution: {integrity: sha512-MwToDsCltHjumkCuRn883qoNeJUawc2b8sX9caSn5vLz6J5crU1IklklNxWCaMO2z2nDL91Po4b/aI1eHv5PfA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.11 - '@smithy/types': 2.3.2 + '@smithy/node-config-provider': 2.0.12 + '@smithy/types': 2.3.3 '@smithy/util-config-provider': 2.0.0 - '@smithy/util-middleware': 2.0.1 + '@smithy/util-middleware': 2.0.2 tslib: 2.6.2 dev: false - /@smithy/credential-provider-imds@2.0.11: - resolution: {integrity: sha512-uJJs8dnM5iXkn8a2GaKvlKMhcOJ+oJPYqY9gY3CM/EieCVObIDjxUtR/g8lU/k/A+OauA78GzScAfulmFjPOYA==} + /@smithy/credential-provider-imds@2.0.12: + resolution: {integrity: sha512-S3lUNe+2fEFwKcmiQniXGPXt69vaHvQCw8kYQOBL4OvJsgwfpkIYDZdroHbTshYi0M6WaKL26Mw+hvgma6dZqA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.11 - '@smithy/property-provider': 2.0.9 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 + '@smithy/node-config-provider': 2.0.12 + '@smithy/property-provider': 2.0.10 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 tslib: 2.6.2 dev: false - /@smithy/eventstream-codec@2.0.8: - resolution: {integrity: sha512-onO4to8ujCKn4m5XagReT9Nc6FlNG5vveuvjp1H7AtaG7njdet1LOl6/jmUOkskF2C/w+9jNw3r9Ak+ghOvN0A==} + /@smithy/eventstream-codec@2.0.9: + resolution: {integrity: sha512-sy0pcbKnawt1iu+qCoSFbs/h9PAaUgvlJEO3lqkE1HFFj4p5RgL98vH+9CyDoj6YY82cG5XsorFmcLqQJHTOYw==} dependencies: '@aws-crypto/crc32': 3.0.0 - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 '@smithy/util-hex-encoding': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-browser@2.0.8: - resolution: {integrity: sha512-/RGlkKUnC0sd+xKBKH/2APSBRmVMZTeLOKZMhrZmrO+ONoU+DwyMr/RLJ6WnmBKN+2ebjffM4pcIJTKLNNDD8g==} + /@smithy/eventstream-serde-browser@2.0.9: + resolution: {integrity: sha512-g70enHZau2hGj1Uxedrn8AAjH9E7RnpHdwkuPKapagah53ztbwI7xaNeA5SLD4MjSjdrjathyQBCQKIzwXrR1g==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/eventstream-serde-universal': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-config-resolver@2.0.8: - resolution: {integrity: sha512-EyAEj258eMUv9zcMvBbqrInh2eHRYuiwQAjXDMxZFCyP+JePzQB6O++3wFwjQeRKMFFgZipNgnEXfReII4+NAw==} + /@smithy/eventstream-serde-config-resolver@2.0.9: + resolution: {integrity: sha512-+15GzIMtdSuRPyuCeGZ7gzgD94Ejv6eM1vKcqvipdzS+i36KTZ2A9aZsJk+gDw//OCD1EMx9SqpV6bUvMS4PWg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-node@2.0.8: - resolution: {integrity: sha512-FMBatSUSKwh6aguKVJokXfJaV8nqsuCkCZHb9MP9zah0ZF+ohbTLeeed7DQGeTVBueVIVWEzIsShPxtxBv7MMQ==} + /@smithy/eventstream-serde-node@2.0.9: + resolution: {integrity: sha512-UEJcvN2WXXEjkewtFkj1S2HSZLbyCgzUnfoFPrTuKy4+xRfakO5dNx6ws2h1pvb8Vc7mTuBL+Webl1R5mnVsXA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-serde-universal': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/eventstream-serde-universal': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/eventstream-serde-universal@2.0.8: - resolution: {integrity: sha512-6InMXH8BUKoEDa6CAuxR4Gn8Gf2vBfVtjA9A6zDKZClYHT+ANUJS+2EtOBc5wECJJGk4KLn5ajQyrt9MBv5lcw==} + /@smithy/eventstream-serde-universal@2.0.9: + resolution: {integrity: sha512-dAHQEYlK/1tjjieBE7jjXwpLQFgKdkvC4HSQf+/Jj4t34XbUmXWHbw92/EuLp9+vjNB/JQPvkwpMtN31jxIDeg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-codec': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/eventstream-codec': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/fetch-http-handler@2.1.4: - resolution: {integrity: sha512-SL24M9W5ERByoXaVicRx+bj9GJVujDnPn+QO7GY7adhY0mPGa6DSF58pVKsgIh4r5Tx/k3SWCPlH4BxxSxA/fQ==} + /@smithy/fetch-http-handler@2.1.5: + resolution: {integrity: sha512-BIeCHGfr5JCGN+EMTwZK74ELvjPXOIrI7OLM5OhZJJ6AmZyRv2S9ANJk18AtLwht0TsSm+8WoXIEp8LuxNgUyA==} dependencies: - '@smithy/protocol-http': 3.0.4 - '@smithy/querystring-builder': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/protocol-http': 3.0.5 + '@smithy/querystring-builder': 2.0.9 + '@smithy/types': 2.3.3 '@smithy/util-base64': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/hash-blob-browser@2.0.8: - resolution: {integrity: sha512-IgvRlBMfg/qLg321a59T1yTdEEbaizLrEVsU3DHj65DAO4lFRMF5f+l7vuV+je6m1G9wSD5GQXLturX8qlGb4g==} + /@smithy/hash-blob-browser@2.0.9: + resolution: {integrity: sha512-JNWOV1ci9vIg4U82klNr07bZXsA6OCumqHugpvZdvvn6cNGwTa4rvpS5FpPcqKeh3Rdg1rr4h8g+X6zyOamnZw==} dependencies: '@smithy/chunked-blob-reader': 2.0.0 '@smithy/chunked-blob-reader-native': 2.0.0 - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/hash-node@2.0.8: - resolution: {integrity: sha512-yZL/nmxZzjZV5/QX5JWSgXlt0HxuMTwFO89CS++jOMMPiCMZngf6VYmtNdccs8IIIAMmfQeTzwu07XgUE/Zd3Q==} + /@smithy/hash-node@2.0.9: + resolution: {integrity: sha512-XP3yWd5wyCtiVmsY5Nuq/FUwyCEQ6YG7DsvRh7ThldNukGpCzyFdP8eivZJVjn4Fx7oYrrOnVoYZ0WEgpW1AvQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 '@smithy/util-buffer-from': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/hash-stream-node@2.0.8: - resolution: {integrity: sha512-82zC6I9ZJycbEZH8TVyXyBx9c2ZIPQDgBvM0x5AFPUl/i1AxwKKX+lwYRnzgkF//cYhIIoJaCfJ9mjSMPRGvCQ==} + /@smithy/hash-stream-node@2.0.9: + resolution: {integrity: sha512-3nrkMpiOrhsJvJS6K4OkP0qvA3U5r8PpseXULeGd1ZD1EbfcZ30Lvl72FGaaHskwWZyTPR4czr1d/RwLRCVHNA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/invalid-dependency@2.0.8: - resolution: {integrity: sha512-88VOS7W3KzUz/bNRc+Sl/F/CDIasFspEE4G39YZRHIh9YmsXF7GUyVaAKURfMNulTie62ayk6BHC9O0nOBAVgQ==} + /@smithy/invalid-dependency@2.0.9: + resolution: {integrity: sha512-RuJqhYf8nViK96IIO9JbTtjDUuFItVfuuJhWw2yk7fv67yltQ7fZD6IQ2OsHHluoVmstnQJuCg5raXJR696Ubw==} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -2795,169 +3160,169 @@ packages: tslib: 2.6.2 dev: false - /@smithy/md5-js@2.0.8: - resolution: {integrity: sha512-1VVECXEiuJvjXv+mudiaUFKYwgDLOWz5MTTy8RzbrPiU3GiOb3/o5/urdkYpqmgoMfxdvxxOw/Adjv2dV2q2Yg==} + /@smithy/md5-js@2.0.9: + resolution: {integrity: sha512-ALHGoTZDgBXBbjCpQzVy6hpa6Rdr6e2jyEw51d6CQOUpHkUnFH7G96UWhVwUnkP0xozPCvmWy+3+j2QUX+oK9w==} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/middleware-content-length@2.0.10: - resolution: {integrity: sha512-EGSbysyA4jH0p3xI6G0jdXoj9Iz9GUnAta6aEaHtXm3wVWtenRf80y2TeVvNkVSr5jwKOdSCjKIRI2l1A/oZLA==} + /@smithy/middleware-content-length@2.0.11: + resolution: {integrity: sha512-Malj4voNTL4+a5ZL3a6+Ij7JTUMTa2R7c3ZIBzMxN5OUUgAspU7uFi1Q97f4B0afVh2joQBAWH5IQJUG25nl8g==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/protocol-http': 3.0.4 - '@smithy/types': 2.3.2 + '@smithy/protocol-http': 3.0.5 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/middleware-endpoint@2.0.8: - resolution: {integrity: sha512-yOpogfG2d2V0cbJdAJ6GLAWkNOc9pVsL5hZUfXcxJu408N3CUCsXzIAFF6+70ZKSE+lCfG3GFErcSXv/UfUbjw==} + /@smithy/middleware-endpoint@2.0.9: + resolution: {integrity: sha512-72/o8R6AAO4+nyTI6h4z6PYGTSA4dr1M7tZz29U8DEUHuh1YkhC77js0P6RyF9G0wDLuYqxb+Yh0crI5WG2pJg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/middleware-serde': 2.0.8 - '@smithy/types': 2.3.2 - '@smithy/url-parser': 2.0.8 - '@smithy/util-middleware': 2.0.1 + '@smithy/middleware-serde': 2.0.9 + '@smithy/types': 2.3.3 + '@smithy/url-parser': 2.0.9 + '@smithy/util-middleware': 2.0.2 tslib: 2.6.2 dev: false - /@smithy/middleware-retry@2.0.11: - resolution: {integrity: sha512-pknfokumZ+wvBERSuKAI2vVr+aK3ZgPiWRg6+0ZG4kKJogBRpPmDGWw+Jht0izS9ZaEbIobNzueIb4wD33JJVg==} + /@smithy/middleware-retry@2.0.12: + resolution: {integrity: sha512-YQ/ufXX4/d9/+Jf1QQ4J+CVeupC7BW52qldBTvRV33PDX9vxndlAwkFwzBcmnUFC3Hjf1//HW6I77EItcjNSCA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/node-config-provider': 2.0.11 - '@smithy/protocol-http': 3.0.4 - '@smithy/service-error-classification': 2.0.1 - '@smithy/types': 2.3.2 - '@smithy/util-middleware': 2.0.1 - '@smithy/util-retry': 2.0.1 + '@smithy/node-config-provider': 2.0.12 + '@smithy/protocol-http': 3.0.5 + '@smithy/service-error-classification': 2.0.2 + '@smithy/types': 2.3.3 + '@smithy/util-middleware': 2.0.2 + '@smithy/util-retry': 2.0.2 tslib: 2.6.2 uuid: 8.3.2 dev: false - /@smithy/middleware-serde@2.0.8: - resolution: {integrity: sha512-Is0sm+LiNlgsc0QpstDzifugzL9ehno1wXp109GgBgpnKTK3j+KphiparBDI4hWTtH9/7OUsxuspNqai2yyhcg==} + /@smithy/middleware-serde@2.0.9: + resolution: {integrity: sha512-GVbauxrr6WmtCaesakktg3t5LR/yDbajpC7KkWc8rtCpddMI4ShAVO5Q6DqwX8MDFi4CLaY8H7eTGcxhl3jbLg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/middleware-stack@2.0.1: - resolution: {integrity: sha512-UexsfY6/oQZRjTQL56s9AKtMcR60tBNibSgNYX1I2WXaUaXg97W9JCkFyth85TzBWKDBTyhLfenrukS/kyu54A==} + /@smithy/middleware-stack@2.0.3: + resolution: {integrity: sha512-AlhPmbwpkC4lQBVaVHXczmjFvsAhDHhrakqLt038qFLotnJcvDLhmMzAtu23alBeOSkKxkTQq0LsAt2N0WpAbw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/node-config-provider@2.0.11: - resolution: {integrity: sha512-CaR1dciSSGKttjhcefpytYjsfI/Yd5mqL8am4wfmyFCDxSiPsvnEWHl8UjM/RbcAjX0klt+CeIKPSHEc0wGvJA==} + /@smithy/node-config-provider@2.0.12: + resolution: {integrity: sha512-df9y9ywv+JmS40Y60ZqJ4jfZiTCmyHQffwzIqjBjLJLJl0imf9F6DWBd+jiEWHvlohR+sFhyY+KL/qzKgnAq1A==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/property-provider': 2.0.9 - '@smithy/shared-ini-file-loader': 2.0.10 - '@smithy/types': 2.3.2 + '@smithy/property-provider': 2.0.10 + '@smithy/shared-ini-file-loader': 2.0.11 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/node-http-handler@2.1.4: - resolution: {integrity: sha512-8Rw/AusvWDyC6SK8esAcVBeTlQHf94NMFv805suFUJCQ2gwlh0oLDNh+6s2MDOrxcjvLxjjzv1mytM0Mt+0cPQ==} + /@smithy/node-http-handler@2.1.5: + resolution: {integrity: sha512-52uF+BrZaFiBh+NT/bADiVDCQO91T+OwDRsuaAeWZC1mlCXFjAPPQdxeQohtuYOe9m7mPP/xIMNiqbe8jvndHA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/abort-controller': 2.0.8 - '@smithy/protocol-http': 3.0.4 - '@smithy/querystring-builder': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/abort-controller': 2.0.9 + '@smithy/protocol-http': 3.0.5 + '@smithy/querystring-builder': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/property-provider@2.0.9: - resolution: {integrity: sha512-25pPZ8f8DeRwYI5wbPRZaoMoR+3vrw8DwbA0TjP+GsdiB2KxScndr4HQehiJ5+WJ0giOTWhLz0bd+7Djv1qpUQ==} + /@smithy/property-provider@2.0.10: + resolution: {integrity: sha512-YMBVfh0ZMmJtbsUn+WfSwR32iRljZPdRN0Tn2GAcdJ+ejX8WrBXD7Z0jIkQDrQZr8fEuuv5x8WxMIj+qVbsPQw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/protocol-http@3.0.4: - resolution: {integrity: sha512-CGfSWk6TRlbwa8YgrSXdn80Yu7pov3EV/h7TSfiCHhq6/LO3WymmqnzgH1f0qV2bdTDipIkTNp5dGCGN3Af/5g==} + /@smithy/protocol-http@3.0.5: + resolution: {integrity: sha512-3t3fxj+ip4EPHRC2fQ0JimMxR/qCQ1LSQJjZZVZFgROnFLYWPDgUZqpoi7chr+EzatxJVXF/Rtoi5yLHOWCoZQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/querystring-builder@2.0.8: - resolution: {integrity: sha512-+vzIMwjC8Saz97/ptPn+IJRCRRZ+pP95ZIWDRqEqZV/a6hiKbaFoMSa2iCKsnKzR696U2JZXrDqMu3e/FD1+2g==} + /@smithy/querystring-builder@2.0.9: + resolution: {integrity: sha512-Yt6CPF4j3j1cuwod/DRflbuXxBFjJm7gAjy6W1RE21Rz5/kfGFqiZBXWmmXwGtnnhiLThYwoHK4S6/TQtnx0Fg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 '@smithy/util-uri-escape': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/querystring-parser@2.0.8: - resolution: {integrity: sha512-ArbanNuR7O/MmTd90ZqhDqGOPPDYmxx3huHxD+R3cuCnazcK/1tGQA+SnnR5307T7ZRb5WTpB6qBggERuibVSA==} + /@smithy/querystring-parser@2.0.9: + resolution: {integrity: sha512-U6z4N743s4vrcxPW8p8+reLV0PjMCYEyb1/wtMVvv3VnbJ74gshdI8SR1sBnEh95cF8TxonmX5IxY25tS9qGfg==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/service-error-classification@2.0.1: - resolution: {integrity: sha512-QHa9+t+v4s0cMuDCcbjIJN67mNZ42/+fc3jKe8P6ZMPXZl5ksKk6a8vhZ/m494GZng5eFTc3OePv+NF9cG83yg==} + /@smithy/service-error-classification@2.0.2: + resolution: {integrity: sha512-GTUd2j63gKy7A+ggvSdn2hc4sejG7LWfE+ZMF17vzWoNyqERWbRP7HTPS0d0Lwg1p6OQCAzvNigSrEIWVFt6iA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 dev: false - /@smithy/shared-ini-file-loader@2.0.10: - resolution: {integrity: sha512-jWASteSezRKohJ7GdA7pHDvmr7Q7tw3b5mu3xLHIkZy/ICftJ+O7aqNaF8wklhI7UNFoQ7flFRM3Rd0KA+1BbQ==} + /@smithy/shared-ini-file-loader@2.0.11: + resolution: {integrity: sha512-Sf0u5C5px6eykXi6jImDTp+edvG3REtPjXnFWU/J+b7S2wkXwUqFXqBL5DdM4zC1F+M8u57ZT7NRqDwMOw7/Tw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/signature-v4@2.0.8: - resolution: {integrity: sha512-qrtiYMzaLlQ5HSJOaFwnyTQ3JLjmPY+3+pr9IBDpCVM6YtVj22cBLVB9bPOiZMIpkdI7ZRdxLBFlIjh5CO1Bhw==} + /@smithy/signature-v4@2.0.9: + resolution: {integrity: sha512-RkHP0joSI1j2EI+mU55sOi33/aMMkKdL9ZY+SWrPxsiCe1oyzzuy79Tpn8X7uT+t0ilNmQlwPpkP/jUy940pEA==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/eventstream-codec': 2.0.8 + '@smithy/eventstream-codec': 2.0.9 '@smithy/is-array-buffer': 2.0.0 - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 '@smithy/util-hex-encoding': 2.0.0 - '@smithy/util-middleware': 2.0.1 + '@smithy/util-middleware': 2.0.2 '@smithy/util-uri-escape': 2.0.0 '@smithy/util-utf8': 2.0.0 tslib: 2.6.2 dev: false - /@smithy/smithy-client@2.1.5: - resolution: {integrity: sha512-7S865uKzsxApM8W8Q6zkij7tcUFgaG8PuADMFdMt1yL/ku3d0+s6Zwrg3N7iXCPM08Gu/mf0BIfTXIu/9i450Q==} + /@smithy/smithy-client@2.1.7: + resolution: {integrity: sha512-r6T/oiBQ8vCbGqObH4/h0YqD0jFB1hAS9KFRmuTfaNJueu/L2hjmjqFjv3PV5lkbNHTgUYraSv4cFQ1naxiELQ==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/middleware-stack': 2.0.1 - '@smithy/types': 2.3.2 - '@smithy/util-stream': 2.0.11 + '@smithy/middleware-stack': 2.0.3 + '@smithy/types': 2.3.3 + '@smithy/util-stream': 2.0.12 tslib: 2.6.2 dev: false - /@smithy/types@2.3.2: - resolution: {integrity: sha512-iH0cdKi7HQlzfAM3w2shFk/qZYKAqJWswtpmQpPtlruF+uFZeGEpMJjgDRyhWiddfVM4e2oP4nMaOBsMy6lXgg==} + /@smithy/types@2.3.3: + resolution: {integrity: sha512-zTdIPR9PvFVNRdIKMQu4M5oyTaycIbUqLheQqaOi9rTWPkgjGO2wDBxMA1rBHQB81aqAEv+DbSS4jfKyQMnXRA==} engines: {node: '>=14.0.0'} dependencies: tslib: 2.6.2 dev: false - /@smithy/url-parser@2.0.8: - resolution: {integrity: sha512-wQw7j004ScCrBRJ+oNPXlLE9mtofxyadSZ9D8ov/rHkyurS7z1HTNuyaGRj6OvKsEk0SVQsuY0C9+EfM75XTkw==} + /@smithy/url-parser@2.0.9: + resolution: {integrity: sha512-NBnJ0NiY8z6E82Xd5VYUFQfKwK/wA/+QkKmpYUYP+cpH3aCzE6g2gvixd9vQKYjsIdRfNPCf+SFAozt8ljozOw==} dependencies: - '@smithy/querystring-parser': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/querystring-parser': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -2997,27 +3362,27 @@ packages: tslib: 2.6.2 dev: false - /@smithy/util-defaults-mode-browser@2.0.9: - resolution: {integrity: sha512-JONLJVQWT8165XoSV36ERn3SVlZLJJ4D6IeGsCSePv65Uxa93pzSLE0UMSR9Jwm4zix7rst9AS8W5QIypZWP8Q==} + /@smithy/util-defaults-mode-browser@2.0.11: + resolution: {integrity: sha512-0syV1Mz/mCQ7CG/MHKQfH+w86xq59jpD0EOXv5oe0WBXLmq2lWPpVHl2Y6+jQ+/9fYzyZ5NF+NC/WEIuiv690A==} engines: {node: '>= 10.0.0'} dependencies: - '@smithy/property-provider': 2.0.9 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 + '@smithy/property-provider': 2.0.10 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 bowser: 2.11.0 tslib: 2.6.2 dev: false - /@smithy/util-defaults-mode-node@2.0.11: - resolution: {integrity: sha512-tmqjNsfj+bgZN6jXBe6efZnukzILA7BUytHkzqikuRLNtR+0VVchQHvawD0w6vManh76rO81ydhioe7i4oBzuA==} + /@smithy/util-defaults-mode-node@2.0.13: + resolution: {integrity: sha512-6BtCHYdw5Z8r6KpW8tRCc3yURgvcQwfIEeHhR70BeSOfx8T/TXPPjb8A+K45+KASspa3fzrsSxeIwB0sAeMoHA==} engines: {node: '>= 10.0.0'} dependencies: - '@smithy/config-resolver': 2.0.9 - '@smithy/credential-provider-imds': 2.0.11 - '@smithy/node-config-provider': 2.0.11 - '@smithy/property-provider': 2.0.9 - '@smithy/smithy-client': 2.1.5 - '@smithy/types': 2.3.2 + '@smithy/config-resolver': 2.0.10 + '@smithy/credential-provider-imds': 2.0.12 + '@smithy/node-config-provider': 2.0.12 + '@smithy/property-provider': 2.0.10 + '@smithy/smithy-client': 2.1.7 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -3028,30 +3393,30 @@ packages: tslib: 2.6.2 dev: false - /@smithy/util-middleware@2.0.1: - resolution: {integrity: sha512-LnsBMi0Mg3gfz/TpNGLv2Jjcz2ra1OX5HR/4IaCepIYmtPQzqMWDdhX/XTW1LS8OZ0xbQuyQPcHkQ+2XkhWOVQ==} + /@smithy/util-middleware@2.0.2: + resolution: {integrity: sha512-UGPZM+Ja/vke5pc/S8G0LNiHpVirtjppsXO+GK9m9wbzRGzPJTfnZA/gERUUN/AfxEy/8SL7U1kd7u4t2X8K1w==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/types': 2.3.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/util-retry@2.0.1: - resolution: {integrity: sha512-naj4X0IafJ9yJnVJ58QgSMkCNLjyQOnyrnKh/T0f+0UOUxJiT8vuFn/hS7B/pNqbo2STY7PyJ4J4f+5YqxwNtA==} + /@smithy/util-retry@2.0.2: + resolution: {integrity: sha512-ovWiayUB38moZcLhSFFfUgB2IMb7R1JfojU20qSahjxAgfOZvDWme3eOYUMtAVnouZ9kYJiFgHLy27qRH4NeeA==} engines: {node: '>= 14.0.0'} dependencies: - '@smithy/service-error-classification': 2.0.1 - '@smithy/types': 2.3.2 + '@smithy/service-error-classification': 2.0.2 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false - /@smithy/util-stream@2.0.11: - resolution: {integrity: sha512-2MeWfqSpZKdmEJ+tH8CJQSgzLWhH5cmdE24X7JB0hiamXrOmswWGGuPvyj/9sQCTclo57pNxLR2p7KrP8Ahiyg==} + /@smithy/util-stream@2.0.12: + resolution: {integrity: sha512-FOCpRLaj6gvSyUC5mJAACT+sPMPmp9sD1o+hVbUH/QxwZfulypA3ZIFdAg/59/IY0d/1Q4CTztsiHEB5LgjN4g==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/fetch-http-handler': 2.1.4 - '@smithy/node-http-handler': 2.1.4 - '@smithy/types': 2.3.2 + '@smithy/fetch-http-handler': 2.1.5 + '@smithy/node-http-handler': 2.1.5 + '@smithy/types': 2.3.3 '@smithy/util-base64': 2.0.0 '@smithy/util-buffer-from': 2.0.0 '@smithy/util-hex-encoding': 2.0.0 @@ -3074,12 +3439,12 @@ packages: tslib: 2.6.2 dev: false - /@smithy/util-waiter@2.0.8: - resolution: {integrity: sha512-t9yaoofNhdEhNlyDeV5al/JJEFJ62HIQBGktgCUE63MvKn6imnbkh1qISsYMyMYVLwhWCpZ3Xa3R1LA+SnWcng==} + /@smithy/util-waiter@2.0.9: + resolution: {integrity: sha512-Hy9Cs0FtIacC1aVFk98bm/7CYqim9fnHAPRnV/SB2mj02ExYs/9Dn5SrNQmtTBTLCn65KqYnNVBNS8GuGpZOOw==} engines: {node: '>=14.0.0'} dependencies: - '@smithy/abort-controller': 2.0.8 - '@smithy/types': 2.3.2 + '@smithy/abort-controller': 2.0.9 + '@smithy/types': 2.3.3 tslib: 2.6.2 dev: false @@ -3124,8 +3489,8 @@ packages: minimatch: 9.0.3 dev: true - /@types/aws-lambda@8.10.121: - resolution: {integrity: sha512-Y/jsUwO18HuC0a39BuMQkSOd/kMGATh/h5LNksw8FlTafbQ3Ge3578ZoT8w8gSOsWl2qH1p/SS/R61vc0X5jIQ==} + /@types/aws-lambda@8.10.122: + resolution: {integrity: sha512-vBkIh9AY22kVOCEKo5CJlyCgmSWvasC+SWUxL/x/vOwRobMpI/HG1xp/Ae3AqmSiZeLUbOhW0FCD3ZjqqUxmXw==} dev: true /@types/babel__core@7.20.2: @@ -3652,8 +4017,8 @@ packages: engines: {node: '>= 0.4'} dev: true - /aws-cdk-lib@2.96.2(constructs@10.2.70): - resolution: {integrity: sha512-wDAdPUfNlteLQKrapd5c7hNYHWPzHmFfuMSrddFCajjoscsnd0LeUxM2yAzwJV7vLNp00q2SgUZqRQHcN98dmg==} + /aws-cdk-lib@2.98.0(constructs@10.2.70): + resolution: {integrity: sha512-6APM6zVTCi59L/8lPX47DINlCD9ZG7OEQ28pD/ftmHZ8qC7AlBWwWqOfuSL+DyEbJBLcw3AZ2MLM1AMJPO+sVg==} engines: {node: '>= 14.15.0'} peerDependencies: constructs: ^10.0.0 @@ -4000,13 +4365,13 @@ packages: resolution: {integrity: sha512-mzDSXIPaFwVDvZAHqZ9VlbyF4yyXRuX6IvB06WvPYkqJVO24kX1PPhv9bfpKNFZyxYFmmgo03HUiD8iklmJYRQ==} engines: {node: '>= 0.8.0'} - /cdk-nag@2.27.135(aws-cdk-lib@2.96.2)(constructs@10.2.70): - resolution: {integrity: sha512-goL5aHhZ1/kNA7zswamm3GW78wc9VXxSXM17YuL307KNcM1F3C+j7e8ohbo1BfhRc8kveh5k6bFxZs+cIIQycw==} + /cdk-nag@2.27.143(aws-cdk-lib@2.98.0)(constructs@10.2.70): + resolution: {integrity: sha512-hIkh/9Hi3hyAlxmv0A8r4xTrT90DoEJ0ip5WLVAoaWUVLMpQfkGht6YR3yMQpA+JIKdOZxeK/WHENAx7REV09g==} peerDependencies: aws-cdk-lib: ^2.78.0 constructs: ^10.0.5 dependencies: - aws-cdk-lib: 2.96.2(constructs@10.2.70) + aws-cdk-lib: 2.98.0(constructs@10.2.70) constructs: 10.2.70 /chalk@2.4.2: @@ -4752,8 +5117,8 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0): - resolution: {integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==} + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' @@ -4762,8 +5127,8 @@ packages: debug: 4.3.4 enhanced-resolve: 5.15.0 eslint: 8.49.0 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) - eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) + eslint-plugin-import: 2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) fast-glob: 3.3.1 get-tsconfig: 4.7.0 is-core-module: 2.13.0 @@ -4775,7 +5140,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -4800,12 +5165,12 @@ packages: debug: 3.2.7 eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.1)(eslint@8.49.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0): + /eslint-plugin-import@2.28.1(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0): resolution: {integrity: sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==} engines: {node: '>=4'} peerDependencies: @@ -4824,7 +5189,7 @@ packages: doctrine: 2.1.0 eslint: 8.49.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.49.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.7.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.49.0) has: 1.0.3 is-core-module: 2.13.0 is-glob: 4.0.3 @@ -7120,6 +7485,12 @@ packages: hasBin: true dev: true + /mnemonist@0.38.3: + resolution: {integrity: sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==} + dependencies: + obliterator: 1.6.1 + dev: false + /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} dev: true @@ -7503,6 +7874,10 @@ packages: es-abstract: 1.22.2 dev: true + /obliterator@1.6.1: + resolution: {integrity: sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==} + dev: false + /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -7864,8 +8239,8 @@ packages: engines: {node: '>=0.4.0'} dev: true - /projen@0.73.25: - resolution: {integrity: sha512-UvGMiLu1a93c07E41u70ssiVYO/kToZhTczfbQcAqTs5RcIjS4o2F3gDOaC/ZjgUjrtNPA8p9bS9q3WcwT0V0w==} + /projen@0.73.33: + resolution: {integrity: sha512-STc60WJQsBQQ3AQXhElBHmzb+C4Za1nTrE/RAmzaoxKjCMkPF3I318C09teLlSVAtAGmIC8+GGH02QCEoIvyKA==} engines: {node: '>= 14.0.0'} hasBin: true dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bf1bc168..5e525908 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,6 +1,9 @@ # ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen". packages: + - packages/client-dynamodb + - packages/client-eventbridge + - packages/client-lambda - packages/client-s3 - packages/client-sns - packages/client-sqs