├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── LICENSE.md ├── NOTICE.md ├── README.md ├── dynamodb-lob-template.yaml ├── item-splitting ├── read │ └── index.js ├── tests │ ├── package-lock.json │ ├── package.json │ ├── read.test.js │ └── write.test.js └── write │ └── index.js ├── s3 ├── read │ └── index.js └── write │ └── index.js ├── sample-event.json ├── snappy ├── read │ ├── index.js │ ├── package-lock.json │ └── package.json └── write │ ├── index.js │ ├── package-lock.json │ └── package.json ├── unencoded └── write │ ├── index.js │ └── package.json └── zlib ├── read ├── index.js ├── package-lock.json └── package.json └── write ├── index.js ├── package-lock.json └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | samconfig.toml 2 | node_modules 3 | .aws-sam -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing Guidelines 2 | 3 | Thank you for your interest in contributing to our project. Whether it's a bug report, new feature, correction, or additional 4 | documentation, we greatly value feedback and contributions from our community. 5 | 6 | Please read through this document before submitting any issues or pull requests to ensure we have all the necessary 7 | information to effectively respond to your bug report or contribution. 8 | 9 | 10 | ## Reporting Bugs/Feature Requests 11 | 12 | We welcome you to use the GitHub issue tracker to report bugs or suggest features. 13 | 14 | When filing an issue, please check existing open, or recently closed, issues to make sure somebody else hasn't already 15 | reported the issue. Please try to include as much information as you can. Details like these are incredibly useful: 16 | 17 | * A reproducible test case or series of steps 18 | * The version of our code being used 19 | * Any modifications you've made relevant to the bug 20 | * Anything unusual about your environment or deployment 21 | 22 | 23 | ## Contributing via Pull Requests 24 | Contributions via pull requests are much appreciated. Before sending us a pull request, please ensure that: 25 | 26 | 1. You are working against the latest source on the *main* branch. 27 | 2. You check existing open, and recently merged, pull requests to make sure someone else hasn't addressed the problem already. 28 | 3. You open an issue to discuss any significant work - we would hate for your time to be wasted. 29 | 30 | To send us a pull request, please: 31 | 32 | 1. Fork the repository. 33 | 2. Modify the source; please focus on the specific change you are contributing. If you also reformat all the code, it will be hard for us to focus on your change. 34 | 3. Ensure local tests pass. 35 | 4. Commit to your fork using clear commit messages. 36 | 5. Send us a pull request, answering any default questions in the pull request interface. 37 | 6. Pay attention to any automated CI failures reported in the pull request, and stay involved in the conversation. 38 | 39 | GitHub provides additional document on [forking a repository](https://help.github.com/articles/fork-a-repo/) and 40 | [creating a pull request](https://help.github.com/articles/creating-a-pull-request/). 41 | 42 | 43 | ## Finding contributions to work on 44 | Looking at the existing issues is a great way to find something to contribute on. As our projects, by default, use the default GitHub issue labels (enhancement/bug/duplicate/help wanted/invalid/question/wontfix), looking at any 'help wanted' issues is a great place to start. 45 | 46 | 47 | ## Code of Conduct 48 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 49 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 50 | opensource-codeofconduct@amazon.com with any additional questions or comments. 51 | 52 | 53 | ## Security issue notifications 54 | If you discover a potential security issue in this project we ask that you notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/). Please do **not** create a public github issue. 55 | 56 | 57 | ## Licensing 58 | 59 | See the [LICENSE](LICENSE) file for our project's licensing. We will ask you to confirm the licensing of your contribution. 60 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 10 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 11 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 12 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | 16 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this 4 | software and associated documentation files (the "Software"), to deal in the Software 5 | without restriction, including without limitation the rights to use, copy, modify, 6 | merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 7 | permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 10 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 11 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 12 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 13 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 14 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | -------------------------------------------------------------------------------- /NOTICE.md: -------------------------------------------------------------------------------- 1 | \*\* Snappy; version Latest -- https://github.com/kesla/node-snappy 2 | Copyright (c) Björklund David 3 | 4 | This software is released under the MIT license: 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in 14 | all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DynamoDB Large Object Storage Examples 2 | 3 | This repository contains example patterns for storing large objects with DynamoDB. The `dynamodb-lob-template.yaml` SAM template can be used to provision the example Node.JS AWS Lambda functions into your AWS accounts: 4 | 5 | ``` 6 | sam build --use-container -t dynamodb-lob-template.yaml 7 | sam deploy --guided 8 | ``` 9 | 10 | An example payload is provided in sample-event.json. This example contains a large (>400KB) string property within it. As this property is larger than the current DynamoDB max item size of 400KB, alternative approaches must be taken to store the object in DynamoDB. 11 | 12 | 1. Unencoded - This function takes the raw string and attempts to read it to DynamoDB. As the raw string is greater than 400KB, the write fails. 13 | 14 | 2. zlib - This uses the Node.JS standard zlib library to gzip the string into a binary object. This binary object is then written to DynamoDB. There is also a corresponding read function that shows how to uncompress this object back into the original string. 15 | 16 | 3. Snappy - This example uses the snappyjs implementation of Google's Snappy compression algorithm. The resulting binary object is then written to DynamoDB. There is also a corresponding read function that shows how to uncompress this object back into the original string. 17 | 18 | 4. S3 - This example shows how to store the large object "off row" in Amazon S3. The reading code returns a pre-signed URL to the caller, reducing bandwidth requirements for transferring the object between layers of the stack. 19 | 20 | 5. Item-Splitting - This example splits the large object into multiple items in DynamoDB with the reading code retrieving all parts of the large object using the DynamoDB partition key. 21 | -------------------------------------------------------------------------------- /dynamodb-lob-template.yaml: -------------------------------------------------------------------------------- 1 | ## Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | ## SPDX-License-Identifier: MIT-0 3 | --- 4 | Transform: AWS::Serverless-2016-10-31 5 | 6 | Resources: 7 | WidgetsDynamoDBTable: 8 | Type: AWS::DynamoDB::Table 9 | Properties: 10 | BillingMode: "PAY_PER_REQUEST" 11 | ContributorInsightsSpecification: 12 | Enabled: true 13 | AttributeDefinitions: 14 | - AttributeName: "sales_order_id" 15 | AttributeType: "S" 16 | - AttributeName: "part" 17 | AttributeType: "S" 18 | KeySchema: 19 | - AttributeName: "sales_order_id" 20 | KeyType: "HASH" 21 | - AttributeName: "part" 22 | KeyType: "RANGE" 23 | PointInTimeRecoverySpecification: 24 | PointInTimeRecoveryEnabled: true 25 | SSESpecification: 26 | SSEEnabled: true 27 | SSEType: "KMS" 28 | TableName: !Join ["-", [!Ref AWS::StackName, "SalesOrder"]] 29 | 30 | OffRowStorageBucket: 31 | Type: AWS::S3::Bucket 32 | Properties: 33 | BucketEncryption: 34 | ServerSideEncryptionConfiguration: 35 | - BucketKeyEnabled: true 36 | PublicAccessBlockConfiguration: 37 | BlockPublicAcls: true 38 | BlockPublicPolicy: true 39 | IgnorePublicAcls: true 40 | RestrictPublicBuckets: true 41 | 42 | LambdaItemSplittingReadRole: 43 | Type: AWS::IAM::Role 44 | Properties: 45 | AssumeRolePolicyDocument: 46 | Version: "2012-10-17" 47 | Statement: 48 | - Effect: Allow 49 | Principal: 50 | Service: lambda.amazonaws.com 51 | Action: sts:AssumeRole 52 | Path: / 53 | ManagedPolicyArns: 54 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 55 | Policies: 56 | - PolicyName: ddb 57 | PolicyDocument: 58 | Version: "2012-10-17" 59 | Statement: 60 | - Effect: Allow 61 | Action: 62 | - "dynamodb:GetItem" 63 | - "dynamodb:Query" 64 | - "dynamodb:DescribeTable" 65 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 66 | - PolicyName: logs 67 | PolicyDocument: 68 | Version: "2012-10-17" 69 | Statement: 70 | - Effect: "Allow" 71 | Action: 72 | - "logs:CreateLogGroup" 73 | - "logs:CreateLogStream" 74 | - "logs:PutLogEvents" 75 | - "logs:DescribeLogStreams" 76 | Resource: "arn:aws:logs:*:*:*" 77 | 78 | LambdaItemSplittingWriteRole: 79 | Type: AWS::IAM::Role 80 | Properties: 81 | AssumeRolePolicyDocument: 82 | Version: "2012-10-17" 83 | Statement: 84 | - Effect: Allow 85 | Principal: 86 | Service: lambda.amazonaws.com 87 | Action: sts:AssumeRole 88 | Path: / 89 | ManagedPolicyArns: 90 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 91 | Policies: 92 | - PolicyName: ddb 93 | PolicyDocument: 94 | Version: "2012-10-17" 95 | Statement: 96 | - Effect: Allow 97 | Action: 98 | - "dynamodb:PutItem" 99 | - "dynamodb:DescribeTable" 100 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 101 | - PolicyName: s3 102 | PolicyDocument: 103 | Version: "2012-10-17" 104 | Statement: 105 | - Effect: Allow 106 | Action: 107 | - "s3:GetObject" 108 | - "s3:GetSignedUrl" 109 | - "s3:PutObject" 110 | Resource: !Join ["", [!GetAtt OffRowStorageBucket.Arn, "/*"]] 111 | - Effect: Allow 112 | Action: 113 | - "s3:ListBucket" 114 | Resource: !GetAtt OffRowStorageBucket.Arn 115 | - PolicyName: logs 116 | PolicyDocument: 117 | Version: "2012-10-17" 118 | Statement: 119 | - Effect: "Allow" 120 | Action: 121 | - "logs:CreateLogGroup" 122 | - "logs:CreateLogStream" 123 | - "logs:PutLogEvents" 124 | - "logs:DescribeLogStreams" 125 | Resource: "arn:aws:logs:*:*:*" 126 | 127 | LambdaS3ReadRole: 128 | Type: AWS::IAM::Role 129 | Properties: 130 | AssumeRolePolicyDocument: 131 | Version: "2012-10-17" 132 | Statement: 133 | - Effect: Allow 134 | Principal: 135 | Service: lambda.amazonaws.com 136 | Action: sts:AssumeRole 137 | Path: / 138 | ManagedPolicyArns: 139 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 140 | Policies: 141 | - PolicyName: ddb 142 | PolicyDocument: 143 | Version: "2012-10-17" 144 | Statement: 145 | - Effect: Allow 146 | Action: 147 | - "dynamodb:GetItem" 148 | - "dynamodb:Query" 149 | - "dynamodb:DescribeTable" 150 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 151 | - PolicyName: s3 152 | PolicyDocument: 153 | Version: "2012-10-17" 154 | Statement: 155 | - Effect: Allow 156 | Action: 157 | - "s3:GetObject" 158 | - "s3:GetSignedUrl" 159 | Resource: !Join ["", [!GetAtt OffRowStorageBucket.Arn, "/*"]] 160 | - Effect: Allow 161 | Action: 162 | - "s3:ListBucket" 163 | Resource: !GetAtt OffRowStorageBucket.Arn 164 | - PolicyName: logs 165 | PolicyDocument: 166 | Version: "2012-10-17" 167 | Statement: 168 | - Effect: "Allow" 169 | Action: 170 | - "logs:CreateLogGroup" 171 | - "logs:CreateLogStream" 172 | - "logs:PutLogEvents" 173 | - "logs:DescribeLogStreams" 174 | Resource: "arn:aws:logs:*:*:*" 175 | 176 | LambdaS3WriteRole: 177 | Type: AWS::IAM::Role 178 | Properties: 179 | AssumeRolePolicyDocument: 180 | Version: "2012-10-17" 181 | Statement: 182 | - Effect: Allow 183 | Principal: 184 | Service: lambda.amazonaws.com 185 | Action: sts:AssumeRole 186 | Path: / 187 | ManagedPolicyArns: 188 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 189 | Policies: 190 | - PolicyName: ddb 191 | PolicyDocument: 192 | Version: "2012-10-17" 193 | Statement: 194 | - Effect: Allow 195 | Action: 196 | - "dynamodb:PutItem" 197 | - "dynamodb:DescribeTable" 198 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 199 | - PolicyName: s3 200 | PolicyDocument: 201 | Version: "2012-10-17" 202 | Statement: 203 | - Effect: Allow 204 | Action: 205 | - "s3:PutObject" 206 | Resource: !Join ["", [!GetAtt OffRowStorageBucket.Arn, "/*"]] 207 | - Effect: Allow 208 | Action: 209 | - "s3:ListBucket" 210 | Resource: !GetAtt OffRowStorageBucket.Arn 211 | - PolicyName: logs 212 | PolicyDocument: 213 | Version: "2012-10-17" 214 | Statement: 215 | - Effect: "Allow" 216 | Action: 217 | - "logs:CreateLogGroup" 218 | - "logs:CreateLogStream" 219 | - "logs:PutLogEvents" 220 | - "logs:DescribeLogStreams" 221 | Resource: "arn:aws:logs:*:*:*" 222 | 223 | LambdaSnappyReadRole: 224 | Type: AWS::IAM::Role 225 | Properties: 226 | AssumeRolePolicyDocument: 227 | Version: "2012-10-17" 228 | Statement: 229 | - Effect: Allow 230 | Principal: 231 | Service: lambda.amazonaws.com 232 | Action: sts:AssumeRole 233 | Path: / 234 | ManagedPolicyArns: 235 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 236 | Policies: 237 | - PolicyName: ddb 238 | PolicyDocument: 239 | Version: "2012-10-17" 240 | Statement: 241 | - Effect: Allow 242 | Action: 243 | - "dynamodb:GetItem" 244 | - "dynamodb:Query" 245 | - "dynamodb:DescribeTable" 246 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 247 | - PolicyName: logs 248 | PolicyDocument: 249 | Version: "2012-10-17" 250 | Statement: 251 | - Effect: "Allow" 252 | Action: 253 | - "logs:CreateLogGroup" 254 | - "logs:CreateLogStream" 255 | - "logs:PutLogEvents" 256 | - "logs:DescribeLogStreams" 257 | Resource: "arn:aws:logs:*:*:*" 258 | 259 | LambdaSnappyWriteRole: 260 | Type: AWS::IAM::Role 261 | Properties: 262 | AssumeRolePolicyDocument: 263 | Version: "2012-10-17" 264 | Statement: 265 | - Effect: Allow 266 | Principal: 267 | Service: lambda.amazonaws.com 268 | Action: sts:AssumeRole 269 | Path: / 270 | ManagedPolicyArns: 271 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 272 | Policies: 273 | - PolicyName: ddb 274 | PolicyDocument: 275 | Version: "2012-10-17" 276 | Statement: 277 | - Effect: Allow 278 | Action: 279 | - "dynamodb:PutItem" 280 | - "dynamodb:DescribeTable" 281 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 282 | - PolicyName: logs 283 | PolicyDocument: 284 | Version: "2012-10-17" 285 | Statement: 286 | - Effect: "Allow" 287 | Action: 288 | - "logs:CreateLogGroup" 289 | - "logs:CreateLogStream" 290 | - "logs:PutLogEvents" 291 | - "logs:DescribeLogStreams" 292 | Resource: "arn:aws:logs:*:*:*" 293 | 294 | LambdaUnencodedWriteRole: 295 | Type: AWS::IAM::Role 296 | Properties: 297 | AssumeRolePolicyDocument: 298 | Version: "2012-10-17" 299 | Statement: 300 | - Effect: Allow 301 | Principal: 302 | Service: lambda.amazonaws.com 303 | Action: sts:AssumeRole 304 | Path: / 305 | ManagedPolicyArns: 306 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 307 | Policies: 308 | - PolicyName: ddb 309 | PolicyDocument: 310 | Version: "2012-10-17" 311 | Statement: 312 | - Effect: Allow 313 | Action: 314 | - "dynamodb:PutItem" 315 | - "dynamodb:DescribeTable" 316 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 317 | - PolicyName: logs 318 | PolicyDocument: 319 | Version: "2012-10-17" 320 | Statement: 321 | - Effect: "Allow" 322 | Action: 323 | - "logs:CreateLogGroup" 324 | - "logs:CreateLogStream" 325 | - "logs:PutLogEvents" 326 | - "logs:DescribeLogStreams" 327 | Resource: "arn:aws:logs:*:*:*" 328 | 329 | LambdaZLIBReadRole: 330 | Type: AWS::IAM::Role 331 | Properties: 332 | AssumeRolePolicyDocument: 333 | Version: "2012-10-17" 334 | Statement: 335 | - Effect: Allow 336 | Principal: 337 | Service: lambda.amazonaws.com 338 | Action: sts:AssumeRole 339 | Path: / 340 | ManagedPolicyArns: 341 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 342 | Policies: 343 | - PolicyName: ddb 344 | PolicyDocument: 345 | Version: "2012-10-17" 346 | Statement: 347 | - Effect: Allow 348 | Action: 349 | - "dynamodb:GetItem" 350 | - "dynamodb:Query" 351 | - "dynamodb:DescribeTable" 352 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 353 | - PolicyName: logs 354 | PolicyDocument: 355 | Version: "2012-10-17" 356 | Statement: 357 | - Effect: "Allow" 358 | Action: 359 | - "logs:CreateLogGroup" 360 | - "logs:CreateLogStream" 361 | - "logs:PutLogEvents" 362 | - "logs:DescribeLogStreams" 363 | Resource: "arn:aws:logs:*:*:*" 364 | 365 | LambdaZLIBWriteRole: 366 | Type: AWS::IAM::Role 367 | Properties: 368 | AssumeRolePolicyDocument: 369 | Version: "2012-10-17" 370 | Statement: 371 | - Effect: Allow 372 | Principal: 373 | Service: lambda.amazonaws.com 374 | Action: sts:AssumeRole 375 | Path: / 376 | ManagedPolicyArns: 377 | - arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess 378 | Policies: 379 | - PolicyName: ddb 380 | PolicyDocument: 381 | Version: "2012-10-17" 382 | Statement: 383 | - Effect: Allow 384 | Action: 385 | - "dynamodb:PutItem" 386 | - "dynamodb:DescribeTable" 387 | Resource: !GetAtt WidgetsDynamoDBTable.Arn 388 | - PolicyName: logs 389 | PolicyDocument: 390 | Version: "2012-10-17" 391 | Statement: 392 | - Effect: "Allow" 393 | Action: 394 | - "logs:CreateLogGroup" 395 | - "logs:CreateLogStream" 396 | - "logs:PutLogEvents" 397 | - "logs:DescribeLogStreams" 398 | Resource: "arn:aws:logs:*:*:*" 399 | 400 | UnencodedWriteFunction: 401 | Type: AWS::Serverless::Function 402 | Properties: 403 | CodeUri: ./unencoded/write 404 | MemorySize: 256 405 | Environment: 406 | Variables: 407 | TABLE_NAME: !Ref WidgetsDynamoDBTable 408 | Handler: index.lambda_handler 409 | Runtime: nodejs14.x 410 | Role: !GetAtt LambdaUnencodedWriteRole.Arn 411 | Timeout: 60 412 | Tracing: Active 413 | 414 | SnappyEncodedWriteFunction: 415 | Type: AWS::Serverless::Function 416 | Properties: 417 | CodeUri: ./snappy/write 418 | MemorySize: 256 419 | Environment: 420 | Variables: 421 | TABLE_NAME: !Ref WidgetsDynamoDBTable 422 | Handler: index.lambda_handler 423 | Runtime: nodejs14.x 424 | Role: !GetAtt LambdaSnappyWriteRole.Arn 425 | Timeout: 60 426 | Tracing: Active 427 | 428 | SnappyEncodedReadFunction: 429 | Type: AWS::Serverless::Function 430 | Properties: 431 | CodeUri: ./snappy/read 432 | MemorySize: 256 433 | Environment: 434 | Variables: 435 | TABLE_NAME: !Ref WidgetsDynamoDBTable 436 | Handler: index.lambda_handler 437 | Runtime: nodejs14.x 438 | Role: !GetAtt LambdaSnappyReadRole.Arn 439 | Timeout: 60 440 | Tracing: Active 441 | 442 | GZipEncodedWriteFunction: 443 | Type: AWS::Serverless::Function 444 | Properties: 445 | CodeUri: ./zlib/write 446 | MemorySize: 256 447 | Environment: 448 | Variables: 449 | TABLE_NAME: !Ref WidgetsDynamoDBTable 450 | Handler: index.lambda_handler 451 | Runtime: nodejs14.x 452 | Role: !GetAtt LambdaZLIBWriteRole.Arn 453 | Timeout: 60 454 | Tracing: Active 455 | 456 | GZipEncodedReadFunction: 457 | Type: AWS::Serverless::Function 458 | Properties: 459 | CodeUri: ./zlib/read 460 | MemorySize: 256 461 | Environment: 462 | Variables: 463 | TABLE_NAME: !Ref WidgetsDynamoDBTable 464 | Handler: index.lambda_handler 465 | Runtime: nodejs14.x 466 | Role: !GetAtt LambdaZLIBReadRole.Arn 467 | Timeout: 60 468 | Tracing: Active 469 | 470 | S3WriteFunction: 471 | Type: AWS::Serverless::Function 472 | Properties: 473 | CodeUri: ./s3/write 474 | MemorySize: 256 475 | Environment: 476 | Variables: 477 | TABLE_NAME: !Ref WidgetsDynamoDBTable 478 | BUCKET_NAME: !Ref OffRowStorageBucket 479 | Handler: index.lambda_handler 480 | Runtime: nodejs14.x 481 | Role: !GetAtt LambdaS3WriteRole.Arn 482 | Timeout: 60 483 | Tracing: Active 484 | 485 | S3ReadFunction: 486 | Type: AWS::Serverless::Function 487 | Properties: 488 | CodeUri: ./s3/read 489 | MemorySize: 256 490 | Environment: 491 | Variables: 492 | TABLE_NAME: !Ref WidgetsDynamoDBTable 493 | Handler: index.lambda_handler 494 | Runtime: nodejs14.x 495 | Role: !GetAtt LambdaS3ReadRole.Arn 496 | Timeout: 60 497 | Tracing: Active 498 | 499 | ShardingWriteFunction: 500 | Type: AWS::Serverless::Function 501 | Properties: 502 | CodeUri: ./item-splitting/write 503 | MemorySize: 256 504 | Environment: 505 | Variables: 506 | TABLE_NAME: !Ref WidgetsDynamoDBTable 507 | Handler: index.lambda_handler 508 | Runtime: nodejs14.x 509 | Role: !GetAtt LambdaItemSplittingWriteRole.Arn 510 | Timeout: 60 511 | Tracing: Active 512 | 513 | ShardingReadFunction: 514 | Type: AWS::Serverless::Function 515 | Properties: 516 | CodeUri: ./item-splitting/read 517 | MemorySize: 256 518 | Environment: 519 | Variables: 520 | TABLE_NAME: !Ref WidgetsDynamoDBTable 521 | Handler: index.lambda_handler 522 | Runtime: nodejs14.x 523 | Role: !GetAtt LambdaItemSplittingReadRole.Arn 524 | Timeout: 60 525 | Tracing: Active 526 | -------------------------------------------------------------------------------- /item-splitting/read/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const ddb = new AWS.DynamoDB.DocumentClient(); 6 | 7 | const queryItems = async (pk) => { 8 | const params = { 9 | TableName: process.env.TABLE_NAME, 10 | KeyConditionExpression: "sales_order_id = :hkey", 11 | ExpressionAttributeValues: { 12 | ":hkey": pk.toString(), 13 | }, 14 | }; 15 | 16 | return ddb.query(params).promise(); 17 | }; 18 | 19 | exports.lambda_handler = async (event, context) => { 20 | const parts = await queryItems(event.id); // Get all parts by partition key 21 | let lob = ""; 22 | parts.Items.forEach(function (element) { 23 | lob += Buffer.from(element.large_object).toString(); // rebuild large string from parts 24 | }); 25 | console.log(lob); 26 | 27 | return lob; 28 | }; 29 | -------------------------------------------------------------------------------- /item-splitting/tests/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "scripts": { 3 | "test": "mocha \"./*.test.js\"" 4 | }, 5 | "devDependencies": { 6 | "chai": "^4.3.6", 7 | "proxyquire": "^2.1.3", 8 | "sinon": "^14.0.0", 9 | "sinon-chai": "^3.7.0" 10 | }, 11 | "dependencies": { 12 | "aws-sdk": "^2.1354.0", 13 | "mocha": "^10.0.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /item-splitting/tests/read.test.js: -------------------------------------------------------------------------------- 1 | const sinon = require("sinon"); 2 | const proxyquire = require("proxyquire").noCallThru(); 3 | const assert = require("assert"); 4 | 5 | describe("DynamoDB Item Splitting Read Tests", function () { 6 | var mockQuery; 7 | var sut; 8 | 9 | before(function () { 10 | mockQuery = sinon.stub(); 11 | 12 | const AWS = { 13 | DynamoDB: { 14 | DocumentClient: sinon.stub().returns({ 15 | query: mockQuery, 16 | }), 17 | }, 18 | }; 19 | 20 | sut = proxyquire("../read/index", { 21 | "aws-sdk": AWS, 22 | }); 23 | }); 24 | 25 | it("Should join even number (2) of equal parts", async function () { 26 | let expected = { 27 | Items: [{ large_object: "abc123" }, { large_object: "def456" }], 28 | }; 29 | mockQuery.withArgs(sinon.match.any).returns({ 30 | promise: () => Promise.resolve(expected), 31 | }); 32 | 33 | const actual = await sut.lambda_handler({ id: "abc123" }); 34 | assert.equal(actual, "abc123def456"); 35 | }); 36 | 37 | it("Should return single part if collection size is 1", async function () { 38 | let expected = { 39 | Items: [{ large_object: "abc123" }], 40 | }; 41 | mockQuery.withArgs(sinon.match.any).returns({ 42 | promise: () => Promise.resolve(expected), 43 | }); 44 | 45 | const actual = await sut.lambda_handler({ id: "abc123" }); 46 | assert.equal(actual, "abc123"); 47 | }); 48 | 49 | it("Should join odd number (3) of equal parts", async function () { 50 | let expected = { 51 | Items: [ 52 | { large_object: "abc123" }, 53 | { large_object: "def456" }, 54 | { large_object: "ghi789" }, 55 | ], 56 | }; 57 | mockQuery.withArgs(sinon.match.any).returns({ 58 | promise: () => Promise.resolve(expected), 59 | }); 60 | 61 | const actual = await sut.lambda_handler({ id: "abc123" }); 62 | assert.equal(actual, "abc123def456ghi789"); 63 | }); 64 | 65 | it("Should return empty string if item collection of zero", async function () { 66 | let expected = { 67 | Items: [], 68 | }; 69 | mockQuery.withArgs(sinon.match.any).returns({ 70 | promise: () => Promise.resolve(expected), 71 | }); 72 | 73 | const actual = await sut.lambda_handler({ id: "abc123" }); 74 | assert.equal(actual, ""); 75 | }); 76 | }); 77 | -------------------------------------------------------------------------------- /item-splitting/tests/write.test.js: -------------------------------------------------------------------------------- 1 | const sinon = require("sinon"); 2 | const proxyquire = require("proxyquire").noCallThru(); 3 | const chai = require("chai"); 4 | const sinonChai = require("sinon-chai"); 5 | const expect = chai.expect; 6 | chai.use(sinonChai); 7 | 8 | describe("DynamoDB Item Splitting Write Tests", function () { 9 | var mockPut; 10 | var sut; 11 | 12 | afterEach(async () => { 13 | sinon.reset(); 14 | }); 15 | 16 | beforeEach(function () { 17 | mockPut = sinon.stub(); 18 | 19 | const AWS = { 20 | DynamoDB: { 21 | DocumentClient: sinon.stub().returns({ 22 | put: mockPut, 23 | }), 24 | }, 25 | }; 26 | 27 | sut = proxyquire("../write/index", { 28 | "aws-sdk": AWS, 29 | }); 30 | }); 31 | 32 | it("Should call put item once for empty large object", async function () { 33 | mockPut.withArgs(sinon.match.any).returns({ 34 | promise: () => Promise.resolve(), 35 | }); 36 | 37 | await sut.lambda_handler({ 38 | id: "abc123", 39 | payload: "", 40 | ddbObjectSize: 6, 41 | }); 42 | expect(mockPut.calledOnce).to.be.true; 43 | }); 44 | 45 | it("Should call put item once for object less than max size", async function () { 46 | mockPut.withArgs(sinon.match.any).returns({ 47 | promise: () => Promise.resolve(), 48 | }); 49 | 50 | await sut.lambda_handler({ 51 | id: "abc123", 52 | payload: "abc", 53 | ddbObjectSize: 6, 54 | }); 55 | expect(mockPut.calledOnce).to.be.true; 56 | }); 57 | 58 | it("Should honour constant max size when not overridden", async function () { 59 | mockPut.withArgs(sinon.match.any).returns({ 60 | promise: () => Promise.resolve(), 61 | }); 62 | 63 | await sut.lambda_handler({ 64 | id: "abc123", 65 | payload: "abc123abc123", 66 | }); 67 | expect(mockPut.calledOnce).to.be.true; 68 | }); 69 | 70 | it("Should call put item twice for object above max size", async function () { 71 | mockPut.withArgs(sinon.match.any).returns({ 72 | promise: () => Promise.resolve(), 73 | }); 74 | 75 | await sut.lambda_handler({ 76 | id: "abc123", 77 | payload: "abc123abc", 78 | ddbObjectSize: 6, 79 | }); 80 | expect(mockPut).callCount(2); 81 | }); 82 | 83 | it("Should call put item thrice for object above max size", async function () { 84 | mockPut.withArgs(sinon.match.any).returns({ 85 | promise: () => Promise.resolve(), 86 | }); 87 | 88 | await sut.lambda_handler({ 89 | id: "abc123", 90 | payload: "abc123abc123", 91 | ddbObjectSize: 6, 92 | }); 93 | expect(mockPut).callCount(3); 94 | }); 95 | }); 96 | -------------------------------------------------------------------------------- /item-splitting/write/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const ddb = new AWS.DynamoDB.DocumentClient(); 6 | let ddbObjectSize = 400 * 1000; 7 | 8 | const putItem = async (pk, sk, payload) => { 9 | const params = { 10 | TableName: process.env.TABLE_NAME, 11 | Item: { 12 | sales_order_id: pk, 13 | part: sk, 14 | large_object: payload, 15 | }, 16 | }; 17 | return ddb.put(params).promise(); 18 | }; 19 | 20 | exports.lambda_handler = async (event, context) => { 21 | const eventBuffer = Buffer.from(JSON.stringify(event.payload)); 22 | ddbObjectSize = event.ddbObjectSize ?? ddbObjectSize; 23 | const eventSize = Buffer.byteLength(eventBuffer); 24 | const sectionsRequired = eventSize / ddbObjectSize; 25 | 26 | for (let i = 0; i < sectionsRequired; i++) { 27 | await putItem( 28 | event.id, // partition key is event id 29 | i.toString(), // sort key is item part 30 | eventBuffer.slice(i * ddbObjectSize, i * ddbObjectSize + ddbObjectSize) 31 | ); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /s3/read/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const ddb = new AWS.DynamoDB.DocumentClient(); 6 | const s3 = new AWS.S3(); 7 | 8 | const getItem = async (pk) => { 9 | const params = { 10 | TableName: process.env.TABLE_NAME, 11 | Key: { 12 | sales_order_id: pk, 13 | part: "0", 14 | }, 15 | }; 16 | 17 | return ddb.get(params).promise(); 18 | }; 19 | 20 | exports.lambda_handler = async (event, context) => { 21 | // Get metadata from DynamoDB 22 | const item = await getItem(event.id); 23 | const urlParts = item.Item.large_object.split("/"); 24 | const params = { Bucket: urlParts[2], Key: urlParts[3] }; 25 | 26 | // Get Presigned URL to allow caller to retrieve large object from S3 27 | const url = s3.getSignedUrl("getObject", params); 28 | item.Item.large_object = url; 29 | console.log(item); 30 | 31 | return item; 32 | }; 33 | -------------------------------------------------------------------------------- /s3/write/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const ddb = new AWS.DynamoDB.DocumentClient(); 6 | const s3 = new AWS.S3(); 7 | 8 | const putItem = async (pk, lobPointer) => { 9 | const params = { 10 | TableName: process.env.TABLE_NAME, 11 | Item: { 12 | sales_order_id: pk, 13 | part: "0", 14 | large_object: lobPointer, 15 | }, 16 | }; 17 | 18 | return ddb.put(params).promise(); 19 | }; 20 | 21 | const storeLob = async (pk, lob) => { 22 | const params = { 23 | Bucket: process.env.BUCKET_NAME, 24 | Key: pk, 25 | Body: JSON.stringify(lob), 26 | }; 27 | 28 | return s3.putObject(params).promise(); 29 | }; 30 | 31 | exports.lambda_handler = async (event, context) => { 32 | // Put large object data in S3 33 | await storeLob(event.id, event.payload); 34 | 35 | // Put metadata with S3 Object Url in DynamoDB 36 | return await putItem( 37 | event.id, 38 | "s3://" + process.env.BUCKET_NAME + "/" + event.id 39 | ); 40 | }; 41 | -------------------------------------------------------------------------------- /snappy/read/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const snappy = require("snappy"); 6 | const ddb = new AWS.DynamoDB.DocumentClient(); 7 | const AWSXRay = require("aws-xray-sdk"); 8 | 9 | const getItem = async (pk, payload) => { 10 | const params = { 11 | TableName: process.env.TABLE_NAME, 12 | Key: { 13 | sales_order_id: pk, 14 | part: "0", 15 | }, 16 | }; 17 | 18 | return ddb.get(params).promise(); 19 | }; 20 | 21 | exports.lambda_handler = async (event, context) => { 22 | const widget = await getItem(event.id); 23 | const segment = AWSXRay.getSegment(); 24 | const subsegment = segment.addNewSubsegment("subseg"); 25 | const uncompressedWidget = await snappy.uncompress(widget.Item.large_object); 26 | subsegment.close(); 27 | 28 | return uncompressedWidget.toString(); 29 | }; 30 | -------------------------------------------------------------------------------- /snappy/read/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "write", 9 | "version": "1.0.0", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4", 13 | "snappy": "^7.0.5" 14 | } 15 | }, 16 | "node_modules/@aws-sdk/service-error-classification": { 17 | "version": "3.40.0", 18 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 19 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==", 20 | "engines": { 21 | "node": ">= 10.0.0" 22 | } 23 | }, 24 | "node_modules/@aws-sdk/types": { 25 | "version": "3.40.0", 26 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 27 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==", 28 | "engines": { 29 | "node": ">= 10.0.0" 30 | } 31 | }, 32 | "node_modules/@napi-rs/snappy-android-arm64": { 33 | "version": "7.0.5", 34 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-android-arm64/-/snappy-android-arm64-7.0.5.tgz", 35 | "integrity": "sha512-11/V8Wg8FwWLI5BF0kzMQ63GTaCuVRMlMbaIBjRyknHE5YILVK1BHvJjunAkPugg86x3MFs1zqrmrLIaH+07pg==", 36 | "cpu": [ 37 | "arm64" 38 | ], 39 | "optional": true, 40 | "os": [ 41 | "android" 42 | ], 43 | "engines": { 44 | "node": ">= 10" 45 | } 46 | }, 47 | "node_modules/@napi-rs/snappy-darwin-arm64": { 48 | "version": "7.0.5", 49 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-arm64/-/snappy-darwin-arm64-7.0.5.tgz", 50 | "integrity": "sha512-R4LJQAg/75FJU1+F3q2RZZT2i4TPtIVpTDReDsLyJGN6/K/SSCk/4gJSLZoxQ0hHMLQLacRQmMPuVqHbOfwSFw==", 51 | "cpu": [ 52 | "arm64" 53 | ], 54 | "optional": true, 55 | "os": [ 56 | "darwin" 57 | ], 58 | "engines": { 59 | "node": ">= 10" 60 | } 61 | }, 62 | "node_modules/@napi-rs/snappy-darwin-x64": { 63 | "version": "7.0.5", 64 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-x64/-/snappy-darwin-x64-7.0.5.tgz", 65 | "integrity": "sha512-aYiz/jtVxo+cpuu6p2/lzrvr2DlUd58auVDHQqIvYXnlmitXMTXqmURuCj6l4OfFxDA8YgzZ6Ftt6BSXdqKOYw==", 66 | "cpu": [ 67 | "x64" 68 | ], 69 | "optional": true, 70 | "os": [ 71 | "darwin" 72 | ], 73 | "engines": { 74 | "node": ">= 10" 75 | } 76 | }, 77 | "node_modules/@napi-rs/snappy-freebsd-x64": { 78 | "version": "7.0.5", 79 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-freebsd-x64/-/snappy-freebsd-x64-7.0.5.tgz", 80 | "integrity": "sha512-q0hIT7UNVvClAp056ObmsuXj34KRNJcYJ7WRBER/kttCembNM+gJnJRIUcA6QxVZd/MOjpyHBGKdJLaU36ISoA==", 81 | "cpu": [ 82 | "x64" 83 | ], 84 | "optional": true, 85 | "os": [ 86 | "freebsd" 87 | ], 88 | "engines": { 89 | "node": ">= 10" 90 | } 91 | }, 92 | "node_modules/@napi-rs/snappy-linux-arm-gnueabihf": { 93 | "version": "7.0.5", 94 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm-gnueabihf/-/snappy-linux-arm-gnueabihf-7.0.5.tgz", 95 | "integrity": "sha512-VBK+WyTLYqAVy1QqG1wLnbe6vjacmak1tOsTMlKMN71mZF0WmOdZ/OxTExdTz8WmQMgTpYwX4d9g+ElomaOOLg==", 96 | "cpu": [ 97 | "arm" 98 | ], 99 | "optional": true, 100 | "os": [ 101 | "linux" 102 | ], 103 | "engines": { 104 | "node": ">= 10" 105 | } 106 | }, 107 | "node_modules/@napi-rs/snappy-linux-arm64-gnu": { 108 | "version": "7.0.5", 109 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-gnu/-/snappy-linux-arm64-gnu-7.0.5.tgz", 110 | "integrity": "sha512-+E7wwIuaVV85svBFTwN14Plw+lsTRgbWHfsrLzbMoRv3czj4MTOrISD0TajMALRCiDGWe6RSxLftysR4HYZEbA==", 111 | "cpu": [ 112 | "arm64" 113 | ], 114 | "optional": true, 115 | "os": [ 116 | "linux" 117 | ], 118 | "engines": { 119 | "node": ">= 10" 120 | } 121 | }, 122 | "node_modules/@napi-rs/snappy-linux-arm64-musl": { 123 | "version": "7.0.5", 124 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-musl/-/snappy-linux-arm64-musl-7.0.5.tgz", 125 | "integrity": "sha512-QeLjvagI+6ywEHNmRiP3Qz2j+RRupCWHA8cmmaEh1pHnlV/NxetAE1agRdWje7yO+iXQiUVbZ8SKibOZ4kRn3g==", 126 | "cpu": [ 127 | "arm64" 128 | ], 129 | "optional": true, 130 | "os": [ 131 | "linux" 132 | ], 133 | "engines": { 134 | "node": ">= 10" 135 | } 136 | }, 137 | "node_modules/@napi-rs/snappy-linux-x64-gnu": { 138 | "version": "7.0.5", 139 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-gnu/-/snappy-linux-x64-gnu-7.0.5.tgz", 140 | "integrity": "sha512-G1Mq5JOfWG+oWOZScW8R0HtdZ/Hcq3Lm+qOYEbCqKGYV7mTdclvWY4vzOIl5lGWp3Dmo9/rn7pK/Kp4ormw0FA==", 141 | "cpu": [ 142 | "x64" 143 | ], 144 | "optional": true, 145 | "os": [ 146 | "linux" 147 | ], 148 | "engines": { 149 | "node": ">= 10" 150 | } 151 | }, 152 | "node_modules/@napi-rs/snappy-linux-x64-musl": { 153 | "version": "7.0.5", 154 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-musl/-/snappy-linux-x64-musl-7.0.5.tgz", 155 | "integrity": "sha512-THcusrpjr5MB2PXKdFKiD/ZA811Wn7eJksuQbVRUr/ZjbOOxpni/VLHq4uh42IWqofbszHDVUYZeLEgCbcNItg==", 156 | "cpu": [ 157 | "x64" 158 | ], 159 | "optional": true, 160 | "os": [ 161 | "linux" 162 | ], 163 | "engines": { 164 | "node": ">= 10" 165 | } 166 | }, 167 | "node_modules/@napi-rs/snappy-win32-arm64-msvc": { 168 | "version": "7.0.5", 169 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-arm64-msvc/-/snappy-win32-arm64-msvc-7.0.5.tgz", 170 | "integrity": "sha512-5tm8t7E+GhqDf+6vsnsKdZb6twspab5SH1SzVzZtFRltB55FtwAcXSWi9+kS+Md+Jjl4Va4TfrhQ3B46yFgSfQ==", 171 | "cpu": [ 172 | "arm64" 173 | ], 174 | "optional": true, 175 | "os": [ 176 | "win32" 177 | ], 178 | "engines": { 179 | "node": ">= 10" 180 | } 181 | }, 182 | "node_modules/@napi-rs/snappy-win32-ia32-msvc": { 183 | "version": "7.0.5", 184 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-ia32-msvc/-/snappy-win32-ia32-msvc-7.0.5.tgz", 185 | "integrity": "sha512-s0H7fD1fDrKPoS81MNXSrs7lvrq71E7gi3OuWiIj23XNUxsMI5p0P8OaRuu95Bns8WLYw5ouSKUtwIgxZAD4+g==", 186 | "cpu": [ 187 | "ia32" 188 | ], 189 | "optional": true, 190 | "os": [ 191 | "win32" 192 | ], 193 | "engines": { 194 | "node": ">= 10" 195 | } 196 | }, 197 | "node_modules/@napi-rs/snappy-win32-x64-msvc": { 198 | "version": "7.0.5", 199 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-x64-msvc/-/snappy-win32-x64-msvc-7.0.5.tgz", 200 | "integrity": "sha512-rRjNz3OXu6093V4B0IGAd7ANKYGZ5HfG057xew1/NDZl3DTMcWF/Wd2OtMl16Lju2D17CVLxq3NkjTqKZ/XGvw==", 201 | "cpu": [ 202 | "x64" 203 | ], 204 | "optional": true, 205 | "os": [ 206 | "win32" 207 | ], 208 | "engines": { 209 | "node": ">= 10" 210 | } 211 | }, 212 | "node_modules/@napi-rs/triples": { 213 | "version": "1.0.3", 214 | "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", 215 | "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==" 216 | }, 217 | "node_modules/@node-rs/helper": { 218 | "version": "1.2.1", 219 | "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", 220 | "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", 221 | "dependencies": { 222 | "@napi-rs/triples": "^1.0.3" 223 | } 224 | }, 225 | "node_modules/@types/body-parser": { 226 | "version": "1.19.2", 227 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 228 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 229 | "dependencies": { 230 | "@types/connect": "*", 231 | "@types/node": "*" 232 | } 233 | }, 234 | "node_modules/@types/cls-hooked": { 235 | "version": "4.3.3", 236 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 237 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 238 | "dependencies": { 239 | "@types/node": "*" 240 | } 241 | }, 242 | "node_modules/@types/connect": { 243 | "version": "3.4.35", 244 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 245 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 246 | "dependencies": { 247 | "@types/node": "*" 248 | } 249 | }, 250 | "node_modules/@types/express": { 251 | "version": "4.17.13", 252 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 253 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 254 | "dependencies": { 255 | "@types/body-parser": "*", 256 | "@types/express-serve-static-core": "^4.17.18", 257 | "@types/qs": "*", 258 | "@types/serve-static": "*" 259 | } 260 | }, 261 | "node_modules/@types/express-serve-static-core": { 262 | "version": "4.17.27", 263 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz", 264 | "integrity": "sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==", 265 | "dependencies": { 266 | "@types/node": "*", 267 | "@types/qs": "*", 268 | "@types/range-parser": "*" 269 | } 270 | }, 271 | "node_modules/@types/mime": { 272 | "version": "1.3.2", 273 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 274 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 275 | }, 276 | "node_modules/@types/mysql": { 277 | "version": "2.15.20", 278 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.20.tgz", 279 | "integrity": "sha512-QyOqSRhe540jmdg3AqiS8AbCDvSwDgxAJcsBkMqDQw0y87OQla7y8RFW/MYcUUHBFi1AZrRYkjzSAL/bfCKMuQ==", 280 | "dependencies": { 281 | "@types/node": "*" 282 | } 283 | }, 284 | "node_modules/@types/node": { 285 | "version": "17.0.8", 286 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", 287 | "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" 288 | }, 289 | "node_modules/@types/pg": { 290 | "version": "8.6.3", 291 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.3.tgz", 292 | "integrity": "sha512-P0RrXJcw1hPS+KF0nBCC3FEEdZBfRsHbYtAzbY2QTc0gC4jFQvjQxIKXs0X/NgPhPI4DbAzdeW7WMCjaWjT7Pg==", 293 | "dependencies": { 294 | "@types/node": "*", 295 | "pg-protocol": "*", 296 | "pg-types": "^2.2.0" 297 | } 298 | }, 299 | "node_modules/@types/qs": { 300 | "version": "6.9.7", 301 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 302 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 303 | }, 304 | "node_modules/@types/range-parser": { 305 | "version": "1.2.4", 306 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 307 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 308 | }, 309 | "node_modules/@types/serve-static": { 310 | "version": "1.13.10", 311 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 312 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 313 | "dependencies": { 314 | "@types/mime": "^1", 315 | "@types/node": "*" 316 | } 317 | }, 318 | "node_modules/async-hook-jl": { 319 | "version": "1.7.6", 320 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 321 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 322 | "dependencies": { 323 | "stack-chain": "^1.3.7" 324 | }, 325 | "engines": { 326 | "node": "^4.7 || >=6.9 || >=7.3" 327 | } 328 | }, 329 | "node_modules/atomic-batcher": { 330 | "version": "1.0.2", 331 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 332 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 333 | }, 334 | "node_modules/aws-xray-sdk": { 335 | "version": "3.3.4", 336 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 337 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 338 | "dependencies": { 339 | "aws-xray-sdk-core": "3.3.4", 340 | "aws-xray-sdk-express": "3.3.4", 341 | "aws-xray-sdk-mysql": "3.3.4", 342 | "aws-xray-sdk-postgres": "3.3.4" 343 | }, 344 | "engines": { 345 | "node": ">= 10.x" 346 | } 347 | }, 348 | "node_modules/aws-xray-sdk-core": { 349 | "version": "3.3.4", 350 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 351 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 352 | "dependencies": { 353 | "@aws-sdk/service-error-classification": "^3.4.1", 354 | "@aws-sdk/types": "^3.4.1", 355 | "@types/cls-hooked": "^4.3.3", 356 | "atomic-batcher": "^1.0.2", 357 | "cls-hooked": "^4.2.2", 358 | "semver": "^5.3.0" 359 | }, 360 | "engines": { 361 | "node": ">= 10.x" 362 | } 363 | }, 364 | "node_modules/aws-xray-sdk-express": { 365 | "version": "3.3.4", 366 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 367 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 368 | "dependencies": { 369 | "@types/express": "*" 370 | }, 371 | "engines": { 372 | "node": ">= 10.x" 373 | }, 374 | "peerDependencies": { 375 | "aws-xray-sdk-core": "^3.3.4" 376 | } 377 | }, 378 | "node_modules/aws-xray-sdk-mysql": { 379 | "version": "3.3.4", 380 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 381 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 382 | "dependencies": { 383 | "@types/mysql": "*" 384 | }, 385 | "engines": { 386 | "node": ">= 10.x" 387 | }, 388 | "peerDependencies": { 389 | "aws-xray-sdk-core": "^3.3.4" 390 | } 391 | }, 392 | "node_modules/aws-xray-sdk-postgres": { 393 | "version": "3.3.4", 394 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 395 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 396 | "dependencies": { 397 | "@types/pg": "*" 398 | }, 399 | "engines": { 400 | "node": ">= 10.x" 401 | }, 402 | "peerDependencies": { 403 | "aws-xray-sdk-core": "^3.3.4" 404 | } 405 | }, 406 | "node_modules/cls-hooked": { 407 | "version": "4.2.2", 408 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 409 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 410 | "dependencies": { 411 | "async-hook-jl": "^1.7.6", 412 | "emitter-listener": "^1.0.1", 413 | "semver": "^5.4.1" 414 | }, 415 | "engines": { 416 | "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" 417 | } 418 | }, 419 | "node_modules/emitter-listener": { 420 | "version": "1.1.2", 421 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 422 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 423 | "dependencies": { 424 | "shimmer": "^1.2.0" 425 | } 426 | }, 427 | "node_modules/pg-int8": { 428 | "version": "1.0.1", 429 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 430 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 431 | "engines": { 432 | "node": ">=4.0.0" 433 | } 434 | }, 435 | "node_modules/pg-protocol": { 436 | "version": "1.5.0", 437 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 438 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 439 | }, 440 | "node_modules/pg-types": { 441 | "version": "2.2.0", 442 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 443 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 444 | "dependencies": { 445 | "pg-int8": "1.0.1", 446 | "postgres-array": "~2.0.0", 447 | "postgres-bytea": "~1.0.0", 448 | "postgres-date": "~1.0.4", 449 | "postgres-interval": "^1.1.0" 450 | }, 451 | "engines": { 452 | "node": ">=4" 453 | } 454 | }, 455 | "node_modules/postgres-array": { 456 | "version": "2.0.0", 457 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 458 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 459 | "engines": { 460 | "node": ">=4" 461 | } 462 | }, 463 | "node_modules/postgres-bytea": { 464 | "version": "1.0.0", 465 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 466 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", 467 | "engines": { 468 | "node": ">=0.10.0" 469 | } 470 | }, 471 | "node_modules/postgres-date": { 472 | "version": "1.0.7", 473 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 474 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 475 | "engines": { 476 | "node": ">=0.10.0" 477 | } 478 | }, 479 | "node_modules/postgres-interval": { 480 | "version": "1.2.0", 481 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 482 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 483 | "dependencies": { 484 | "xtend": "^4.0.0" 485 | }, 486 | "engines": { 487 | "node": ">=0.10.0" 488 | } 489 | }, 490 | "node_modules/semver": { 491 | "version": "5.7.1", 492 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 493 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 494 | "bin": { 495 | "semver": "bin/semver" 496 | } 497 | }, 498 | "node_modules/shimmer": { 499 | "version": "1.2.1", 500 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 501 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 502 | }, 503 | "node_modules/snappy": { 504 | "version": "7.0.5", 505 | "resolved": "https://registry.npmjs.org/snappy/-/snappy-7.0.5.tgz", 506 | "integrity": "sha512-T2j48ZdQQd2MaP4X8GGtAnzyo3LnBt6Kj6kxmoOTxG59UwxwC2Az5pa338td7gSTT8H0J4fv8Jgi0edWAGkgeg==", 507 | "dependencies": { 508 | "@node-rs/helper": "^1.2.1" 509 | }, 510 | "engines": { 511 | "node": ">= 10" 512 | }, 513 | "funding": { 514 | "type": "github", 515 | "url": "https://github.com/sponsors/Brooooooklyn" 516 | }, 517 | "optionalDependencies": { 518 | "@napi-rs/snappy-android-arm64": "7.0.5", 519 | "@napi-rs/snappy-darwin-arm64": "7.0.5", 520 | "@napi-rs/snappy-darwin-x64": "7.0.5", 521 | "@napi-rs/snappy-freebsd-x64": "7.0.5", 522 | "@napi-rs/snappy-linux-arm-gnueabihf": "7.0.5", 523 | "@napi-rs/snappy-linux-arm64-gnu": "7.0.5", 524 | "@napi-rs/snappy-linux-arm64-musl": "7.0.5", 525 | "@napi-rs/snappy-linux-x64-gnu": "7.0.5", 526 | "@napi-rs/snappy-linux-x64-musl": "7.0.5", 527 | "@napi-rs/snappy-win32-arm64-msvc": "7.0.5", 528 | "@napi-rs/snappy-win32-ia32-msvc": "7.0.5", 529 | "@napi-rs/snappy-win32-x64-msvc": "7.0.5" 530 | } 531 | }, 532 | "node_modules/stack-chain": { 533 | "version": "1.3.7", 534 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 535 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 536 | }, 537 | "node_modules/xtend": { 538 | "version": "4.0.2", 539 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 540 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 541 | "engines": { 542 | "node": ">=0.4" 543 | } 544 | } 545 | }, 546 | "dependencies": { 547 | "@aws-sdk/service-error-classification": { 548 | "version": "3.40.0", 549 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 550 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==" 551 | }, 552 | "@aws-sdk/types": { 553 | "version": "3.40.0", 554 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 555 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==" 556 | }, 557 | "@napi-rs/snappy-android-arm64": { 558 | "version": "7.0.5", 559 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-android-arm64/-/snappy-android-arm64-7.0.5.tgz", 560 | "integrity": "sha512-11/V8Wg8FwWLI5BF0kzMQ63GTaCuVRMlMbaIBjRyknHE5YILVK1BHvJjunAkPugg86x3MFs1zqrmrLIaH+07pg==", 561 | "optional": true 562 | }, 563 | "@napi-rs/snappy-darwin-arm64": { 564 | "version": "7.0.5", 565 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-arm64/-/snappy-darwin-arm64-7.0.5.tgz", 566 | "integrity": "sha512-R4LJQAg/75FJU1+F3q2RZZT2i4TPtIVpTDReDsLyJGN6/K/SSCk/4gJSLZoxQ0hHMLQLacRQmMPuVqHbOfwSFw==", 567 | "optional": true 568 | }, 569 | "@napi-rs/snappy-darwin-x64": { 570 | "version": "7.0.5", 571 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-x64/-/snappy-darwin-x64-7.0.5.tgz", 572 | "integrity": "sha512-aYiz/jtVxo+cpuu6p2/lzrvr2DlUd58auVDHQqIvYXnlmitXMTXqmURuCj6l4OfFxDA8YgzZ6Ftt6BSXdqKOYw==", 573 | "optional": true 574 | }, 575 | "@napi-rs/snappy-freebsd-x64": { 576 | "version": "7.0.5", 577 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-freebsd-x64/-/snappy-freebsd-x64-7.0.5.tgz", 578 | "integrity": "sha512-q0hIT7UNVvClAp056ObmsuXj34KRNJcYJ7WRBER/kttCembNM+gJnJRIUcA6QxVZd/MOjpyHBGKdJLaU36ISoA==", 579 | "optional": true 580 | }, 581 | "@napi-rs/snappy-linux-arm-gnueabihf": { 582 | "version": "7.0.5", 583 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm-gnueabihf/-/snappy-linux-arm-gnueabihf-7.0.5.tgz", 584 | "integrity": "sha512-VBK+WyTLYqAVy1QqG1wLnbe6vjacmak1tOsTMlKMN71mZF0WmOdZ/OxTExdTz8WmQMgTpYwX4d9g+ElomaOOLg==", 585 | "optional": true 586 | }, 587 | "@napi-rs/snappy-linux-arm64-gnu": { 588 | "version": "7.0.5", 589 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-gnu/-/snappy-linux-arm64-gnu-7.0.5.tgz", 590 | "integrity": "sha512-+E7wwIuaVV85svBFTwN14Plw+lsTRgbWHfsrLzbMoRv3czj4MTOrISD0TajMALRCiDGWe6RSxLftysR4HYZEbA==", 591 | "optional": true 592 | }, 593 | "@napi-rs/snappy-linux-arm64-musl": { 594 | "version": "7.0.5", 595 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-musl/-/snappy-linux-arm64-musl-7.0.5.tgz", 596 | "integrity": "sha512-QeLjvagI+6ywEHNmRiP3Qz2j+RRupCWHA8cmmaEh1pHnlV/NxetAE1agRdWje7yO+iXQiUVbZ8SKibOZ4kRn3g==", 597 | "optional": true 598 | }, 599 | "@napi-rs/snappy-linux-x64-gnu": { 600 | "version": "7.0.5", 601 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-gnu/-/snappy-linux-x64-gnu-7.0.5.tgz", 602 | "integrity": "sha512-G1Mq5JOfWG+oWOZScW8R0HtdZ/Hcq3Lm+qOYEbCqKGYV7mTdclvWY4vzOIl5lGWp3Dmo9/rn7pK/Kp4ormw0FA==", 603 | "optional": true 604 | }, 605 | "@napi-rs/snappy-linux-x64-musl": { 606 | "version": "7.0.5", 607 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-musl/-/snappy-linux-x64-musl-7.0.5.tgz", 608 | "integrity": "sha512-THcusrpjr5MB2PXKdFKiD/ZA811Wn7eJksuQbVRUr/ZjbOOxpni/VLHq4uh42IWqofbszHDVUYZeLEgCbcNItg==", 609 | "optional": true 610 | }, 611 | "@napi-rs/snappy-win32-arm64-msvc": { 612 | "version": "7.0.5", 613 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-arm64-msvc/-/snappy-win32-arm64-msvc-7.0.5.tgz", 614 | "integrity": "sha512-5tm8t7E+GhqDf+6vsnsKdZb6twspab5SH1SzVzZtFRltB55FtwAcXSWi9+kS+Md+Jjl4Va4TfrhQ3B46yFgSfQ==", 615 | "optional": true 616 | }, 617 | "@napi-rs/snappy-win32-ia32-msvc": { 618 | "version": "7.0.5", 619 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-ia32-msvc/-/snappy-win32-ia32-msvc-7.0.5.tgz", 620 | "integrity": "sha512-s0H7fD1fDrKPoS81MNXSrs7lvrq71E7gi3OuWiIj23XNUxsMI5p0P8OaRuu95Bns8WLYw5ouSKUtwIgxZAD4+g==", 621 | "optional": true 622 | }, 623 | "@napi-rs/snappy-win32-x64-msvc": { 624 | "version": "7.0.5", 625 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-x64-msvc/-/snappy-win32-x64-msvc-7.0.5.tgz", 626 | "integrity": "sha512-rRjNz3OXu6093V4B0IGAd7ANKYGZ5HfG057xew1/NDZl3DTMcWF/Wd2OtMl16Lju2D17CVLxq3NkjTqKZ/XGvw==", 627 | "optional": true 628 | }, 629 | "@napi-rs/triples": { 630 | "version": "1.0.3", 631 | "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", 632 | "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==" 633 | }, 634 | "@node-rs/helper": { 635 | "version": "1.2.1", 636 | "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", 637 | "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", 638 | "requires": { 639 | "@napi-rs/triples": "^1.0.3" 640 | } 641 | }, 642 | "@types/body-parser": { 643 | "version": "1.19.2", 644 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 645 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 646 | "requires": { 647 | "@types/connect": "*", 648 | "@types/node": "*" 649 | } 650 | }, 651 | "@types/cls-hooked": { 652 | "version": "4.3.3", 653 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 654 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 655 | "requires": { 656 | "@types/node": "*" 657 | } 658 | }, 659 | "@types/connect": { 660 | "version": "3.4.35", 661 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 662 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 663 | "requires": { 664 | "@types/node": "*" 665 | } 666 | }, 667 | "@types/express": { 668 | "version": "4.17.13", 669 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 670 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 671 | "requires": { 672 | "@types/body-parser": "*", 673 | "@types/express-serve-static-core": "^4.17.18", 674 | "@types/qs": "*", 675 | "@types/serve-static": "*" 676 | } 677 | }, 678 | "@types/express-serve-static-core": { 679 | "version": "4.17.27", 680 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz", 681 | "integrity": "sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==", 682 | "requires": { 683 | "@types/node": "*", 684 | "@types/qs": "*", 685 | "@types/range-parser": "*" 686 | } 687 | }, 688 | "@types/mime": { 689 | "version": "1.3.2", 690 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 691 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 692 | }, 693 | "@types/mysql": { 694 | "version": "2.15.20", 695 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.20.tgz", 696 | "integrity": "sha512-QyOqSRhe540jmdg3AqiS8AbCDvSwDgxAJcsBkMqDQw0y87OQla7y8RFW/MYcUUHBFi1AZrRYkjzSAL/bfCKMuQ==", 697 | "requires": { 698 | "@types/node": "*" 699 | } 700 | }, 701 | "@types/node": { 702 | "version": "17.0.8", 703 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", 704 | "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" 705 | }, 706 | "@types/pg": { 707 | "version": "8.6.3", 708 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.3.tgz", 709 | "integrity": "sha512-P0RrXJcw1hPS+KF0nBCC3FEEdZBfRsHbYtAzbY2QTc0gC4jFQvjQxIKXs0X/NgPhPI4DbAzdeW7WMCjaWjT7Pg==", 710 | "requires": { 711 | "@types/node": "*", 712 | "pg-protocol": "*", 713 | "pg-types": "^2.2.0" 714 | } 715 | }, 716 | "@types/qs": { 717 | "version": "6.9.7", 718 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 719 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 720 | }, 721 | "@types/range-parser": { 722 | "version": "1.2.4", 723 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 724 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 725 | }, 726 | "@types/serve-static": { 727 | "version": "1.13.10", 728 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 729 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 730 | "requires": { 731 | "@types/mime": "^1", 732 | "@types/node": "*" 733 | } 734 | }, 735 | "async-hook-jl": { 736 | "version": "1.7.6", 737 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 738 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 739 | "requires": { 740 | "stack-chain": "^1.3.7" 741 | } 742 | }, 743 | "atomic-batcher": { 744 | "version": "1.0.2", 745 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 746 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 747 | }, 748 | "aws-xray-sdk": { 749 | "version": "3.3.4", 750 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 751 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 752 | "requires": { 753 | "aws-xray-sdk-core": "3.3.4", 754 | "aws-xray-sdk-express": "3.3.4", 755 | "aws-xray-sdk-mysql": "3.3.4", 756 | "aws-xray-sdk-postgres": "3.3.4" 757 | } 758 | }, 759 | "aws-xray-sdk-core": { 760 | "version": "3.3.4", 761 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 762 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 763 | "requires": { 764 | "@aws-sdk/service-error-classification": "^3.4.1", 765 | "@aws-sdk/types": "^3.4.1", 766 | "@types/cls-hooked": "^4.3.3", 767 | "atomic-batcher": "^1.0.2", 768 | "cls-hooked": "^4.2.2", 769 | "semver": "^5.3.0" 770 | } 771 | }, 772 | "aws-xray-sdk-express": { 773 | "version": "3.3.4", 774 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 775 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 776 | "requires": { 777 | "@types/express": "*" 778 | } 779 | }, 780 | "aws-xray-sdk-mysql": { 781 | "version": "3.3.4", 782 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 783 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 784 | "requires": { 785 | "@types/mysql": "*" 786 | } 787 | }, 788 | "aws-xray-sdk-postgres": { 789 | "version": "3.3.4", 790 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 791 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 792 | "requires": { 793 | "@types/pg": "*" 794 | } 795 | }, 796 | "cls-hooked": { 797 | "version": "4.2.2", 798 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 799 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 800 | "requires": { 801 | "async-hook-jl": "^1.7.6", 802 | "emitter-listener": "^1.0.1", 803 | "semver": "^5.4.1" 804 | } 805 | }, 806 | "emitter-listener": { 807 | "version": "1.1.2", 808 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 809 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 810 | "requires": { 811 | "shimmer": "^1.2.0" 812 | } 813 | }, 814 | "pg-int8": { 815 | "version": "1.0.1", 816 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 817 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 818 | }, 819 | "pg-protocol": { 820 | "version": "1.5.0", 821 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 822 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 823 | }, 824 | "pg-types": { 825 | "version": "2.2.0", 826 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 827 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 828 | "requires": { 829 | "pg-int8": "1.0.1", 830 | "postgres-array": "~2.0.0", 831 | "postgres-bytea": "~1.0.0", 832 | "postgres-date": "~1.0.4", 833 | "postgres-interval": "^1.1.0" 834 | } 835 | }, 836 | "postgres-array": { 837 | "version": "2.0.0", 838 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 839 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 840 | }, 841 | "postgres-bytea": { 842 | "version": "1.0.0", 843 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 844 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 845 | }, 846 | "postgres-date": { 847 | "version": "1.0.7", 848 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 849 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 850 | }, 851 | "postgres-interval": { 852 | "version": "1.2.0", 853 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 854 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 855 | "requires": { 856 | "xtend": "^4.0.0" 857 | } 858 | }, 859 | "semver": { 860 | "version": "5.7.1", 861 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 862 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 863 | }, 864 | "shimmer": { 865 | "version": "1.2.1", 866 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 867 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 868 | }, 869 | "snappy": { 870 | "version": "7.0.5", 871 | "resolved": "https://registry.npmjs.org/snappy/-/snappy-7.0.5.tgz", 872 | "integrity": "sha512-T2j48ZdQQd2MaP4X8GGtAnzyo3LnBt6Kj6kxmoOTxG59UwxwC2Az5pa338td7gSTT8H0J4fv8Jgi0edWAGkgeg==", 873 | "requires": { 874 | "@napi-rs/snappy-android-arm64": "7.0.5", 875 | "@napi-rs/snappy-darwin-arm64": "7.0.5", 876 | "@napi-rs/snappy-darwin-x64": "7.0.5", 877 | "@napi-rs/snappy-freebsd-x64": "7.0.5", 878 | "@napi-rs/snappy-linux-arm-gnueabihf": "7.0.5", 879 | "@napi-rs/snappy-linux-arm64-gnu": "7.0.5", 880 | "@napi-rs/snappy-linux-arm64-musl": "7.0.5", 881 | "@napi-rs/snappy-linux-x64-gnu": "7.0.5", 882 | "@napi-rs/snappy-linux-x64-musl": "7.0.5", 883 | "@napi-rs/snappy-win32-arm64-msvc": "7.0.5", 884 | "@napi-rs/snappy-win32-ia32-msvc": "7.0.5", 885 | "@napi-rs/snappy-win32-x64-msvc": "7.0.5", 886 | "@node-rs/helper": "^1.2.1" 887 | } 888 | }, 889 | "stack-chain": { 890 | "version": "1.3.7", 891 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 892 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 893 | }, 894 | "xtend": { 895 | "version": "4.0.2", 896 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 897 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 898 | } 899 | } 900 | } 901 | -------------------------------------------------------------------------------- /snappy/read/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "snappy": "^7.0.5", 13 | "aws-xray-sdk": "^3.3.4" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /snappy/write/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const snappy = require("snappy"); 6 | const ddb = new AWS.DynamoDB.DocumentClient(); 7 | const AWSXRay = require("aws-xray-sdk"); 8 | 9 | const putItem = async (pk, payload) => { 10 | const params = { 11 | TableName: process.env.TABLE_NAME, 12 | Item: { 13 | sales_order_id: pk, 14 | part: "0", 15 | large_object: payload, 16 | }, 17 | }; 18 | return ddb.put(params).promise(); 19 | }; 20 | 21 | exports.lambda_handler = async (event, context) => { 22 | const segment = AWSXRay.getSegment(); 23 | const subsegment = segment.addNewSubsegment("subseg"); 24 | const widget = await snappy.compress(JSON.stringify(event.payload)); 25 | subsegment.close(); 26 | 27 | return await putItem(event.id, widget); 28 | }; 29 | -------------------------------------------------------------------------------- /snappy/write/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "write", 9 | "version": "1.0.0", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4", 13 | "snappy": "^7.0.5" 14 | } 15 | }, 16 | "node_modules/@aws-sdk/service-error-classification": { 17 | "version": "3.40.0", 18 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 19 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==", 20 | "engines": { 21 | "node": ">= 10.0.0" 22 | } 23 | }, 24 | "node_modules/@aws-sdk/types": { 25 | "version": "3.40.0", 26 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 27 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==", 28 | "engines": { 29 | "node": ">= 10.0.0" 30 | } 31 | }, 32 | "node_modules/@napi-rs/snappy-android-arm64": { 33 | "version": "7.0.5", 34 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-android-arm64/-/snappy-android-arm64-7.0.5.tgz", 35 | "integrity": "sha512-11/V8Wg8FwWLI5BF0kzMQ63GTaCuVRMlMbaIBjRyknHE5YILVK1BHvJjunAkPugg86x3MFs1zqrmrLIaH+07pg==", 36 | "cpu": [ 37 | "arm64" 38 | ], 39 | "optional": true, 40 | "os": [ 41 | "android" 42 | ], 43 | "engines": { 44 | "node": ">= 10" 45 | } 46 | }, 47 | "node_modules/@napi-rs/snappy-darwin-arm64": { 48 | "version": "7.0.5", 49 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-arm64/-/snappy-darwin-arm64-7.0.5.tgz", 50 | "integrity": "sha512-R4LJQAg/75FJU1+F3q2RZZT2i4TPtIVpTDReDsLyJGN6/K/SSCk/4gJSLZoxQ0hHMLQLacRQmMPuVqHbOfwSFw==", 51 | "cpu": [ 52 | "arm64" 53 | ], 54 | "optional": true, 55 | "os": [ 56 | "darwin" 57 | ], 58 | "engines": { 59 | "node": ">= 10" 60 | } 61 | }, 62 | "node_modules/@napi-rs/snappy-darwin-x64": { 63 | "version": "7.0.5", 64 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-x64/-/snappy-darwin-x64-7.0.5.tgz", 65 | "integrity": "sha512-aYiz/jtVxo+cpuu6p2/lzrvr2DlUd58auVDHQqIvYXnlmitXMTXqmURuCj6l4OfFxDA8YgzZ6Ftt6BSXdqKOYw==", 66 | "cpu": [ 67 | "x64" 68 | ], 69 | "optional": true, 70 | "os": [ 71 | "darwin" 72 | ], 73 | "engines": { 74 | "node": ">= 10" 75 | } 76 | }, 77 | "node_modules/@napi-rs/snappy-freebsd-x64": { 78 | "version": "7.0.5", 79 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-freebsd-x64/-/snappy-freebsd-x64-7.0.5.tgz", 80 | "integrity": "sha512-q0hIT7UNVvClAp056ObmsuXj34KRNJcYJ7WRBER/kttCembNM+gJnJRIUcA6QxVZd/MOjpyHBGKdJLaU36ISoA==", 81 | "cpu": [ 82 | "x64" 83 | ], 84 | "optional": true, 85 | "os": [ 86 | "freebsd" 87 | ], 88 | "engines": { 89 | "node": ">= 10" 90 | } 91 | }, 92 | "node_modules/@napi-rs/snappy-linux-arm-gnueabihf": { 93 | "version": "7.0.5", 94 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm-gnueabihf/-/snappy-linux-arm-gnueabihf-7.0.5.tgz", 95 | "integrity": "sha512-VBK+WyTLYqAVy1QqG1wLnbe6vjacmak1tOsTMlKMN71mZF0WmOdZ/OxTExdTz8WmQMgTpYwX4d9g+ElomaOOLg==", 96 | "cpu": [ 97 | "arm" 98 | ], 99 | "optional": true, 100 | "os": [ 101 | "linux" 102 | ], 103 | "engines": { 104 | "node": ">= 10" 105 | } 106 | }, 107 | "node_modules/@napi-rs/snappy-linux-arm64-gnu": { 108 | "version": "7.0.5", 109 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-gnu/-/snappy-linux-arm64-gnu-7.0.5.tgz", 110 | "integrity": "sha512-+E7wwIuaVV85svBFTwN14Plw+lsTRgbWHfsrLzbMoRv3czj4MTOrISD0TajMALRCiDGWe6RSxLftysR4HYZEbA==", 111 | "cpu": [ 112 | "arm64" 113 | ], 114 | "optional": true, 115 | "os": [ 116 | "linux" 117 | ], 118 | "engines": { 119 | "node": ">= 10" 120 | } 121 | }, 122 | "node_modules/@napi-rs/snappy-linux-arm64-musl": { 123 | "version": "7.0.5", 124 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-musl/-/snappy-linux-arm64-musl-7.0.5.tgz", 125 | "integrity": "sha512-QeLjvagI+6ywEHNmRiP3Qz2j+RRupCWHA8cmmaEh1pHnlV/NxetAE1agRdWje7yO+iXQiUVbZ8SKibOZ4kRn3g==", 126 | "cpu": [ 127 | "arm64" 128 | ], 129 | "optional": true, 130 | "os": [ 131 | "linux" 132 | ], 133 | "engines": { 134 | "node": ">= 10" 135 | } 136 | }, 137 | "node_modules/@napi-rs/snappy-linux-x64-gnu": { 138 | "version": "7.0.5", 139 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-gnu/-/snappy-linux-x64-gnu-7.0.5.tgz", 140 | "integrity": "sha512-G1Mq5JOfWG+oWOZScW8R0HtdZ/Hcq3Lm+qOYEbCqKGYV7mTdclvWY4vzOIl5lGWp3Dmo9/rn7pK/Kp4ormw0FA==", 141 | "cpu": [ 142 | "x64" 143 | ], 144 | "optional": true, 145 | "os": [ 146 | "linux" 147 | ], 148 | "engines": { 149 | "node": ">= 10" 150 | } 151 | }, 152 | "node_modules/@napi-rs/snappy-linux-x64-musl": { 153 | "version": "7.0.5", 154 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-musl/-/snappy-linux-x64-musl-7.0.5.tgz", 155 | "integrity": "sha512-THcusrpjr5MB2PXKdFKiD/ZA811Wn7eJksuQbVRUr/ZjbOOxpni/VLHq4uh42IWqofbszHDVUYZeLEgCbcNItg==", 156 | "cpu": [ 157 | "x64" 158 | ], 159 | "optional": true, 160 | "os": [ 161 | "linux" 162 | ], 163 | "engines": { 164 | "node": ">= 10" 165 | } 166 | }, 167 | "node_modules/@napi-rs/snappy-win32-arm64-msvc": { 168 | "version": "7.0.5", 169 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-arm64-msvc/-/snappy-win32-arm64-msvc-7.0.5.tgz", 170 | "integrity": "sha512-5tm8t7E+GhqDf+6vsnsKdZb6twspab5SH1SzVzZtFRltB55FtwAcXSWi9+kS+Md+Jjl4Va4TfrhQ3B46yFgSfQ==", 171 | "cpu": [ 172 | "arm64" 173 | ], 174 | "optional": true, 175 | "os": [ 176 | "win32" 177 | ], 178 | "engines": { 179 | "node": ">= 10" 180 | } 181 | }, 182 | "node_modules/@napi-rs/snappy-win32-ia32-msvc": { 183 | "version": "7.0.5", 184 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-ia32-msvc/-/snappy-win32-ia32-msvc-7.0.5.tgz", 185 | "integrity": "sha512-s0H7fD1fDrKPoS81MNXSrs7lvrq71E7gi3OuWiIj23XNUxsMI5p0P8OaRuu95Bns8WLYw5ouSKUtwIgxZAD4+g==", 186 | "cpu": [ 187 | "ia32" 188 | ], 189 | "optional": true, 190 | "os": [ 191 | "win32" 192 | ], 193 | "engines": { 194 | "node": ">= 10" 195 | } 196 | }, 197 | "node_modules/@napi-rs/snappy-win32-x64-msvc": { 198 | "version": "7.0.5", 199 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-x64-msvc/-/snappy-win32-x64-msvc-7.0.5.tgz", 200 | "integrity": "sha512-rRjNz3OXu6093V4B0IGAd7ANKYGZ5HfG057xew1/NDZl3DTMcWF/Wd2OtMl16Lju2D17CVLxq3NkjTqKZ/XGvw==", 201 | "cpu": [ 202 | "x64" 203 | ], 204 | "optional": true, 205 | "os": [ 206 | "win32" 207 | ], 208 | "engines": { 209 | "node": ">= 10" 210 | } 211 | }, 212 | "node_modules/@napi-rs/triples": { 213 | "version": "1.0.3", 214 | "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", 215 | "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==" 216 | }, 217 | "node_modules/@node-rs/helper": { 218 | "version": "1.2.1", 219 | "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", 220 | "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", 221 | "dependencies": { 222 | "@napi-rs/triples": "^1.0.3" 223 | } 224 | }, 225 | "node_modules/@types/body-parser": { 226 | "version": "1.19.2", 227 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 228 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 229 | "dependencies": { 230 | "@types/connect": "*", 231 | "@types/node": "*" 232 | } 233 | }, 234 | "node_modules/@types/cls-hooked": { 235 | "version": "4.3.3", 236 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 237 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 238 | "dependencies": { 239 | "@types/node": "*" 240 | } 241 | }, 242 | "node_modules/@types/connect": { 243 | "version": "3.4.35", 244 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 245 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 246 | "dependencies": { 247 | "@types/node": "*" 248 | } 249 | }, 250 | "node_modules/@types/express": { 251 | "version": "4.17.13", 252 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 253 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 254 | "dependencies": { 255 | "@types/body-parser": "*", 256 | "@types/express-serve-static-core": "^4.17.18", 257 | "@types/qs": "*", 258 | "@types/serve-static": "*" 259 | } 260 | }, 261 | "node_modules/@types/express-serve-static-core": { 262 | "version": "4.17.25", 263 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", 264 | "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", 265 | "dependencies": { 266 | "@types/node": "*", 267 | "@types/qs": "*", 268 | "@types/range-parser": "*" 269 | } 270 | }, 271 | "node_modules/@types/mime": { 272 | "version": "1.3.2", 273 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 274 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 275 | }, 276 | "node_modules/@types/mysql": { 277 | "version": "2.15.19", 278 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.19.tgz", 279 | "integrity": "sha512-wSRg2QZv14CWcZXkgdvHbbV2ACufNy5EgI8mBBxnJIptchv7DBy/h53VMa2jDhyo0C9MO4iowE6z9vF8Ja1DkQ==", 280 | "dependencies": { 281 | "@types/node": "*" 282 | } 283 | }, 284 | "node_modules/@types/node": { 285 | "version": "16.11.10", 286 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz", 287 | "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==" 288 | }, 289 | "node_modules/@types/pg": { 290 | "version": "8.6.1", 291 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", 292 | "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", 293 | "dependencies": { 294 | "@types/node": "*", 295 | "pg-protocol": "*", 296 | "pg-types": "^2.2.0" 297 | } 298 | }, 299 | "node_modules/@types/qs": { 300 | "version": "6.9.7", 301 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 302 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 303 | }, 304 | "node_modules/@types/range-parser": { 305 | "version": "1.2.4", 306 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 307 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 308 | }, 309 | "node_modules/@types/serve-static": { 310 | "version": "1.13.10", 311 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 312 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 313 | "dependencies": { 314 | "@types/mime": "^1", 315 | "@types/node": "*" 316 | } 317 | }, 318 | "node_modules/async-hook-jl": { 319 | "version": "1.7.6", 320 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 321 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 322 | "dependencies": { 323 | "stack-chain": "^1.3.7" 324 | }, 325 | "engines": { 326 | "node": "^4.7 || >=6.9 || >=7.3" 327 | } 328 | }, 329 | "node_modules/atomic-batcher": { 330 | "version": "1.0.2", 331 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 332 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 333 | }, 334 | "node_modules/aws-xray-sdk": { 335 | "version": "3.3.4", 336 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 337 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 338 | "dependencies": { 339 | "aws-xray-sdk-core": "3.3.4", 340 | "aws-xray-sdk-express": "3.3.4", 341 | "aws-xray-sdk-mysql": "3.3.4", 342 | "aws-xray-sdk-postgres": "3.3.4" 343 | }, 344 | "engines": { 345 | "node": ">= 10.x" 346 | } 347 | }, 348 | "node_modules/aws-xray-sdk-core": { 349 | "version": "3.3.4", 350 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 351 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 352 | "dependencies": { 353 | "@aws-sdk/service-error-classification": "^3.4.1", 354 | "@aws-sdk/types": "^3.4.1", 355 | "@types/cls-hooked": "^4.3.3", 356 | "atomic-batcher": "^1.0.2", 357 | "cls-hooked": "^4.2.2", 358 | "semver": "^5.3.0" 359 | }, 360 | "engines": { 361 | "node": ">= 10.x" 362 | } 363 | }, 364 | "node_modules/aws-xray-sdk-express": { 365 | "version": "3.3.4", 366 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 367 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 368 | "dependencies": { 369 | "@types/express": "*" 370 | }, 371 | "engines": { 372 | "node": ">= 10.x" 373 | }, 374 | "peerDependencies": { 375 | "aws-xray-sdk-core": "^3.3.4" 376 | } 377 | }, 378 | "node_modules/aws-xray-sdk-mysql": { 379 | "version": "3.3.4", 380 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 381 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 382 | "dependencies": { 383 | "@types/mysql": "*" 384 | }, 385 | "engines": { 386 | "node": ">= 10.x" 387 | }, 388 | "peerDependencies": { 389 | "aws-xray-sdk-core": "^3.3.4" 390 | } 391 | }, 392 | "node_modules/aws-xray-sdk-postgres": { 393 | "version": "3.3.4", 394 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 395 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 396 | "dependencies": { 397 | "@types/pg": "*" 398 | }, 399 | "engines": { 400 | "node": ">= 10.x" 401 | }, 402 | "peerDependencies": { 403 | "aws-xray-sdk-core": "^3.3.4" 404 | } 405 | }, 406 | "node_modules/cls-hooked": { 407 | "version": "4.2.2", 408 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 409 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 410 | "dependencies": { 411 | "async-hook-jl": "^1.7.6", 412 | "emitter-listener": "^1.0.1", 413 | "semver": "^5.4.1" 414 | }, 415 | "engines": { 416 | "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" 417 | } 418 | }, 419 | "node_modules/emitter-listener": { 420 | "version": "1.1.2", 421 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 422 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 423 | "dependencies": { 424 | "shimmer": "^1.2.0" 425 | } 426 | }, 427 | "node_modules/pg-int8": { 428 | "version": "1.0.1", 429 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 430 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 431 | "engines": { 432 | "node": ">=4.0.0" 433 | } 434 | }, 435 | "node_modules/pg-protocol": { 436 | "version": "1.5.0", 437 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 438 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 439 | }, 440 | "node_modules/pg-types": { 441 | "version": "2.2.0", 442 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 443 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 444 | "dependencies": { 445 | "pg-int8": "1.0.1", 446 | "postgres-array": "~2.0.0", 447 | "postgres-bytea": "~1.0.0", 448 | "postgres-date": "~1.0.4", 449 | "postgres-interval": "^1.1.0" 450 | }, 451 | "engines": { 452 | "node": ">=4" 453 | } 454 | }, 455 | "node_modules/postgres-array": { 456 | "version": "2.0.0", 457 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 458 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 459 | "engines": { 460 | "node": ">=4" 461 | } 462 | }, 463 | "node_modules/postgres-bytea": { 464 | "version": "1.0.0", 465 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 466 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", 467 | "engines": { 468 | "node": ">=0.10.0" 469 | } 470 | }, 471 | "node_modules/postgres-date": { 472 | "version": "1.0.7", 473 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 474 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 475 | "engines": { 476 | "node": ">=0.10.0" 477 | } 478 | }, 479 | "node_modules/postgres-interval": { 480 | "version": "1.2.0", 481 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 482 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 483 | "dependencies": { 484 | "xtend": "^4.0.0" 485 | }, 486 | "engines": { 487 | "node": ">=0.10.0" 488 | } 489 | }, 490 | "node_modules/semver": { 491 | "version": "5.7.1", 492 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 493 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 494 | "bin": { 495 | "semver": "bin/semver" 496 | } 497 | }, 498 | "node_modules/shimmer": { 499 | "version": "1.2.1", 500 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 501 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 502 | }, 503 | "node_modules/snappy": { 504 | "version": "7.0.5", 505 | "resolved": "https://registry.npmjs.org/snappy/-/snappy-7.0.5.tgz", 506 | "integrity": "sha512-T2j48ZdQQd2MaP4X8GGtAnzyo3LnBt6Kj6kxmoOTxG59UwxwC2Az5pa338td7gSTT8H0J4fv8Jgi0edWAGkgeg==", 507 | "dependencies": { 508 | "@node-rs/helper": "^1.2.1" 509 | }, 510 | "engines": { 511 | "node": ">= 10" 512 | }, 513 | "funding": { 514 | "type": "github", 515 | "url": "https://github.com/sponsors/Brooooooklyn" 516 | }, 517 | "optionalDependencies": { 518 | "@napi-rs/snappy-android-arm64": "7.0.5", 519 | "@napi-rs/snappy-darwin-arm64": "7.0.5", 520 | "@napi-rs/snappy-darwin-x64": "7.0.5", 521 | "@napi-rs/snappy-freebsd-x64": "7.0.5", 522 | "@napi-rs/snappy-linux-arm-gnueabihf": "7.0.5", 523 | "@napi-rs/snappy-linux-arm64-gnu": "7.0.5", 524 | "@napi-rs/snappy-linux-arm64-musl": "7.0.5", 525 | "@napi-rs/snappy-linux-x64-gnu": "7.0.5", 526 | "@napi-rs/snappy-linux-x64-musl": "7.0.5", 527 | "@napi-rs/snappy-win32-arm64-msvc": "7.0.5", 528 | "@napi-rs/snappy-win32-ia32-msvc": "7.0.5", 529 | "@napi-rs/snappy-win32-x64-msvc": "7.0.5" 530 | } 531 | }, 532 | "node_modules/stack-chain": { 533 | "version": "1.3.7", 534 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 535 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 536 | }, 537 | "node_modules/xtend": { 538 | "version": "4.0.2", 539 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 540 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 541 | "engines": { 542 | "node": ">=0.4" 543 | } 544 | } 545 | }, 546 | "dependencies": { 547 | "@aws-sdk/service-error-classification": { 548 | "version": "3.40.0", 549 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 550 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==" 551 | }, 552 | "@aws-sdk/types": { 553 | "version": "3.40.0", 554 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 555 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==" 556 | }, 557 | "@napi-rs/snappy-android-arm64": { 558 | "version": "7.0.5", 559 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-android-arm64/-/snappy-android-arm64-7.0.5.tgz", 560 | "integrity": "sha512-11/V8Wg8FwWLI5BF0kzMQ63GTaCuVRMlMbaIBjRyknHE5YILVK1BHvJjunAkPugg86x3MFs1zqrmrLIaH+07pg==", 561 | "optional": true 562 | }, 563 | "@napi-rs/snappy-darwin-arm64": { 564 | "version": "7.0.5", 565 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-arm64/-/snappy-darwin-arm64-7.0.5.tgz", 566 | "integrity": "sha512-R4LJQAg/75FJU1+F3q2RZZT2i4TPtIVpTDReDsLyJGN6/K/SSCk/4gJSLZoxQ0hHMLQLacRQmMPuVqHbOfwSFw==", 567 | "optional": true 568 | }, 569 | "@napi-rs/snappy-darwin-x64": { 570 | "version": "7.0.5", 571 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-darwin-x64/-/snappy-darwin-x64-7.0.5.tgz", 572 | "integrity": "sha512-aYiz/jtVxo+cpuu6p2/lzrvr2DlUd58auVDHQqIvYXnlmitXMTXqmURuCj6l4OfFxDA8YgzZ6Ftt6BSXdqKOYw==", 573 | "optional": true 574 | }, 575 | "@napi-rs/snappy-freebsd-x64": { 576 | "version": "7.0.5", 577 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-freebsd-x64/-/snappy-freebsd-x64-7.0.5.tgz", 578 | "integrity": "sha512-q0hIT7UNVvClAp056ObmsuXj34KRNJcYJ7WRBER/kttCembNM+gJnJRIUcA6QxVZd/MOjpyHBGKdJLaU36ISoA==", 579 | "optional": true 580 | }, 581 | "@napi-rs/snappy-linux-arm-gnueabihf": { 582 | "version": "7.0.5", 583 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm-gnueabihf/-/snappy-linux-arm-gnueabihf-7.0.5.tgz", 584 | "integrity": "sha512-VBK+WyTLYqAVy1QqG1wLnbe6vjacmak1tOsTMlKMN71mZF0WmOdZ/OxTExdTz8WmQMgTpYwX4d9g+ElomaOOLg==", 585 | "optional": true 586 | }, 587 | "@napi-rs/snappy-linux-arm64-gnu": { 588 | "version": "7.0.5", 589 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-gnu/-/snappy-linux-arm64-gnu-7.0.5.tgz", 590 | "integrity": "sha512-+E7wwIuaVV85svBFTwN14Plw+lsTRgbWHfsrLzbMoRv3czj4MTOrISD0TajMALRCiDGWe6RSxLftysR4HYZEbA==", 591 | "optional": true 592 | }, 593 | "@napi-rs/snappy-linux-arm64-musl": { 594 | "version": "7.0.5", 595 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-arm64-musl/-/snappy-linux-arm64-musl-7.0.5.tgz", 596 | "integrity": "sha512-QeLjvagI+6ywEHNmRiP3Qz2j+RRupCWHA8cmmaEh1pHnlV/NxetAE1agRdWje7yO+iXQiUVbZ8SKibOZ4kRn3g==", 597 | "optional": true 598 | }, 599 | "@napi-rs/snappy-linux-x64-gnu": { 600 | "version": "7.0.5", 601 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-gnu/-/snappy-linux-x64-gnu-7.0.5.tgz", 602 | "integrity": "sha512-G1Mq5JOfWG+oWOZScW8R0HtdZ/Hcq3Lm+qOYEbCqKGYV7mTdclvWY4vzOIl5lGWp3Dmo9/rn7pK/Kp4ormw0FA==", 603 | "optional": true 604 | }, 605 | "@napi-rs/snappy-linux-x64-musl": { 606 | "version": "7.0.5", 607 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-linux-x64-musl/-/snappy-linux-x64-musl-7.0.5.tgz", 608 | "integrity": "sha512-THcusrpjr5MB2PXKdFKiD/ZA811Wn7eJksuQbVRUr/ZjbOOxpni/VLHq4uh42IWqofbszHDVUYZeLEgCbcNItg==", 609 | "optional": true 610 | }, 611 | "@napi-rs/snappy-win32-arm64-msvc": { 612 | "version": "7.0.5", 613 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-arm64-msvc/-/snappy-win32-arm64-msvc-7.0.5.tgz", 614 | "integrity": "sha512-5tm8t7E+GhqDf+6vsnsKdZb6twspab5SH1SzVzZtFRltB55FtwAcXSWi9+kS+Md+Jjl4Va4TfrhQ3B46yFgSfQ==", 615 | "optional": true 616 | }, 617 | "@napi-rs/snappy-win32-ia32-msvc": { 618 | "version": "7.0.5", 619 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-ia32-msvc/-/snappy-win32-ia32-msvc-7.0.5.tgz", 620 | "integrity": "sha512-s0H7fD1fDrKPoS81MNXSrs7lvrq71E7gi3OuWiIj23XNUxsMI5p0P8OaRuu95Bns8WLYw5ouSKUtwIgxZAD4+g==", 621 | "optional": true 622 | }, 623 | "@napi-rs/snappy-win32-x64-msvc": { 624 | "version": "7.0.5", 625 | "resolved": "https://registry.npmjs.org/@napi-rs/snappy-win32-x64-msvc/-/snappy-win32-x64-msvc-7.0.5.tgz", 626 | "integrity": "sha512-rRjNz3OXu6093V4B0IGAd7ANKYGZ5HfG057xew1/NDZl3DTMcWF/Wd2OtMl16Lju2D17CVLxq3NkjTqKZ/XGvw==", 627 | "optional": true 628 | }, 629 | "@napi-rs/triples": { 630 | "version": "1.0.3", 631 | "resolved": "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz", 632 | "integrity": "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==" 633 | }, 634 | "@node-rs/helper": { 635 | "version": "1.2.1", 636 | "resolved": "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz", 637 | "integrity": "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==", 638 | "requires": { 639 | "@napi-rs/triples": "^1.0.3" 640 | } 641 | }, 642 | "@types/body-parser": { 643 | "version": "1.19.2", 644 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 645 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 646 | "requires": { 647 | "@types/connect": "*", 648 | "@types/node": "*" 649 | } 650 | }, 651 | "@types/cls-hooked": { 652 | "version": "4.3.3", 653 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 654 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 655 | "requires": { 656 | "@types/node": "*" 657 | } 658 | }, 659 | "@types/connect": { 660 | "version": "3.4.35", 661 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 662 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 663 | "requires": { 664 | "@types/node": "*" 665 | } 666 | }, 667 | "@types/express": { 668 | "version": "4.17.13", 669 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 670 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 671 | "requires": { 672 | "@types/body-parser": "*", 673 | "@types/express-serve-static-core": "^4.17.18", 674 | "@types/qs": "*", 675 | "@types/serve-static": "*" 676 | } 677 | }, 678 | "@types/express-serve-static-core": { 679 | "version": "4.17.25", 680 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", 681 | "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", 682 | "requires": { 683 | "@types/node": "*", 684 | "@types/qs": "*", 685 | "@types/range-parser": "*" 686 | } 687 | }, 688 | "@types/mime": { 689 | "version": "1.3.2", 690 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 691 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 692 | }, 693 | "@types/mysql": { 694 | "version": "2.15.19", 695 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.19.tgz", 696 | "integrity": "sha512-wSRg2QZv14CWcZXkgdvHbbV2ACufNy5EgI8mBBxnJIptchv7DBy/h53VMa2jDhyo0C9MO4iowE6z9vF8Ja1DkQ==", 697 | "requires": { 698 | "@types/node": "*" 699 | } 700 | }, 701 | "@types/node": { 702 | "version": "16.11.10", 703 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz", 704 | "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==" 705 | }, 706 | "@types/pg": { 707 | "version": "8.6.1", 708 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", 709 | "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", 710 | "requires": { 711 | "@types/node": "*", 712 | "pg-protocol": "*", 713 | "pg-types": "^2.2.0" 714 | } 715 | }, 716 | "@types/qs": { 717 | "version": "6.9.7", 718 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 719 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 720 | }, 721 | "@types/range-parser": { 722 | "version": "1.2.4", 723 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 724 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 725 | }, 726 | "@types/serve-static": { 727 | "version": "1.13.10", 728 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 729 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 730 | "requires": { 731 | "@types/mime": "^1", 732 | "@types/node": "*" 733 | } 734 | }, 735 | "async-hook-jl": { 736 | "version": "1.7.6", 737 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 738 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 739 | "requires": { 740 | "stack-chain": "^1.3.7" 741 | } 742 | }, 743 | "atomic-batcher": { 744 | "version": "1.0.2", 745 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 746 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 747 | }, 748 | "aws-xray-sdk": { 749 | "version": "3.3.4", 750 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 751 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 752 | "requires": { 753 | "aws-xray-sdk-core": "3.3.4", 754 | "aws-xray-sdk-express": "3.3.4", 755 | "aws-xray-sdk-mysql": "3.3.4", 756 | "aws-xray-sdk-postgres": "3.3.4" 757 | } 758 | }, 759 | "aws-xray-sdk-core": { 760 | "version": "3.3.4", 761 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 762 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 763 | "requires": { 764 | "@aws-sdk/service-error-classification": "^3.4.1", 765 | "@aws-sdk/types": "^3.4.1", 766 | "@types/cls-hooked": "^4.3.3", 767 | "atomic-batcher": "^1.0.2", 768 | "cls-hooked": "^4.2.2", 769 | "semver": "^5.3.0" 770 | } 771 | }, 772 | "aws-xray-sdk-express": { 773 | "version": "3.3.4", 774 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 775 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 776 | "requires": { 777 | "@types/express": "*" 778 | } 779 | }, 780 | "aws-xray-sdk-mysql": { 781 | "version": "3.3.4", 782 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 783 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 784 | "requires": { 785 | "@types/mysql": "*" 786 | } 787 | }, 788 | "aws-xray-sdk-postgres": { 789 | "version": "3.3.4", 790 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 791 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 792 | "requires": { 793 | "@types/pg": "*" 794 | } 795 | }, 796 | "cls-hooked": { 797 | "version": "4.2.2", 798 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 799 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 800 | "requires": { 801 | "async-hook-jl": "^1.7.6", 802 | "emitter-listener": "^1.0.1", 803 | "semver": "^5.4.1" 804 | } 805 | }, 806 | "emitter-listener": { 807 | "version": "1.1.2", 808 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 809 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 810 | "requires": { 811 | "shimmer": "^1.2.0" 812 | } 813 | }, 814 | "pg-int8": { 815 | "version": "1.0.1", 816 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 817 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 818 | }, 819 | "pg-protocol": { 820 | "version": "1.5.0", 821 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 822 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 823 | }, 824 | "pg-types": { 825 | "version": "2.2.0", 826 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 827 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 828 | "requires": { 829 | "pg-int8": "1.0.1", 830 | "postgres-array": "~2.0.0", 831 | "postgres-bytea": "~1.0.0", 832 | "postgres-date": "~1.0.4", 833 | "postgres-interval": "^1.1.0" 834 | } 835 | }, 836 | "postgres-array": { 837 | "version": "2.0.0", 838 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 839 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 840 | }, 841 | "postgres-bytea": { 842 | "version": "1.0.0", 843 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 844 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 845 | }, 846 | "postgres-date": { 847 | "version": "1.0.7", 848 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 849 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 850 | }, 851 | "postgres-interval": { 852 | "version": "1.2.0", 853 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 854 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 855 | "requires": { 856 | "xtend": "^4.0.0" 857 | } 858 | }, 859 | "semver": { 860 | "version": "5.7.1", 861 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 862 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 863 | }, 864 | "shimmer": { 865 | "version": "1.2.1", 866 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 867 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 868 | }, 869 | "snappy": { 870 | "version": "7.0.5", 871 | "resolved": "https://registry.npmjs.org/snappy/-/snappy-7.0.5.tgz", 872 | "integrity": "sha512-T2j48ZdQQd2MaP4X8GGtAnzyo3LnBt6Kj6kxmoOTxG59UwxwC2Az5pa338td7gSTT8H0J4fv8Jgi0edWAGkgeg==", 873 | "requires": { 874 | "@napi-rs/snappy-android-arm64": "7.0.5", 875 | "@napi-rs/snappy-darwin-arm64": "7.0.5", 876 | "@napi-rs/snappy-darwin-x64": "7.0.5", 877 | "@napi-rs/snappy-freebsd-x64": "7.0.5", 878 | "@napi-rs/snappy-linux-arm-gnueabihf": "7.0.5", 879 | "@napi-rs/snappy-linux-arm64-gnu": "7.0.5", 880 | "@napi-rs/snappy-linux-arm64-musl": "7.0.5", 881 | "@napi-rs/snappy-linux-x64-gnu": "7.0.5", 882 | "@napi-rs/snappy-linux-x64-musl": "7.0.5", 883 | "@napi-rs/snappy-win32-arm64-msvc": "7.0.5", 884 | "@napi-rs/snappy-win32-ia32-msvc": "7.0.5", 885 | "@napi-rs/snappy-win32-x64-msvc": "7.0.5", 886 | "@node-rs/helper": "^1.2.1" 887 | } 888 | }, 889 | "stack-chain": { 890 | "version": "1.3.7", 891 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 892 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 893 | }, 894 | "xtend": { 895 | "version": "4.0.2", 896 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 897 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 898 | } 899 | } 900 | } 901 | -------------------------------------------------------------------------------- /snappy/write/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4", 13 | "snappy": "^7.0.5" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /unencoded/write/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const ddb = new AWS.DynamoDB.DocumentClient(); 6 | 7 | const putItem = async (pk, payload) => { 8 | const params = { 9 | TableName: process.env.TABLE_NAME, 10 | Item: { 11 | sales_order_id: pk, 12 | part: "0", 13 | large_object: payload, 14 | }, 15 | }; 16 | return ddb.put(params).promise(); 17 | }; 18 | 19 | exports.lambda_handler = async (event, context) => { 20 | return await putItem(event.id, event.payload); 21 | }; 22 | -------------------------------------------------------------------------------- /unencoded/write/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT-0" 11 | } 12 | -------------------------------------------------------------------------------- /zlib/read/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const zlib = require("zlib"); 6 | const ddb = new AWS.DynamoDB.DocumentClient(); 7 | const AWSXRay = require("aws-xray-sdk"); 8 | 9 | const getItem = async (pk, payload) => { 10 | const params = { 11 | TableName: process.env.TABLE_NAME, 12 | Key: { 13 | sales_order_id: pk, 14 | part: "0", 15 | }, 16 | }; 17 | return ddb.get(params).promise(); 18 | }; 19 | 20 | const uncompress = async (input) => { 21 | const segment = AWSXRay.getSegment(); 22 | const subsegment = segment.addNewSubsegment("subseg"); 23 | return new Promise((resolve, reject) => { 24 | return zlib.gunzip(input.Item.large_object, (err, buffer) => { 25 | subsegment.close(); 26 | 27 | if (!err) { 28 | const widgetString = buffer.toString("utf-8"); 29 | resolve(widgetString); 30 | } else { 31 | reject(err); 32 | } 33 | }); 34 | }); 35 | }; 36 | 37 | exports.lambda_handler = async (event, context) => { 38 | const item = await getItem(event.id); 39 | const result = await uncompress(item); 40 | 41 | return result; 42 | }; 43 | -------------------------------------------------------------------------------- /zlib/read/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "write", 9 | "version": "1.0.0", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4" 13 | } 14 | }, 15 | "node_modules/@aws-sdk/service-error-classification": { 16 | "version": "3.40.0", 17 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 18 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==", 19 | "engines": { 20 | "node": ">= 10.0.0" 21 | } 22 | }, 23 | "node_modules/@aws-sdk/types": { 24 | "version": "3.40.0", 25 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 26 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==", 27 | "engines": { 28 | "node": ">= 10.0.0" 29 | } 30 | }, 31 | "node_modules/@types/body-parser": { 32 | "version": "1.19.2", 33 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 34 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 35 | "dependencies": { 36 | "@types/connect": "*", 37 | "@types/node": "*" 38 | } 39 | }, 40 | "node_modules/@types/cls-hooked": { 41 | "version": "4.3.3", 42 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 43 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 44 | "dependencies": { 45 | "@types/node": "*" 46 | } 47 | }, 48 | "node_modules/@types/connect": { 49 | "version": "3.4.35", 50 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 51 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 52 | "dependencies": { 53 | "@types/node": "*" 54 | } 55 | }, 56 | "node_modules/@types/express": { 57 | "version": "4.17.13", 58 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 59 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 60 | "dependencies": { 61 | "@types/body-parser": "*", 62 | "@types/express-serve-static-core": "^4.17.18", 63 | "@types/qs": "*", 64 | "@types/serve-static": "*" 65 | } 66 | }, 67 | "node_modules/@types/express-serve-static-core": { 68 | "version": "4.17.27", 69 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz", 70 | "integrity": "sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==", 71 | "dependencies": { 72 | "@types/node": "*", 73 | "@types/qs": "*", 74 | "@types/range-parser": "*" 75 | } 76 | }, 77 | "node_modules/@types/mime": { 78 | "version": "1.3.2", 79 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 80 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 81 | }, 82 | "node_modules/@types/mysql": { 83 | "version": "2.15.20", 84 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.20.tgz", 85 | "integrity": "sha512-QyOqSRhe540jmdg3AqiS8AbCDvSwDgxAJcsBkMqDQw0y87OQla7y8RFW/MYcUUHBFi1AZrRYkjzSAL/bfCKMuQ==", 86 | "dependencies": { 87 | "@types/node": "*" 88 | } 89 | }, 90 | "node_modules/@types/node": { 91 | "version": "17.0.8", 92 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", 93 | "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" 94 | }, 95 | "node_modules/@types/pg": { 96 | "version": "8.6.3", 97 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.3.tgz", 98 | "integrity": "sha512-P0RrXJcw1hPS+KF0nBCC3FEEdZBfRsHbYtAzbY2QTc0gC4jFQvjQxIKXs0X/NgPhPI4DbAzdeW7WMCjaWjT7Pg==", 99 | "dependencies": { 100 | "@types/node": "*", 101 | "pg-protocol": "*", 102 | "pg-types": "^2.2.0" 103 | } 104 | }, 105 | "node_modules/@types/qs": { 106 | "version": "6.9.7", 107 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 108 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 109 | }, 110 | "node_modules/@types/range-parser": { 111 | "version": "1.2.4", 112 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 113 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 114 | }, 115 | "node_modules/@types/serve-static": { 116 | "version": "1.13.10", 117 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 118 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 119 | "dependencies": { 120 | "@types/mime": "^1", 121 | "@types/node": "*" 122 | } 123 | }, 124 | "node_modules/async-hook-jl": { 125 | "version": "1.7.6", 126 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 127 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 128 | "dependencies": { 129 | "stack-chain": "^1.3.7" 130 | }, 131 | "engines": { 132 | "node": "^4.7 || >=6.9 || >=7.3" 133 | } 134 | }, 135 | "node_modules/atomic-batcher": { 136 | "version": "1.0.2", 137 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 138 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 139 | }, 140 | "node_modules/aws-xray-sdk": { 141 | "version": "3.3.4", 142 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 143 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 144 | "dependencies": { 145 | "aws-xray-sdk-core": "3.3.4", 146 | "aws-xray-sdk-express": "3.3.4", 147 | "aws-xray-sdk-mysql": "3.3.4", 148 | "aws-xray-sdk-postgres": "3.3.4" 149 | }, 150 | "engines": { 151 | "node": ">= 10.x" 152 | } 153 | }, 154 | "node_modules/aws-xray-sdk-core": { 155 | "version": "3.3.4", 156 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 157 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 158 | "dependencies": { 159 | "@aws-sdk/service-error-classification": "^3.4.1", 160 | "@aws-sdk/types": "^3.4.1", 161 | "@types/cls-hooked": "^4.3.3", 162 | "atomic-batcher": "^1.0.2", 163 | "cls-hooked": "^4.2.2", 164 | "semver": "^5.3.0" 165 | }, 166 | "engines": { 167 | "node": ">= 10.x" 168 | } 169 | }, 170 | "node_modules/aws-xray-sdk-express": { 171 | "version": "3.3.4", 172 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 173 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 174 | "dependencies": { 175 | "@types/express": "*" 176 | }, 177 | "engines": { 178 | "node": ">= 10.x" 179 | }, 180 | "peerDependencies": { 181 | "aws-xray-sdk-core": "^3.3.4" 182 | } 183 | }, 184 | "node_modules/aws-xray-sdk-mysql": { 185 | "version": "3.3.4", 186 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 187 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 188 | "dependencies": { 189 | "@types/mysql": "*" 190 | }, 191 | "engines": { 192 | "node": ">= 10.x" 193 | }, 194 | "peerDependencies": { 195 | "aws-xray-sdk-core": "^3.3.4" 196 | } 197 | }, 198 | "node_modules/aws-xray-sdk-postgres": { 199 | "version": "3.3.4", 200 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 201 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 202 | "dependencies": { 203 | "@types/pg": "*" 204 | }, 205 | "engines": { 206 | "node": ">= 10.x" 207 | }, 208 | "peerDependencies": { 209 | "aws-xray-sdk-core": "^3.3.4" 210 | } 211 | }, 212 | "node_modules/cls-hooked": { 213 | "version": "4.2.2", 214 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 215 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 216 | "dependencies": { 217 | "async-hook-jl": "^1.7.6", 218 | "emitter-listener": "^1.0.1", 219 | "semver": "^5.4.1" 220 | }, 221 | "engines": { 222 | "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" 223 | } 224 | }, 225 | "node_modules/emitter-listener": { 226 | "version": "1.1.2", 227 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 228 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 229 | "dependencies": { 230 | "shimmer": "^1.2.0" 231 | } 232 | }, 233 | "node_modules/pg-int8": { 234 | "version": "1.0.1", 235 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 236 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 237 | "engines": { 238 | "node": ">=4.0.0" 239 | } 240 | }, 241 | "node_modules/pg-protocol": { 242 | "version": "1.5.0", 243 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 244 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 245 | }, 246 | "node_modules/pg-types": { 247 | "version": "2.2.0", 248 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 249 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 250 | "dependencies": { 251 | "pg-int8": "1.0.1", 252 | "postgres-array": "~2.0.0", 253 | "postgres-bytea": "~1.0.0", 254 | "postgres-date": "~1.0.4", 255 | "postgres-interval": "^1.1.0" 256 | }, 257 | "engines": { 258 | "node": ">=4" 259 | } 260 | }, 261 | "node_modules/postgres-array": { 262 | "version": "2.0.0", 263 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 264 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 265 | "engines": { 266 | "node": ">=4" 267 | } 268 | }, 269 | "node_modules/postgres-bytea": { 270 | "version": "1.0.0", 271 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 272 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", 273 | "engines": { 274 | "node": ">=0.10.0" 275 | } 276 | }, 277 | "node_modules/postgres-date": { 278 | "version": "1.0.7", 279 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 280 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 281 | "engines": { 282 | "node": ">=0.10.0" 283 | } 284 | }, 285 | "node_modules/postgres-interval": { 286 | "version": "1.2.0", 287 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 288 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 289 | "dependencies": { 290 | "xtend": "^4.0.0" 291 | }, 292 | "engines": { 293 | "node": ">=0.10.0" 294 | } 295 | }, 296 | "node_modules/semver": { 297 | "version": "5.7.1", 298 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 299 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 300 | "bin": { 301 | "semver": "bin/semver" 302 | } 303 | }, 304 | "node_modules/shimmer": { 305 | "version": "1.2.1", 306 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 307 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 308 | }, 309 | "node_modules/stack-chain": { 310 | "version": "1.3.7", 311 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 312 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 313 | }, 314 | "node_modules/xtend": { 315 | "version": "4.0.2", 316 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 317 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 318 | "engines": { 319 | "node": ">=0.4" 320 | } 321 | } 322 | }, 323 | "dependencies": { 324 | "@aws-sdk/service-error-classification": { 325 | "version": "3.40.0", 326 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 327 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==" 328 | }, 329 | "@aws-sdk/types": { 330 | "version": "3.40.0", 331 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 332 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==" 333 | }, 334 | "@types/body-parser": { 335 | "version": "1.19.2", 336 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 337 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 338 | "requires": { 339 | "@types/connect": "*", 340 | "@types/node": "*" 341 | } 342 | }, 343 | "@types/cls-hooked": { 344 | "version": "4.3.3", 345 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 346 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 347 | "requires": { 348 | "@types/node": "*" 349 | } 350 | }, 351 | "@types/connect": { 352 | "version": "3.4.35", 353 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 354 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 355 | "requires": { 356 | "@types/node": "*" 357 | } 358 | }, 359 | "@types/express": { 360 | "version": "4.17.13", 361 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 362 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 363 | "requires": { 364 | "@types/body-parser": "*", 365 | "@types/express-serve-static-core": "^4.17.18", 366 | "@types/qs": "*", 367 | "@types/serve-static": "*" 368 | } 369 | }, 370 | "@types/express-serve-static-core": { 371 | "version": "4.17.27", 372 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz", 373 | "integrity": "sha512-e/sVallzUTPdyOTiqi8O8pMdBBphscvI6E4JYaKlja4Lm+zh7UFSSdW5VMkRbhDtmrONqOUHOXRguPsDckzxNA==", 374 | "requires": { 375 | "@types/node": "*", 376 | "@types/qs": "*", 377 | "@types/range-parser": "*" 378 | } 379 | }, 380 | "@types/mime": { 381 | "version": "1.3.2", 382 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 383 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 384 | }, 385 | "@types/mysql": { 386 | "version": "2.15.20", 387 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.20.tgz", 388 | "integrity": "sha512-QyOqSRhe540jmdg3AqiS8AbCDvSwDgxAJcsBkMqDQw0y87OQla7y8RFW/MYcUUHBFi1AZrRYkjzSAL/bfCKMuQ==", 389 | "requires": { 390 | "@types/node": "*" 391 | } 392 | }, 393 | "@types/node": { 394 | "version": "17.0.8", 395 | "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.8.tgz", 396 | "integrity": "sha512-YofkM6fGv4gDJq78g4j0mMuGMkZVxZDgtU0JRdx6FgiJDG+0fY0GKVolOV8WqVmEhLCXkQRjwDdKyPxJp/uucg==" 397 | }, 398 | "@types/pg": { 399 | "version": "8.6.3", 400 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.3.tgz", 401 | "integrity": "sha512-P0RrXJcw1hPS+KF0nBCC3FEEdZBfRsHbYtAzbY2QTc0gC4jFQvjQxIKXs0X/NgPhPI4DbAzdeW7WMCjaWjT7Pg==", 402 | "requires": { 403 | "@types/node": "*", 404 | "pg-protocol": "*", 405 | "pg-types": "^2.2.0" 406 | } 407 | }, 408 | "@types/qs": { 409 | "version": "6.9.7", 410 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 411 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 412 | }, 413 | "@types/range-parser": { 414 | "version": "1.2.4", 415 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 416 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 417 | }, 418 | "@types/serve-static": { 419 | "version": "1.13.10", 420 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 421 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 422 | "requires": { 423 | "@types/mime": "^1", 424 | "@types/node": "*" 425 | } 426 | }, 427 | "async-hook-jl": { 428 | "version": "1.7.6", 429 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 430 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 431 | "requires": { 432 | "stack-chain": "^1.3.7" 433 | } 434 | }, 435 | "atomic-batcher": { 436 | "version": "1.0.2", 437 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 438 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 439 | }, 440 | "aws-xray-sdk": { 441 | "version": "3.3.4", 442 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 443 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 444 | "requires": { 445 | "aws-xray-sdk-core": "3.3.4", 446 | "aws-xray-sdk-express": "3.3.4", 447 | "aws-xray-sdk-mysql": "3.3.4", 448 | "aws-xray-sdk-postgres": "3.3.4" 449 | } 450 | }, 451 | "aws-xray-sdk-core": { 452 | "version": "3.3.4", 453 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 454 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 455 | "requires": { 456 | "@aws-sdk/service-error-classification": "^3.4.1", 457 | "@aws-sdk/types": "^3.4.1", 458 | "@types/cls-hooked": "^4.3.3", 459 | "atomic-batcher": "^1.0.2", 460 | "cls-hooked": "^4.2.2", 461 | "semver": "^5.3.0" 462 | } 463 | }, 464 | "aws-xray-sdk-express": { 465 | "version": "3.3.4", 466 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 467 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 468 | "requires": { 469 | "@types/express": "*" 470 | } 471 | }, 472 | "aws-xray-sdk-mysql": { 473 | "version": "3.3.4", 474 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 475 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 476 | "requires": { 477 | "@types/mysql": "*" 478 | } 479 | }, 480 | "aws-xray-sdk-postgres": { 481 | "version": "3.3.4", 482 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 483 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 484 | "requires": { 485 | "@types/pg": "*" 486 | } 487 | }, 488 | "cls-hooked": { 489 | "version": "4.2.2", 490 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 491 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 492 | "requires": { 493 | "async-hook-jl": "^1.7.6", 494 | "emitter-listener": "^1.0.1", 495 | "semver": "^5.4.1" 496 | } 497 | }, 498 | "emitter-listener": { 499 | "version": "1.1.2", 500 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 501 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 502 | "requires": { 503 | "shimmer": "^1.2.0" 504 | } 505 | }, 506 | "pg-int8": { 507 | "version": "1.0.1", 508 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 509 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 510 | }, 511 | "pg-protocol": { 512 | "version": "1.5.0", 513 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 514 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 515 | }, 516 | "pg-types": { 517 | "version": "2.2.0", 518 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 519 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 520 | "requires": { 521 | "pg-int8": "1.0.1", 522 | "postgres-array": "~2.0.0", 523 | "postgres-bytea": "~1.0.0", 524 | "postgres-date": "~1.0.4", 525 | "postgres-interval": "^1.1.0" 526 | } 527 | }, 528 | "postgres-array": { 529 | "version": "2.0.0", 530 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 531 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 532 | }, 533 | "postgres-bytea": { 534 | "version": "1.0.0", 535 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 536 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 537 | }, 538 | "postgres-date": { 539 | "version": "1.0.7", 540 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 541 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 542 | }, 543 | "postgres-interval": { 544 | "version": "1.2.0", 545 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 546 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 547 | "requires": { 548 | "xtend": "^4.0.0" 549 | } 550 | }, 551 | "semver": { 552 | "version": "5.7.1", 553 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 554 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 555 | }, 556 | "shimmer": { 557 | "version": "1.2.1", 558 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 559 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 560 | }, 561 | "stack-chain": { 562 | "version": "1.3.7", 563 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 564 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 565 | }, 566 | "xtend": { 567 | "version": "4.0.2", 568 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 569 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 570 | } 571 | } 572 | } 573 | -------------------------------------------------------------------------------- /zlib/read/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /zlib/write/index.js: -------------------------------------------------------------------------------- 1 | // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | // SPDX-License-Identifier: MIT-0 3 | 4 | const AWS = require("aws-sdk"); 5 | const zlib = require("zlib"); 6 | const ddb = new AWS.DynamoDB.DocumentClient(); 7 | const AWSXRay = require("aws-xray-sdk"); 8 | 9 | const putItem = async (pk, payload) => { 10 | const params = { 11 | TableName: process.env.TABLE_NAME, 12 | Item: { 13 | sales_order_id: pk, 14 | part: "0", 15 | large_object: payload, 16 | }, 17 | }; 18 | return ddb.put(params).promise(); 19 | }; 20 | 21 | const compress = async (input) => { 22 | const segment = AWSXRay.getSegment(); 23 | const subsegment = segment.addNewSubsegment("subseg"); 24 | return new Promise((resolve, reject) => { 25 | zlib.gzip(JSON.stringify(input), (err, buffer) => { 26 | subsegment.close(); 27 | if (!err) { 28 | resolve(buffer); 29 | } else { 30 | reject(err); 31 | } 32 | }); 33 | }); 34 | }; 35 | 36 | exports.lambda_handler = async (event, context) => { 37 | const buffer = await compress(event.payload); 38 | 39 | return await putItem(event.id, buffer); 40 | }; 41 | -------------------------------------------------------------------------------- /zlib/write/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "write", 9 | "version": "1.0.0", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4" 13 | } 14 | }, 15 | "node_modules/@aws-sdk/service-error-classification": { 16 | "version": "3.40.0", 17 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 18 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==", 19 | "engines": { 20 | "node": ">= 10.0.0" 21 | } 22 | }, 23 | "node_modules/@aws-sdk/types": { 24 | "version": "3.40.0", 25 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 26 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==", 27 | "engines": { 28 | "node": ">= 10.0.0" 29 | } 30 | }, 31 | "node_modules/@types/body-parser": { 32 | "version": "1.19.2", 33 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 34 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 35 | "dependencies": { 36 | "@types/connect": "*", 37 | "@types/node": "*" 38 | } 39 | }, 40 | "node_modules/@types/cls-hooked": { 41 | "version": "4.3.3", 42 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 43 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 44 | "dependencies": { 45 | "@types/node": "*" 46 | } 47 | }, 48 | "node_modules/@types/connect": { 49 | "version": "3.4.35", 50 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 51 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 52 | "dependencies": { 53 | "@types/node": "*" 54 | } 55 | }, 56 | "node_modules/@types/express": { 57 | "version": "4.17.13", 58 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 59 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 60 | "dependencies": { 61 | "@types/body-parser": "*", 62 | "@types/express-serve-static-core": "^4.17.18", 63 | "@types/qs": "*", 64 | "@types/serve-static": "*" 65 | } 66 | }, 67 | "node_modules/@types/express-serve-static-core": { 68 | "version": "4.17.25", 69 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", 70 | "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", 71 | "dependencies": { 72 | "@types/node": "*", 73 | "@types/qs": "*", 74 | "@types/range-parser": "*" 75 | } 76 | }, 77 | "node_modules/@types/mime": { 78 | "version": "1.3.2", 79 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 80 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 81 | }, 82 | "node_modules/@types/mysql": { 83 | "version": "2.15.19", 84 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.19.tgz", 85 | "integrity": "sha512-wSRg2QZv14CWcZXkgdvHbbV2ACufNy5EgI8mBBxnJIptchv7DBy/h53VMa2jDhyo0C9MO4iowE6z9vF8Ja1DkQ==", 86 | "dependencies": { 87 | "@types/node": "*" 88 | } 89 | }, 90 | "node_modules/@types/node": { 91 | "version": "16.11.10", 92 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz", 93 | "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==" 94 | }, 95 | "node_modules/@types/pg": { 96 | "version": "8.6.1", 97 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", 98 | "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", 99 | "dependencies": { 100 | "@types/node": "*", 101 | "pg-protocol": "*", 102 | "pg-types": "^2.2.0" 103 | } 104 | }, 105 | "node_modules/@types/qs": { 106 | "version": "6.9.7", 107 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 108 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 109 | }, 110 | "node_modules/@types/range-parser": { 111 | "version": "1.2.4", 112 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 113 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 114 | }, 115 | "node_modules/@types/serve-static": { 116 | "version": "1.13.10", 117 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 118 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 119 | "dependencies": { 120 | "@types/mime": "^1", 121 | "@types/node": "*" 122 | } 123 | }, 124 | "node_modules/async-hook-jl": { 125 | "version": "1.7.6", 126 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 127 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 128 | "dependencies": { 129 | "stack-chain": "^1.3.7" 130 | }, 131 | "engines": { 132 | "node": "^4.7 || >=6.9 || >=7.3" 133 | } 134 | }, 135 | "node_modules/atomic-batcher": { 136 | "version": "1.0.2", 137 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 138 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 139 | }, 140 | "node_modules/aws-xray-sdk": { 141 | "version": "3.3.4", 142 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 143 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 144 | "dependencies": { 145 | "aws-xray-sdk-core": "3.3.4", 146 | "aws-xray-sdk-express": "3.3.4", 147 | "aws-xray-sdk-mysql": "3.3.4", 148 | "aws-xray-sdk-postgres": "3.3.4" 149 | }, 150 | "engines": { 151 | "node": ">= 10.x" 152 | } 153 | }, 154 | "node_modules/aws-xray-sdk-core": { 155 | "version": "3.3.4", 156 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 157 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 158 | "dependencies": { 159 | "@aws-sdk/service-error-classification": "^3.4.1", 160 | "@aws-sdk/types": "^3.4.1", 161 | "@types/cls-hooked": "^4.3.3", 162 | "atomic-batcher": "^1.0.2", 163 | "cls-hooked": "^4.2.2", 164 | "semver": "^5.3.0" 165 | }, 166 | "engines": { 167 | "node": ">= 10.x" 168 | } 169 | }, 170 | "node_modules/aws-xray-sdk-express": { 171 | "version": "3.3.4", 172 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 173 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 174 | "dependencies": { 175 | "@types/express": "*" 176 | }, 177 | "engines": { 178 | "node": ">= 10.x" 179 | }, 180 | "peerDependencies": { 181 | "aws-xray-sdk-core": "^3.3.4" 182 | } 183 | }, 184 | "node_modules/aws-xray-sdk-mysql": { 185 | "version": "3.3.4", 186 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 187 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 188 | "dependencies": { 189 | "@types/mysql": "*" 190 | }, 191 | "engines": { 192 | "node": ">= 10.x" 193 | }, 194 | "peerDependencies": { 195 | "aws-xray-sdk-core": "^3.3.4" 196 | } 197 | }, 198 | "node_modules/aws-xray-sdk-postgres": { 199 | "version": "3.3.4", 200 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 201 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 202 | "dependencies": { 203 | "@types/pg": "*" 204 | }, 205 | "engines": { 206 | "node": ">= 10.x" 207 | }, 208 | "peerDependencies": { 209 | "aws-xray-sdk-core": "^3.3.4" 210 | } 211 | }, 212 | "node_modules/cls-hooked": { 213 | "version": "4.2.2", 214 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 215 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 216 | "dependencies": { 217 | "async-hook-jl": "^1.7.6", 218 | "emitter-listener": "^1.0.1", 219 | "semver": "^5.4.1" 220 | }, 221 | "engines": { 222 | "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" 223 | } 224 | }, 225 | "node_modules/emitter-listener": { 226 | "version": "1.1.2", 227 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 228 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 229 | "dependencies": { 230 | "shimmer": "^1.2.0" 231 | } 232 | }, 233 | "node_modules/pg-int8": { 234 | "version": "1.0.1", 235 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 236 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==", 237 | "engines": { 238 | "node": ">=4.0.0" 239 | } 240 | }, 241 | "node_modules/pg-protocol": { 242 | "version": "1.5.0", 243 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 244 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 245 | }, 246 | "node_modules/pg-types": { 247 | "version": "2.2.0", 248 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 249 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 250 | "dependencies": { 251 | "pg-int8": "1.0.1", 252 | "postgres-array": "~2.0.0", 253 | "postgres-bytea": "~1.0.0", 254 | "postgres-date": "~1.0.4", 255 | "postgres-interval": "^1.1.0" 256 | }, 257 | "engines": { 258 | "node": ">=4" 259 | } 260 | }, 261 | "node_modules/postgres-array": { 262 | "version": "2.0.0", 263 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 264 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==", 265 | "engines": { 266 | "node": ">=4" 267 | } 268 | }, 269 | "node_modules/postgres-bytea": { 270 | "version": "1.0.0", 271 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 272 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=", 273 | "engines": { 274 | "node": ">=0.10.0" 275 | } 276 | }, 277 | "node_modules/postgres-date": { 278 | "version": "1.0.7", 279 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 280 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==", 281 | "engines": { 282 | "node": ">=0.10.0" 283 | } 284 | }, 285 | "node_modules/postgres-interval": { 286 | "version": "1.2.0", 287 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 288 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 289 | "dependencies": { 290 | "xtend": "^4.0.0" 291 | }, 292 | "engines": { 293 | "node": ">=0.10.0" 294 | } 295 | }, 296 | "node_modules/semver": { 297 | "version": "5.7.1", 298 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 299 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 300 | "bin": { 301 | "semver": "bin/semver" 302 | } 303 | }, 304 | "node_modules/shimmer": { 305 | "version": "1.2.1", 306 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 307 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 308 | }, 309 | "node_modules/stack-chain": { 310 | "version": "1.3.7", 311 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 312 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 313 | }, 314 | "node_modules/xtend": { 315 | "version": "4.0.2", 316 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 317 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", 318 | "engines": { 319 | "node": ">=0.4" 320 | } 321 | } 322 | }, 323 | "dependencies": { 324 | "@aws-sdk/service-error-classification": { 325 | "version": "3.40.0", 326 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.40.0.tgz", 327 | "integrity": "sha512-c8btKmkvjXczWudXubGdbO3JgmjySBUVC/gCrZDNfwNGsG8RYJJQYYcnmt1gWjelUZsgMDl/2PIzxTlxVF91rA==" 328 | }, 329 | "@aws-sdk/types": { 330 | "version": "3.40.0", 331 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.40.0.tgz", 332 | "integrity": "sha512-KpILcfvRaL88TLvo3SY4OuCCg90SvcNLPyjDwUuBqiOyWODjrKShHtAPJzej4CLp92lofh+ul0UnBfV9Jb/5PA==" 333 | }, 334 | "@types/body-parser": { 335 | "version": "1.19.2", 336 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 337 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 338 | "requires": { 339 | "@types/connect": "*", 340 | "@types/node": "*" 341 | } 342 | }, 343 | "@types/cls-hooked": { 344 | "version": "4.3.3", 345 | "resolved": "https://registry.npmjs.org/@types/cls-hooked/-/cls-hooked-4.3.3.tgz", 346 | "integrity": "sha512-gNstDTb/ty5h6gJd6YpSPgsLX9LmRpaKJqGFp7MRlYxhwp4vXXKlJ9+bt1TZ9KbVNXE+Mbxy2AYXcpY21DDtJw==", 347 | "requires": { 348 | "@types/node": "*" 349 | } 350 | }, 351 | "@types/connect": { 352 | "version": "3.4.35", 353 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 354 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 355 | "requires": { 356 | "@types/node": "*" 357 | } 358 | }, 359 | "@types/express": { 360 | "version": "4.17.13", 361 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", 362 | "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", 363 | "requires": { 364 | "@types/body-parser": "*", 365 | "@types/express-serve-static-core": "^4.17.18", 366 | "@types/qs": "*", 367 | "@types/serve-static": "*" 368 | } 369 | }, 370 | "@types/express-serve-static-core": { 371 | "version": "4.17.25", 372 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.25.tgz", 373 | "integrity": "sha512-OUJIVfRMFijZukGGwTpKNFprqCCXk5WjNGvUgB/CxxBR40QWSjsNK86+yvGKlCOGc7sbwfHLaXhkG+NsytwBaQ==", 374 | "requires": { 375 | "@types/node": "*", 376 | "@types/qs": "*", 377 | "@types/range-parser": "*" 378 | } 379 | }, 380 | "@types/mime": { 381 | "version": "1.3.2", 382 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", 383 | "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" 384 | }, 385 | "@types/mysql": { 386 | "version": "2.15.19", 387 | "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.19.tgz", 388 | "integrity": "sha512-wSRg2QZv14CWcZXkgdvHbbV2ACufNy5EgI8mBBxnJIptchv7DBy/h53VMa2jDhyo0C9MO4iowE6z9vF8Ja1DkQ==", 389 | "requires": { 390 | "@types/node": "*" 391 | } 392 | }, 393 | "@types/node": { 394 | "version": "16.11.10", 395 | "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.10.tgz", 396 | "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==" 397 | }, 398 | "@types/pg": { 399 | "version": "8.6.1", 400 | "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", 401 | "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", 402 | "requires": { 403 | "@types/node": "*", 404 | "pg-protocol": "*", 405 | "pg-types": "^2.2.0" 406 | } 407 | }, 408 | "@types/qs": { 409 | "version": "6.9.7", 410 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 411 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" 412 | }, 413 | "@types/range-parser": { 414 | "version": "1.2.4", 415 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 416 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" 417 | }, 418 | "@types/serve-static": { 419 | "version": "1.13.10", 420 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", 421 | "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", 422 | "requires": { 423 | "@types/mime": "^1", 424 | "@types/node": "*" 425 | } 426 | }, 427 | "async-hook-jl": { 428 | "version": "1.7.6", 429 | "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", 430 | "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", 431 | "requires": { 432 | "stack-chain": "^1.3.7" 433 | } 434 | }, 435 | "atomic-batcher": { 436 | "version": "1.0.2", 437 | "resolved": "https://registry.npmjs.org/atomic-batcher/-/atomic-batcher-1.0.2.tgz", 438 | "integrity": "sha1-0WkB0QzOxZUWwZe5zNiTBom4E7Q=" 439 | }, 440 | "aws-xray-sdk": { 441 | "version": "3.3.4", 442 | "resolved": "https://registry.npmjs.org/aws-xray-sdk/-/aws-xray-sdk-3.3.4.tgz", 443 | "integrity": "sha512-687fHnqLiHkzqvwot4mFnhKUiBSOimOoLEoZ/NCRBwrLN1lhtd6TD5QEr7o7GmMfOcwfcuEJGqZE1X3cLkDovA==", 444 | "requires": { 445 | "aws-xray-sdk-core": "3.3.4", 446 | "aws-xray-sdk-express": "3.3.4", 447 | "aws-xray-sdk-mysql": "3.3.4", 448 | "aws-xray-sdk-postgres": "3.3.4" 449 | } 450 | }, 451 | "aws-xray-sdk-core": { 452 | "version": "3.3.4", 453 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-core/-/aws-xray-sdk-core-3.3.4.tgz", 454 | "integrity": "sha512-GGnYAQgtclLHIBReOtsUgbDDCar0LR2TaHCWlQhPrEVVayrSAZQ4y+SlXN5YIadxMec4/f5dbF69wMbug9D5Ww==", 455 | "requires": { 456 | "@aws-sdk/service-error-classification": "^3.4.1", 457 | "@aws-sdk/types": "^3.4.1", 458 | "@types/cls-hooked": "^4.3.3", 459 | "atomic-batcher": "^1.0.2", 460 | "cls-hooked": "^4.2.2", 461 | "semver": "^5.3.0" 462 | } 463 | }, 464 | "aws-xray-sdk-express": { 465 | "version": "3.3.4", 466 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-express/-/aws-xray-sdk-express-3.3.4.tgz", 467 | "integrity": "sha512-KHglcAVBW4AygcBui9MSP0XS9+LC9vIpNWcfbDvVwJOB7BjQo3Uvkl+RlvDj/R4jrN/hWXfK40xp6R9GH5B1gQ==", 468 | "requires": { 469 | "@types/express": "*" 470 | } 471 | }, 472 | "aws-xray-sdk-mysql": { 473 | "version": "3.3.4", 474 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-mysql/-/aws-xray-sdk-mysql-3.3.4.tgz", 475 | "integrity": "sha512-RLrXLHecQdtun+Oe006f4Dg9/gyg6f8xcP6iBJMfwKI/06QCMUR6hErLPwOLsgpic4rm6AVEsTd5XQg/xdkwsQ==", 476 | "requires": { 477 | "@types/mysql": "*" 478 | } 479 | }, 480 | "aws-xray-sdk-postgres": { 481 | "version": "3.3.4", 482 | "resolved": "https://registry.npmjs.org/aws-xray-sdk-postgres/-/aws-xray-sdk-postgres-3.3.4.tgz", 483 | "integrity": "sha512-A4TDWHQEU1hZdChP0BrXx2oiDaatULgMTaKNpZLtpuGmnkQ2oVx11hsCbjVgZsQxJvL2x8weFIGJyhKoQQ84vw==", 484 | "requires": { 485 | "@types/pg": "*" 486 | } 487 | }, 488 | "cls-hooked": { 489 | "version": "4.2.2", 490 | "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", 491 | "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", 492 | "requires": { 493 | "async-hook-jl": "^1.7.6", 494 | "emitter-listener": "^1.0.1", 495 | "semver": "^5.4.1" 496 | } 497 | }, 498 | "emitter-listener": { 499 | "version": "1.1.2", 500 | "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", 501 | "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", 502 | "requires": { 503 | "shimmer": "^1.2.0" 504 | } 505 | }, 506 | "pg-int8": { 507 | "version": "1.0.1", 508 | "resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz", 509 | "integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==" 510 | }, 511 | "pg-protocol": { 512 | "version": "1.5.0", 513 | "resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.5.0.tgz", 514 | "integrity": "sha512-muRttij7H8TqRNu/DxrAJQITO4Ac7RmX3Klyr/9mJEOBeIpgnF8f9jAfRz5d3XwQZl5qBjF9gLsUtMPJE0vezQ==" 515 | }, 516 | "pg-types": { 517 | "version": "2.2.0", 518 | "resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz", 519 | "integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==", 520 | "requires": { 521 | "pg-int8": "1.0.1", 522 | "postgres-array": "~2.0.0", 523 | "postgres-bytea": "~1.0.0", 524 | "postgres-date": "~1.0.4", 525 | "postgres-interval": "^1.1.0" 526 | } 527 | }, 528 | "postgres-array": { 529 | "version": "2.0.0", 530 | "resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz", 531 | "integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==" 532 | }, 533 | "postgres-bytea": { 534 | "version": "1.0.0", 535 | "resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.0.tgz", 536 | "integrity": "sha1-AntTPAqokOJtFy1Hz5zOzFIazTU=" 537 | }, 538 | "postgres-date": { 539 | "version": "1.0.7", 540 | "resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz", 541 | "integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==" 542 | }, 543 | "postgres-interval": { 544 | "version": "1.2.0", 545 | "resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz", 546 | "integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==", 547 | "requires": { 548 | "xtend": "^4.0.0" 549 | } 550 | }, 551 | "semver": { 552 | "version": "5.7.1", 553 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 554 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 555 | }, 556 | "shimmer": { 557 | "version": "1.2.1", 558 | "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", 559 | "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" 560 | }, 561 | "stack-chain": { 562 | "version": "1.3.7", 563 | "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", 564 | "integrity": "sha1-0ZLJ/06moiyUxN1FkXHj8AzqEoU=" 565 | }, 566 | "xtend": { 567 | "version": "4.0.2", 568 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 569 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 570 | } 571 | } 572 | } 573 | -------------------------------------------------------------------------------- /zlib/write/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "write", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "MIT-0", 11 | "dependencies": { 12 | "aws-xray-sdk": "^3.3.4" 13 | } 14 | } 15 | --------------------------------------------------------------------------------