├── .github └── workflows │ └── main.yml ├── .gitignore ├── README.md ├── api.js ├── db.js ├── package.json ├── serverless.yml └── yarn.lock /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Deploy DynamoDB CRUD API 2 | 3 | # Controls when the action will run. Triggers the workflow on push or pull request 4 | # events but only for the main branch 5 | on: 6 | push: 7 | branches: [ main ] 8 | 9 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 10 | jobs: 11 | # This workflow contains a single job called "deploy" 12 | deploy: 13 | name: deploy 14 | 15 | # The type of runner that the job will run on 16 | runs-on: ubuntu-latest 17 | 18 | # Steps represent a sequence of tasks that will be executed as part of the job 19 | steps: 20 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 21 | - uses: actions/checkout@v2 22 | 23 | - uses: actions/cache@v2 24 | with: 25 | path: '**/node_modules' 26 | key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }} 27 | 28 | - name: Use Node.js 14.x 29 | uses: actions/setup-node@v1 30 | with: 31 | node-version: 14.x 32 | 33 | - name: Install dependencies 34 | run: yarn install 35 | 36 | - name: serverless deploy 37 | uses: serverless/github-action@master 38 | with: 39 | args: deploy 40 | env: 41 | # SERVERLESS_ACCESS_KEY: ${{ secrets.SERVERLESS_ACCESS_KEY }} 42 | # or if using AWS creds directly 43 | AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} 44 | AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DynamoDB CRUD API using API Gateway and AWS Lambda | Node.js w/ AWS-SDK V3 2 | 3 | ![visitors](https://visitor-badge.glitch.me/badge?page_id=jacksonyuan-yt.dynamodb-crud-api-gateway) 4 | 5 | ### YouTube Video Tutorial 6 | * [Full Tutorial](https://youtu.be/hOcbHz4T0Eg) 7 | -------------------------------------------------------------------------------- /api.js: -------------------------------------------------------------------------------- 1 | const db = require("./db"); 2 | const { 3 | GetItemCommand, 4 | PutItemCommand, 5 | DeleteItemCommand, 6 | ScanCommand, 7 | UpdateItemCommand, 8 | } = require("@aws-sdk/client-dynamodb"); 9 | const { marshall, unmarshall } = require("@aws-sdk/util-dynamodb"); 10 | 11 | const getPost = async (event) => { 12 | const response = { statusCode: 200 }; 13 | 14 | try { 15 | const params = { 16 | TableName: process.env.DYNAMODB_TABLE_NAME, 17 | Key: marshall({ postId: event.pathParameters.postId }), 18 | }; 19 | const { Item } = await db.send(new GetItemCommand(params)); 20 | 21 | console.log({ Item }); 22 | response.body = JSON.stringify({ 23 | message: "Successfully retrieved post.", 24 | data: (Item) ? unmarshall(Item) : {}, 25 | rawData: Item, 26 | }); 27 | } catch (e) { 28 | console.error(e); 29 | response.statusCode = 500; 30 | response.body = JSON.stringify({ 31 | message: "Failed to get post.", 32 | errorMsg: e.message, 33 | errorStack: e.stack, 34 | }); 35 | } 36 | 37 | return response; 38 | }; 39 | 40 | const createPost = async (event) => { 41 | const response = { statusCode: 200 }; 42 | 43 | try { 44 | const body = JSON.parse(event.body); 45 | const params = { 46 | TableName: process.env.DYNAMODB_TABLE_NAME, 47 | Item: marshall(body || {}), 48 | }; 49 | const createResult = await db.send(new PutItemCommand(params)); 50 | 51 | response.body = JSON.stringify({ 52 | message: "Successfully created post.", 53 | createResult, 54 | }); 55 | } catch (e) { 56 | console.error(e); 57 | response.statusCode = 500; 58 | response.body = JSON.stringify({ 59 | message: "Failed to create post.", 60 | errorMsg: e.message, 61 | errorStack: e.stack, 62 | }); 63 | } 64 | 65 | return response; 66 | }; 67 | 68 | const updatePost = async (event) => { 69 | const response = { statusCode: 200 }; 70 | 71 | try { 72 | const body = JSON.parse(event.body); 73 | const objKeys = Object.keys(body); 74 | const params = { 75 | TableName: process.env.DYNAMODB_TABLE_NAME, 76 | Key: marshall({ postId: event.pathParameters.postId }), 77 | UpdateExpression: `SET ${objKeys.map((_, index) => `#key${index} = :value${index}`).join(", ")}`, 78 | ExpressionAttributeNames: objKeys.reduce((acc, key, index) => ({ 79 | ...acc, 80 | [`#key${index}`]: key, 81 | }), {}), 82 | ExpressionAttributeValues: marshall(objKeys.reduce((acc, key, index) => ({ 83 | ...acc, 84 | [`:value${index}`]: body[key], 85 | }), {})), 86 | }; 87 | const updateResult = await db.send(new UpdateItemCommand(params)); 88 | 89 | response.body = JSON.stringify({ 90 | message: "Successfully updated post.", 91 | updateResult, 92 | }); 93 | } catch (e) { 94 | console.error(e); 95 | response.statusCode = 500; 96 | response.body = JSON.stringify({ 97 | message: "Failed to update post.", 98 | errorMsg: e.message, 99 | errorStack: e.stack, 100 | }); 101 | } 102 | 103 | return response; 104 | }; 105 | 106 | const deletePost = async (event) => { 107 | const response = { statusCode: 200 }; 108 | 109 | try { 110 | const params = { 111 | TableName: process.env.DYNAMODB_TABLE_NAME, 112 | Key: marshall({ postId: event.pathParameters.postId }), 113 | }; 114 | const deleteResult = await db.send(new DeleteItemCommand(params)); 115 | 116 | response.body = JSON.stringify({ 117 | message: "Successfully deleted post.", 118 | deleteResult, 119 | }); 120 | } catch (e) { 121 | console.error(e); 122 | response.statusCode = 500; 123 | response.body = JSON.stringify({ 124 | message: "Failed to delete post.", 125 | errorMsg: e.message, 126 | errorStack: e.stack, 127 | }); 128 | } 129 | 130 | return response; 131 | }; 132 | 133 | const getAllPosts = async () => { 134 | const response = { statusCode: 200 }; 135 | 136 | try { 137 | const { Items } = await db.send(new ScanCommand({ TableName: process.env.DYNAMODB_TABLE_NAME })); 138 | 139 | response.body = JSON.stringify({ 140 | message: "Successfully retrieved all posts.", 141 | data: Items.map((item) => unmarshall(item)), 142 | Items, 143 | }); 144 | } catch (e) { 145 | console.error(e); 146 | response.statusCode = 500; 147 | response.body = JSON.stringify({ 148 | message: "Failed to retrieve posts.", 149 | errorMsg: e.message, 150 | errorStack: e.stack, 151 | }); 152 | } 153 | 154 | return response; 155 | }; 156 | 157 | module.exports = { 158 | getPost, 159 | createPost, 160 | updatePost, 161 | deletePost, 162 | getAllPosts, 163 | }; 164 | -------------------------------------------------------------------------------- /db.js: -------------------------------------------------------------------------------- 1 | const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); 2 | const client = new DynamoDBClient({}); 3 | 4 | module.exports = client; 5 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "dynamodb-crud-api-gateway", 3 | "version": "1.0.0", 4 | "description": "DynamoDB CRUD API using API Gateway and AWS Lambda", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "Jackson Yuan", 11 | "license": "ISC", 12 | "dependencies": { 13 | "@aws-sdk/client-dynamodb": "^3.18.0", 14 | "@aws-sdk/util-dynamodb": "^3.18.0" 15 | }, 16 | "devDependencies": { 17 | "serverless-iam-roles-per-function": "^3.2.0" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /serverless.yml: -------------------------------------------------------------------------------- 1 | service: dynamodb-crud-api 2 | 3 | provider: 4 | name: aws 5 | runtime: nodejs14.x 6 | stage: dev 7 | region: us-west-1 8 | environment: 9 | DYNAMODB_TABLE_NAME: ${self:custom.postsTableName} 10 | 11 | custom: 12 | postsTableName: posts-table-${self:provider.stage} 13 | 14 | plugins: 15 | - serverless-iam-roles-per-function 16 | 17 | functions: 18 | getPost: 19 | handler: api.getPost 20 | name: get-post 21 | memorySize: 128 # mb 22 | timeout: 5 # seconds 23 | events: 24 | - http: 25 | path: post/{postId} 26 | method: GET 27 | iamRoleStatements: 28 | - Effect: "Allow" 29 | Action: 30 | - "dynamodb:GetItem" 31 | Resource: !GetAtt PostsTable.Arn 32 | createPost: 33 | handler: api.createPost 34 | name: create-post 35 | memorySize: 128 # mb 36 | timeout: 5 # seconds 37 | events: 38 | - http: 39 | path: post 40 | method: POST 41 | iamRoleStatements: 42 | - Effect: "Allow" 43 | Action: 44 | - "dynamodb:PutItem" 45 | Resource: !GetAtt PostsTable.Arn 46 | updatePost: 47 | handler: api.updatePost 48 | name: update-post 49 | memorySize: 128 # mb 50 | timeout: 5 # seconds 51 | events: 52 | - http: 53 | path: post/{postId} 54 | method: PUT 55 | iamRoleStatements: 56 | - Effect: "Allow" 57 | Action: 58 | - "dynamodb:UpdateItem" 59 | Resource: !GetAtt PostsTable.Arn 60 | deletePost: 61 | handler: api.deletePost 62 | name: delete-post 63 | memorySize: 128 # mb 64 | timeout: 5 # seconds 65 | events: 66 | - http: 67 | path: post/{postId} 68 | method: DELETE 69 | iamRoleStatements: 70 | - Effect: "Allow" 71 | Action: 72 | - "dynamodb:DeleteItem" 73 | Resource: !GetAtt PostsTable.Arn 74 | getAllPosts: 75 | handler: api.getAllPosts 76 | name: get-all-posts 77 | memorySize: 128 # mb 78 | timeout: 5 # seconds 79 | events: 80 | - http: 81 | path: posts 82 | method: GET 83 | iamRoleStatements: 84 | - Effect: "Allow" 85 | Action: 86 | - "dynamodb:Scan" 87 | Resource: !GetAtt PostsTable.Arn 88 | 89 | resources: 90 | Resources: 91 | PostsTable: 92 | Type: AWS::DynamoDB::Table 93 | Properties: 94 | TableName: ${self:custom.postsTableName} 95 | AttributeDefinitions: 96 | - AttributeName: postId 97 | AttributeType: S 98 | KeySchema: 99 | - AttributeName: postId 100 | KeyType: HASH 101 | ProvisionedThroughput: 102 | ReadCapacityUnits: 1 103 | WriteCapacityUnits: 1 104 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aws-crypto/ie11-detection@^1.0.0": 6 | version "1.0.0" 7 | resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-1.0.0.tgz#d3a6af29ba7f15458f79c41d1cd8cac3925e726a" 8 | integrity sha512-kCKVhCF1oDxFYgQrxXmIrS5oaWulkvRcPz+QBDMsUr2crbF4VGgGT6+uQhSwJFdUAQ2A//Vq+uT83eJrkzFgXA== 9 | dependencies: 10 | tslib "^1.11.1" 11 | 12 | "@aws-crypto/sha256-browser@^1.0.0": 13 | version "1.1.0" 14 | resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-1.1.0.tgz#20092cc6c08d8f04db0ed57b6f05cff150384f77" 15 | integrity sha512-VIpuLRDonMAHgomrsm/zKbeXTnxpr4aHDQmS4pF+NcpvBp64l675yjGA9hyUYs/QJwBjUl8WqMjh9tIRgi85Sg== 16 | dependencies: 17 | "@aws-crypto/ie11-detection" "^1.0.0" 18 | "@aws-crypto/sha256-js" "^1.1.0" 19 | "@aws-crypto/supports-web-crypto" "^1.0.0" 20 | "@aws-sdk/types" "^3.1.0" 21 | "@aws-sdk/util-locate-window" "^3.0.0" 22 | "@aws-sdk/util-utf8-browser" "^3.0.0" 23 | tslib "^1.11.1" 24 | 25 | "@aws-crypto/sha256-js@^1.0.0", "@aws-crypto/sha256-js@^1.1.0": 26 | version "1.1.0" 27 | resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-1.1.0.tgz#a58386ad18186e392e0f1d98d18831261d27b071" 28 | integrity sha512-VIhuqbPgXDVr8sZe2yhgQcDRRmzf4CI8fmC1A3bHiRfE6wlz1d8KpeemqbuoEHotz/Dch9yOxlshyQDNjNFeHA== 29 | dependencies: 30 | "@aws-sdk/types" "^3.1.0" 31 | "@aws-sdk/util-utf8-browser" "^3.0.0" 32 | tslib "^1.11.1" 33 | 34 | "@aws-crypto/supports-web-crypto@^1.0.0": 35 | version "1.0.0" 36 | resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-1.0.0.tgz#c40901bc17ac1e875e248df16a2b47ad8bfd9a93" 37 | integrity sha512-IHLfv+WmVH89EW4n6a5eE8/hUlz6qkWGMn/v4r5ZgzcXdTC5nolii2z3k46y01hWRiC2PPhOdeSLzMUCUMco7g== 38 | dependencies: 39 | tslib "^1.11.1" 40 | 41 | "@aws-sdk/abort-controller@3.18.0": 42 | version "3.18.0" 43 | resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.18.0.tgz#ff39bf1e07c7ae7790c26f93517a08fa3c27dd10" 44 | integrity sha512-AxDm2QLq2Z+PjzMESB+lPD5XL73MzC4CtUAajPn09ocWj7p9poVN0dd8NVFhBDfQMVPWTQaQBZk7h5TDvZrsBg== 45 | dependencies: 46 | "@aws-sdk/types" "3.18.0" 47 | tslib "^2.0.0" 48 | 49 | "@aws-sdk/client-dynamodb@^3.18.0": 50 | version "3.18.0" 51 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.18.0.tgz#99bbca8ca4bcd77658a9a899cb280cdd62ae6791" 52 | integrity sha512-6na2CbMLj7MSSFX/6eU3GWuhj4Ch0QnDGmvDDtYv5NaMEd43SdwuoN/ufkQIPuORoqevcRpjCQFaQxoHvUucEA== 53 | dependencies: 54 | "@aws-crypto/sha256-browser" "^1.0.0" 55 | "@aws-crypto/sha256-js" "^1.0.0" 56 | "@aws-sdk/client-sts" "3.18.0" 57 | "@aws-sdk/config-resolver" "3.18.0" 58 | "@aws-sdk/credential-provider-node" "3.18.0" 59 | "@aws-sdk/fetch-http-handler" "3.18.0" 60 | "@aws-sdk/hash-node" "3.18.0" 61 | "@aws-sdk/invalid-dependency" "3.18.0" 62 | "@aws-sdk/middleware-content-length" "3.18.0" 63 | "@aws-sdk/middleware-endpoint-discovery" "3.18.0" 64 | "@aws-sdk/middleware-host-header" "3.18.0" 65 | "@aws-sdk/middleware-logger" "3.18.0" 66 | "@aws-sdk/middleware-retry" "3.18.0" 67 | "@aws-sdk/middleware-serde" "3.18.0" 68 | "@aws-sdk/middleware-signing" "3.18.0" 69 | "@aws-sdk/middleware-stack" "3.18.0" 70 | "@aws-sdk/middleware-user-agent" "3.18.0" 71 | "@aws-sdk/node-config-provider" "3.18.0" 72 | "@aws-sdk/node-http-handler" "3.18.0" 73 | "@aws-sdk/protocol-http" "3.18.0" 74 | "@aws-sdk/smithy-client" "3.18.0" 75 | "@aws-sdk/types" "3.18.0" 76 | "@aws-sdk/url-parser" "3.18.0" 77 | "@aws-sdk/util-base64-browser" "3.18.0" 78 | "@aws-sdk/util-base64-node" "3.18.0" 79 | "@aws-sdk/util-body-length-browser" "3.18.0" 80 | "@aws-sdk/util-body-length-node" "3.18.0" 81 | "@aws-sdk/util-user-agent-browser" "3.18.0" 82 | "@aws-sdk/util-user-agent-node" "3.18.0" 83 | "@aws-sdk/util-utf8-browser" "3.18.0" 84 | "@aws-sdk/util-utf8-node" "3.18.0" 85 | "@aws-sdk/util-waiter" "3.18.0" 86 | tslib "^2.0.0" 87 | uuid "^8.3.2" 88 | 89 | "@aws-sdk/client-sso@3.18.0": 90 | version "3.18.0" 91 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.18.0.tgz#c3ce974fc6786cd2ff3ac9f14dafe5d28633aea9" 92 | integrity sha512-OAS2R13NJ/mNnKxBc//Nva/+BmqaZZrzJ3pHsfGNUvzYE6rNj5iWHACD8LIV/Glf5Z3H52fbwfmYpwkMuvPuXQ== 93 | dependencies: 94 | "@aws-crypto/sha256-browser" "^1.0.0" 95 | "@aws-crypto/sha256-js" "^1.0.0" 96 | "@aws-sdk/config-resolver" "3.18.0" 97 | "@aws-sdk/fetch-http-handler" "3.18.0" 98 | "@aws-sdk/hash-node" "3.18.0" 99 | "@aws-sdk/invalid-dependency" "3.18.0" 100 | "@aws-sdk/middleware-content-length" "3.18.0" 101 | "@aws-sdk/middleware-host-header" "3.18.0" 102 | "@aws-sdk/middleware-logger" "3.18.0" 103 | "@aws-sdk/middleware-retry" "3.18.0" 104 | "@aws-sdk/middleware-serde" "3.18.0" 105 | "@aws-sdk/middleware-stack" "3.18.0" 106 | "@aws-sdk/middleware-user-agent" "3.18.0" 107 | "@aws-sdk/node-config-provider" "3.18.0" 108 | "@aws-sdk/node-http-handler" "3.18.0" 109 | "@aws-sdk/protocol-http" "3.18.0" 110 | "@aws-sdk/smithy-client" "3.18.0" 111 | "@aws-sdk/types" "3.18.0" 112 | "@aws-sdk/url-parser" "3.18.0" 113 | "@aws-sdk/util-base64-browser" "3.18.0" 114 | "@aws-sdk/util-base64-node" "3.18.0" 115 | "@aws-sdk/util-body-length-browser" "3.18.0" 116 | "@aws-sdk/util-body-length-node" "3.18.0" 117 | "@aws-sdk/util-user-agent-browser" "3.18.0" 118 | "@aws-sdk/util-user-agent-node" "3.18.0" 119 | "@aws-sdk/util-utf8-browser" "3.18.0" 120 | "@aws-sdk/util-utf8-node" "3.18.0" 121 | tslib "^2.0.0" 122 | 123 | "@aws-sdk/client-sts@3.18.0": 124 | version "3.18.0" 125 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.18.0.tgz#0add98614ed0233855b067c5e8b5905ae272808b" 126 | integrity sha512-xRaBx3A4Edd216ZSZP4360siOx7yGiPY2Ez/w4JbdcwFRjoen8cP9kTgbipgMhbwHVUvgNZpyDrCp0eRHL24bg== 127 | dependencies: 128 | "@aws-crypto/sha256-browser" "^1.0.0" 129 | "@aws-crypto/sha256-js" "^1.0.0" 130 | "@aws-sdk/config-resolver" "3.18.0" 131 | "@aws-sdk/credential-provider-node" "3.18.0" 132 | "@aws-sdk/fetch-http-handler" "3.18.0" 133 | "@aws-sdk/hash-node" "3.18.0" 134 | "@aws-sdk/invalid-dependency" "3.18.0" 135 | "@aws-sdk/middleware-content-length" "3.18.0" 136 | "@aws-sdk/middleware-host-header" "3.18.0" 137 | "@aws-sdk/middleware-logger" "3.18.0" 138 | "@aws-sdk/middleware-retry" "3.18.0" 139 | "@aws-sdk/middleware-sdk-sts" "3.18.0" 140 | "@aws-sdk/middleware-serde" "3.18.0" 141 | "@aws-sdk/middleware-signing" "3.18.0" 142 | "@aws-sdk/middleware-stack" "3.18.0" 143 | "@aws-sdk/middleware-user-agent" "3.18.0" 144 | "@aws-sdk/node-config-provider" "3.18.0" 145 | "@aws-sdk/node-http-handler" "3.18.0" 146 | "@aws-sdk/protocol-http" "3.18.0" 147 | "@aws-sdk/smithy-client" "3.18.0" 148 | "@aws-sdk/types" "3.18.0" 149 | "@aws-sdk/url-parser" "3.18.0" 150 | "@aws-sdk/util-base64-browser" "3.18.0" 151 | "@aws-sdk/util-base64-node" "3.18.0" 152 | "@aws-sdk/util-body-length-browser" "3.18.0" 153 | "@aws-sdk/util-body-length-node" "3.18.0" 154 | "@aws-sdk/util-user-agent-browser" "3.18.0" 155 | "@aws-sdk/util-user-agent-node" "3.18.0" 156 | "@aws-sdk/util-utf8-browser" "3.18.0" 157 | "@aws-sdk/util-utf8-node" "3.18.0" 158 | entities "2.2.0" 159 | fast-xml-parser "3.19.0" 160 | tslib "^2.0.0" 161 | 162 | "@aws-sdk/config-resolver@3.18.0": 163 | version "3.18.0" 164 | resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.18.0.tgz#39ce169776ccb96d9809df8a262c545e1318c342" 165 | integrity sha512-2uSa/YccHckyYuY0OLDemgb+Jprif/NP+6OW+4eAjkwMGpZ3TtyGXoAZprBHqDXV12QxOYWjL6X6pyHvvsBAsQ== 166 | dependencies: 167 | "@aws-sdk/signature-v4" "3.18.0" 168 | "@aws-sdk/types" "3.18.0" 169 | tslib "^2.0.0" 170 | 171 | "@aws-sdk/credential-provider-env@3.18.0": 172 | version "3.18.0" 173 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.18.0.tgz#1a9be36a06fb4dc131e4e9ba63d8f4c85320a729" 174 | integrity sha512-+PajLjjpXib9rseqC/r8hnlgq5mOloIaTLYZsdbEC9Afwo5VmYlemL5gAfH+ABxYeanbTvHaP7lUNS3pLrM7dA== 175 | dependencies: 176 | "@aws-sdk/property-provider" "3.18.0" 177 | "@aws-sdk/types" "3.18.0" 178 | tslib "^2.0.0" 179 | 180 | "@aws-sdk/credential-provider-imds@3.18.0": 181 | version "3.18.0" 182 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.18.0.tgz#6876189a2b04d8f9430c667d4a6f606c61044152" 183 | integrity sha512-l/yDGjmZkkO0mSqatk7lOHKE6/EGplD5HHgAEY6pr5Y7C5a6ck7/mU7iNtmfq5HAv/YFsXHrewMGyXoE9iQBpg== 184 | dependencies: 185 | "@aws-sdk/property-provider" "3.18.0" 186 | "@aws-sdk/types" "3.18.0" 187 | tslib "^2.0.0" 188 | 189 | "@aws-sdk/credential-provider-ini@3.18.0": 190 | version "3.18.0" 191 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.18.0.tgz#1c3a4002473fb432a173569623cc535ce38e648c" 192 | integrity sha512-Hsef5NC4hPh4BDlin/Eik9S2icFZIvQjPGVL2z3OO30Xer0GHwIQNMAf0WTREQ+cCuXFrIyCwSsdxIo1n2yQnA== 193 | dependencies: 194 | "@aws-sdk/credential-provider-env" "3.18.0" 195 | "@aws-sdk/credential-provider-imds" "3.18.0" 196 | "@aws-sdk/credential-provider-web-identity" "3.18.0" 197 | "@aws-sdk/property-provider" "3.18.0" 198 | "@aws-sdk/shared-ini-file-loader" "3.18.0" 199 | "@aws-sdk/types" "3.18.0" 200 | tslib "^2.0.0" 201 | 202 | "@aws-sdk/credential-provider-node@3.18.0": 203 | version "3.18.0" 204 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.18.0.tgz#60f5e0a19e7bd689d35ced18e21a8cbd5dba5acc" 205 | integrity sha512-iFwBl6w7mJAFo4YNVL960bkY6c4bUtABtbI+Wka8QbauGTGfAPMlET0JBesPNRAjkB7xzEtujPQL7pz4qlzeNQ== 206 | dependencies: 207 | "@aws-sdk/credential-provider-env" "3.18.0" 208 | "@aws-sdk/credential-provider-imds" "3.18.0" 209 | "@aws-sdk/credential-provider-ini" "3.18.0" 210 | "@aws-sdk/credential-provider-process" "3.18.0" 211 | "@aws-sdk/credential-provider-sso" "3.18.0" 212 | "@aws-sdk/credential-provider-web-identity" "3.18.0" 213 | "@aws-sdk/property-provider" "3.18.0" 214 | "@aws-sdk/shared-ini-file-loader" "3.18.0" 215 | "@aws-sdk/types" "3.18.0" 216 | tslib "^2.0.0" 217 | 218 | "@aws-sdk/credential-provider-process@3.18.0": 219 | version "3.18.0" 220 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.18.0.tgz#9fb5b69b8c0d04ac03c4c4e29aed0778c55908da" 221 | integrity sha512-0KwouUPsAALTqAlzy7HOddujjka3FmlNLe58bPPUk+2nqgg1qKGaNEtDTGCpusIaqLJm7ZbPJ0cJ8B+q/ytuwg== 222 | dependencies: 223 | "@aws-sdk/credential-provider-ini" "3.18.0" 224 | "@aws-sdk/property-provider" "3.18.0" 225 | "@aws-sdk/shared-ini-file-loader" "3.18.0" 226 | "@aws-sdk/types" "3.18.0" 227 | tslib "^2.0.0" 228 | 229 | "@aws-sdk/credential-provider-sso@3.18.0": 230 | version "3.18.0" 231 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.18.0.tgz#86c00cacf638fa110000d2f6b15013c81fb16cb4" 232 | integrity sha512-EEHnWb/tFvFb9+a7dfChBdHmOZnqZeAbn6TOgc4LME4No9EG3XvkH48wxS0Mdhi9ziEGEdnNLQSVaIFzprWn8w== 233 | dependencies: 234 | "@aws-sdk/client-sso" "3.18.0" 235 | "@aws-sdk/credential-provider-ini" "3.18.0" 236 | "@aws-sdk/property-provider" "3.18.0" 237 | "@aws-sdk/shared-ini-file-loader" "3.18.0" 238 | "@aws-sdk/types" "3.18.0" 239 | tslib "^2.0.0" 240 | 241 | "@aws-sdk/credential-provider-web-identity@3.18.0": 242 | version "3.18.0" 243 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.18.0.tgz#9730dc9a5e8575dd634fecd41413611dc75426da" 244 | integrity sha512-s+F9hE5f2hcrVluEWpDMCSAWUntNQyzJexQKq5KYdJuHsm+oQbACJwWPcB63rbmpzWQht88tU6+YeMRq8P9HIA== 245 | dependencies: 246 | "@aws-sdk/property-provider" "3.18.0" 247 | "@aws-sdk/types" "3.18.0" 248 | tslib "^2.0.0" 249 | 250 | "@aws-sdk/endpoint-cache@3.18.0": 251 | version "3.18.0" 252 | resolved "https://registry.yarnpkg.com/@aws-sdk/endpoint-cache/-/endpoint-cache-3.18.0.tgz#627d82c1dc8f08fce93a4d8243e1271077db9532" 253 | integrity sha512-7gv52PYcMyDZsGSaxBtTC4eucK2oLnHzo+VkWIy/WJuh/r5oS26Xv6AA/1DSbGoqJQgi3AOWJJ2bCyzl1UcyQg== 254 | dependencies: 255 | mnemonist "0.38.3" 256 | tslib "^2.0.0" 257 | 258 | "@aws-sdk/fetch-http-handler@3.18.0": 259 | version "3.18.0" 260 | resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.18.0.tgz#8614c8e99e7c4f80f07445a3ce962283672bdcef" 261 | integrity sha512-jJS34wJzv+5wumVpQ7fGOmTxkJlu1tmGkbCt13xuSjYpt2M/by+WAShxcxEhrsBJlMNMHTHF+v2Tew6JwEP00w== 262 | dependencies: 263 | "@aws-sdk/protocol-http" "3.18.0" 264 | "@aws-sdk/querystring-builder" "3.18.0" 265 | "@aws-sdk/types" "3.18.0" 266 | "@aws-sdk/util-base64-browser" "3.18.0" 267 | tslib "^2.0.0" 268 | 269 | "@aws-sdk/hash-node@3.18.0": 270 | version "3.18.0" 271 | resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.18.0.tgz#6e7c8b7defb707315fe89d65ba33d484066c9543" 272 | integrity sha512-rmjpJl4oG4JxHydnb9F3GzHu5wDJAQswgnBV0NszHfDndJm34f0Dta6OTmreK5nZ8ns/g6ZAjLjiTuKJoxjVmg== 273 | dependencies: 274 | "@aws-sdk/types" "3.18.0" 275 | "@aws-sdk/util-buffer-from" "3.18.0" 276 | tslib "^2.0.0" 277 | 278 | "@aws-sdk/invalid-dependency@3.18.0": 279 | version "3.18.0" 280 | resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.18.0.tgz#8edf6c9ebdcb5932fe3a81868bd78daf305f8649" 281 | integrity sha512-+VlXE8G22+H7d6K0EafpmihodOiF8I957J/euWIAGTSYYhLuAXPgCyPoKk1Qmxqfb3oAoG/cuoehCuPfFWwTPA== 282 | dependencies: 283 | "@aws-sdk/types" "3.18.0" 284 | tslib "^2.0.0" 285 | 286 | "@aws-sdk/is-array-buffer@3.18.0": 287 | version "3.18.0" 288 | resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.18.0.tgz#ad505580d4a7bcaba60f084553c11b8329ddb2b7" 289 | integrity sha512-HvPRgESVQt0UbzRQZVKhf8SpGGc5Jrln3AtTzkVu6PBHO04Dh2EHsrsxiu7X3oB453Mnp8+LYBVIgsmM/RyJzA== 290 | dependencies: 291 | tslib "^2.0.0" 292 | 293 | "@aws-sdk/middleware-content-length@3.18.0": 294 | version "3.18.0" 295 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.18.0.tgz#3da77642f082bab1864926c3bc903f87e9187cd5" 296 | integrity sha512-N1qTzkn+vNjMXBRybW9/S9WtCFiJp2B8agr+41zja4hnZVA07kClvI76jM6KUwQHADB2q79FWT+i6PeyCHHh1Q== 297 | dependencies: 298 | "@aws-sdk/protocol-http" "3.18.0" 299 | "@aws-sdk/types" "3.18.0" 300 | tslib "^2.0.0" 301 | 302 | "@aws-sdk/middleware-endpoint-discovery@3.18.0": 303 | version "3.18.0" 304 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.18.0.tgz#c9c18877c6c648179af561256af59c1955de9cf8" 305 | integrity sha512-8lwWrWb3ZZGkyaalZpB6TpXZUtfTOg5P1Bw11KcWE/EreavoXS59SBgf6aIWl74biM5WTk0F9wEiTGTQO38piw== 306 | dependencies: 307 | "@aws-sdk/config-resolver" "3.18.0" 308 | "@aws-sdk/endpoint-cache" "3.18.0" 309 | "@aws-sdk/protocol-http" "3.18.0" 310 | "@aws-sdk/types" "3.18.0" 311 | tslib "^2.0.0" 312 | 313 | "@aws-sdk/middleware-host-header@3.18.0": 314 | version "3.18.0" 315 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.18.0.tgz#527bed316636ec42aea113458fcd0358269f9db9" 316 | integrity sha512-MPX9GJk3Wl3OjRJ3ti+ptkG+7dTpXGtEjIPF0MsCSlfTKH01lsNGDpSZpeUyhYFrvl3fXoMrPeJHUuFeXA3bIA== 317 | dependencies: 318 | "@aws-sdk/protocol-http" "3.18.0" 319 | "@aws-sdk/types" "3.18.0" 320 | tslib "^2.0.0" 321 | 322 | "@aws-sdk/middleware-logger@3.18.0": 323 | version "3.18.0" 324 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.18.0.tgz#00addf99fcc41879fb4cd9521630931dbcf8deff" 325 | integrity sha512-GGiT4w8R7GOvlp4Q1w8JmBaBSsxNUL+ebEcs8ahJBrm9brYZG7tN8ncLXfF7d3oLd5XMoSbBkTn8+dQ973pkEQ== 326 | dependencies: 327 | "@aws-sdk/types" "3.18.0" 328 | tslib "^2.0.0" 329 | 330 | "@aws-sdk/middleware-retry@3.18.0": 331 | version "3.18.0" 332 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.18.0.tgz#61b5fd249bdd0c945ed04912030f098514a1bc7b" 333 | integrity sha512-PIvbtN05IftmbLACEdV6atNXJVuXNDkK5pcqKgggCteIKHz0QWnLUrgvi9wh2/HqDJD/XpY+ZmOEoZqUnwYSgg== 334 | dependencies: 335 | "@aws-sdk/protocol-http" "3.18.0" 336 | "@aws-sdk/service-error-classification" "3.18.0" 337 | "@aws-sdk/types" "3.18.0" 338 | tslib "^2.0.0" 339 | uuid "^8.3.2" 340 | 341 | "@aws-sdk/middleware-sdk-sts@3.18.0": 342 | version "3.18.0" 343 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.18.0.tgz#e26f0f335553e3e1956a3b190080d9f82377b5f9" 344 | integrity sha512-FVowN386wlLBt7ND5ALbkgJl65ynzxYNBH351mcD2/VwgCx3PZqZSr8sLoVDyuB+X2n9/GAI+r3W++zQ8YOymQ== 345 | dependencies: 346 | "@aws-sdk/middleware-signing" "3.18.0" 347 | "@aws-sdk/property-provider" "3.18.0" 348 | "@aws-sdk/protocol-http" "3.18.0" 349 | "@aws-sdk/signature-v4" "3.18.0" 350 | "@aws-sdk/types" "3.18.0" 351 | tslib "^2.0.0" 352 | 353 | "@aws-sdk/middleware-serde@3.18.0": 354 | version "3.18.0" 355 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.18.0.tgz#583687b7b7f278ecbb18a5f273399ceef7921bf8" 356 | integrity sha512-46PtAvnGONN/v5OcNE4/3UywadCJunITwXDK/AGs6SMijkOPtoGMjP7fme9XlB6wg4QTSfeF3eKsieOF47RlPg== 357 | dependencies: 358 | "@aws-sdk/types" "3.18.0" 359 | tslib "^2.0.0" 360 | 361 | "@aws-sdk/middleware-signing@3.18.0": 362 | version "3.18.0" 363 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.18.0.tgz#6dc6b27d09e18b5b792acef0a856f13b1f76e8c9" 364 | integrity sha512-0DCwl1Hp66XVG3UUIvBhf7zy8pmeHFATInqRMF91Ch4mYJJdk/U0xLla+ouA2t6SjBkl2tb1bJLgjwkWnvR5Rg== 365 | dependencies: 366 | "@aws-sdk/property-provider" "3.18.0" 367 | "@aws-sdk/protocol-http" "3.18.0" 368 | "@aws-sdk/signature-v4" "3.18.0" 369 | "@aws-sdk/types" "3.18.0" 370 | tslib "^2.0.0" 371 | 372 | "@aws-sdk/middleware-stack@3.18.0": 373 | version "3.18.0" 374 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.18.0.tgz#e3977d0dce6690e83d281e4ae4313b7ee8547aea" 375 | integrity sha512-+FDsKMRq3Gsd6ddVt1P+7ltSiRRcEj6KpRccMHkFkFqWWqn9OcPh+Et076ivSBXCW8q9Ib4qJi04hiCD/md2EQ== 376 | dependencies: 377 | tslib "^2.0.0" 378 | 379 | "@aws-sdk/middleware-user-agent@3.18.0": 380 | version "3.18.0" 381 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.18.0.tgz#0319b51faa04fcc187f852538e5d99709e4f465f" 382 | integrity sha512-BGm+buvq0wHtIylYGmyLhuRUvb2MsKx2mBhEx9m5Vs4M8I8GnTgrWtblOzwqZ+Q7dl+GQCL0/tLYTw50BTeLGQ== 383 | dependencies: 384 | "@aws-sdk/protocol-http" "3.18.0" 385 | "@aws-sdk/types" "3.18.0" 386 | tslib "^2.0.0" 387 | 388 | "@aws-sdk/node-config-provider@3.18.0": 389 | version "3.18.0" 390 | resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.18.0.tgz#4dc346592f81084d09cd81c4e6a26cf9bcd2b083" 391 | integrity sha512-U+qqNIWivZK9bd1BJMwRyXcTHZAS9r4sgPMrjFyOutdLxBCrhU7QUUr0hFaHdrsVA7cU+D3bBhFxq6JxGmj8Hg== 392 | dependencies: 393 | "@aws-sdk/property-provider" "3.18.0" 394 | "@aws-sdk/shared-ini-file-loader" "3.18.0" 395 | "@aws-sdk/types" "3.18.0" 396 | tslib "^2.0.0" 397 | 398 | "@aws-sdk/node-http-handler@3.18.0": 399 | version "3.18.0" 400 | resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.18.0.tgz#9771340d008d83f245e0cb222d5bb31128805c74" 401 | integrity sha512-87ZxGlq3dnlPjAIN0yhawiF+n3oQQihxYaSeysltsuz13X/beYTDyGTEBZXWKwB06O/XHbfBV6iYUR7XgMP20w== 402 | dependencies: 403 | "@aws-sdk/abort-controller" "3.18.0" 404 | "@aws-sdk/protocol-http" "3.18.0" 405 | "@aws-sdk/querystring-builder" "3.18.0" 406 | "@aws-sdk/types" "3.18.0" 407 | tslib "^2.0.0" 408 | 409 | "@aws-sdk/property-provider@3.18.0": 410 | version "3.18.0" 411 | resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.18.0.tgz#7ab800603e12c4baad4492729cc072df7976cd0d" 412 | integrity sha512-e7ADhSv8zAePAJLdXT0QItFPnA2ewOCDrD130E0NYA90AnW3xIyLB+J5HbwTWYUcF9Fbo0xSKh+0y8hBjNsT/w== 413 | dependencies: 414 | "@aws-sdk/types" "3.18.0" 415 | tslib "^2.0.0" 416 | 417 | "@aws-sdk/protocol-http@3.18.0": 418 | version "3.18.0" 419 | resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.18.0.tgz#fc6448505b5b2b95afde71e33df5887371152a74" 420 | integrity sha512-GIKvZBEnm87/mRaVYHnsQDYBSvU6qyKjyVdHDpQHhF+MZ+MKafygmpdBjsrRRstWr7h5WepnUVImYgvmaW6vyw== 421 | dependencies: 422 | "@aws-sdk/types" "3.18.0" 423 | tslib "^2.0.0" 424 | 425 | "@aws-sdk/querystring-builder@3.18.0": 426 | version "3.18.0" 427 | resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.18.0.tgz#e49393e318072f70ea66e951a4db9795879bc43b" 428 | integrity sha512-1DrzflLp80RG674XfhZsl4jehIe0mdSPqXqMH6vOMDcmF/lLEsfwPs307G+Go3kwWXSUup52bcMmfi8Ef4xLBg== 429 | dependencies: 430 | "@aws-sdk/types" "3.18.0" 431 | "@aws-sdk/util-uri-escape" "3.18.0" 432 | tslib "^2.0.0" 433 | 434 | "@aws-sdk/querystring-parser@3.18.0": 435 | version "3.18.0" 436 | resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.18.0.tgz#4210f462cfd5a3f79ef02f0a13a8406d7786b745" 437 | integrity sha512-7pkgPCeTtsgcgBwYSK2QN9Kij88Adi4bKMBxCqpanloTng2KrZ3DfyyD7c0H70mt21Zqfwr2M1HrPSs1SZKBkw== 438 | dependencies: 439 | "@aws-sdk/types" "3.18.0" 440 | tslib "^2.0.0" 441 | 442 | "@aws-sdk/service-error-classification@3.18.0": 443 | version "3.18.0" 444 | resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.18.0.tgz#5e8a9609a6fcd64f1f3f0e71b8a0bbd3bed9b21c" 445 | integrity sha512-bgKy3fl1sIimpXUKqN9Mmb6tRtdtFQDYd/eX0LISSbdtJiVnMgiTxwTPEX72pN54L8zun3zU6xOuwoZP1Af6YA== 446 | 447 | "@aws-sdk/shared-ini-file-loader@3.18.0": 448 | version "3.18.0" 449 | resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.18.0.tgz#9cc4cd96753862a1c0aaefa903353e4bc17dda6a" 450 | integrity sha512-YpBCZWRvJhnPHbdFLzRvLIfx7Zxre8/5YsWrrNNBWRJ90z/6czzPdOn9jab/AVfLPpC/VSSubf4v4b8Cjeb4eA== 451 | dependencies: 452 | tslib "^2.0.0" 453 | 454 | "@aws-sdk/signature-v4@3.18.0": 455 | version "3.18.0" 456 | resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.18.0.tgz#b816b3d5436a9e1cd008a95db192cf36fa87ebd8" 457 | integrity sha512-md52+v+aIDfhwtaN+xIJ+7XgSqtRmreGkSCnJziGINRSnUSdycoR/ZJhT5d9TbMpYHdoT0Rm9RXNXImlfKCNGw== 458 | dependencies: 459 | "@aws-sdk/is-array-buffer" "3.18.0" 460 | "@aws-sdk/types" "3.18.0" 461 | "@aws-sdk/util-hex-encoding" "3.18.0" 462 | "@aws-sdk/util-uri-escape" "3.18.0" 463 | tslib "^2.0.0" 464 | 465 | "@aws-sdk/smithy-client@3.18.0": 466 | version "3.18.0" 467 | resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.18.0.tgz#ed441f76921c0f21558a35839cc1e8af91668647" 468 | integrity sha512-fIcfzrf2TnhB4W8UyqdPQ9fPAfIfuLQ0dO/Y9qwzsw0Bvj4qYYPcUaNI2raX7WN1G2KHa9wZdiceR0J+uQO7yg== 469 | dependencies: 470 | "@aws-sdk/middleware-stack" "3.18.0" 471 | "@aws-sdk/types" "3.18.0" 472 | tslib "^2.0.0" 473 | 474 | "@aws-sdk/types@3.18.0", "@aws-sdk/types@^3.1.0": 475 | version "3.18.0" 476 | resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.18.0.tgz#2158f054b83ea1319c47306bf08245fb26edeed0" 477 | integrity sha512-fyk6HXK1wk83n4fDvsG+ewV+yS4uegepeMNrmLr7iBKjzc/bLckTWk7GKFM5ZaF/9jWyk7o2eKW3C3BltgDrfQ== 478 | 479 | "@aws-sdk/url-parser@3.18.0": 480 | version "3.18.0" 481 | resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.18.0.tgz#6974e26036f85194240eff475e27f4bcc2621d73" 482 | integrity sha512-ye3sSF8R6kp1r98MRNk9UDj6P0luQfSZ5N2EZjF8AUG0y4PTVc4L/PlSsH3/sMOjG831al+khNo+cZNO9wZeiQ== 483 | dependencies: 484 | "@aws-sdk/querystring-parser" "3.18.0" 485 | "@aws-sdk/types" "3.18.0" 486 | tslib "^2.0.0" 487 | 488 | "@aws-sdk/util-base64-browser@3.18.0": 489 | version "3.18.0" 490 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-browser/-/util-base64-browser-3.18.0.tgz#f625d06c0e9923d39976fbe6474bbed5a287f491" 491 | integrity sha512-XG7ls/9utSgCGzD0hgnNAQWLWU9Nnc/IqjQCZ6td84Y1/kTBBafSN3RTPeQ3fLzJ063sTDOy/DPEh21IPZCF6A== 492 | dependencies: 493 | tslib "^2.0.0" 494 | 495 | "@aws-sdk/util-base64-node@3.18.0": 496 | version "3.18.0" 497 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64-node/-/util-base64-node-3.18.0.tgz#5807aa9c036a4037d68fca0fa353e66ea10c1a9d" 498 | integrity sha512-NzkHCynFU2wfqU/15IkI5H0ukafu//LSUTFp9w4MzFNYpfbXAjcAK4S53VQe46bvciRRk8pyHc4wixiYsxFbpA== 499 | dependencies: 500 | "@aws-sdk/util-buffer-from" "3.18.0" 501 | tslib "^2.0.0" 502 | 503 | "@aws-sdk/util-body-length-browser@3.18.0": 504 | version "3.18.0" 505 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.18.0.tgz#c67c51219f44540e8b032065302a5e3fc74012f6" 506 | integrity sha512-+x0yrV9Z/gGGRVoWmx7t+skwG110vngkq5Clu7z+k/DtuZrkrspYKOVzidaH80pGJwJi+0JzxbIhA5JblBAf7Q== 507 | dependencies: 508 | tslib "^2.0.0" 509 | 510 | "@aws-sdk/util-body-length-node@3.18.0": 511 | version "3.18.0" 512 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.18.0.tgz#fcd93fec88161ca3f2392c7cf657fc74a38acbe3" 513 | integrity sha512-r/m+TP9O1G8k9V51LvDCjkoc53Parn7BjP81cBplDrA6Uc2iezVRcjuXzRU+4X8EBIlUtCNhDYryl5xN8cohKw== 514 | dependencies: 515 | tslib "^2.0.0" 516 | 517 | "@aws-sdk/util-buffer-from@3.18.0": 518 | version "3.18.0" 519 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.18.0.tgz#b2e18e04b7e28f701cc60e2da342d32a60b449d4" 520 | integrity sha512-4Pp4owEfjNdmqH9cByJnN0GbfM2II3I4FnRN5d9BysJ6mG+rLhc6WYxBgr4sEFtsJGYCgFzLU5MfUMx9OuDdPA== 521 | dependencies: 522 | "@aws-sdk/is-array-buffer" "3.18.0" 523 | tslib "^2.0.0" 524 | 525 | "@aws-sdk/util-dynamodb@^3.18.0": 526 | version "3.18.0" 527 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-dynamodb/-/util-dynamodb-3.18.0.tgz#634c68e57c57de02de22f089b77932dc8dc6929f" 528 | integrity sha512-UoBImpz/3q/wUG/8IF9BGOHgCAhq1RpfXz7sYFXGHRTJy6UdOMBJyE4odey7kmoqxLHC+pRE712tE6s9z1EHgg== 529 | dependencies: 530 | tslib "^2.0.0" 531 | 532 | "@aws-sdk/util-hex-encoding@3.18.0": 533 | version "3.18.0" 534 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.18.0.tgz#b20ad7db4394c664e681b3744e216e405b2cdf13" 535 | integrity sha512-tayCN0+jLJRyM7W059ybwaEojjI4ylP4UyyG+LDc4m62PskmsCWTWOJzudjtx4d765e0I/F1w1ELrE+VhUdOpQ== 536 | dependencies: 537 | tslib "^2.0.0" 538 | 539 | "@aws-sdk/util-locate-window@^3.0.0": 540 | version "3.18.0" 541 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.18.0.tgz#47bb20b6f9fcff45ec948e125a4e8f892f029d80" 542 | integrity sha512-Lj2O9KaXCn+gPW23l3ydcSWe4HK0jH6teeSymbaFTwTjKtr4oLfDDKAOFoG5YyppQstEPqsL/RidVey4kOFfcg== 543 | dependencies: 544 | tslib "^2.0.0" 545 | 546 | "@aws-sdk/util-uri-escape@3.18.0": 547 | version "3.18.0" 548 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.18.0.tgz#53efc98623e9fee697f45697bf9406737b68dce1" 549 | integrity sha512-Ui+uydvhzQALj/Q8sat4cVnCedwB/8iBPoMzcm1hr1r7ttWfmBKKElFZFl6ljCUtKaCE3rTb3JrZ2sKy9wT09A== 550 | dependencies: 551 | tslib "^2.0.0" 552 | 553 | "@aws-sdk/util-user-agent-browser@3.18.0": 554 | version "3.18.0" 555 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.18.0.tgz#4ffd5bf63361825e4fa0bc4b0599e1d73e624a94" 556 | integrity sha512-qBfyQJqN3RFyeY6nr03RZQ6uT6t5BIdthqwSPZ99K2gvf75TdhPA3PJsaIZfluNHEPQrgrNd32OED8jnd+GXwA== 557 | dependencies: 558 | "@aws-sdk/types" "3.18.0" 559 | bowser "^2.11.0" 560 | tslib "^2.0.0" 561 | 562 | "@aws-sdk/util-user-agent-node@3.18.0": 563 | version "3.18.0" 564 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.18.0.tgz#92a21dafc2cf0d1aeaf4ccd06987f0eb50c28e30" 565 | integrity sha512-gSdWW3X0kLMvooo2vc0yqWClclGUqcBfRq0K2w6XhYaJRT4E07KmQa4nPdBMYD1g79xW+53AbdQNnGq8b/bmhA== 566 | dependencies: 567 | "@aws-sdk/node-config-provider" "3.18.0" 568 | "@aws-sdk/types" "3.18.0" 569 | tslib "^2.0.0" 570 | 571 | "@aws-sdk/util-utf8-browser@3.18.0", "@aws-sdk/util-utf8-browser@^3.0.0": 572 | version "3.18.0" 573 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.18.0.tgz#d7d68290a323e4f9eb4f1d3f6add618c17e01a36" 574 | integrity sha512-JwcdTb6AAMtnlt2Sg0I18DBK1sWlsfDR/23CkDQ52niXvCSRdHeNkh5b7SdEPVUKI76hyce9nEshzI1OasTv7w== 575 | dependencies: 576 | tslib "^2.0.0" 577 | 578 | "@aws-sdk/util-utf8-node@3.18.0": 579 | version "3.18.0" 580 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.18.0.tgz#634457d568225e1b2a78c4a474a92ea0cd82e280" 581 | integrity sha512-yQtKkW5V6ycT6DlJkYgeMjj6HJc+jj50LUUx2ukW6IfRmCeAGWdUu82NgIzlzvlsqH1jvmQ/kaeqZ7ruOtmA6Q== 582 | dependencies: 583 | "@aws-sdk/util-buffer-from" "3.18.0" 584 | tslib "^2.0.0" 585 | 586 | "@aws-sdk/util-waiter@3.18.0": 587 | version "3.18.0" 588 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-waiter/-/util-waiter-3.18.0.tgz#a4d1ae639a22cc48479d70b22d6d759b7bac7f24" 589 | integrity sha512-ba67ZEn96RR7Nm0xXGtxD1ISWsG6ePpnOEi2p6hhP1/zJth70mCgxfMPHbxBmfQuadCtP3lhMGpRIptdAlXnDA== 590 | dependencies: 591 | "@aws-sdk/abort-controller" "3.18.0" 592 | "@aws-sdk/types" "3.18.0" 593 | tslib "^2.0.0" 594 | 595 | bowser@^2.11.0: 596 | version "2.11.0" 597 | resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" 598 | integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== 599 | 600 | entities@2.2.0: 601 | version "2.2.0" 602 | resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" 603 | integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== 604 | 605 | fast-xml-parser@3.19.0: 606 | version "3.19.0" 607 | resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz#cb637ec3f3999f51406dd8ff0e6fc4d83e520d01" 608 | integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== 609 | 610 | lodash@^4.17.20: 611 | version "4.17.21" 612 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 613 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 614 | 615 | mnemonist@0.38.3: 616 | version "0.38.3" 617 | resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d" 618 | integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw== 619 | dependencies: 620 | obliterator "^1.6.1" 621 | 622 | obliterator@^1.6.1: 623 | version "1.6.1" 624 | resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3" 625 | integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig== 626 | 627 | serverless-iam-roles-per-function@^3.2.0: 628 | version "3.2.0" 629 | resolved "https://registry.yarnpkg.com/serverless-iam-roles-per-function/-/serverless-iam-roles-per-function-3.2.0.tgz#8bb5f68e73f391ac8ff9809b8e7726e5bafba4c4" 630 | integrity sha512-AXmxACHEUsDcFDcv8QNwDgn2L0brRJ7pz/phD3lFB/wQ3TtPJkorC+J7PxgFQbaWIQk15EIlU83BtKXeQoPTAg== 631 | dependencies: 632 | lodash "^4.17.20" 633 | 634 | tslib@^1.11.1: 635 | version "1.14.1" 636 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 637 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 638 | 639 | tslib@^2.0.0: 640 | version "2.3.0" 641 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" 642 | integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== 643 | 644 | uuid@^8.3.2: 645 | version "8.3.2" 646 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 647 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 648 | --------------------------------------------------------------------------------