├── .gitignore ├── README.md └── triggers-examples ├── .env.example ├── .eslintrc.js ├── .gitignore ├── CONTRIBUTING.md ├── README.md ├── auth ├── custom_user_data.json └── providers.json ├── data_sources └── mongodb-atlas │ ├── config.json │ └── default_rule.json ├── environments ├── no-environment.json ├── production.json ├── qa.json └── testing.json ├── functions ├── config.json ├── generateMonthlySalesReport.js ├── getClusterScalingInfo.js ├── materializeMonthlyProductSales.js ├── package-lock.json ├── package.json ├── passwordResetFunc.js ├── scaleCluster.js ├── scaleDownCluster.js ├── scaleUpCluster.js ├── sendOrderConfirmationText.js └── updateCustomUserDataOnLogin.js ├── graphql └── config.json ├── http_endpoints └── config.json ├── jest.config.js ├── package-lock.json ├── package.json ├── realm_config.json ├── scripts ├── deploy.js ├── deployWithSecrets.js ├── publishSecrets.js └── utils.js ├── sync └── config.json ├── test └── integration │ ├── generateMonthlySalesReport.test.js │ ├── materializeMonthlyProductSales.test.js │ ├── scaleCluster.test.js │ ├── sendOrderConfirmationText.test.js │ ├── updateCustomUserDataOnLogin.test.js │ └── utils.js ├── triggers ├── generatePreviousMonthSalesReport.json ├── materializeMonthlyProductSales.json ├── scaleDownClusterDuringNight.json ├── scaleUpClusterDuringDay.json ├── sendOrderConfirmationText.json └── updateCustomUserDataOnLogin.json └── values ├── AWS_S3_ACCESS_KEY_SECRET.json └── TWILIO_AUTH_TOKEN.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Atlas App Services Examples 2 | 3 | This repository contains examples of using [MongoDB Atlas App Services](https://www.mongodb.com/docs/atlas/app-services/). App Services are fully-managed backend services and APIs 4 | that help you build apps, integrate services, and connect to your Atlas data faster. 5 | 6 | Currently the Atlas App Services examples just contains examples of [Atlas Triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/), 7 | which you can find in the [triggers-examples folder](./triggers-examples). 8 | 9 | For a wide range of example projects showing common development patterns and use cases, 10 | see the `Atlas Device SDK Example Projects page `. -------------------------------------------------------------------------------- /triggers-examples/.env.example: -------------------------------------------------------------------------------- 1 | # App Services API Env values 2 | ADMIN_API_GROUP_ID=a 3 | ADMIN_API_APP_ID=b 4 | PUBLIC_API_KEY=c 5 | PRIVATE_API_KEY=d 6 | 7 | APP_ID="abc-qwerty" 8 | 9 | 10 | # APP SECRETS 11 | APP_SECRET_TWILIO_AUTH_TOKEN="" 12 | APP_SECRET_S3_SECRET_KEY="" 13 | 14 | # MongoDB Connection Info (for testing) 15 | DB_USER="local_test" 16 | DB_PASSWORD="abc123" 17 | 18 | # Test API key 19 | LOCAL_TEST_KEY="abc123" 20 | -------------------------------------------------------------------------------- /triggers-examples/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | node: true, 4 | commonjs: true, 5 | es2021: true, 6 | jest: true, 7 | }, 8 | globals: { 9 | context: "writable", 10 | BSON: "writable", 11 | }, 12 | extends: "eslint:recommended", 13 | overrides: [], 14 | parserOptions: { 15 | ecmaVersion: 8, 16 | }, 17 | plugins: ["jest"], 18 | rules: {}, 19 | }; 20 | -------------------------------------------------------------------------------- /triggers-examples/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .env 3 | mongodb-realm/ 4 | -------------------------------------------------------------------------------- /triggers-examples/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the Triggers Examples 2 | 3 | Guidelines: 4 | 5 | 1. Add integration test for all examples. Add these tests to the `test/integration` 6 | directory. 7 | 1. When doing local development, you can add your own App ID to the 8 | `realm_config.json` file. 9 | 1. Don't commit secrets. Add secrets to a local `.env` file, prefixing the name 10 | with `APP_SECRET`. The secret deployment script automatically adds these to 11 | your app when you run `npm run build` or npm run build:secrets`. 12 | 1. Document all examples. Make sure to include information about them in the README, 13 | both in the table toward the top fo the page and in a section below. 14 | Refer to the README for examples. 15 | -------------------------------------------------------------------------------- /triggers-examples/README.md: -------------------------------------------------------------------------------- 1 | # App Services Examples 2 | 3 | This repository contains example use cases for [MongoDB Atlas App Services](https://www.mongodb.com/docs/atlas/app-services/). 4 | 5 | ## Triggers 6 | 7 | This repository contains the following example [Atlas Triggers](https://www.mongodb.com/docs/atlas/app-services/triggers/overview/). 8 | 9 | | Name | Trigger Type | Description | 10 | | :-------------------------------------------------------------------------------------------------------------------------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | 11 | | [`sendOrderConfirmationText`](#sendorderconfirmationtext) | Database | Sends an SMS message with the Twilio SMS API when a document is added to a collection. | 12 | | [`materializeMonthlyProductSales`](#materializemonthlyproductsales) | Database | Update a materialized view document when a document is added to a collection. | 13 | | [`updateCustomUserDataOnLogin`](#updateCustomUserDataOnLogin) | Authentication | Upsert a [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) Object when a user signs into an account with App Services Authentication. | 14 | | [`generatePreviousMonthSalesReport`](#generatepreviousmonthsalesreport) | Scheduled | Post a CSV report of previous month's sales totals to an AWS S3 bucket. | 15 | | [`scaleDownClusterDuringNight` and `scaleUpClusterDuringDay`](#scaledownclusterduringnight-and-scaleupclusterduringday) and | Scheduled | Scale an Atlas cluster up and down based on time of day. | 16 | 17 | ### sendOrderConfirmationText 18 | 19 | Database Trigger that sends an SMS message with the Twilio SMS API 20 | when a document is added to the `orders` collection. 21 | 22 | Relevant files: 23 | 24 | - [`triggers/sendOrderConfirmationText.json`](./triggers/sendOrderConfirmationText.json): 25 | Trigger configuration file 26 | - [`functions/sendOrderConfirmationText.js`](./functions/sendOrderConfirmationText.js): 27 | Function invoked by Trigger 28 | - [`functions/config.json`](./functions/config.json): Function configuration 29 | 30 | ### materializeMonthlyProductSales 31 | 32 | Database Trigger that updates a materialized view document in the `monthlyProductSales` 33 | when a document is added to the `sales` collection. 34 | 35 | Relevant files: 36 | 37 | - [`triggers/materializeMonthlyProductSales.json`](./triggers/materializeMonthlyProductSales.json): 38 | Trigger configuration file 39 | - [`functions/materializeMonthlyProductSales.js`](./functions/materializeMonthlyProductSales.js): 40 | Function invoked by Trigger 41 | - [`functions/config.json`](./functions/config.json): Function configuration 42 | 43 | ### updateCustomUserDataOnLogin 44 | 45 | Authentication Trigger that upserts (create or update) a [Custom User Data](https://www.mongodb.com/docs/atlas/app-services/users/enable-custom-user-data/) 46 | object when a user logs in with App Services Authentication. 47 | 48 | Relevant files: 49 | 50 | - [`triggers/materializeMonthlyProductSales.json`](./triggers/materializeMonthlyProductSales.json): 51 | Trigger configuration file 52 | - [`functions/materializeMonthlyProductSales.js`](./functions/materializeMonthlyProductSales.js): 53 | Function invoked by Trigger 54 | - [`functions/config.json`](./functions/config.json): Function configuration 55 | 56 | ### generatePreviousMonthSalesReport 57 | 58 | Scheduled Trigger that posts a CSV report of previous month's sales totals 59 | to an AWS S3 bucket. Runs at the beginning of each month to report on the previous month. 60 | 61 | Relevant files: 62 | 63 | - [`triggers/generatePreviousMonthSalesReport.json`](./triggers/generatePreviousMonthSalesReport.json): 64 | Trigger configuration file 65 | - [`functions/generateMonthlySalesReport.js`](./functions/generateMonthlySalesReport.js): 66 | Function invoked by Trigger 67 | - [`functions/config.json`](./functions/config.json): Function configuration 68 | 69 | ### scaleDownClusterDuringNight and scaleUpClusterDuringDay 70 | 71 | Scheduled Triggers that scale up and down an Atlas cluster. 72 | `scaleDownClusterDuringNight` reduces the cluster size every weekday night and 73 | `scaleUpClusterDuringDay` increases the cluster size every weekday morning. 74 | 75 | Relevant files: 76 | 77 | - [`triggers/scaleDownClusterDuringNight.json`](./triggers/scaleDownClusterDuringNight.json): 78 | Trigger configuration file 79 | - [`triggers/scaleUpClusterDuringDay.json`](./triggers/scaleUpClusterDuringDay.json): 80 | Trigger configuration file 81 | - [`functions/getClusterScalingInfo.js`](./functions/getClusterScalingInfo.js): 82 | Helper Function that gets cluster scaling configuration information 83 | - [`functions/scaleCluster.js`](./functions/scaleCluster.js): 84 | Helper Function that calls the Atlas Admin API to scale cluster 85 | - [`functions/scaleDownCluster.js`](./functions/scaleDownCluster.js): 86 | Function called by Scheduled Trigger that handles scaling down of cluster 87 | - [`functions/scaleUpCluster.js`](./functions/scaleUpCluster.js): 88 | Function called by Scheduled Trigger that handles scaling up of cluster 89 | - [`functions/config.json`](./functions/config.json): Configuration for all 90 | relevant Functions 91 | 92 | ## Integration Tests 93 | 94 | All the examples in this repository include integration tests to validate functionality 95 | which you can find in the [`test/integration` directory](./test/integration/). 96 | -------------------------------------------------------------------------------- /triggers-examples/auth/custom_user_data.json: -------------------------------------------------------------------------------- 1 | { 2 | "enabled": true, 3 | "mongo_service_name": "mongodb-atlas", 4 | "database_name": "store", 5 | "collection_name": "userData", 6 | "user_id_field": "_id" 7 | } 8 | -------------------------------------------------------------------------------- /triggers-examples/auth/providers.json: -------------------------------------------------------------------------------- 1 | { 2 | "api-key": { 3 | "name": "api-key", 4 | "type": "api-key", 5 | "disabled": false 6 | }, 7 | "anon-user": { 8 | "name": "anon-user", 9 | "type": "anon-user", 10 | "disabled": false 11 | }, 12 | "local-userpass": { 13 | "name": "local-userpass", 14 | "type": "local-userpass", 15 | "config": { 16 | "autoConfirm": true, 17 | "resetFunctionName": "passwordResetFunc", 18 | "runConfirmationFunction": false, 19 | "runResetFunction": true 20 | }, 21 | "disabled": false 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /triggers-examples/data_sources/mongodb-atlas/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mongodb-atlas", 3 | "type": "mongodb-atlas", 4 | "config": { 5 | "clusterName": "Cluster0", 6 | "readPreference": "primary", 7 | "wireProtocolEnabled": false 8 | }, 9 | "version": 1 10 | } 11 | -------------------------------------------------------------------------------- /triggers-examples/data_sources/mongodb-atlas/default_rule.json: -------------------------------------------------------------------------------- 1 | { 2 | "roles": [ 3 | { 4 | "name": "apiKeyReadWriteAll", 5 | "apply_when": { 6 | "%%user.type": "server" 7 | }, 8 | "read": true, 9 | "write": true, 10 | "insert": true, 11 | "delete": true, 12 | "search": true 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /triggers-examples/environments/no-environment.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": { 3 | "ATLAS_PUBLIC_KEY": "soaytmok", 4 | "AWS_S3_ACCESS_KEY_ID": "AKIAZ6OLG2JWZRUEWQHR", 5 | "AWS_S3_BUCKET_NAME": "app-services-integration-testing", 6 | "AWS_S3_BUCKET_REGION": "us-east-1", 7 | "TWILIO_ACCOUNT_SID": "AC0e654bf1ec727b85ccebc0b83eb2001c", 8 | "TWILIO_FROM_NUMBER": "+15005550006", 9 | "APP_ID": "app_services_examples-plvox", 10 | "CLUSTER_PROJECT_ID": "613fafb430fb992594569bcc", 11 | "CLUSTER_NAME": "Cluster0", 12 | "CLUSTER_PROVIDER": "AWS", 13 | "CLUSTER_SCALE_UP_INSTANCE_SIZE": "M10", 14 | "CLUSTER_SCALE_DOWN_INSTANCE_SIZE": "M20", 15 | "ENABLE_PROD_JOB": false 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /triggers-examples/environments/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": {} 3 | } 4 | -------------------------------------------------------------------------------- /triggers-examples/environments/qa.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": {} 3 | } 4 | -------------------------------------------------------------------------------- /triggers-examples/environments/testing.json: -------------------------------------------------------------------------------- 1 | { 2 | "values": {} 3 | } 4 | -------------------------------------------------------------------------------- /triggers-examples/functions/config.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "sendOrderConfirmationText", 4 | "private": true, 5 | "run_as_system": true 6 | }, 7 | { 8 | "name": "materializeMonthlyProductSales", 9 | "private": true, 10 | "run_as_system": true 11 | }, 12 | { 13 | "name": "updateCustomUserDataOnLogin", 14 | "private": true 15 | }, 16 | { 17 | "name": "passwordResetFunc", 18 | "private": false 19 | }, 20 | { 21 | "name": "generateMonthlySalesReport", 22 | "private": false, 23 | "can_evaluate": { 24 | "%%user.type": "server" 25 | } 26 | }, 27 | { 28 | "name": "scaleCluster", 29 | "private": false, 30 | "can_evaluate": { 31 | "%%user.type": "server" 32 | } 33 | }, 34 | { 35 | "name": "getClusterScalingInfo", 36 | "private": true 37 | }, 38 | { 39 | "name": "scaleDownCluster", 40 | "private": true 41 | }, 42 | { 43 | "name": "scaleUpCluster", 44 | "private": true 45 | } 46 | ] 47 | -------------------------------------------------------------------------------- /triggers-examples/functions/generateMonthlySalesReport.js: -------------------------------------------------------------------------------- 1 | function generateCsvReport(documents) { 2 | const { parse } = require("json2csv"); 3 | const fields = Object.keys(documents[0]); 4 | // Note: You must explicitly set the end of line delimiter `eol` to use 5 | // the json2csv module with the Atlas Functions JavaScript runtime. 6 | const opts = { fields, eol: "\n" }; 7 | const csvString = parse(documents, opts); 8 | return csvString; 9 | } 10 | 11 | async function putReportInS3(reportName, reportBody) { 12 | const { S3Client, PutObjectCommand } = require("@aws-sdk/client-s3"); 13 | const accessKeyId = context.environment.values["AWS_S3_ACCESS_KEY_ID"]; 14 | const secretAccessKey = context.values.get("AWS_S3_ACCESS_KEY_SECRET"); 15 | const s3Bucket = context.environment.values["AWS_S3_BUCKET_NAME"]; 16 | const region = context.environment.values["AWS_S3_BUCKET_REGION"]; 17 | 18 | console.log("report body::\n\n" + reportBody); 19 | 20 | // Add CSV report to S3 bucket 21 | const s3 = new S3Client({ 22 | credentials: { accessKeyId, secretAccessKey }, 23 | region, 24 | }); 25 | const commandInput = { 26 | Bucket: s3Bucket, 27 | Key: reportName, 28 | Body: reportBody, 29 | ContentType: "text/csv", 30 | }; 31 | const command = new PutObjectCommand(commandInput); 32 | const s3Response = await s3.send(command); 33 | 34 | return s3Response; 35 | } 36 | 37 | async function generateMonthlySalesReport(monthZeroEleven, year) { 38 | let monthToReport, yearToReport; 39 | 40 | // For when arguments not provided to the Function, 41 | // such as when used in the `generatePreviousMonthSalesReport` Scheduled Trigger, 42 | // the Function generates the report for the previous month. 43 | if (!monthZeroEleven || !year) { 44 | const now = new Date(); 45 | const thisMonth = now.getUTCMonth(); 46 | const thisYear = now.getUTCFullYear(); 47 | const lastMonth = thisMonth === 0 ? 11 : thisMonth - 1; 48 | const lastMonthYear = now.getUTCMonth() === 0 ? thisYear - 1 : thisYear; 49 | monthToReport = lastMonth; 50 | yearToReport = lastMonthYear; 51 | } else { 52 | monthToReport = monthZeroEleven; 53 | yearToReport = year; 54 | } 55 | 56 | const monthlySalesMaterializations = context.services 57 | .get("mongodb-atlas") 58 | .db("store") 59 | .collection("monthlyProductSales"); 60 | 61 | const lastMonthsMaterializedSales = await monthlySalesMaterializations 62 | .find({ month: monthToReport, year: yearToReport }) 63 | .toArray(); 64 | 65 | const csvReport = generateCsvReport(lastMonthsMaterializedSales); 66 | const reportName = `${yearToReport}-${monthToReport}-sales-report.csv`; 67 | const s3Response = await putReportInS3(reportName, csvReport); 68 | return s3Response; 69 | } 70 | 71 | exports = generateMonthlySalesReport; 72 | -------------------------------------------------------------------------------- /triggers-examples/functions/getClusterScalingInfo.js: -------------------------------------------------------------------------------- 1 | function getClusterScalingInfo() { 2 | // Get stored API credentials 3 | const username = context.environment.values["ATLAS_PUBLIC_KEY"]; 4 | const password = context.values.get("APP_SECRET_PRIVATE_API_KEY"); 5 | 6 | // Get cluster information 7 | const projectId = context.environment.values["CLUSTER_PROJECT_ID"]; 8 | const clusterName = context.environment.values["CLUSTER_NAME"]; 9 | const clusterProvider = context.environment.values["CLUSTER_PROVIDER"]; 10 | const scaleUpInstanceSize = 11 | context.environment.values["CLUSTER_SCALE_UP_INSTANCE_SIZE"]; 12 | const scaleDownInstanceSize = 13 | context.environment.values["CLUSTER_SCALE_UP_INSTANCE_SIZE"]; 14 | return { 15 | username, 16 | password, 17 | projectId, 18 | clusterName, 19 | clusterProvider, 20 | scaleUpInstanceSize, 21 | scaleDownInstanceSize, 22 | }; 23 | } 24 | 25 | exports = getClusterScalingInfo; 26 | -------------------------------------------------------------------------------- /triggers-examples/functions/materializeMonthlyProductSales.js: -------------------------------------------------------------------------------- 1 | async function materializeMonthlyProductSales({ fullDocument }) { 2 | const { productId, timeOfSale, amountUsd } = fullDocument; 3 | const year = timeOfSale.getUTCFullYear(); 4 | const month = timeOfSale.getUTCMonth(); 5 | // Match document with same month, year, and productId 6 | const query = { year, month, productId }; 7 | // Increment the monthly total sales uses the $inc operator 8 | const update = { 9 | $set: { 10 | year, 11 | month, 12 | productId, 13 | }, 14 | $inc: { 15 | totalSalesUsd: amountUsd, 16 | }, 17 | }; 18 | // Create the document if it doesn't already exist 19 | const options = { upsert: true }; 20 | 21 | // Access MongoDB collection 22 | const monthlyProductSales = context.services 23 | .get("mongodb-atlas") 24 | .db("store") 25 | .collection("monthlyProductSales"); 26 | // Update data in MongoDB using updateOne 27 | await monthlyProductSales.updateOne(query, update, options); 28 | } 29 | exports = materializeMonthlyProductSales; 30 | -------------------------------------------------------------------------------- /triggers-examples/functions/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "functions", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "functions", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@aws-sdk/client-s3": "^3.171.0", 13 | "axios": "^0.27.2", 14 | "json2csv": "^5.0.7", 15 | "twilio": "^3.82.0" 16 | } 17 | }, 18 | "node_modules/@aws-crypto/crc32": { 19 | "version": "2.0.0", 20 | "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz", 21 | "integrity": "sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA==", 22 | "dependencies": { 23 | "@aws-crypto/util": "^2.0.0", 24 | "@aws-sdk/types": "^3.1.0", 25 | "tslib": "^1.11.1" 26 | } 27 | }, 28 | "node_modules/@aws-crypto/crc32/node_modules/tslib": { 29 | "version": "1.14.1", 30 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 31 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 32 | }, 33 | "node_modules/@aws-crypto/crc32c": { 34 | "version": "2.0.0", 35 | "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-2.0.0.tgz", 36 | "integrity": "sha512-vF0eMdMHx3O3MoOXUfBZry8Y4ZDtcuskjjKgJz8YfIDjLStxTZrYXk+kZqtl6A0uCmmiN/Eb/JbC/CndTV1MHg==", 37 | "dependencies": { 38 | "@aws-crypto/util": "^2.0.0", 39 | "@aws-sdk/types": "^3.1.0", 40 | "tslib": "^1.11.1" 41 | } 42 | }, 43 | "node_modules/@aws-crypto/crc32c/node_modules/tslib": { 44 | "version": "1.14.1", 45 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 46 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 47 | }, 48 | "node_modules/@aws-crypto/ie11-detection": { 49 | "version": "2.0.2", 50 | "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", 51 | "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", 52 | "dependencies": { 53 | "tslib": "^1.11.1" 54 | } 55 | }, 56 | "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { 57 | "version": "1.14.1", 58 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 59 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 60 | }, 61 | "node_modules/@aws-crypto/sha1-browser": { 62 | "version": "2.0.0", 63 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-2.0.0.tgz", 64 | "integrity": "sha512-3fIVRjPFY8EG5HWXR+ZJZMdWNRpwbxGzJ9IH9q93FpbgCH8u8GHRi46mZXp3cYD7gealmyqpm3ThZwLKJjWJhA==", 65 | "dependencies": { 66 | "@aws-crypto/ie11-detection": "^2.0.0", 67 | "@aws-crypto/supports-web-crypto": "^2.0.0", 68 | "@aws-sdk/types": "^3.1.0", 69 | "@aws-sdk/util-locate-window": "^3.0.0", 70 | "@aws-sdk/util-utf8-browser": "^3.0.0", 71 | "tslib": "^1.11.1" 72 | } 73 | }, 74 | "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { 75 | "version": "1.14.1", 76 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 77 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 78 | }, 79 | "node_modules/@aws-crypto/sha256-browser": { 80 | "version": "2.0.0", 81 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", 82 | "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", 83 | "dependencies": { 84 | "@aws-crypto/ie11-detection": "^2.0.0", 85 | "@aws-crypto/sha256-js": "^2.0.0", 86 | "@aws-crypto/supports-web-crypto": "^2.0.0", 87 | "@aws-crypto/util": "^2.0.0", 88 | "@aws-sdk/types": "^3.1.0", 89 | "@aws-sdk/util-locate-window": "^3.0.0", 90 | "@aws-sdk/util-utf8-browser": "^3.0.0", 91 | "tslib": "^1.11.1" 92 | } 93 | }, 94 | "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { 95 | "version": "1.14.1", 96 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 97 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 98 | }, 99 | "node_modules/@aws-crypto/sha256-js": { 100 | "version": "2.0.0", 101 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", 102 | "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", 103 | "dependencies": { 104 | "@aws-crypto/util": "^2.0.0", 105 | "@aws-sdk/types": "^3.1.0", 106 | "tslib": "^1.11.1" 107 | } 108 | }, 109 | "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { 110 | "version": "1.14.1", 111 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 112 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 113 | }, 114 | "node_modules/@aws-crypto/supports-web-crypto": { 115 | "version": "2.0.2", 116 | "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", 117 | "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", 118 | "dependencies": { 119 | "tslib": "^1.11.1" 120 | } 121 | }, 122 | "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { 123 | "version": "1.14.1", 124 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 125 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 126 | }, 127 | "node_modules/@aws-crypto/util": { 128 | "version": "2.0.2", 129 | "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", 130 | "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", 131 | "dependencies": { 132 | "@aws-sdk/types": "^3.110.0", 133 | "@aws-sdk/util-utf8-browser": "^3.0.0", 134 | "tslib": "^1.11.1" 135 | } 136 | }, 137 | "node_modules/@aws-crypto/util/node_modules/tslib": { 138 | "version": "1.14.1", 139 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 140 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 141 | }, 142 | "node_modules/@aws-sdk/abort-controller": { 143 | "version": "3.171.0", 144 | "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.171.0.tgz", 145 | "integrity": "sha512-D3ShqAdCSFvKN3pGGn0KwK6lece4nqKY0hrxMIaYvDwewGjoIgEMBPGhCK1kNoBo6lJ93Fu1u4DheV+8abSmjQ==", 146 | "dependencies": { 147 | "@aws-sdk/types": "3.171.0", 148 | "tslib": "^2.3.1" 149 | }, 150 | "engines": { 151 | "node": ">= 12.0.0" 152 | } 153 | }, 154 | "node_modules/@aws-sdk/chunked-blob-reader": { 155 | "version": "3.170.0", 156 | "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.170.0.tgz", 157 | "integrity": "sha512-73Fy1u9zR9ZMC59QobuCWg3LoYfcrFsrP8569vvqtlGqPuQUW+RW3gfx0omIDmxaSg8qq8REPLJFrAGfeL7VtQ==", 158 | "dependencies": { 159 | "tslib": "^2.3.1" 160 | } 161 | }, 162 | "node_modules/@aws-sdk/chunked-blob-reader-native": { 163 | "version": "3.170.0", 164 | "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.170.0.tgz", 165 | "integrity": "sha512-haJ7fdWaOgAM4trw2LBd1VIvRFzMMPz2jy9mu4rE+z1uHbPZHNMGytBo1FJO2DShzUCmJZi3t3CD/7aE3H38+w==", 166 | "dependencies": { 167 | "@aws-sdk/util-base64-browser": "3.170.0", 168 | "tslib": "^2.3.1" 169 | } 170 | }, 171 | "node_modules/@aws-sdk/client-s3": { 172 | "version": "3.171.0", 173 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.171.0.tgz", 174 | "integrity": "sha512-UFPnf9xG7H6Mku9tfVH7oSXq65oH0mb8vvfeUWsi+KKedvMdww7fVWmXtcgnsB9nmXLF2PfrQrdaz2uid4rpgQ==", 175 | "dependencies": { 176 | "@aws-crypto/sha1-browser": "2.0.0", 177 | "@aws-crypto/sha256-browser": "2.0.0", 178 | "@aws-crypto/sha256-js": "2.0.0", 179 | "@aws-sdk/client-sts": "3.171.0", 180 | "@aws-sdk/config-resolver": "3.171.0", 181 | "@aws-sdk/credential-provider-node": "3.171.0", 182 | "@aws-sdk/eventstream-serde-browser": "3.171.0", 183 | "@aws-sdk/eventstream-serde-config-resolver": "3.171.0", 184 | "@aws-sdk/eventstream-serde-node": "3.171.0", 185 | "@aws-sdk/fetch-http-handler": "3.171.0", 186 | "@aws-sdk/hash-blob-browser": "3.171.0", 187 | "@aws-sdk/hash-node": "3.171.0", 188 | "@aws-sdk/hash-stream-node": "3.171.0", 189 | "@aws-sdk/invalid-dependency": "3.171.0", 190 | "@aws-sdk/md5-js": "3.171.0", 191 | "@aws-sdk/middleware-bucket-endpoint": "3.171.0", 192 | "@aws-sdk/middleware-content-length": "3.171.0", 193 | "@aws-sdk/middleware-expect-continue": "3.171.0", 194 | "@aws-sdk/middleware-flexible-checksums": "3.171.0", 195 | "@aws-sdk/middleware-host-header": "3.171.0", 196 | "@aws-sdk/middleware-location-constraint": "3.171.0", 197 | "@aws-sdk/middleware-logger": "3.171.0", 198 | "@aws-sdk/middleware-recursion-detection": "3.171.0", 199 | "@aws-sdk/middleware-retry": "3.171.0", 200 | "@aws-sdk/middleware-sdk-s3": "3.171.0", 201 | "@aws-sdk/middleware-serde": "3.171.0", 202 | "@aws-sdk/middleware-signing": "3.171.0", 203 | "@aws-sdk/middleware-ssec": "3.171.0", 204 | "@aws-sdk/middleware-stack": "3.171.0", 205 | "@aws-sdk/middleware-user-agent": "3.171.0", 206 | "@aws-sdk/node-config-provider": "3.171.0", 207 | "@aws-sdk/node-http-handler": "3.171.0", 208 | "@aws-sdk/protocol-http": "3.171.0", 209 | "@aws-sdk/signature-v4-multi-region": "3.171.0", 210 | "@aws-sdk/smithy-client": "3.171.0", 211 | "@aws-sdk/types": "3.171.0", 212 | "@aws-sdk/url-parser": "3.171.0", 213 | "@aws-sdk/util-base64-browser": "3.170.0", 214 | "@aws-sdk/util-base64-node": "3.170.0", 215 | "@aws-sdk/util-body-length-browser": "3.170.0", 216 | "@aws-sdk/util-body-length-node": "3.170.0", 217 | "@aws-sdk/util-defaults-mode-browser": "3.171.0", 218 | "@aws-sdk/util-defaults-mode-node": "3.171.0", 219 | "@aws-sdk/util-stream-browser": "3.171.0", 220 | "@aws-sdk/util-stream-node": "3.171.0", 221 | "@aws-sdk/util-user-agent-browser": "3.171.0", 222 | "@aws-sdk/util-user-agent-node": "3.171.0", 223 | "@aws-sdk/util-utf8-browser": "3.170.0", 224 | "@aws-sdk/util-utf8-node": "3.170.0", 225 | "@aws-sdk/util-waiter": "3.171.0", 226 | "@aws-sdk/xml-builder": "3.170.0", 227 | "entities": "2.2.0", 228 | "fast-xml-parser": "3.19.0", 229 | "tslib": "^2.3.1" 230 | }, 231 | "engines": { 232 | "node": ">=12.0.0" 233 | } 234 | }, 235 | "node_modules/@aws-sdk/client-sso": { 236 | "version": "3.171.0", 237 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.171.0.tgz", 238 | "integrity": "sha512-iOJxoxHFlyuGfXKVz8Z7xVgYkdnqw6beDpIO852aDL6DYFO0ZA6vYjWXsMgdY6S6zJOR2K2uRhvPpbPiFF5PtA==", 239 | "dependencies": { 240 | "@aws-crypto/sha256-browser": "2.0.0", 241 | "@aws-crypto/sha256-js": "2.0.0", 242 | "@aws-sdk/config-resolver": "3.171.0", 243 | "@aws-sdk/fetch-http-handler": "3.171.0", 244 | "@aws-sdk/hash-node": "3.171.0", 245 | "@aws-sdk/invalid-dependency": "3.171.0", 246 | "@aws-sdk/middleware-content-length": "3.171.0", 247 | "@aws-sdk/middleware-host-header": "3.171.0", 248 | "@aws-sdk/middleware-logger": "3.171.0", 249 | "@aws-sdk/middleware-recursion-detection": "3.171.0", 250 | "@aws-sdk/middleware-retry": "3.171.0", 251 | "@aws-sdk/middleware-serde": "3.171.0", 252 | "@aws-sdk/middleware-stack": "3.171.0", 253 | "@aws-sdk/middleware-user-agent": "3.171.0", 254 | "@aws-sdk/node-config-provider": "3.171.0", 255 | "@aws-sdk/node-http-handler": "3.171.0", 256 | "@aws-sdk/protocol-http": "3.171.0", 257 | "@aws-sdk/smithy-client": "3.171.0", 258 | "@aws-sdk/types": "3.171.0", 259 | "@aws-sdk/url-parser": "3.171.0", 260 | "@aws-sdk/util-base64-browser": "3.170.0", 261 | "@aws-sdk/util-base64-node": "3.170.0", 262 | "@aws-sdk/util-body-length-browser": "3.170.0", 263 | "@aws-sdk/util-body-length-node": "3.170.0", 264 | "@aws-sdk/util-defaults-mode-browser": "3.171.0", 265 | "@aws-sdk/util-defaults-mode-node": "3.171.0", 266 | "@aws-sdk/util-user-agent-browser": "3.171.0", 267 | "@aws-sdk/util-user-agent-node": "3.171.0", 268 | "@aws-sdk/util-utf8-browser": "3.170.0", 269 | "@aws-sdk/util-utf8-node": "3.170.0", 270 | "tslib": "^2.3.1" 271 | }, 272 | "engines": { 273 | "node": ">=12.0.0" 274 | } 275 | }, 276 | "node_modules/@aws-sdk/client-sts": { 277 | "version": "3.171.0", 278 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.171.0.tgz", 279 | "integrity": "sha512-CozT5qq/Wtdn4CDz5PdXtdyGnzHbuLqOYcTgaYpDks2EPfRSSFT2WYE+Y76Ccdz5n7vWR3yJuNjDXnVL28U8gQ==", 280 | "dependencies": { 281 | "@aws-crypto/sha256-browser": "2.0.0", 282 | "@aws-crypto/sha256-js": "2.0.0", 283 | "@aws-sdk/config-resolver": "3.171.0", 284 | "@aws-sdk/credential-provider-node": "3.171.0", 285 | "@aws-sdk/fetch-http-handler": "3.171.0", 286 | "@aws-sdk/hash-node": "3.171.0", 287 | "@aws-sdk/invalid-dependency": "3.171.0", 288 | "@aws-sdk/middleware-content-length": "3.171.0", 289 | "@aws-sdk/middleware-host-header": "3.171.0", 290 | "@aws-sdk/middleware-logger": "3.171.0", 291 | "@aws-sdk/middleware-recursion-detection": "3.171.0", 292 | "@aws-sdk/middleware-retry": "3.171.0", 293 | "@aws-sdk/middleware-sdk-sts": "3.171.0", 294 | "@aws-sdk/middleware-serde": "3.171.0", 295 | "@aws-sdk/middleware-signing": "3.171.0", 296 | "@aws-sdk/middleware-stack": "3.171.0", 297 | "@aws-sdk/middleware-user-agent": "3.171.0", 298 | "@aws-sdk/node-config-provider": "3.171.0", 299 | "@aws-sdk/node-http-handler": "3.171.0", 300 | "@aws-sdk/protocol-http": "3.171.0", 301 | "@aws-sdk/smithy-client": "3.171.0", 302 | "@aws-sdk/types": "3.171.0", 303 | "@aws-sdk/url-parser": "3.171.0", 304 | "@aws-sdk/util-base64-browser": "3.170.0", 305 | "@aws-sdk/util-base64-node": "3.170.0", 306 | "@aws-sdk/util-body-length-browser": "3.170.0", 307 | "@aws-sdk/util-body-length-node": "3.170.0", 308 | "@aws-sdk/util-defaults-mode-browser": "3.171.0", 309 | "@aws-sdk/util-defaults-mode-node": "3.171.0", 310 | "@aws-sdk/util-user-agent-browser": "3.171.0", 311 | "@aws-sdk/util-user-agent-node": "3.171.0", 312 | "@aws-sdk/util-utf8-browser": "3.170.0", 313 | "@aws-sdk/util-utf8-node": "3.170.0", 314 | "entities": "2.2.0", 315 | "fast-xml-parser": "3.19.0", 316 | "tslib": "^2.3.1" 317 | }, 318 | "engines": { 319 | "node": ">=12.0.0" 320 | } 321 | }, 322 | "node_modules/@aws-sdk/config-resolver": { 323 | "version": "3.171.0", 324 | "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.171.0.tgz", 325 | "integrity": "sha512-qxuquXxy2Uu96Vmm5lm3b72wx8g+7XkWf5pGeQPPgXT4Zrw6UQdtqvNhsoFpKLp/Op1yu/CIDd7lG2l1Xgs5HQ==", 326 | "dependencies": { 327 | "@aws-sdk/signature-v4": "3.171.0", 328 | "@aws-sdk/types": "3.171.0", 329 | "@aws-sdk/util-config-provider": "3.170.0", 330 | "@aws-sdk/util-middleware": "3.171.0", 331 | "tslib": "^2.3.1" 332 | }, 333 | "engines": { 334 | "node": ">= 12.0.0" 335 | } 336 | }, 337 | "node_modules/@aws-sdk/credential-provider-env": { 338 | "version": "3.171.0", 339 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.171.0.tgz", 340 | "integrity": "sha512-Btm7mu+2RsOQxplGhHMKat+CgaOHwpqt1j3aU2EQtad5Fb5NSZRD85mqD/BGCCLTmfqIWl39YQv9758gciRjCw==", 341 | "dependencies": { 342 | "@aws-sdk/property-provider": "3.171.0", 343 | "@aws-sdk/types": "3.171.0", 344 | "tslib": "^2.3.1" 345 | }, 346 | "engines": { 347 | "node": ">= 12.0.0" 348 | } 349 | }, 350 | "node_modules/@aws-sdk/credential-provider-imds": { 351 | "version": "3.171.0", 352 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.171.0.tgz", 353 | "integrity": "sha512-lm5uuJ3YK6qui7G6Zr5farUuHn10kMtkb+CFr4gtDsYxF8CscciBmQNMCxo2oiVzlsjOpFGtpLTAvjb7nn12CA==", 354 | "dependencies": { 355 | "@aws-sdk/node-config-provider": "3.171.0", 356 | "@aws-sdk/property-provider": "3.171.0", 357 | "@aws-sdk/types": "3.171.0", 358 | "@aws-sdk/url-parser": "3.171.0", 359 | "tslib": "^2.3.1" 360 | }, 361 | "engines": { 362 | "node": ">= 12.0.0" 363 | } 364 | }, 365 | "node_modules/@aws-sdk/credential-provider-ini": { 366 | "version": "3.171.0", 367 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.171.0.tgz", 368 | "integrity": "sha512-MF6fYCvezreZBI+hjI4oEuZdIKgfhbe6jzbTpNrDwBzw8lBkq1UY214dp2ecJtnj3FKjFg9A+goQRa/CViNgGQ==", 369 | "dependencies": { 370 | "@aws-sdk/credential-provider-env": "3.171.0", 371 | "@aws-sdk/credential-provider-imds": "3.171.0", 372 | "@aws-sdk/credential-provider-sso": "3.171.0", 373 | "@aws-sdk/credential-provider-web-identity": "3.171.0", 374 | "@aws-sdk/property-provider": "3.171.0", 375 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 376 | "@aws-sdk/types": "3.171.0", 377 | "tslib": "^2.3.1" 378 | }, 379 | "engines": { 380 | "node": ">= 12.0.0" 381 | } 382 | }, 383 | "node_modules/@aws-sdk/credential-provider-node": { 384 | "version": "3.171.0", 385 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.171.0.tgz", 386 | "integrity": "sha512-zUdgr9THjzLb99Qmb1qOqsSYtX4/PCCzXgDolfYS/+bLfoMD1iqA49l6lw4zJV29f6WNjaA5MxmDpbrPXkI1Cw==", 387 | "dependencies": { 388 | "@aws-sdk/credential-provider-env": "3.171.0", 389 | "@aws-sdk/credential-provider-imds": "3.171.0", 390 | "@aws-sdk/credential-provider-ini": "3.171.0", 391 | "@aws-sdk/credential-provider-process": "3.171.0", 392 | "@aws-sdk/credential-provider-sso": "3.171.0", 393 | "@aws-sdk/credential-provider-web-identity": "3.171.0", 394 | "@aws-sdk/property-provider": "3.171.0", 395 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 396 | "@aws-sdk/types": "3.171.0", 397 | "tslib": "^2.3.1" 398 | }, 399 | "engines": { 400 | "node": ">=12.0.0" 401 | } 402 | }, 403 | "node_modules/@aws-sdk/credential-provider-process": { 404 | "version": "3.171.0", 405 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.171.0.tgz", 406 | "integrity": "sha512-wTrtftwepuW+yJG2mz+HDwQ/L70rwBPkeyy32X+Pfm1jh4B5lL3qMmxR7uLPMgA4BQfXCazPeOiW50b9wRyZYg==", 407 | "dependencies": { 408 | "@aws-sdk/property-provider": "3.171.0", 409 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 410 | "@aws-sdk/types": "3.171.0", 411 | "tslib": "^2.3.1" 412 | }, 413 | "engines": { 414 | "node": ">= 12.0.0" 415 | } 416 | }, 417 | "node_modules/@aws-sdk/credential-provider-sso": { 418 | "version": "3.171.0", 419 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.171.0.tgz", 420 | "integrity": "sha512-D1zyKiYL9jrzJz5VOKynAAxqyQZ5gjweRPNrIomrYG2BQSMz82CZzL/sn/Q2KNmuSWgfPc4bF2JDPeTdPXsFKA==", 421 | "dependencies": { 422 | "@aws-sdk/client-sso": "3.171.0", 423 | "@aws-sdk/property-provider": "3.171.0", 424 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 425 | "@aws-sdk/types": "3.171.0", 426 | "tslib": "^2.3.1" 427 | }, 428 | "engines": { 429 | "node": ">= 12.0.0" 430 | } 431 | }, 432 | "node_modules/@aws-sdk/credential-provider-web-identity": { 433 | "version": "3.171.0", 434 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.171.0.tgz", 435 | "integrity": "sha512-yeQC+n3Xiw/tOaMP67pBNLsddPb8hHjsEIPircS2z4VvwhOY+5ZaaiaRmw5u5pvIMctbGZU75Ms1hBSfOEdDhQ==", 436 | "dependencies": { 437 | "@aws-sdk/property-provider": "3.171.0", 438 | "@aws-sdk/types": "3.171.0", 439 | "tslib": "^2.3.1" 440 | }, 441 | "engines": { 442 | "node": ">= 12.0.0" 443 | } 444 | }, 445 | "node_modules/@aws-sdk/eventstream-codec": { 446 | "version": "3.171.0", 447 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.171.0.tgz", 448 | "integrity": "sha512-3lCnPlydbZ/R6fAD+4xLX8Ua+kFGUzsPcgLP0lH5LO39jtnN1wEQj5fWM139Re9LuD0NoEBhC0AuROIM6CbzVA==", 449 | "dependencies": { 450 | "@aws-crypto/crc32": "2.0.0", 451 | "@aws-sdk/types": "3.171.0", 452 | "@aws-sdk/util-hex-encoding": "3.170.0", 453 | "tslib": "^2.3.1" 454 | } 455 | }, 456 | "node_modules/@aws-sdk/eventstream-serde-browser": { 457 | "version": "3.171.0", 458 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.171.0.tgz", 459 | "integrity": "sha512-ydjENlRoX49odSCWsOUo2lP2yE/4dR/GKE1yz3QvNZJ+6wRULbg6f55riyQokvAGMRW5BJigkMQLrg58WWridg==", 460 | "dependencies": { 461 | "@aws-sdk/eventstream-serde-universal": "3.171.0", 462 | "@aws-sdk/types": "3.171.0", 463 | "tslib": "^2.3.1" 464 | }, 465 | "engines": { 466 | "node": ">= 12.0.0" 467 | } 468 | }, 469 | "node_modules/@aws-sdk/eventstream-serde-config-resolver": { 470 | "version": "3.171.0", 471 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.171.0.tgz", 472 | "integrity": "sha512-cg+Xzl1lB7iIcER+Pv/06VaBvlC/dZxs3i5Kw3PYUaYICDwGytGRZbEC2H/6aBDEYYLfwUbnkq0Dp40faJfdAw==", 473 | "dependencies": { 474 | "@aws-sdk/types": "3.171.0", 475 | "tslib": "^2.3.1" 476 | }, 477 | "engines": { 478 | "node": ">= 12.0.0" 479 | } 480 | }, 481 | "node_modules/@aws-sdk/eventstream-serde-node": { 482 | "version": "3.171.0", 483 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.171.0.tgz", 484 | "integrity": "sha512-psOYj2RUJsI14jHCw1FQdSTljaf0yE9svg5NY9mGFD1ifj5+XEZmxhADMA6wtnDjWS2MzyJQQUGdfqIv1FeHEQ==", 485 | "dependencies": { 486 | "@aws-sdk/eventstream-serde-universal": "3.171.0", 487 | "@aws-sdk/types": "3.171.0", 488 | "tslib": "^2.3.1" 489 | }, 490 | "engines": { 491 | "node": ">= 12.0.0" 492 | } 493 | }, 494 | "node_modules/@aws-sdk/eventstream-serde-universal": { 495 | "version": "3.171.0", 496 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.171.0.tgz", 497 | "integrity": "sha512-aItTLL+WDHgwvl0biGZ+9phUOH93RW/v4uZgvjmrGSUx6try2/+L1rQeLU9n7JYfGcu8CKNePxpvrfSXpgJ7FA==", 498 | "dependencies": { 499 | "@aws-sdk/eventstream-codec": "3.171.0", 500 | "@aws-sdk/types": "3.171.0", 501 | "tslib": "^2.3.1" 502 | }, 503 | "engines": { 504 | "node": ">= 12.0.0" 505 | } 506 | }, 507 | "node_modules/@aws-sdk/fetch-http-handler": { 508 | "version": "3.171.0", 509 | "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.171.0.tgz", 510 | "integrity": "sha512-jxlY0WFBrd5QzXnPNmzq8LbcIN3iY4Di+b9nDlUkQ6yCp/PxBEO3iZiNk4DeMH4A6rHrksnbsDDJzzZyGw/TLg==", 511 | "dependencies": { 512 | "@aws-sdk/protocol-http": "3.171.0", 513 | "@aws-sdk/querystring-builder": "3.171.0", 514 | "@aws-sdk/types": "3.171.0", 515 | "@aws-sdk/util-base64-browser": "3.170.0", 516 | "tslib": "^2.3.1" 517 | } 518 | }, 519 | "node_modules/@aws-sdk/hash-blob-browser": { 520 | "version": "3.171.0", 521 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.171.0.tgz", 522 | "integrity": "sha512-Orwm8OiVNlVaQFEn+mWkue4U2bYytuAi5nmv9Co41hXDR8qF4pvwPWVV70OsndGcgqlFfvkJ4KahCO8Mta4I3w==", 523 | "dependencies": { 524 | "@aws-sdk/chunked-blob-reader": "3.170.0", 525 | "@aws-sdk/chunked-blob-reader-native": "3.170.0", 526 | "@aws-sdk/types": "3.171.0", 527 | "tslib": "^2.3.1" 528 | } 529 | }, 530 | "node_modules/@aws-sdk/hash-node": { 531 | "version": "3.171.0", 532 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.171.0.tgz", 533 | "integrity": "sha512-eTn8iExc6KjMo3OLz29zkADq9hXsA1jO2ghQfQ4BNdGXvhMtKcIO2hdhyzaOhtoLAeL44gbFR9oFjwG0U8ak/Q==", 534 | "dependencies": { 535 | "@aws-sdk/types": "3.171.0", 536 | "@aws-sdk/util-buffer-from": "3.170.0", 537 | "tslib": "^2.3.1" 538 | }, 539 | "engines": { 540 | "node": ">= 12.0.0" 541 | } 542 | }, 543 | "node_modules/@aws-sdk/hash-stream-node": { 544 | "version": "3.171.0", 545 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.171.0.tgz", 546 | "integrity": "sha512-22yrj3Gx09n6esypHWSqqGTdKoMb/ORi55U4OtdCHufUtPVahwetNqKVBP73pHiT2VEmLQ8cyWff1WwpRFdeFw==", 547 | "dependencies": { 548 | "@aws-sdk/types": "3.171.0", 549 | "tslib": "^2.3.1" 550 | }, 551 | "engines": { 552 | "node": ">= 12.0.0" 553 | } 554 | }, 555 | "node_modules/@aws-sdk/invalid-dependency": { 556 | "version": "3.171.0", 557 | "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.171.0.tgz", 558 | "integrity": "sha512-UrjQnhRv2B6ZgQfZjRbsaD6Sm5aIjH9YPtjT5oTbSgq3uHnj+s2ubUYd2nR8+lV2j1XL/Zfn/zUQ+6W3Fxk+UA==", 559 | "dependencies": { 560 | "@aws-sdk/types": "3.171.0", 561 | "tslib": "^2.3.1" 562 | } 563 | }, 564 | "node_modules/@aws-sdk/is-array-buffer": { 565 | "version": "3.170.0", 566 | "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.170.0.tgz", 567 | "integrity": "sha512-yYXqgp8rilBckIvNRs22yAXHKcXb86/g+F+hsTZl38OJintTsLQB//O5v6EQTYhSW7T3wMe1NHDrjZ+hFjAy4Q==", 568 | "dependencies": { 569 | "tslib": "^2.3.1" 570 | }, 571 | "engines": { 572 | "node": ">= 12.0.0" 573 | } 574 | }, 575 | "node_modules/@aws-sdk/md5-js": { 576 | "version": "3.171.0", 577 | "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.171.0.tgz", 578 | "integrity": "sha512-ZHuK7NvRY44WasjRjHnTNTGfdWuZTND4CCRC78Fmf3tk+zeCEnDZ81cVVtMqVn1wIf02U35Bwbunfx8i89VoSg==", 579 | "dependencies": { 580 | "@aws-sdk/types": "3.171.0", 581 | "@aws-sdk/util-utf8-browser": "3.170.0", 582 | "@aws-sdk/util-utf8-node": "3.170.0", 583 | "tslib": "^2.3.1" 584 | } 585 | }, 586 | "node_modules/@aws-sdk/middleware-bucket-endpoint": { 587 | "version": "3.171.0", 588 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.171.0.tgz", 589 | "integrity": "sha512-mRARZ8+WSoEfy4v5Gp084O2kxKwjoVozKQ0QN0BGYU//HKWwPRQ5qnv8Sty5oEA6J3rjYrqeIuFd6I8J/MxYZg==", 590 | "dependencies": { 591 | "@aws-sdk/protocol-http": "3.171.0", 592 | "@aws-sdk/types": "3.171.0", 593 | "@aws-sdk/util-arn-parser": "3.170.0", 594 | "@aws-sdk/util-config-provider": "3.170.0", 595 | "tslib": "^2.3.1" 596 | }, 597 | "engines": { 598 | "node": ">= 12.0.0" 599 | } 600 | }, 601 | "node_modules/@aws-sdk/middleware-content-length": { 602 | "version": "3.171.0", 603 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.171.0.tgz", 604 | "integrity": "sha512-zvhCvoR36fxjygDA8yN3AAVFnL0i6ubLRvzq6gf6gHVJH2P7/IWkXOBwu461qpuHPG87QwdqB/W+qY3KfNu/mA==", 605 | "dependencies": { 606 | "@aws-sdk/protocol-http": "3.171.0", 607 | "@aws-sdk/types": "3.171.0", 608 | "tslib": "^2.3.1" 609 | }, 610 | "engines": { 611 | "node": ">= 12.0.0" 612 | } 613 | }, 614 | "node_modules/@aws-sdk/middleware-expect-continue": { 615 | "version": "3.171.0", 616 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.171.0.tgz", 617 | "integrity": "sha512-Sc4onadPMH0JRfAT1CXf405aGUGktgCM+UyyX5f85rT/5J5omwt2d31vu0ri4CmU89QI5T7xeq4DN6mNQu2jfw==", 618 | "dependencies": { 619 | "@aws-sdk/protocol-http": "3.171.0", 620 | "@aws-sdk/types": "3.171.0", 621 | "tslib": "^2.3.1" 622 | }, 623 | "engines": { 624 | "node": ">= 12.0.0" 625 | } 626 | }, 627 | "node_modules/@aws-sdk/middleware-flexible-checksums": { 628 | "version": "3.171.0", 629 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.171.0.tgz", 630 | "integrity": "sha512-91GvgWCG/cugmxXlOWCKmynMoKsKzmdOBj01k7Vx0oZAeR8/3i74mpGQ6DRaaTOENNgFrcHzxnlxJDZEY44MOw==", 631 | "dependencies": { 632 | "@aws-crypto/crc32": "2.0.0", 633 | "@aws-crypto/crc32c": "2.0.0", 634 | "@aws-sdk/is-array-buffer": "3.170.0", 635 | "@aws-sdk/protocol-http": "3.171.0", 636 | "@aws-sdk/types": "3.171.0", 637 | "tslib": "^2.3.1" 638 | }, 639 | "engines": { 640 | "node": ">= 12.0.0" 641 | } 642 | }, 643 | "node_modules/@aws-sdk/middleware-host-header": { 644 | "version": "3.171.0", 645 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.171.0.tgz", 646 | "integrity": "sha512-WM3NEq1RcBOBXp2ItZCnK9RJPBztdUdaQrgtTkBWekgc9yxCiRBDhdZ4GLuWKyzApO2xqI/kfZQa4Wf44lWl8g==", 647 | "dependencies": { 648 | "@aws-sdk/protocol-http": "3.171.0", 649 | "@aws-sdk/types": "3.171.0", 650 | "tslib": "^2.3.1" 651 | }, 652 | "engines": { 653 | "node": ">= 12.0.0" 654 | } 655 | }, 656 | "node_modules/@aws-sdk/middleware-location-constraint": { 657 | "version": "3.171.0", 658 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.171.0.tgz", 659 | "integrity": "sha512-fj/LH3mLVpK4lwB1DGcYflzfFllcXcYb+ZyGIVdZ0ZeXBOeG8sOG59C4ZdDK3XONnE+Ccv/s7l6MlXK6c9PDew==", 660 | "dependencies": { 661 | "@aws-sdk/types": "3.171.0", 662 | "tslib": "^2.3.1" 663 | }, 664 | "engines": { 665 | "node": ">= 12.0.0" 666 | } 667 | }, 668 | "node_modules/@aws-sdk/middleware-logger": { 669 | "version": "3.171.0", 670 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.171.0.tgz", 671 | "integrity": "sha512-/wn0+pV0AGcDGlcKY+2ylvp+FLXJdmvYLbPlo93OOQbyCOy7Xa7Z8+RZYFHv8xrqhlQI0iw6TSYbL6fQ1v5IZw==", 672 | "dependencies": { 673 | "@aws-sdk/types": "3.171.0", 674 | "tslib": "^2.3.1" 675 | }, 676 | "engines": { 677 | "node": ">= 12.0.0" 678 | } 679 | }, 680 | "node_modules/@aws-sdk/middleware-recursion-detection": { 681 | "version": "3.171.0", 682 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.171.0.tgz", 683 | "integrity": "sha512-aNDRypFz9V52hC8lzZo28Zq9pS7W2MchjLAa2mPTFTd09aer6j9jmLY5o4NwoAAaEGV1JFHgpIZdymQRAcvSjw==", 684 | "dependencies": { 685 | "@aws-sdk/protocol-http": "3.171.0", 686 | "@aws-sdk/types": "3.171.0", 687 | "tslib": "^2.3.1" 688 | }, 689 | "engines": { 690 | "node": ">= 12.0.0" 691 | } 692 | }, 693 | "node_modules/@aws-sdk/middleware-retry": { 694 | "version": "3.171.0", 695 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.171.0.tgz", 696 | "integrity": "sha512-E+TTJZngDZ91/pdlNSrYSKn2cjD0aL/Xe6VFKbhpt9k5EF/KK6gJUEitIFL3Db2bRqupgADQudUI+MZvNc7Bnw==", 697 | "dependencies": { 698 | "@aws-sdk/protocol-http": "3.171.0", 699 | "@aws-sdk/service-error-classification": "3.171.0", 700 | "@aws-sdk/types": "3.171.0", 701 | "@aws-sdk/util-middleware": "3.171.0", 702 | "tslib": "^2.3.1", 703 | "uuid": "^8.3.2" 704 | }, 705 | "engines": { 706 | "node": ">= 12.0.0" 707 | } 708 | }, 709 | "node_modules/@aws-sdk/middleware-sdk-s3": { 710 | "version": "3.171.0", 711 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.171.0.tgz", 712 | "integrity": "sha512-Mmd2MqJQJnYXrtOL01PgTXtH0MvubzGJ1uYAm0CLK2fubhLEp2usNACXFvUcdwd3dt5QktkLjWuw3xwFoIYGMg==", 713 | "dependencies": { 714 | "@aws-sdk/middleware-bucket-endpoint": "3.171.0", 715 | "@aws-sdk/protocol-http": "3.171.0", 716 | "@aws-sdk/types": "3.171.0", 717 | "@aws-sdk/util-arn-parser": "3.170.0", 718 | "tslib": "^2.3.1" 719 | }, 720 | "engines": { 721 | "node": ">= 12.0.0" 722 | } 723 | }, 724 | "node_modules/@aws-sdk/middleware-sdk-sts": { 725 | "version": "3.171.0", 726 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.171.0.tgz", 727 | "integrity": "sha512-DLvoz7TfExbJ1p+FGehbu83D/KggohQNZMzsIojVbzu3E0pO606aZnbEPC7pUNXG3iXoQOScMMrhUNuRQEYgLQ==", 728 | "dependencies": { 729 | "@aws-sdk/middleware-signing": "3.171.0", 730 | "@aws-sdk/property-provider": "3.171.0", 731 | "@aws-sdk/protocol-http": "3.171.0", 732 | "@aws-sdk/signature-v4": "3.171.0", 733 | "@aws-sdk/types": "3.171.0", 734 | "tslib": "^2.3.1" 735 | }, 736 | "engines": { 737 | "node": ">= 12.0.0" 738 | } 739 | }, 740 | "node_modules/@aws-sdk/middleware-serde": { 741 | "version": "3.171.0", 742 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.171.0.tgz", 743 | "integrity": "sha512-eqgJPzzkha02Ca7clKWLOVOa7OuFunEPWfx00IUy5sxKFbgUSAeu6Kl5SC5Z3J9dIvefw3vX19x3334SZcwE1Q==", 744 | "dependencies": { 745 | "@aws-sdk/types": "3.171.0", 746 | "tslib": "^2.3.1" 747 | }, 748 | "engines": { 749 | "node": ">= 12.0.0" 750 | } 751 | }, 752 | "node_modules/@aws-sdk/middleware-signing": { 753 | "version": "3.171.0", 754 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.171.0.tgz", 755 | "integrity": "sha512-eEykO86etIqfWdUvvCcvYsHg+lXRE1Bo6+2mtXIcUXXC0LlqUoWsM1Ky/5jbjXVeWu2vWv++vG/WpJtNKkG13Q==", 756 | "dependencies": { 757 | "@aws-sdk/property-provider": "3.171.0", 758 | "@aws-sdk/protocol-http": "3.171.0", 759 | "@aws-sdk/signature-v4": "3.171.0", 760 | "@aws-sdk/types": "3.171.0", 761 | "tslib": "^2.3.1" 762 | }, 763 | "engines": { 764 | "node": ">= 12.0.0" 765 | } 766 | }, 767 | "node_modules/@aws-sdk/middleware-ssec": { 768 | "version": "3.171.0", 769 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.171.0.tgz", 770 | "integrity": "sha512-lYf8gxe09owOUuvIil1G6TXQjUwIh7yuqeqj+Ix1aLbEZyloiryXkWjCPfeTEybVukWM0HPqU28AMhjgTOal6g==", 771 | "dependencies": { 772 | "@aws-sdk/types": "3.171.0", 773 | "tslib": "^2.3.1" 774 | }, 775 | "engines": { 776 | "node": ">= 12.0.0" 777 | } 778 | }, 779 | "node_modules/@aws-sdk/middleware-stack": { 780 | "version": "3.171.0", 781 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.171.0.tgz", 782 | "integrity": "sha512-0EbZin5J6EsHD/agE8s/TJktLh9aRZe80ZrCBv5ces420NaYNjvbvvsnt0tQw0Q8qv+1H6KFOUcZ5iXzadBy2A==", 783 | "dependencies": { 784 | "tslib": "^2.3.1" 785 | }, 786 | "engines": { 787 | "node": ">= 12.0.0" 788 | } 789 | }, 790 | "node_modules/@aws-sdk/middleware-user-agent": { 791 | "version": "3.171.0", 792 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.171.0.tgz", 793 | "integrity": "sha512-GXw4LB6OqmPNwizY8KHdP7sC+d3gVTeeTbMhLPdZ62+PTj18faSoiBtQbnQmB/+c87VBlYbXex2ObfB6J0K2rg==", 794 | "dependencies": { 795 | "@aws-sdk/protocol-http": "3.171.0", 796 | "@aws-sdk/types": "3.171.0", 797 | "tslib": "^2.3.1" 798 | }, 799 | "engines": { 800 | "node": ">= 12.0.0" 801 | } 802 | }, 803 | "node_modules/@aws-sdk/node-config-provider": { 804 | "version": "3.171.0", 805 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.171.0.tgz", 806 | "integrity": "sha512-kFJbdJpqV8qCrs0h5Yo1r9TgezzGlua8NYf80gx8gH49gDZ4hl+0gP7rWEnA19dZufrfveyTQ/kY+ntk5AyI8A==", 807 | "dependencies": { 808 | "@aws-sdk/property-provider": "3.171.0", 809 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 810 | "@aws-sdk/types": "3.171.0", 811 | "tslib": "^2.3.1" 812 | }, 813 | "engines": { 814 | "node": ">= 12.0.0" 815 | } 816 | }, 817 | "node_modules/@aws-sdk/node-http-handler": { 818 | "version": "3.171.0", 819 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.171.0.tgz", 820 | "integrity": "sha512-hQY1hqgVcNC9KvRqV3Kxn2jCjIgMWwK3u90g2kNU27vZWIApz5hP4Y/TiyFO3+fGGNczcNHZp8aaggEO9tnctQ==", 821 | "dependencies": { 822 | "@aws-sdk/abort-controller": "3.171.0", 823 | "@aws-sdk/protocol-http": "3.171.0", 824 | "@aws-sdk/querystring-builder": "3.171.0", 825 | "@aws-sdk/types": "3.171.0", 826 | "tslib": "^2.3.1" 827 | }, 828 | "engines": { 829 | "node": ">= 12.0.0" 830 | } 831 | }, 832 | "node_modules/@aws-sdk/property-provider": { 833 | "version": "3.171.0", 834 | "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.171.0.tgz", 835 | "integrity": "sha512-dtF9TfEuvYQCqyp5EbGLzwhGmxljDG95901STIRtOCbBi0EXQ2oShKz1T95kjaSrBQsI2YOmDTl+uPGkkOx5oA==", 836 | "dependencies": { 837 | "@aws-sdk/types": "3.171.0", 838 | "tslib": "^2.3.1" 839 | }, 840 | "engines": { 841 | "node": ">= 12.0.0" 842 | } 843 | }, 844 | "node_modules/@aws-sdk/protocol-http": { 845 | "version": "3.171.0", 846 | "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.171.0.tgz", 847 | "integrity": "sha512-J5iZr5epH3nhPEeEme3w0l1tz+re1l9TdKjfaoczEmZyoChtHr++x/QX2KPxIn5NVSe7QxN7yTJV373NrnMMfg==", 848 | "dependencies": { 849 | "@aws-sdk/types": "3.171.0", 850 | "tslib": "^2.3.1" 851 | }, 852 | "engines": { 853 | "node": ">= 12.0.0" 854 | } 855 | }, 856 | "node_modules/@aws-sdk/querystring-builder": { 857 | "version": "3.171.0", 858 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.171.0.tgz", 859 | "integrity": "sha512-qiDk3BlYH77QtJS6vSZlCGYjaW1Qq7JnxiAHPZc+wsl0kY59JPVuM5HTTZ+yjTu+hmSeiI0Wp5IHDiY+YOxi4w==", 860 | "dependencies": { 861 | "@aws-sdk/types": "3.171.0", 862 | "@aws-sdk/util-uri-escape": "3.170.0", 863 | "tslib": "^2.3.1" 864 | }, 865 | "engines": { 866 | "node": ">= 12.0.0" 867 | } 868 | }, 869 | "node_modules/@aws-sdk/querystring-parser": { 870 | "version": "3.171.0", 871 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.171.0.tgz", 872 | "integrity": "sha512-wYM4HVlmi0NaRxJXmOPwQ4L6LPwUvRNMg+33z2Vvs9Ij23AzTCI2JRtaAwz/or3h6+nMlCOVsLZ7PAoLhkrgmg==", 873 | "dependencies": { 874 | "@aws-sdk/types": "3.171.0", 875 | "tslib": "^2.3.1" 876 | }, 877 | "engines": { 878 | "node": ">= 12.0.0" 879 | } 880 | }, 881 | "node_modules/@aws-sdk/service-error-classification": { 882 | "version": "3.171.0", 883 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.171.0.tgz", 884 | "integrity": "sha512-OrVFyPh3fFACRvplp8YvSdKNIXNx8xNYsHK+WhJFVOwnLC6OkwMyjck1xjfu4gvQ/PZlLqn7qTTURKcI2rUbMw==", 885 | "engines": { 886 | "node": ">= 12.0.0" 887 | } 888 | }, 889 | "node_modules/@aws-sdk/shared-ini-file-loader": { 890 | "version": "3.171.0", 891 | "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.171.0.tgz", 892 | "integrity": "sha512-tilea/YDqszMqXn3pOaBBZVSA/29MegV0QBhKlrJoYzhZxZ1ZrlkyuTUVz6RjktRUYnty9D3MlgrmaiBxAOdrg==", 893 | "dependencies": { 894 | "tslib": "^2.3.1" 895 | }, 896 | "engines": { 897 | "node": ">= 12.0.0" 898 | } 899 | }, 900 | "node_modules/@aws-sdk/signature-v4": { 901 | "version": "3.171.0", 902 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.171.0.tgz", 903 | "integrity": "sha512-tun1PIN/zW2y3h6uYuGhDLaMQmT52KK3KZyq+UM2XLYPz8j7G2TEFyJVn5Wk+QbHirCmOh8dCkaa5yFO6vfEFw==", 904 | "dependencies": { 905 | "@aws-sdk/is-array-buffer": "3.170.0", 906 | "@aws-sdk/types": "3.171.0", 907 | "@aws-sdk/util-hex-encoding": "3.170.0", 908 | "@aws-sdk/util-middleware": "3.171.0", 909 | "@aws-sdk/util-uri-escape": "3.170.0", 910 | "tslib": "^2.3.1" 911 | }, 912 | "engines": { 913 | "node": ">= 12.0.0" 914 | } 915 | }, 916 | "node_modules/@aws-sdk/signature-v4-multi-region": { 917 | "version": "3.171.0", 918 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.171.0.tgz", 919 | "integrity": "sha512-ga149Xf8uQ+e29gC+mRfdvDy4aOJidRE86YkZ0D6/XMBpmMl7dU9sKioKCKhPeUr10L7w4I3WRA1G3Vjq5j43Q==", 920 | "dependencies": { 921 | "@aws-sdk/protocol-http": "3.171.0", 922 | "@aws-sdk/signature-v4": "3.171.0", 923 | "@aws-sdk/types": "3.171.0", 924 | "@aws-sdk/util-arn-parser": "3.170.0", 925 | "tslib": "^2.3.1" 926 | }, 927 | "engines": { 928 | "node": ">= 12.0.0" 929 | }, 930 | "peerDependencies": { 931 | "@aws-sdk/signature-v4-crt": "^3.118.0" 932 | }, 933 | "peerDependenciesMeta": { 934 | "@aws-sdk/signature-v4-crt": { 935 | "optional": true 936 | } 937 | } 938 | }, 939 | "node_modules/@aws-sdk/smithy-client": { 940 | "version": "3.171.0", 941 | "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.171.0.tgz", 942 | "integrity": "sha512-Q4fYE8uWxDh1Pd9Flo7/Cns1eEg0PmPrMsgHv0za1S3TgVHA6jRq3KZaD6Jcm0H12NPbWv67Cu+O0sMei8oaxA==", 943 | "dependencies": { 944 | "@aws-sdk/middleware-stack": "3.171.0", 945 | "@aws-sdk/types": "3.171.0", 946 | "tslib": "^2.3.1" 947 | }, 948 | "engines": { 949 | "node": ">= 12.0.0" 950 | } 951 | }, 952 | "node_modules/@aws-sdk/types": { 953 | "version": "3.171.0", 954 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.171.0.tgz", 955 | "integrity": "sha512-Yv5Wn/pbjMBST2jPHWPczmVbOLq8yFQVRyy1zGfsg1ETn25nGPvGBwqOkWcuz229KAcdUvFdRV9xaQCN3Lbo+Q==", 956 | "engines": { 957 | "node": ">= 12.0.0" 958 | } 959 | }, 960 | "node_modules/@aws-sdk/url-parser": { 961 | "version": "3.171.0", 962 | "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.171.0.tgz", 963 | "integrity": "sha512-EF4ecSTmW9yG1faCXpTvySIpaPhK+6ebVxT6Zlt7IwIb9K+0zWlNb6VjDzq5Xg+nK7Y1p7RGmwhictWbOtbo9g==", 964 | "dependencies": { 965 | "@aws-sdk/querystring-parser": "3.171.0", 966 | "@aws-sdk/types": "3.171.0", 967 | "tslib": "^2.3.1" 968 | } 969 | }, 970 | "node_modules/@aws-sdk/util-arn-parser": { 971 | "version": "3.170.0", 972 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.170.0.tgz", 973 | "integrity": "sha512-2ivABL9GNsucfMMkgGjVdFidbDogtSr4FBVW12D4ltijOL82CAynGrnxHAczRGnmi5/1/Ir4ipkr9pAdRMGiGw==", 974 | "dependencies": { 975 | "tslib": "^2.3.1" 976 | }, 977 | "engines": { 978 | "node": ">= 12.0.0" 979 | } 980 | }, 981 | "node_modules/@aws-sdk/util-base64-browser": { 982 | "version": "3.170.0", 983 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.170.0.tgz", 984 | "integrity": "sha512-uLP9Kp74+jc+UWI392LSWIaUj9eXZBhkAiSm8dXAyrr+5GFOKvmEdidFoZKKcFcZ2v3RMonDgFVcDBiZ33w7BQ==", 985 | "dependencies": { 986 | "tslib": "^2.3.1" 987 | } 988 | }, 989 | "node_modules/@aws-sdk/util-base64-node": { 990 | "version": "3.170.0", 991 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.170.0.tgz", 992 | "integrity": "sha512-sjpOmfyW0RWCLXU8Du0ZtwgFoxIuKQIyVygXJ4qxByoa3jIUJXf4U33uSRMy47V3JoogdZuKSpND9hiNk2wU4w==", 993 | "dependencies": { 994 | "@aws-sdk/util-buffer-from": "3.170.0", 995 | "tslib": "^2.3.1" 996 | }, 997 | "engines": { 998 | "node": ">= 12.0.0" 999 | } 1000 | }, 1001 | "node_modules/@aws-sdk/util-body-length-browser": { 1002 | "version": "3.170.0", 1003 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.170.0.tgz", 1004 | "integrity": "sha512-SqSWA++gsZgHw6tlcEXx9K6R6cVKNYzOq6bca+NR7jXvy1hfqiv9Gx5TZrG4oL4JziP8QA0fTklmI1uQJ4HBRA==", 1005 | "dependencies": { 1006 | "tslib": "^2.3.1" 1007 | } 1008 | }, 1009 | "node_modules/@aws-sdk/util-body-length-node": { 1010 | "version": "3.170.0", 1011 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.170.0.tgz", 1012 | "integrity": "sha512-sFb85ngsgfpamwDn22LC/+FkbDTNiddbMHptkajw+CAD2Rb4SJDp2PfXZ6k883BueJWhmxZ9+lApHZqYtgPdzw==", 1013 | "dependencies": { 1014 | "tslib": "^2.3.1" 1015 | }, 1016 | "engines": { 1017 | "node": ">= 12.0.0" 1018 | } 1019 | }, 1020 | "node_modules/@aws-sdk/util-buffer-from": { 1021 | "version": "3.170.0", 1022 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.170.0.tgz", 1023 | "integrity": "sha512-3ClE3wgN/Zw0ahfVAY5KQ/y3K2c+SYHwVUQaGSuVQlPOCDInGYjE/XEFwCeGJzncRPHIKDRPEsHCpm1uwgwEqQ==", 1024 | "dependencies": { 1025 | "@aws-sdk/is-array-buffer": "3.170.0", 1026 | "tslib": "^2.3.1" 1027 | }, 1028 | "engines": { 1029 | "node": ">= 12.0.0" 1030 | } 1031 | }, 1032 | "node_modules/@aws-sdk/util-config-provider": { 1033 | "version": "3.170.0", 1034 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.170.0.tgz", 1035 | "integrity": "sha512-VV6lfss6Go00TF2hRVJnN8Uf2FOwC++1e8glaeU7fMWluYCBjwl+116mPOPFaxvkJCg0dui2tFroXioslM/rvQ==", 1036 | "dependencies": { 1037 | "tslib": "^2.3.1" 1038 | }, 1039 | "engines": { 1040 | "node": ">= 12.0.0" 1041 | } 1042 | }, 1043 | "node_modules/@aws-sdk/util-defaults-mode-browser": { 1044 | "version": "3.171.0", 1045 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.171.0.tgz", 1046 | "integrity": "sha512-ZZwtpm2XHTOx5TW7gQrpY+IOtriI506ab5t0DVgdOA7G8BVkC0I6Tm+0NJFSfsl/G4QzI0fNSbDG/6wAFZmPAQ==", 1047 | "dependencies": { 1048 | "@aws-sdk/property-provider": "3.171.0", 1049 | "@aws-sdk/types": "3.171.0", 1050 | "bowser": "^2.11.0", 1051 | "tslib": "^2.3.1" 1052 | }, 1053 | "engines": { 1054 | "node": ">= 10.0.0" 1055 | } 1056 | }, 1057 | "node_modules/@aws-sdk/util-defaults-mode-node": { 1058 | "version": "3.171.0", 1059 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.171.0.tgz", 1060 | "integrity": "sha512-3zbtGGRfygZRIh6BtGm6S+qGPPF3l/kUH4FKY4zpfLFamv+8SpcAlqH5BmbayA77vHdtiGEo5PhnuEr6QRABkw==", 1061 | "dependencies": { 1062 | "@aws-sdk/config-resolver": "3.171.0", 1063 | "@aws-sdk/credential-provider-imds": "3.171.0", 1064 | "@aws-sdk/node-config-provider": "3.171.0", 1065 | "@aws-sdk/property-provider": "3.171.0", 1066 | "@aws-sdk/types": "3.171.0", 1067 | "tslib": "^2.3.1" 1068 | }, 1069 | "engines": { 1070 | "node": ">= 10.0.0" 1071 | } 1072 | }, 1073 | "node_modules/@aws-sdk/util-hex-encoding": { 1074 | "version": "3.170.0", 1075 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.170.0.tgz", 1076 | "integrity": "sha512-BDYyMqaxX4/N7rYOIYlqgpZaBuHw3kNXKgOkWtJdzndIZbQX8HnyJ+rF0Pr1aVsOpVDM+fY1prERleFh/ZRTCg==", 1077 | "dependencies": { 1078 | "tslib": "^2.3.1" 1079 | }, 1080 | "engines": { 1081 | "node": ">= 12.0.0" 1082 | } 1083 | }, 1084 | "node_modules/@aws-sdk/util-locate-window": { 1085 | "version": "3.170.0", 1086 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.170.0.tgz", 1087 | "integrity": "sha512-uQvn3ZaAokWcNSY+tNR71RGXPPncv5ejrpGa/MGOCioeBjkU5n5OJp7BdaTGouZu4fffeVpdZJ/ZNld8LWMgLw==", 1088 | "dependencies": { 1089 | "tslib": "^2.3.1" 1090 | }, 1091 | "engines": { 1092 | "node": ">= 12.0.0" 1093 | } 1094 | }, 1095 | "node_modules/@aws-sdk/util-middleware": { 1096 | "version": "3.171.0", 1097 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.171.0.tgz", 1098 | "integrity": "sha512-43aXJ40z7BIkh6usI8qQlQ6JUj16ecmwsRmUi+SJf3+bHPnkENdjpKCx4i15UWii7fr5QJAivZykuvBXl/sicQ==", 1099 | "dependencies": { 1100 | "tslib": "^2.3.1" 1101 | }, 1102 | "engines": { 1103 | "node": ">= 12.0.0" 1104 | } 1105 | }, 1106 | "node_modules/@aws-sdk/util-stream-browser": { 1107 | "version": "3.171.0", 1108 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.171.0.tgz", 1109 | "integrity": "sha512-GJfuRrAW+hwQfeWK3OfmN1kUtTpvVZj+EVb0GQ8F4/+PYRSpbNoQEW6oKCP6xIGR1xKLuiGsN5VQlWuECgIJKA==", 1110 | "dependencies": { 1111 | "@aws-sdk/fetch-http-handler": "3.171.0", 1112 | "@aws-sdk/types": "3.171.0", 1113 | "@aws-sdk/util-base64-browser": "3.170.0", 1114 | "@aws-sdk/util-hex-encoding": "3.170.0", 1115 | "@aws-sdk/util-utf8-browser": "3.170.0", 1116 | "tslib": "^2.3.1" 1117 | } 1118 | }, 1119 | "node_modules/@aws-sdk/util-stream-node": { 1120 | "version": "3.171.0", 1121 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.171.0.tgz", 1122 | "integrity": "sha512-XuEUlixZnwqc1HSIRLFzIlfbpwMdAmGUkcADyvUYeTAEYf3hHzvvWERno4ZinuGQdU/+ogW29CsbTFnA80mz+A==", 1123 | "dependencies": { 1124 | "@aws-sdk/node-http-handler": "3.171.0", 1125 | "@aws-sdk/types": "3.171.0", 1126 | "@aws-sdk/util-buffer-from": "3.170.0", 1127 | "tslib": "^2.3.1" 1128 | }, 1129 | "engines": { 1130 | "node": ">= 12.0.0" 1131 | } 1132 | }, 1133 | "node_modules/@aws-sdk/util-uri-escape": { 1134 | "version": "3.170.0", 1135 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.170.0.tgz", 1136 | "integrity": "sha512-Fof0urZ3Lx6z6LNKSEO6T4DNaNh6sLJaSWFaC6gtVDPux/C3R7wy2RQRDp0baHxE8m1KMB0XnKzHizJNrbDI1w==", 1137 | "dependencies": { 1138 | "tslib": "^2.3.1" 1139 | }, 1140 | "engines": { 1141 | "node": ">= 12.0.0" 1142 | } 1143 | }, 1144 | "node_modules/@aws-sdk/util-user-agent-browser": { 1145 | "version": "3.171.0", 1146 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.171.0.tgz", 1147 | "integrity": "sha512-DNps82f+fOOySUO49I8kAJIGdTtZiL0l3hPEY1V9vp4SbF8B1jbFjPRR24tRN1S0B9AfC78k0EmJTmNWvq6EBQ==", 1148 | "dependencies": { 1149 | "@aws-sdk/types": "3.171.0", 1150 | "bowser": "^2.11.0", 1151 | "tslib": "^2.3.1" 1152 | } 1153 | }, 1154 | "node_modules/@aws-sdk/util-user-agent-node": { 1155 | "version": "3.171.0", 1156 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.171.0.tgz", 1157 | "integrity": "sha512-xyBOIA2UUoP6dWkxkxpJIQq2zt3PhZoIlMcFwcVPfKtnqOM0FzdTlUPN4iqi7UAOkKg020lZhflzMqu5454Ucg==", 1158 | "dependencies": { 1159 | "@aws-sdk/node-config-provider": "3.171.0", 1160 | "@aws-sdk/types": "3.171.0", 1161 | "tslib": "^2.3.1" 1162 | }, 1163 | "engines": { 1164 | "node": ">= 12.0.0" 1165 | }, 1166 | "peerDependencies": { 1167 | "aws-crt": ">=1.0.0" 1168 | }, 1169 | "peerDependenciesMeta": { 1170 | "aws-crt": { 1171 | "optional": true 1172 | } 1173 | } 1174 | }, 1175 | "node_modules/@aws-sdk/util-utf8-browser": { 1176 | "version": "3.170.0", 1177 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.170.0.tgz", 1178 | "integrity": "sha512-tJby9krepSwDsBK+KQF5ACacZQ4LH1Aheh5Dy0pghxsN/9IRw7kMWTumuRCnSntLFFphDD7GM494/Dvnl1UCLA==", 1179 | "dependencies": { 1180 | "tslib": "^2.3.1" 1181 | } 1182 | }, 1183 | "node_modules/@aws-sdk/util-utf8-node": { 1184 | "version": "3.170.0", 1185 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.170.0.tgz", 1186 | "integrity": "sha512-52QWGNoNQoyT2CuoQz6LjBKxHQtN/ceMFLW+9J1E0I1ni8XTuTYP52BlMe5484KkmZKsHOm+EWe4xuwwVetTxg==", 1187 | "dependencies": { 1188 | "@aws-sdk/util-buffer-from": "3.170.0", 1189 | "tslib": "^2.3.1" 1190 | }, 1191 | "engines": { 1192 | "node": ">= 12.0.0" 1193 | } 1194 | }, 1195 | "node_modules/@aws-sdk/util-waiter": { 1196 | "version": "3.171.0", 1197 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.171.0.tgz", 1198 | "integrity": "sha512-h4iqRxX09tM9yjnHWihnzM5cDboSEJAbx68ar4zjzDIUbVroVkDfl77AWVlS9D5SlfdWr70G3WT4EQfIK5Vd2g==", 1199 | "dependencies": { 1200 | "@aws-sdk/abort-controller": "3.171.0", 1201 | "@aws-sdk/types": "3.171.0", 1202 | "tslib": "^2.3.1" 1203 | }, 1204 | "engines": { 1205 | "node": ">= 12.0.0" 1206 | } 1207 | }, 1208 | "node_modules/@aws-sdk/xml-builder": { 1209 | "version": "3.170.0", 1210 | "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.170.0.tgz", 1211 | "integrity": "sha512-eN458rrukeI62yU1k4a+032IfpAS7aK30VEITzKanklMW6AxTpxUC6vGrP6bwtIpCFDN8yVaIiAwGXQg5l1X4g==", 1212 | "dependencies": { 1213 | "tslib": "^2.3.1" 1214 | }, 1215 | "engines": { 1216 | "node": ">= 12.0.0" 1217 | } 1218 | }, 1219 | "node_modules/agent-base": { 1220 | "version": "6.0.2", 1221 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1222 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1223 | "dependencies": { 1224 | "debug": "4" 1225 | }, 1226 | "engines": { 1227 | "node": ">= 6.0.0" 1228 | } 1229 | }, 1230 | "node_modules/asap": { 1231 | "version": "2.0.6", 1232 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 1233 | "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" 1234 | }, 1235 | "node_modules/asynckit": { 1236 | "version": "0.4.0", 1237 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1238 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 1239 | }, 1240 | "node_modules/axios": { 1241 | "version": "0.27.2", 1242 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 1243 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 1244 | "dependencies": { 1245 | "follow-redirects": "^1.14.9", 1246 | "form-data": "^4.0.0" 1247 | } 1248 | }, 1249 | "node_modules/bowser": { 1250 | "version": "2.11.0", 1251 | "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", 1252 | "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" 1253 | }, 1254 | "node_modules/buffer-equal-constant-time": { 1255 | "version": "1.0.1", 1256 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 1257 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" 1258 | }, 1259 | "node_modules/call-bind": { 1260 | "version": "1.0.2", 1261 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1262 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1263 | "dependencies": { 1264 | "function-bind": "^1.1.1", 1265 | "get-intrinsic": "^1.0.2" 1266 | }, 1267 | "funding": { 1268 | "url": "https://github.com/sponsors/ljharb" 1269 | } 1270 | }, 1271 | "node_modules/combined-stream": { 1272 | "version": "1.0.8", 1273 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1274 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1275 | "dependencies": { 1276 | "delayed-stream": "~1.0.0" 1277 | }, 1278 | "engines": { 1279 | "node": ">= 0.8" 1280 | } 1281 | }, 1282 | "node_modules/commander": { 1283 | "version": "6.2.1", 1284 | "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", 1285 | "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", 1286 | "engines": { 1287 | "node": ">= 6" 1288 | } 1289 | }, 1290 | "node_modules/dayjs": { 1291 | "version": "1.11.5", 1292 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", 1293 | "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" 1294 | }, 1295 | "node_modules/debug": { 1296 | "version": "4.3.4", 1297 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1298 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1299 | "dependencies": { 1300 | "ms": "2.1.2" 1301 | }, 1302 | "engines": { 1303 | "node": ">=6.0" 1304 | }, 1305 | "peerDependenciesMeta": { 1306 | "supports-color": { 1307 | "optional": true 1308 | } 1309 | } 1310 | }, 1311 | "node_modules/delayed-stream": { 1312 | "version": "1.0.0", 1313 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1314 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 1315 | "engines": { 1316 | "node": ">=0.4.0" 1317 | } 1318 | }, 1319 | "node_modules/ecdsa-sig-formatter": { 1320 | "version": "1.0.11", 1321 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 1322 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 1323 | "dependencies": { 1324 | "safe-buffer": "^5.0.1" 1325 | } 1326 | }, 1327 | "node_modules/entities": { 1328 | "version": "2.2.0", 1329 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 1330 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", 1331 | "funding": { 1332 | "url": "https://github.com/fb55/entities?sponsor=1" 1333 | } 1334 | }, 1335 | "node_modules/fast-xml-parser": { 1336 | "version": "3.19.0", 1337 | "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", 1338 | "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==", 1339 | "bin": { 1340 | "xml2js": "cli.js" 1341 | }, 1342 | "funding": { 1343 | "type": "paypal", 1344 | "url": "https://paypal.me/naturalintelligence" 1345 | } 1346 | }, 1347 | "node_modules/follow-redirects": { 1348 | "version": "1.15.2", 1349 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 1350 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 1351 | "funding": [ 1352 | { 1353 | "type": "individual", 1354 | "url": "https://github.com/sponsors/RubenVerborgh" 1355 | } 1356 | ], 1357 | "engines": { 1358 | "node": ">=4.0" 1359 | }, 1360 | "peerDependenciesMeta": { 1361 | "debug": { 1362 | "optional": true 1363 | } 1364 | } 1365 | }, 1366 | "node_modules/form-data": { 1367 | "version": "4.0.0", 1368 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1369 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1370 | "dependencies": { 1371 | "asynckit": "^0.4.0", 1372 | "combined-stream": "^1.0.8", 1373 | "mime-types": "^2.1.12" 1374 | }, 1375 | "engines": { 1376 | "node": ">= 6" 1377 | } 1378 | }, 1379 | "node_modules/function-bind": { 1380 | "version": "1.1.1", 1381 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1382 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1383 | }, 1384 | "node_modules/get-intrinsic": { 1385 | "version": "1.1.3", 1386 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 1387 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 1388 | "dependencies": { 1389 | "function-bind": "^1.1.1", 1390 | "has": "^1.0.3", 1391 | "has-symbols": "^1.0.3" 1392 | }, 1393 | "funding": { 1394 | "url": "https://github.com/sponsors/ljharb" 1395 | } 1396 | }, 1397 | "node_modules/has": { 1398 | "version": "1.0.3", 1399 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1400 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1401 | "dependencies": { 1402 | "function-bind": "^1.1.1" 1403 | }, 1404 | "engines": { 1405 | "node": ">= 0.4.0" 1406 | } 1407 | }, 1408 | "node_modules/has-symbols": { 1409 | "version": "1.0.3", 1410 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1411 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 1412 | "engines": { 1413 | "node": ">= 0.4" 1414 | }, 1415 | "funding": { 1416 | "url": "https://github.com/sponsors/ljharb" 1417 | } 1418 | }, 1419 | "node_modules/https-proxy-agent": { 1420 | "version": "5.0.1", 1421 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1422 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1423 | "dependencies": { 1424 | "agent-base": "6", 1425 | "debug": "4" 1426 | }, 1427 | "engines": { 1428 | "node": ">= 6" 1429 | } 1430 | }, 1431 | "node_modules/json2csv": { 1432 | "version": "5.0.7", 1433 | "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", 1434 | "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", 1435 | "dependencies": { 1436 | "commander": "^6.1.0", 1437 | "jsonparse": "^1.3.1", 1438 | "lodash.get": "^4.4.2" 1439 | }, 1440 | "bin": { 1441 | "json2csv": "bin/json2csv.js" 1442 | }, 1443 | "engines": { 1444 | "node": ">= 10", 1445 | "npm": ">= 6.13.0" 1446 | } 1447 | }, 1448 | "node_modules/jsonparse": { 1449 | "version": "1.3.1", 1450 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 1451 | "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", 1452 | "engines": [ 1453 | "node >= 0.2.0" 1454 | ] 1455 | }, 1456 | "node_modules/jsonwebtoken": { 1457 | "version": "8.5.1", 1458 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 1459 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 1460 | "dependencies": { 1461 | "jws": "^3.2.2", 1462 | "lodash.includes": "^4.3.0", 1463 | "lodash.isboolean": "^3.0.3", 1464 | "lodash.isinteger": "^4.0.4", 1465 | "lodash.isnumber": "^3.0.3", 1466 | "lodash.isplainobject": "^4.0.6", 1467 | "lodash.isstring": "^4.0.1", 1468 | "lodash.once": "^4.0.0", 1469 | "ms": "^2.1.1", 1470 | "semver": "^5.6.0" 1471 | }, 1472 | "engines": { 1473 | "node": ">=4", 1474 | "npm": ">=1.4.28" 1475 | } 1476 | }, 1477 | "node_modules/jwa": { 1478 | "version": "1.4.1", 1479 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 1480 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 1481 | "dependencies": { 1482 | "buffer-equal-constant-time": "1.0.1", 1483 | "ecdsa-sig-formatter": "1.0.11", 1484 | "safe-buffer": "^5.0.1" 1485 | } 1486 | }, 1487 | "node_modules/jws": { 1488 | "version": "3.2.2", 1489 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 1490 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 1491 | "dependencies": { 1492 | "jwa": "^1.4.1", 1493 | "safe-buffer": "^5.0.1" 1494 | } 1495 | }, 1496 | "node_modules/lodash": { 1497 | "version": "4.17.21", 1498 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 1499 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 1500 | }, 1501 | "node_modules/lodash.get": { 1502 | "version": "4.4.2", 1503 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 1504 | "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" 1505 | }, 1506 | "node_modules/lodash.includes": { 1507 | "version": "4.3.0", 1508 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 1509 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" 1510 | }, 1511 | "node_modules/lodash.isboolean": { 1512 | "version": "3.0.3", 1513 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 1514 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" 1515 | }, 1516 | "node_modules/lodash.isinteger": { 1517 | "version": "4.0.4", 1518 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 1519 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" 1520 | }, 1521 | "node_modules/lodash.isnumber": { 1522 | "version": "3.0.3", 1523 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 1524 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" 1525 | }, 1526 | "node_modules/lodash.isplainobject": { 1527 | "version": "4.0.6", 1528 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1529 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 1530 | }, 1531 | "node_modules/lodash.isstring": { 1532 | "version": "4.0.1", 1533 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1534 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 1535 | }, 1536 | "node_modules/lodash.once": { 1537 | "version": "4.1.1", 1538 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 1539 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" 1540 | }, 1541 | "node_modules/mime-db": { 1542 | "version": "1.52.0", 1543 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1544 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1545 | "engines": { 1546 | "node": ">= 0.6" 1547 | } 1548 | }, 1549 | "node_modules/mime-types": { 1550 | "version": "2.1.35", 1551 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1552 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1553 | "dependencies": { 1554 | "mime-db": "1.52.0" 1555 | }, 1556 | "engines": { 1557 | "node": ">= 0.6" 1558 | } 1559 | }, 1560 | "node_modules/ms": { 1561 | "version": "2.1.2", 1562 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1563 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1564 | }, 1565 | "node_modules/object-inspect": { 1566 | "version": "1.12.2", 1567 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 1568 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", 1569 | "funding": { 1570 | "url": "https://github.com/sponsors/ljharb" 1571 | } 1572 | }, 1573 | "node_modules/pop-iterate": { 1574 | "version": "1.0.1", 1575 | "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", 1576 | "integrity": "sha512-HRCx4+KJE30JhX84wBN4+vja9bNfysxg1y28l0DuJmkoaICiv2ZSilKddbS48pq50P8d2erAhqDLbp47yv3MbQ==" 1577 | }, 1578 | "node_modules/q": { 1579 | "version": "2.0.3", 1580 | "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", 1581 | "integrity": "sha512-gv6vLGcmAOg96/fgo3d9tvA4dJNZL3fMyBqVRrGxQ+Q/o4k9QzbJ3NQF9cOO/71wRodoXhaPgphvMFU68qVAJQ==", 1582 | "dependencies": { 1583 | "asap": "^2.0.0", 1584 | "pop-iterate": "^1.0.1", 1585 | "weak-map": "^1.0.5" 1586 | } 1587 | }, 1588 | "node_modules/qs": { 1589 | "version": "6.11.0", 1590 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1591 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1592 | "dependencies": { 1593 | "side-channel": "^1.0.4" 1594 | }, 1595 | "engines": { 1596 | "node": ">=0.6" 1597 | }, 1598 | "funding": { 1599 | "url": "https://github.com/sponsors/ljharb" 1600 | } 1601 | }, 1602 | "node_modules/querystringify": { 1603 | "version": "2.2.0", 1604 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 1605 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 1606 | }, 1607 | "node_modules/requires-port": { 1608 | "version": "1.0.0", 1609 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 1610 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 1611 | }, 1612 | "node_modules/rootpath": { 1613 | "version": "0.1.2", 1614 | "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", 1615 | "integrity": "sha512-R3wLbuAYejpxQjL/SjXo1Cjv4wcJECnMRT/FlcCfTwCBhaji9rWaRCoVEQ1SPiTJ4kKK+yh+bZLAV7SCafoDDw==" 1616 | }, 1617 | "node_modules/safe-buffer": { 1618 | "version": "5.2.1", 1619 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1620 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1621 | "funding": [ 1622 | { 1623 | "type": "github", 1624 | "url": "https://github.com/sponsors/feross" 1625 | }, 1626 | { 1627 | "type": "patreon", 1628 | "url": "https://www.patreon.com/feross" 1629 | }, 1630 | { 1631 | "type": "consulting", 1632 | "url": "https://feross.org/support" 1633 | } 1634 | ] 1635 | }, 1636 | "node_modules/scmp": { 1637 | "version": "2.1.0", 1638 | "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", 1639 | "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" 1640 | }, 1641 | "node_modules/semver": { 1642 | "version": "5.7.1", 1643 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1644 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1645 | "bin": { 1646 | "semver": "bin/semver" 1647 | } 1648 | }, 1649 | "node_modules/side-channel": { 1650 | "version": "1.0.4", 1651 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1652 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1653 | "dependencies": { 1654 | "call-bind": "^1.0.0", 1655 | "get-intrinsic": "^1.0.2", 1656 | "object-inspect": "^1.9.0" 1657 | }, 1658 | "funding": { 1659 | "url": "https://github.com/sponsors/ljharb" 1660 | } 1661 | }, 1662 | "node_modules/tslib": { 1663 | "version": "2.4.0", 1664 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 1665 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 1666 | }, 1667 | "node_modules/twilio": { 1668 | "version": "3.82.0", 1669 | "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.82.0.tgz", 1670 | "integrity": "sha512-7j21FIb0tq3udzlOitrnMaIBIMrnB0gO9sDzxHytNfZlMAZXWVIRSP3SodU9lxLTVjyZeFLfr7Qqs1Xafo36uQ==", 1671 | "dependencies": { 1672 | "axios": "^0.26.1", 1673 | "dayjs": "^1.8.29", 1674 | "https-proxy-agent": "^5.0.0", 1675 | "jsonwebtoken": "^8.5.1", 1676 | "lodash": "^4.17.21", 1677 | "q": "2.0.x", 1678 | "qs": "^6.9.4", 1679 | "rootpath": "^0.1.2", 1680 | "scmp": "^2.1.0", 1681 | "url-parse": "^1.5.9", 1682 | "xmlbuilder": "^13.0.2" 1683 | }, 1684 | "engines": { 1685 | "node": ">=6.0" 1686 | } 1687 | }, 1688 | "node_modules/twilio/node_modules/axios": { 1689 | "version": "0.26.1", 1690 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 1691 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 1692 | "dependencies": { 1693 | "follow-redirects": "^1.14.8" 1694 | } 1695 | }, 1696 | "node_modules/url-parse": { 1697 | "version": "1.5.10", 1698 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 1699 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 1700 | "dependencies": { 1701 | "querystringify": "^2.1.1", 1702 | "requires-port": "^1.0.0" 1703 | } 1704 | }, 1705 | "node_modules/uuid": { 1706 | "version": "8.3.2", 1707 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1708 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1709 | "bin": { 1710 | "uuid": "dist/bin/uuid" 1711 | } 1712 | }, 1713 | "node_modules/weak-map": { 1714 | "version": "1.0.8", 1715 | "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz", 1716 | "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==" 1717 | }, 1718 | "node_modules/xmlbuilder": { 1719 | "version": "13.0.2", 1720 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", 1721 | "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==", 1722 | "engines": { 1723 | "node": ">=6.0" 1724 | } 1725 | } 1726 | }, 1727 | "dependencies": { 1728 | "@aws-crypto/crc32": { 1729 | "version": "2.0.0", 1730 | "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-2.0.0.tgz", 1731 | "integrity": "sha512-TvE1r2CUueyXOuHdEigYjIZVesInd9KN+K/TFFNfkkxRThiNxO6i4ZqqAVMoEjAamZZ1AA8WXJkjCz7YShHPQA==", 1732 | "requires": { 1733 | "@aws-crypto/util": "^2.0.0", 1734 | "@aws-sdk/types": "^3.1.0", 1735 | "tslib": "^1.11.1" 1736 | }, 1737 | "dependencies": { 1738 | "tslib": { 1739 | "version": "1.14.1", 1740 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1741 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1742 | } 1743 | } 1744 | }, 1745 | "@aws-crypto/crc32c": { 1746 | "version": "2.0.0", 1747 | "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-2.0.0.tgz", 1748 | "integrity": "sha512-vF0eMdMHx3O3MoOXUfBZry8Y4ZDtcuskjjKgJz8YfIDjLStxTZrYXk+kZqtl6A0uCmmiN/Eb/JbC/CndTV1MHg==", 1749 | "requires": { 1750 | "@aws-crypto/util": "^2.0.0", 1751 | "@aws-sdk/types": "^3.1.0", 1752 | "tslib": "^1.11.1" 1753 | }, 1754 | "dependencies": { 1755 | "tslib": { 1756 | "version": "1.14.1", 1757 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1758 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1759 | } 1760 | } 1761 | }, 1762 | "@aws-crypto/ie11-detection": { 1763 | "version": "2.0.2", 1764 | "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz", 1765 | "integrity": "sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw==", 1766 | "requires": { 1767 | "tslib": "^1.11.1" 1768 | }, 1769 | "dependencies": { 1770 | "tslib": { 1771 | "version": "1.14.1", 1772 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1773 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1774 | } 1775 | } 1776 | }, 1777 | "@aws-crypto/sha1-browser": { 1778 | "version": "2.0.0", 1779 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-2.0.0.tgz", 1780 | "integrity": "sha512-3fIVRjPFY8EG5HWXR+ZJZMdWNRpwbxGzJ9IH9q93FpbgCH8u8GHRi46mZXp3cYD7gealmyqpm3ThZwLKJjWJhA==", 1781 | "requires": { 1782 | "@aws-crypto/ie11-detection": "^2.0.0", 1783 | "@aws-crypto/supports-web-crypto": "^2.0.0", 1784 | "@aws-sdk/types": "^3.1.0", 1785 | "@aws-sdk/util-locate-window": "^3.0.0", 1786 | "@aws-sdk/util-utf8-browser": "^3.0.0", 1787 | "tslib": "^1.11.1" 1788 | }, 1789 | "dependencies": { 1790 | "tslib": { 1791 | "version": "1.14.1", 1792 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1793 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1794 | } 1795 | } 1796 | }, 1797 | "@aws-crypto/sha256-browser": { 1798 | "version": "2.0.0", 1799 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz", 1800 | "integrity": "sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A==", 1801 | "requires": { 1802 | "@aws-crypto/ie11-detection": "^2.0.0", 1803 | "@aws-crypto/sha256-js": "^2.0.0", 1804 | "@aws-crypto/supports-web-crypto": "^2.0.0", 1805 | "@aws-crypto/util": "^2.0.0", 1806 | "@aws-sdk/types": "^3.1.0", 1807 | "@aws-sdk/util-locate-window": "^3.0.0", 1808 | "@aws-sdk/util-utf8-browser": "^3.0.0", 1809 | "tslib": "^1.11.1" 1810 | }, 1811 | "dependencies": { 1812 | "tslib": { 1813 | "version": "1.14.1", 1814 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1815 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1816 | } 1817 | } 1818 | }, 1819 | "@aws-crypto/sha256-js": { 1820 | "version": "2.0.0", 1821 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz", 1822 | "integrity": "sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig==", 1823 | "requires": { 1824 | "@aws-crypto/util": "^2.0.0", 1825 | "@aws-sdk/types": "^3.1.0", 1826 | "tslib": "^1.11.1" 1827 | }, 1828 | "dependencies": { 1829 | "tslib": { 1830 | "version": "1.14.1", 1831 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1832 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1833 | } 1834 | } 1835 | }, 1836 | "@aws-crypto/supports-web-crypto": { 1837 | "version": "2.0.2", 1838 | "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz", 1839 | "integrity": "sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ==", 1840 | "requires": { 1841 | "tslib": "^1.11.1" 1842 | }, 1843 | "dependencies": { 1844 | "tslib": { 1845 | "version": "1.14.1", 1846 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1847 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1848 | } 1849 | } 1850 | }, 1851 | "@aws-crypto/util": { 1852 | "version": "2.0.2", 1853 | "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-2.0.2.tgz", 1854 | "integrity": "sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA==", 1855 | "requires": { 1856 | "@aws-sdk/types": "^3.110.0", 1857 | "@aws-sdk/util-utf8-browser": "^3.0.0", 1858 | "tslib": "^1.11.1" 1859 | }, 1860 | "dependencies": { 1861 | "tslib": { 1862 | "version": "1.14.1", 1863 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1864 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1865 | } 1866 | } 1867 | }, 1868 | "@aws-sdk/abort-controller": { 1869 | "version": "3.171.0", 1870 | "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.171.0.tgz", 1871 | "integrity": "sha512-D3ShqAdCSFvKN3pGGn0KwK6lece4nqKY0hrxMIaYvDwewGjoIgEMBPGhCK1kNoBo6lJ93Fu1u4DheV+8abSmjQ==", 1872 | "requires": { 1873 | "@aws-sdk/types": "3.171.0", 1874 | "tslib": "^2.3.1" 1875 | } 1876 | }, 1877 | "@aws-sdk/chunked-blob-reader": { 1878 | "version": "3.170.0", 1879 | "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader/-/chunked-blob-reader-3.170.0.tgz", 1880 | "integrity": "sha512-73Fy1u9zR9ZMC59QobuCWg3LoYfcrFsrP8569vvqtlGqPuQUW+RW3gfx0omIDmxaSg8qq8REPLJFrAGfeL7VtQ==", 1881 | "requires": { 1882 | "tslib": "^2.3.1" 1883 | } 1884 | }, 1885 | "@aws-sdk/chunked-blob-reader-native": { 1886 | "version": "3.170.0", 1887 | "resolved": "https://registry.npmjs.org/@aws-sdk/chunked-blob-reader-native/-/chunked-blob-reader-native-3.170.0.tgz", 1888 | "integrity": "sha512-haJ7fdWaOgAM4trw2LBd1VIvRFzMMPz2jy9mu4rE+z1uHbPZHNMGytBo1FJO2DShzUCmJZi3t3CD/7aE3H38+w==", 1889 | "requires": { 1890 | "@aws-sdk/util-base64-browser": "3.170.0", 1891 | "tslib": "^2.3.1" 1892 | } 1893 | }, 1894 | "@aws-sdk/client-s3": { 1895 | "version": "3.171.0", 1896 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.171.0.tgz", 1897 | "integrity": "sha512-UFPnf9xG7H6Mku9tfVH7oSXq65oH0mb8vvfeUWsi+KKedvMdww7fVWmXtcgnsB9nmXLF2PfrQrdaz2uid4rpgQ==", 1898 | "requires": { 1899 | "@aws-crypto/sha1-browser": "2.0.0", 1900 | "@aws-crypto/sha256-browser": "2.0.0", 1901 | "@aws-crypto/sha256-js": "2.0.0", 1902 | "@aws-sdk/client-sts": "3.171.0", 1903 | "@aws-sdk/config-resolver": "3.171.0", 1904 | "@aws-sdk/credential-provider-node": "3.171.0", 1905 | "@aws-sdk/eventstream-serde-browser": "3.171.0", 1906 | "@aws-sdk/eventstream-serde-config-resolver": "3.171.0", 1907 | "@aws-sdk/eventstream-serde-node": "3.171.0", 1908 | "@aws-sdk/fetch-http-handler": "3.171.0", 1909 | "@aws-sdk/hash-blob-browser": "3.171.0", 1910 | "@aws-sdk/hash-node": "3.171.0", 1911 | "@aws-sdk/hash-stream-node": "3.171.0", 1912 | "@aws-sdk/invalid-dependency": "3.171.0", 1913 | "@aws-sdk/md5-js": "3.171.0", 1914 | "@aws-sdk/middleware-bucket-endpoint": "3.171.0", 1915 | "@aws-sdk/middleware-content-length": "3.171.0", 1916 | "@aws-sdk/middleware-expect-continue": "3.171.0", 1917 | "@aws-sdk/middleware-flexible-checksums": "3.171.0", 1918 | "@aws-sdk/middleware-host-header": "3.171.0", 1919 | "@aws-sdk/middleware-location-constraint": "3.171.0", 1920 | "@aws-sdk/middleware-logger": "3.171.0", 1921 | "@aws-sdk/middleware-recursion-detection": "3.171.0", 1922 | "@aws-sdk/middleware-retry": "3.171.0", 1923 | "@aws-sdk/middleware-sdk-s3": "3.171.0", 1924 | "@aws-sdk/middleware-serde": "3.171.0", 1925 | "@aws-sdk/middleware-signing": "3.171.0", 1926 | "@aws-sdk/middleware-ssec": "3.171.0", 1927 | "@aws-sdk/middleware-stack": "3.171.0", 1928 | "@aws-sdk/middleware-user-agent": "3.171.0", 1929 | "@aws-sdk/node-config-provider": "3.171.0", 1930 | "@aws-sdk/node-http-handler": "3.171.0", 1931 | "@aws-sdk/protocol-http": "3.171.0", 1932 | "@aws-sdk/signature-v4-multi-region": "3.171.0", 1933 | "@aws-sdk/smithy-client": "3.171.0", 1934 | "@aws-sdk/types": "3.171.0", 1935 | "@aws-sdk/url-parser": "3.171.0", 1936 | "@aws-sdk/util-base64-browser": "3.170.0", 1937 | "@aws-sdk/util-base64-node": "3.170.0", 1938 | "@aws-sdk/util-body-length-browser": "3.170.0", 1939 | "@aws-sdk/util-body-length-node": "3.170.0", 1940 | "@aws-sdk/util-defaults-mode-browser": "3.171.0", 1941 | "@aws-sdk/util-defaults-mode-node": "3.171.0", 1942 | "@aws-sdk/util-stream-browser": "3.171.0", 1943 | "@aws-sdk/util-stream-node": "3.171.0", 1944 | "@aws-sdk/util-user-agent-browser": "3.171.0", 1945 | "@aws-sdk/util-user-agent-node": "3.171.0", 1946 | "@aws-sdk/util-utf8-browser": "3.170.0", 1947 | "@aws-sdk/util-utf8-node": "3.170.0", 1948 | "@aws-sdk/util-waiter": "3.171.0", 1949 | "@aws-sdk/xml-builder": "3.170.0", 1950 | "entities": "2.2.0", 1951 | "fast-xml-parser": "3.19.0", 1952 | "tslib": "^2.3.1" 1953 | } 1954 | }, 1955 | "@aws-sdk/client-sso": { 1956 | "version": "3.171.0", 1957 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.171.0.tgz", 1958 | "integrity": "sha512-iOJxoxHFlyuGfXKVz8Z7xVgYkdnqw6beDpIO852aDL6DYFO0ZA6vYjWXsMgdY6S6zJOR2K2uRhvPpbPiFF5PtA==", 1959 | "requires": { 1960 | "@aws-crypto/sha256-browser": "2.0.0", 1961 | "@aws-crypto/sha256-js": "2.0.0", 1962 | "@aws-sdk/config-resolver": "3.171.0", 1963 | "@aws-sdk/fetch-http-handler": "3.171.0", 1964 | "@aws-sdk/hash-node": "3.171.0", 1965 | "@aws-sdk/invalid-dependency": "3.171.0", 1966 | "@aws-sdk/middleware-content-length": "3.171.0", 1967 | "@aws-sdk/middleware-host-header": "3.171.0", 1968 | "@aws-sdk/middleware-logger": "3.171.0", 1969 | "@aws-sdk/middleware-recursion-detection": "3.171.0", 1970 | "@aws-sdk/middleware-retry": "3.171.0", 1971 | "@aws-sdk/middleware-serde": "3.171.0", 1972 | "@aws-sdk/middleware-stack": "3.171.0", 1973 | "@aws-sdk/middleware-user-agent": "3.171.0", 1974 | "@aws-sdk/node-config-provider": "3.171.0", 1975 | "@aws-sdk/node-http-handler": "3.171.0", 1976 | "@aws-sdk/protocol-http": "3.171.0", 1977 | "@aws-sdk/smithy-client": "3.171.0", 1978 | "@aws-sdk/types": "3.171.0", 1979 | "@aws-sdk/url-parser": "3.171.0", 1980 | "@aws-sdk/util-base64-browser": "3.170.0", 1981 | "@aws-sdk/util-base64-node": "3.170.0", 1982 | "@aws-sdk/util-body-length-browser": "3.170.0", 1983 | "@aws-sdk/util-body-length-node": "3.170.0", 1984 | "@aws-sdk/util-defaults-mode-browser": "3.171.0", 1985 | "@aws-sdk/util-defaults-mode-node": "3.171.0", 1986 | "@aws-sdk/util-user-agent-browser": "3.171.0", 1987 | "@aws-sdk/util-user-agent-node": "3.171.0", 1988 | "@aws-sdk/util-utf8-browser": "3.170.0", 1989 | "@aws-sdk/util-utf8-node": "3.170.0", 1990 | "tslib": "^2.3.1" 1991 | } 1992 | }, 1993 | "@aws-sdk/client-sts": { 1994 | "version": "3.171.0", 1995 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.171.0.tgz", 1996 | "integrity": "sha512-CozT5qq/Wtdn4CDz5PdXtdyGnzHbuLqOYcTgaYpDks2EPfRSSFT2WYE+Y76Ccdz5n7vWR3yJuNjDXnVL28U8gQ==", 1997 | "requires": { 1998 | "@aws-crypto/sha256-browser": "2.0.0", 1999 | "@aws-crypto/sha256-js": "2.0.0", 2000 | "@aws-sdk/config-resolver": "3.171.0", 2001 | "@aws-sdk/credential-provider-node": "3.171.0", 2002 | "@aws-sdk/fetch-http-handler": "3.171.0", 2003 | "@aws-sdk/hash-node": "3.171.0", 2004 | "@aws-sdk/invalid-dependency": "3.171.0", 2005 | "@aws-sdk/middleware-content-length": "3.171.0", 2006 | "@aws-sdk/middleware-host-header": "3.171.0", 2007 | "@aws-sdk/middleware-logger": "3.171.0", 2008 | "@aws-sdk/middleware-recursion-detection": "3.171.0", 2009 | "@aws-sdk/middleware-retry": "3.171.0", 2010 | "@aws-sdk/middleware-sdk-sts": "3.171.0", 2011 | "@aws-sdk/middleware-serde": "3.171.0", 2012 | "@aws-sdk/middleware-signing": "3.171.0", 2013 | "@aws-sdk/middleware-stack": "3.171.0", 2014 | "@aws-sdk/middleware-user-agent": "3.171.0", 2015 | "@aws-sdk/node-config-provider": "3.171.0", 2016 | "@aws-sdk/node-http-handler": "3.171.0", 2017 | "@aws-sdk/protocol-http": "3.171.0", 2018 | "@aws-sdk/smithy-client": "3.171.0", 2019 | "@aws-sdk/types": "3.171.0", 2020 | "@aws-sdk/url-parser": "3.171.0", 2021 | "@aws-sdk/util-base64-browser": "3.170.0", 2022 | "@aws-sdk/util-base64-node": "3.170.0", 2023 | "@aws-sdk/util-body-length-browser": "3.170.0", 2024 | "@aws-sdk/util-body-length-node": "3.170.0", 2025 | "@aws-sdk/util-defaults-mode-browser": "3.171.0", 2026 | "@aws-sdk/util-defaults-mode-node": "3.171.0", 2027 | "@aws-sdk/util-user-agent-browser": "3.171.0", 2028 | "@aws-sdk/util-user-agent-node": "3.171.0", 2029 | "@aws-sdk/util-utf8-browser": "3.170.0", 2030 | "@aws-sdk/util-utf8-node": "3.170.0", 2031 | "entities": "2.2.0", 2032 | "fast-xml-parser": "3.19.0", 2033 | "tslib": "^2.3.1" 2034 | } 2035 | }, 2036 | "@aws-sdk/config-resolver": { 2037 | "version": "3.171.0", 2038 | "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.171.0.tgz", 2039 | "integrity": "sha512-qxuquXxy2Uu96Vmm5lm3b72wx8g+7XkWf5pGeQPPgXT4Zrw6UQdtqvNhsoFpKLp/Op1yu/CIDd7lG2l1Xgs5HQ==", 2040 | "requires": { 2041 | "@aws-sdk/signature-v4": "3.171.0", 2042 | "@aws-sdk/types": "3.171.0", 2043 | "@aws-sdk/util-config-provider": "3.170.0", 2044 | "@aws-sdk/util-middleware": "3.171.0", 2045 | "tslib": "^2.3.1" 2046 | } 2047 | }, 2048 | "@aws-sdk/credential-provider-env": { 2049 | "version": "3.171.0", 2050 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.171.0.tgz", 2051 | "integrity": "sha512-Btm7mu+2RsOQxplGhHMKat+CgaOHwpqt1j3aU2EQtad5Fb5NSZRD85mqD/BGCCLTmfqIWl39YQv9758gciRjCw==", 2052 | "requires": { 2053 | "@aws-sdk/property-provider": "3.171.0", 2054 | "@aws-sdk/types": "3.171.0", 2055 | "tslib": "^2.3.1" 2056 | } 2057 | }, 2058 | "@aws-sdk/credential-provider-imds": { 2059 | "version": "3.171.0", 2060 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.171.0.tgz", 2061 | "integrity": "sha512-lm5uuJ3YK6qui7G6Zr5farUuHn10kMtkb+CFr4gtDsYxF8CscciBmQNMCxo2oiVzlsjOpFGtpLTAvjb7nn12CA==", 2062 | "requires": { 2063 | "@aws-sdk/node-config-provider": "3.171.0", 2064 | "@aws-sdk/property-provider": "3.171.0", 2065 | "@aws-sdk/types": "3.171.0", 2066 | "@aws-sdk/url-parser": "3.171.0", 2067 | "tslib": "^2.3.1" 2068 | } 2069 | }, 2070 | "@aws-sdk/credential-provider-ini": { 2071 | "version": "3.171.0", 2072 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.171.0.tgz", 2073 | "integrity": "sha512-MF6fYCvezreZBI+hjI4oEuZdIKgfhbe6jzbTpNrDwBzw8lBkq1UY214dp2ecJtnj3FKjFg9A+goQRa/CViNgGQ==", 2074 | "requires": { 2075 | "@aws-sdk/credential-provider-env": "3.171.0", 2076 | "@aws-sdk/credential-provider-imds": "3.171.0", 2077 | "@aws-sdk/credential-provider-sso": "3.171.0", 2078 | "@aws-sdk/credential-provider-web-identity": "3.171.0", 2079 | "@aws-sdk/property-provider": "3.171.0", 2080 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 2081 | "@aws-sdk/types": "3.171.0", 2082 | "tslib": "^2.3.1" 2083 | } 2084 | }, 2085 | "@aws-sdk/credential-provider-node": { 2086 | "version": "3.171.0", 2087 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.171.0.tgz", 2088 | "integrity": "sha512-zUdgr9THjzLb99Qmb1qOqsSYtX4/PCCzXgDolfYS/+bLfoMD1iqA49l6lw4zJV29f6WNjaA5MxmDpbrPXkI1Cw==", 2089 | "requires": { 2090 | "@aws-sdk/credential-provider-env": "3.171.0", 2091 | "@aws-sdk/credential-provider-imds": "3.171.0", 2092 | "@aws-sdk/credential-provider-ini": "3.171.0", 2093 | "@aws-sdk/credential-provider-process": "3.171.0", 2094 | "@aws-sdk/credential-provider-sso": "3.171.0", 2095 | "@aws-sdk/credential-provider-web-identity": "3.171.0", 2096 | "@aws-sdk/property-provider": "3.171.0", 2097 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 2098 | "@aws-sdk/types": "3.171.0", 2099 | "tslib": "^2.3.1" 2100 | } 2101 | }, 2102 | "@aws-sdk/credential-provider-process": { 2103 | "version": "3.171.0", 2104 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.171.0.tgz", 2105 | "integrity": "sha512-wTrtftwepuW+yJG2mz+HDwQ/L70rwBPkeyy32X+Pfm1jh4B5lL3qMmxR7uLPMgA4BQfXCazPeOiW50b9wRyZYg==", 2106 | "requires": { 2107 | "@aws-sdk/property-provider": "3.171.0", 2108 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 2109 | "@aws-sdk/types": "3.171.0", 2110 | "tslib": "^2.3.1" 2111 | } 2112 | }, 2113 | "@aws-sdk/credential-provider-sso": { 2114 | "version": "3.171.0", 2115 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.171.0.tgz", 2116 | "integrity": "sha512-D1zyKiYL9jrzJz5VOKynAAxqyQZ5gjweRPNrIomrYG2BQSMz82CZzL/sn/Q2KNmuSWgfPc4bF2JDPeTdPXsFKA==", 2117 | "requires": { 2118 | "@aws-sdk/client-sso": "3.171.0", 2119 | "@aws-sdk/property-provider": "3.171.0", 2120 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 2121 | "@aws-sdk/types": "3.171.0", 2122 | "tslib": "^2.3.1" 2123 | } 2124 | }, 2125 | "@aws-sdk/credential-provider-web-identity": { 2126 | "version": "3.171.0", 2127 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.171.0.tgz", 2128 | "integrity": "sha512-yeQC+n3Xiw/tOaMP67pBNLsddPb8hHjsEIPircS2z4VvwhOY+5ZaaiaRmw5u5pvIMctbGZU75Ms1hBSfOEdDhQ==", 2129 | "requires": { 2130 | "@aws-sdk/property-provider": "3.171.0", 2131 | "@aws-sdk/types": "3.171.0", 2132 | "tslib": "^2.3.1" 2133 | } 2134 | }, 2135 | "@aws-sdk/eventstream-codec": { 2136 | "version": "3.171.0", 2137 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-codec/-/eventstream-codec-3.171.0.tgz", 2138 | "integrity": "sha512-3lCnPlydbZ/R6fAD+4xLX8Ua+kFGUzsPcgLP0lH5LO39jtnN1wEQj5fWM139Re9LuD0NoEBhC0AuROIM6CbzVA==", 2139 | "requires": { 2140 | "@aws-crypto/crc32": "2.0.0", 2141 | "@aws-sdk/types": "3.171.0", 2142 | "@aws-sdk/util-hex-encoding": "3.170.0", 2143 | "tslib": "^2.3.1" 2144 | } 2145 | }, 2146 | "@aws-sdk/eventstream-serde-browser": { 2147 | "version": "3.171.0", 2148 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-browser/-/eventstream-serde-browser-3.171.0.tgz", 2149 | "integrity": "sha512-ydjENlRoX49odSCWsOUo2lP2yE/4dR/GKE1yz3QvNZJ+6wRULbg6f55riyQokvAGMRW5BJigkMQLrg58WWridg==", 2150 | "requires": { 2151 | "@aws-sdk/eventstream-serde-universal": "3.171.0", 2152 | "@aws-sdk/types": "3.171.0", 2153 | "tslib": "^2.3.1" 2154 | } 2155 | }, 2156 | "@aws-sdk/eventstream-serde-config-resolver": { 2157 | "version": "3.171.0", 2158 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.171.0.tgz", 2159 | "integrity": "sha512-cg+Xzl1lB7iIcER+Pv/06VaBvlC/dZxs3i5Kw3PYUaYICDwGytGRZbEC2H/6aBDEYYLfwUbnkq0Dp40faJfdAw==", 2160 | "requires": { 2161 | "@aws-sdk/types": "3.171.0", 2162 | "tslib": "^2.3.1" 2163 | } 2164 | }, 2165 | "@aws-sdk/eventstream-serde-node": { 2166 | "version": "3.171.0", 2167 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-node/-/eventstream-serde-node-3.171.0.tgz", 2168 | "integrity": "sha512-psOYj2RUJsI14jHCw1FQdSTljaf0yE9svg5NY9mGFD1ifj5+XEZmxhADMA6wtnDjWS2MzyJQQUGdfqIv1FeHEQ==", 2169 | "requires": { 2170 | "@aws-sdk/eventstream-serde-universal": "3.171.0", 2171 | "@aws-sdk/types": "3.171.0", 2172 | "tslib": "^2.3.1" 2173 | } 2174 | }, 2175 | "@aws-sdk/eventstream-serde-universal": { 2176 | "version": "3.171.0", 2177 | "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-serde-universal/-/eventstream-serde-universal-3.171.0.tgz", 2178 | "integrity": "sha512-aItTLL+WDHgwvl0biGZ+9phUOH93RW/v4uZgvjmrGSUx6try2/+L1rQeLU9n7JYfGcu8CKNePxpvrfSXpgJ7FA==", 2179 | "requires": { 2180 | "@aws-sdk/eventstream-codec": "3.171.0", 2181 | "@aws-sdk/types": "3.171.0", 2182 | "tslib": "^2.3.1" 2183 | } 2184 | }, 2185 | "@aws-sdk/fetch-http-handler": { 2186 | "version": "3.171.0", 2187 | "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.171.0.tgz", 2188 | "integrity": "sha512-jxlY0WFBrd5QzXnPNmzq8LbcIN3iY4Di+b9nDlUkQ6yCp/PxBEO3iZiNk4DeMH4A6rHrksnbsDDJzzZyGw/TLg==", 2189 | "requires": { 2190 | "@aws-sdk/protocol-http": "3.171.0", 2191 | "@aws-sdk/querystring-builder": "3.171.0", 2192 | "@aws-sdk/types": "3.171.0", 2193 | "@aws-sdk/util-base64-browser": "3.170.0", 2194 | "tslib": "^2.3.1" 2195 | } 2196 | }, 2197 | "@aws-sdk/hash-blob-browser": { 2198 | "version": "3.171.0", 2199 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-blob-browser/-/hash-blob-browser-3.171.0.tgz", 2200 | "integrity": "sha512-Orwm8OiVNlVaQFEn+mWkue4U2bYytuAi5nmv9Co41hXDR8qF4pvwPWVV70OsndGcgqlFfvkJ4KahCO8Mta4I3w==", 2201 | "requires": { 2202 | "@aws-sdk/chunked-blob-reader": "3.170.0", 2203 | "@aws-sdk/chunked-blob-reader-native": "3.170.0", 2204 | "@aws-sdk/types": "3.171.0", 2205 | "tslib": "^2.3.1" 2206 | } 2207 | }, 2208 | "@aws-sdk/hash-node": { 2209 | "version": "3.171.0", 2210 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.171.0.tgz", 2211 | "integrity": "sha512-eTn8iExc6KjMo3OLz29zkADq9hXsA1jO2ghQfQ4BNdGXvhMtKcIO2hdhyzaOhtoLAeL44gbFR9oFjwG0U8ak/Q==", 2212 | "requires": { 2213 | "@aws-sdk/types": "3.171.0", 2214 | "@aws-sdk/util-buffer-from": "3.170.0", 2215 | "tslib": "^2.3.1" 2216 | } 2217 | }, 2218 | "@aws-sdk/hash-stream-node": { 2219 | "version": "3.171.0", 2220 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-stream-node/-/hash-stream-node-3.171.0.tgz", 2221 | "integrity": "sha512-22yrj3Gx09n6esypHWSqqGTdKoMb/ORi55U4OtdCHufUtPVahwetNqKVBP73pHiT2VEmLQ8cyWff1WwpRFdeFw==", 2222 | "requires": { 2223 | "@aws-sdk/types": "3.171.0", 2224 | "tslib": "^2.3.1" 2225 | } 2226 | }, 2227 | "@aws-sdk/invalid-dependency": { 2228 | "version": "3.171.0", 2229 | "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.171.0.tgz", 2230 | "integrity": "sha512-UrjQnhRv2B6ZgQfZjRbsaD6Sm5aIjH9YPtjT5oTbSgq3uHnj+s2ubUYd2nR8+lV2j1XL/Zfn/zUQ+6W3Fxk+UA==", 2231 | "requires": { 2232 | "@aws-sdk/types": "3.171.0", 2233 | "tslib": "^2.3.1" 2234 | } 2235 | }, 2236 | "@aws-sdk/is-array-buffer": { 2237 | "version": "3.170.0", 2238 | "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.170.0.tgz", 2239 | "integrity": "sha512-yYXqgp8rilBckIvNRs22yAXHKcXb86/g+F+hsTZl38OJintTsLQB//O5v6EQTYhSW7T3wMe1NHDrjZ+hFjAy4Q==", 2240 | "requires": { 2241 | "tslib": "^2.3.1" 2242 | } 2243 | }, 2244 | "@aws-sdk/md5-js": { 2245 | "version": "3.171.0", 2246 | "resolved": "https://registry.npmjs.org/@aws-sdk/md5-js/-/md5-js-3.171.0.tgz", 2247 | "integrity": "sha512-ZHuK7NvRY44WasjRjHnTNTGfdWuZTND4CCRC78Fmf3tk+zeCEnDZ81cVVtMqVn1wIf02U35Bwbunfx8i89VoSg==", 2248 | "requires": { 2249 | "@aws-sdk/types": "3.171.0", 2250 | "@aws-sdk/util-utf8-browser": "3.170.0", 2251 | "@aws-sdk/util-utf8-node": "3.170.0", 2252 | "tslib": "^2.3.1" 2253 | } 2254 | }, 2255 | "@aws-sdk/middleware-bucket-endpoint": { 2256 | "version": "3.171.0", 2257 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.171.0.tgz", 2258 | "integrity": "sha512-mRARZ8+WSoEfy4v5Gp084O2kxKwjoVozKQ0QN0BGYU//HKWwPRQ5qnv8Sty5oEA6J3rjYrqeIuFd6I8J/MxYZg==", 2259 | "requires": { 2260 | "@aws-sdk/protocol-http": "3.171.0", 2261 | "@aws-sdk/types": "3.171.0", 2262 | "@aws-sdk/util-arn-parser": "3.170.0", 2263 | "@aws-sdk/util-config-provider": "3.170.0", 2264 | "tslib": "^2.3.1" 2265 | } 2266 | }, 2267 | "@aws-sdk/middleware-content-length": { 2268 | "version": "3.171.0", 2269 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.171.0.tgz", 2270 | "integrity": "sha512-zvhCvoR36fxjygDA8yN3AAVFnL0i6ubLRvzq6gf6gHVJH2P7/IWkXOBwu461qpuHPG87QwdqB/W+qY3KfNu/mA==", 2271 | "requires": { 2272 | "@aws-sdk/protocol-http": "3.171.0", 2273 | "@aws-sdk/types": "3.171.0", 2274 | "tslib": "^2.3.1" 2275 | } 2276 | }, 2277 | "@aws-sdk/middleware-expect-continue": { 2278 | "version": "3.171.0", 2279 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.171.0.tgz", 2280 | "integrity": "sha512-Sc4onadPMH0JRfAT1CXf405aGUGktgCM+UyyX5f85rT/5J5omwt2d31vu0ri4CmU89QI5T7xeq4DN6mNQu2jfw==", 2281 | "requires": { 2282 | "@aws-sdk/protocol-http": "3.171.0", 2283 | "@aws-sdk/types": "3.171.0", 2284 | "tslib": "^2.3.1" 2285 | } 2286 | }, 2287 | "@aws-sdk/middleware-flexible-checksums": { 2288 | "version": "3.171.0", 2289 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.171.0.tgz", 2290 | "integrity": "sha512-91GvgWCG/cugmxXlOWCKmynMoKsKzmdOBj01k7Vx0oZAeR8/3i74mpGQ6DRaaTOENNgFrcHzxnlxJDZEY44MOw==", 2291 | "requires": { 2292 | "@aws-crypto/crc32": "2.0.0", 2293 | "@aws-crypto/crc32c": "2.0.0", 2294 | "@aws-sdk/is-array-buffer": "3.170.0", 2295 | "@aws-sdk/protocol-http": "3.171.0", 2296 | "@aws-sdk/types": "3.171.0", 2297 | "tslib": "^2.3.1" 2298 | } 2299 | }, 2300 | "@aws-sdk/middleware-host-header": { 2301 | "version": "3.171.0", 2302 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.171.0.tgz", 2303 | "integrity": "sha512-WM3NEq1RcBOBXp2ItZCnK9RJPBztdUdaQrgtTkBWekgc9yxCiRBDhdZ4GLuWKyzApO2xqI/kfZQa4Wf44lWl8g==", 2304 | "requires": { 2305 | "@aws-sdk/protocol-http": "3.171.0", 2306 | "@aws-sdk/types": "3.171.0", 2307 | "tslib": "^2.3.1" 2308 | } 2309 | }, 2310 | "@aws-sdk/middleware-location-constraint": { 2311 | "version": "3.171.0", 2312 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.171.0.tgz", 2313 | "integrity": "sha512-fj/LH3mLVpK4lwB1DGcYflzfFllcXcYb+ZyGIVdZ0ZeXBOeG8sOG59C4ZdDK3XONnE+Ccv/s7l6MlXK6c9PDew==", 2314 | "requires": { 2315 | "@aws-sdk/types": "3.171.0", 2316 | "tslib": "^2.3.1" 2317 | } 2318 | }, 2319 | "@aws-sdk/middleware-logger": { 2320 | "version": "3.171.0", 2321 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.171.0.tgz", 2322 | "integrity": "sha512-/wn0+pV0AGcDGlcKY+2ylvp+FLXJdmvYLbPlo93OOQbyCOy7Xa7Z8+RZYFHv8xrqhlQI0iw6TSYbL6fQ1v5IZw==", 2323 | "requires": { 2324 | "@aws-sdk/types": "3.171.0", 2325 | "tslib": "^2.3.1" 2326 | } 2327 | }, 2328 | "@aws-sdk/middleware-recursion-detection": { 2329 | "version": "3.171.0", 2330 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.171.0.tgz", 2331 | "integrity": "sha512-aNDRypFz9V52hC8lzZo28Zq9pS7W2MchjLAa2mPTFTd09aer6j9jmLY5o4NwoAAaEGV1JFHgpIZdymQRAcvSjw==", 2332 | "requires": { 2333 | "@aws-sdk/protocol-http": "3.171.0", 2334 | "@aws-sdk/types": "3.171.0", 2335 | "tslib": "^2.3.1" 2336 | } 2337 | }, 2338 | "@aws-sdk/middleware-retry": { 2339 | "version": "3.171.0", 2340 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.171.0.tgz", 2341 | "integrity": "sha512-E+TTJZngDZ91/pdlNSrYSKn2cjD0aL/Xe6VFKbhpt9k5EF/KK6gJUEitIFL3Db2bRqupgADQudUI+MZvNc7Bnw==", 2342 | "requires": { 2343 | "@aws-sdk/protocol-http": "3.171.0", 2344 | "@aws-sdk/service-error-classification": "3.171.0", 2345 | "@aws-sdk/types": "3.171.0", 2346 | "@aws-sdk/util-middleware": "3.171.0", 2347 | "tslib": "^2.3.1", 2348 | "uuid": "^8.3.2" 2349 | } 2350 | }, 2351 | "@aws-sdk/middleware-sdk-s3": { 2352 | "version": "3.171.0", 2353 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.171.0.tgz", 2354 | "integrity": "sha512-Mmd2MqJQJnYXrtOL01PgTXtH0MvubzGJ1uYAm0CLK2fubhLEp2usNACXFvUcdwd3dt5QktkLjWuw3xwFoIYGMg==", 2355 | "requires": { 2356 | "@aws-sdk/middleware-bucket-endpoint": "3.171.0", 2357 | "@aws-sdk/protocol-http": "3.171.0", 2358 | "@aws-sdk/types": "3.171.0", 2359 | "@aws-sdk/util-arn-parser": "3.170.0", 2360 | "tslib": "^2.3.1" 2361 | } 2362 | }, 2363 | "@aws-sdk/middleware-sdk-sts": { 2364 | "version": "3.171.0", 2365 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.171.0.tgz", 2366 | "integrity": "sha512-DLvoz7TfExbJ1p+FGehbu83D/KggohQNZMzsIojVbzu3E0pO606aZnbEPC7pUNXG3iXoQOScMMrhUNuRQEYgLQ==", 2367 | "requires": { 2368 | "@aws-sdk/middleware-signing": "3.171.0", 2369 | "@aws-sdk/property-provider": "3.171.0", 2370 | "@aws-sdk/protocol-http": "3.171.0", 2371 | "@aws-sdk/signature-v4": "3.171.0", 2372 | "@aws-sdk/types": "3.171.0", 2373 | "tslib": "^2.3.1" 2374 | } 2375 | }, 2376 | "@aws-sdk/middleware-serde": { 2377 | "version": "3.171.0", 2378 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.171.0.tgz", 2379 | "integrity": "sha512-eqgJPzzkha02Ca7clKWLOVOa7OuFunEPWfx00IUy5sxKFbgUSAeu6Kl5SC5Z3J9dIvefw3vX19x3334SZcwE1Q==", 2380 | "requires": { 2381 | "@aws-sdk/types": "3.171.0", 2382 | "tslib": "^2.3.1" 2383 | } 2384 | }, 2385 | "@aws-sdk/middleware-signing": { 2386 | "version": "3.171.0", 2387 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.171.0.tgz", 2388 | "integrity": "sha512-eEykO86etIqfWdUvvCcvYsHg+lXRE1Bo6+2mtXIcUXXC0LlqUoWsM1Ky/5jbjXVeWu2vWv++vG/WpJtNKkG13Q==", 2389 | "requires": { 2390 | "@aws-sdk/property-provider": "3.171.0", 2391 | "@aws-sdk/protocol-http": "3.171.0", 2392 | "@aws-sdk/signature-v4": "3.171.0", 2393 | "@aws-sdk/types": "3.171.0", 2394 | "tslib": "^2.3.1" 2395 | } 2396 | }, 2397 | "@aws-sdk/middleware-ssec": { 2398 | "version": "3.171.0", 2399 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.171.0.tgz", 2400 | "integrity": "sha512-lYf8gxe09owOUuvIil1G6TXQjUwIh7yuqeqj+Ix1aLbEZyloiryXkWjCPfeTEybVukWM0HPqU28AMhjgTOal6g==", 2401 | "requires": { 2402 | "@aws-sdk/types": "3.171.0", 2403 | "tslib": "^2.3.1" 2404 | } 2405 | }, 2406 | "@aws-sdk/middleware-stack": { 2407 | "version": "3.171.0", 2408 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.171.0.tgz", 2409 | "integrity": "sha512-0EbZin5J6EsHD/agE8s/TJktLh9aRZe80ZrCBv5ces420NaYNjvbvvsnt0tQw0Q8qv+1H6KFOUcZ5iXzadBy2A==", 2410 | "requires": { 2411 | "tslib": "^2.3.1" 2412 | } 2413 | }, 2414 | "@aws-sdk/middleware-user-agent": { 2415 | "version": "3.171.0", 2416 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.171.0.tgz", 2417 | "integrity": "sha512-GXw4LB6OqmPNwizY8KHdP7sC+d3gVTeeTbMhLPdZ62+PTj18faSoiBtQbnQmB/+c87VBlYbXex2ObfB6J0K2rg==", 2418 | "requires": { 2419 | "@aws-sdk/protocol-http": "3.171.0", 2420 | "@aws-sdk/types": "3.171.0", 2421 | "tslib": "^2.3.1" 2422 | } 2423 | }, 2424 | "@aws-sdk/node-config-provider": { 2425 | "version": "3.171.0", 2426 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.171.0.tgz", 2427 | "integrity": "sha512-kFJbdJpqV8qCrs0h5Yo1r9TgezzGlua8NYf80gx8gH49gDZ4hl+0gP7rWEnA19dZufrfveyTQ/kY+ntk5AyI8A==", 2428 | "requires": { 2429 | "@aws-sdk/property-provider": "3.171.0", 2430 | "@aws-sdk/shared-ini-file-loader": "3.171.0", 2431 | "@aws-sdk/types": "3.171.0", 2432 | "tslib": "^2.3.1" 2433 | } 2434 | }, 2435 | "@aws-sdk/node-http-handler": { 2436 | "version": "3.171.0", 2437 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.171.0.tgz", 2438 | "integrity": "sha512-hQY1hqgVcNC9KvRqV3Kxn2jCjIgMWwK3u90g2kNU27vZWIApz5hP4Y/TiyFO3+fGGNczcNHZp8aaggEO9tnctQ==", 2439 | "requires": { 2440 | "@aws-sdk/abort-controller": "3.171.0", 2441 | "@aws-sdk/protocol-http": "3.171.0", 2442 | "@aws-sdk/querystring-builder": "3.171.0", 2443 | "@aws-sdk/types": "3.171.0", 2444 | "tslib": "^2.3.1" 2445 | } 2446 | }, 2447 | "@aws-sdk/property-provider": { 2448 | "version": "3.171.0", 2449 | "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.171.0.tgz", 2450 | "integrity": "sha512-dtF9TfEuvYQCqyp5EbGLzwhGmxljDG95901STIRtOCbBi0EXQ2oShKz1T95kjaSrBQsI2YOmDTl+uPGkkOx5oA==", 2451 | "requires": { 2452 | "@aws-sdk/types": "3.171.0", 2453 | "tslib": "^2.3.1" 2454 | } 2455 | }, 2456 | "@aws-sdk/protocol-http": { 2457 | "version": "3.171.0", 2458 | "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.171.0.tgz", 2459 | "integrity": "sha512-J5iZr5epH3nhPEeEme3w0l1tz+re1l9TdKjfaoczEmZyoChtHr++x/QX2KPxIn5NVSe7QxN7yTJV373NrnMMfg==", 2460 | "requires": { 2461 | "@aws-sdk/types": "3.171.0", 2462 | "tslib": "^2.3.1" 2463 | } 2464 | }, 2465 | "@aws-sdk/querystring-builder": { 2466 | "version": "3.171.0", 2467 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.171.0.tgz", 2468 | "integrity": "sha512-qiDk3BlYH77QtJS6vSZlCGYjaW1Qq7JnxiAHPZc+wsl0kY59JPVuM5HTTZ+yjTu+hmSeiI0Wp5IHDiY+YOxi4w==", 2469 | "requires": { 2470 | "@aws-sdk/types": "3.171.0", 2471 | "@aws-sdk/util-uri-escape": "3.170.0", 2472 | "tslib": "^2.3.1" 2473 | } 2474 | }, 2475 | "@aws-sdk/querystring-parser": { 2476 | "version": "3.171.0", 2477 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.171.0.tgz", 2478 | "integrity": "sha512-wYM4HVlmi0NaRxJXmOPwQ4L6LPwUvRNMg+33z2Vvs9Ij23AzTCI2JRtaAwz/or3h6+nMlCOVsLZ7PAoLhkrgmg==", 2479 | "requires": { 2480 | "@aws-sdk/types": "3.171.0", 2481 | "tslib": "^2.3.1" 2482 | } 2483 | }, 2484 | "@aws-sdk/service-error-classification": { 2485 | "version": "3.171.0", 2486 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.171.0.tgz", 2487 | "integrity": "sha512-OrVFyPh3fFACRvplp8YvSdKNIXNx8xNYsHK+WhJFVOwnLC6OkwMyjck1xjfu4gvQ/PZlLqn7qTTURKcI2rUbMw==" 2488 | }, 2489 | "@aws-sdk/shared-ini-file-loader": { 2490 | "version": "3.171.0", 2491 | "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.171.0.tgz", 2492 | "integrity": "sha512-tilea/YDqszMqXn3pOaBBZVSA/29MegV0QBhKlrJoYzhZxZ1ZrlkyuTUVz6RjktRUYnty9D3MlgrmaiBxAOdrg==", 2493 | "requires": { 2494 | "tslib": "^2.3.1" 2495 | } 2496 | }, 2497 | "@aws-sdk/signature-v4": { 2498 | "version": "3.171.0", 2499 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.171.0.tgz", 2500 | "integrity": "sha512-tun1PIN/zW2y3h6uYuGhDLaMQmT52KK3KZyq+UM2XLYPz8j7G2TEFyJVn5Wk+QbHirCmOh8dCkaa5yFO6vfEFw==", 2501 | "requires": { 2502 | "@aws-sdk/is-array-buffer": "3.170.0", 2503 | "@aws-sdk/types": "3.171.0", 2504 | "@aws-sdk/util-hex-encoding": "3.170.0", 2505 | "@aws-sdk/util-middleware": "3.171.0", 2506 | "@aws-sdk/util-uri-escape": "3.170.0", 2507 | "tslib": "^2.3.1" 2508 | } 2509 | }, 2510 | "@aws-sdk/signature-v4-multi-region": { 2511 | "version": "3.171.0", 2512 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.171.0.tgz", 2513 | "integrity": "sha512-ga149Xf8uQ+e29gC+mRfdvDy4aOJidRE86YkZ0D6/XMBpmMl7dU9sKioKCKhPeUr10L7w4I3WRA1G3Vjq5j43Q==", 2514 | "requires": { 2515 | "@aws-sdk/protocol-http": "3.171.0", 2516 | "@aws-sdk/signature-v4": "3.171.0", 2517 | "@aws-sdk/types": "3.171.0", 2518 | "@aws-sdk/util-arn-parser": "3.170.0", 2519 | "tslib": "^2.3.1" 2520 | } 2521 | }, 2522 | "@aws-sdk/smithy-client": { 2523 | "version": "3.171.0", 2524 | "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.171.0.tgz", 2525 | "integrity": "sha512-Q4fYE8uWxDh1Pd9Flo7/Cns1eEg0PmPrMsgHv0za1S3TgVHA6jRq3KZaD6Jcm0H12NPbWv67Cu+O0sMei8oaxA==", 2526 | "requires": { 2527 | "@aws-sdk/middleware-stack": "3.171.0", 2528 | "@aws-sdk/types": "3.171.0", 2529 | "tslib": "^2.3.1" 2530 | } 2531 | }, 2532 | "@aws-sdk/types": { 2533 | "version": "3.171.0", 2534 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.171.0.tgz", 2535 | "integrity": "sha512-Yv5Wn/pbjMBST2jPHWPczmVbOLq8yFQVRyy1zGfsg1ETn25nGPvGBwqOkWcuz229KAcdUvFdRV9xaQCN3Lbo+Q==" 2536 | }, 2537 | "@aws-sdk/url-parser": { 2538 | "version": "3.171.0", 2539 | "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.171.0.tgz", 2540 | "integrity": "sha512-EF4ecSTmW9yG1faCXpTvySIpaPhK+6ebVxT6Zlt7IwIb9K+0zWlNb6VjDzq5Xg+nK7Y1p7RGmwhictWbOtbo9g==", 2541 | "requires": { 2542 | "@aws-sdk/querystring-parser": "3.171.0", 2543 | "@aws-sdk/types": "3.171.0", 2544 | "tslib": "^2.3.1" 2545 | } 2546 | }, 2547 | "@aws-sdk/util-arn-parser": { 2548 | "version": "3.170.0", 2549 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.170.0.tgz", 2550 | "integrity": "sha512-2ivABL9GNsucfMMkgGjVdFidbDogtSr4FBVW12D4ltijOL82CAynGrnxHAczRGnmi5/1/Ir4ipkr9pAdRMGiGw==", 2551 | "requires": { 2552 | "tslib": "^2.3.1" 2553 | } 2554 | }, 2555 | "@aws-sdk/util-base64-browser": { 2556 | "version": "3.170.0", 2557 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-browser/-/util-base64-browser-3.170.0.tgz", 2558 | "integrity": "sha512-uLP9Kp74+jc+UWI392LSWIaUj9eXZBhkAiSm8dXAyrr+5GFOKvmEdidFoZKKcFcZ2v3RMonDgFVcDBiZ33w7BQ==", 2559 | "requires": { 2560 | "tslib": "^2.3.1" 2561 | } 2562 | }, 2563 | "@aws-sdk/util-base64-node": { 2564 | "version": "3.170.0", 2565 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64-node/-/util-base64-node-3.170.0.tgz", 2566 | "integrity": "sha512-sjpOmfyW0RWCLXU8Du0ZtwgFoxIuKQIyVygXJ4qxByoa3jIUJXf4U33uSRMy47V3JoogdZuKSpND9hiNk2wU4w==", 2567 | "requires": { 2568 | "@aws-sdk/util-buffer-from": "3.170.0", 2569 | "tslib": "^2.3.1" 2570 | } 2571 | }, 2572 | "@aws-sdk/util-body-length-browser": { 2573 | "version": "3.170.0", 2574 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.170.0.tgz", 2575 | "integrity": "sha512-SqSWA++gsZgHw6tlcEXx9K6R6cVKNYzOq6bca+NR7jXvy1hfqiv9Gx5TZrG4oL4JziP8QA0fTklmI1uQJ4HBRA==", 2576 | "requires": { 2577 | "tslib": "^2.3.1" 2578 | } 2579 | }, 2580 | "@aws-sdk/util-body-length-node": { 2581 | "version": "3.170.0", 2582 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.170.0.tgz", 2583 | "integrity": "sha512-sFb85ngsgfpamwDn22LC/+FkbDTNiddbMHptkajw+CAD2Rb4SJDp2PfXZ6k883BueJWhmxZ9+lApHZqYtgPdzw==", 2584 | "requires": { 2585 | "tslib": "^2.3.1" 2586 | } 2587 | }, 2588 | "@aws-sdk/util-buffer-from": { 2589 | "version": "3.170.0", 2590 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.170.0.tgz", 2591 | "integrity": "sha512-3ClE3wgN/Zw0ahfVAY5KQ/y3K2c+SYHwVUQaGSuVQlPOCDInGYjE/XEFwCeGJzncRPHIKDRPEsHCpm1uwgwEqQ==", 2592 | "requires": { 2593 | "@aws-sdk/is-array-buffer": "3.170.0", 2594 | "tslib": "^2.3.1" 2595 | } 2596 | }, 2597 | "@aws-sdk/util-config-provider": { 2598 | "version": "3.170.0", 2599 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.170.0.tgz", 2600 | "integrity": "sha512-VV6lfss6Go00TF2hRVJnN8Uf2FOwC++1e8glaeU7fMWluYCBjwl+116mPOPFaxvkJCg0dui2tFroXioslM/rvQ==", 2601 | "requires": { 2602 | "tslib": "^2.3.1" 2603 | } 2604 | }, 2605 | "@aws-sdk/util-defaults-mode-browser": { 2606 | "version": "3.171.0", 2607 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.171.0.tgz", 2608 | "integrity": "sha512-ZZwtpm2XHTOx5TW7gQrpY+IOtriI506ab5t0DVgdOA7G8BVkC0I6Tm+0NJFSfsl/G4QzI0fNSbDG/6wAFZmPAQ==", 2609 | "requires": { 2610 | "@aws-sdk/property-provider": "3.171.0", 2611 | "@aws-sdk/types": "3.171.0", 2612 | "bowser": "^2.11.0", 2613 | "tslib": "^2.3.1" 2614 | } 2615 | }, 2616 | "@aws-sdk/util-defaults-mode-node": { 2617 | "version": "3.171.0", 2618 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.171.0.tgz", 2619 | "integrity": "sha512-3zbtGGRfygZRIh6BtGm6S+qGPPF3l/kUH4FKY4zpfLFamv+8SpcAlqH5BmbayA77vHdtiGEo5PhnuEr6QRABkw==", 2620 | "requires": { 2621 | "@aws-sdk/config-resolver": "3.171.0", 2622 | "@aws-sdk/credential-provider-imds": "3.171.0", 2623 | "@aws-sdk/node-config-provider": "3.171.0", 2624 | "@aws-sdk/property-provider": "3.171.0", 2625 | "@aws-sdk/types": "3.171.0", 2626 | "tslib": "^2.3.1" 2627 | } 2628 | }, 2629 | "@aws-sdk/util-hex-encoding": { 2630 | "version": "3.170.0", 2631 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.170.0.tgz", 2632 | "integrity": "sha512-BDYyMqaxX4/N7rYOIYlqgpZaBuHw3kNXKgOkWtJdzndIZbQX8HnyJ+rF0Pr1aVsOpVDM+fY1prERleFh/ZRTCg==", 2633 | "requires": { 2634 | "tslib": "^2.3.1" 2635 | } 2636 | }, 2637 | "@aws-sdk/util-locate-window": { 2638 | "version": "3.170.0", 2639 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.170.0.tgz", 2640 | "integrity": "sha512-uQvn3ZaAokWcNSY+tNR71RGXPPncv5ejrpGa/MGOCioeBjkU5n5OJp7BdaTGouZu4fffeVpdZJ/ZNld8LWMgLw==", 2641 | "requires": { 2642 | "tslib": "^2.3.1" 2643 | } 2644 | }, 2645 | "@aws-sdk/util-middleware": { 2646 | "version": "3.171.0", 2647 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.171.0.tgz", 2648 | "integrity": "sha512-43aXJ40z7BIkh6usI8qQlQ6JUj16ecmwsRmUi+SJf3+bHPnkENdjpKCx4i15UWii7fr5QJAivZykuvBXl/sicQ==", 2649 | "requires": { 2650 | "tslib": "^2.3.1" 2651 | } 2652 | }, 2653 | "@aws-sdk/util-stream-browser": { 2654 | "version": "3.171.0", 2655 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-browser/-/util-stream-browser-3.171.0.tgz", 2656 | "integrity": "sha512-GJfuRrAW+hwQfeWK3OfmN1kUtTpvVZj+EVb0GQ8F4/+PYRSpbNoQEW6oKCP6xIGR1xKLuiGsN5VQlWuECgIJKA==", 2657 | "requires": { 2658 | "@aws-sdk/fetch-http-handler": "3.171.0", 2659 | "@aws-sdk/types": "3.171.0", 2660 | "@aws-sdk/util-base64-browser": "3.170.0", 2661 | "@aws-sdk/util-hex-encoding": "3.170.0", 2662 | "@aws-sdk/util-utf8-browser": "3.170.0", 2663 | "tslib": "^2.3.1" 2664 | } 2665 | }, 2666 | "@aws-sdk/util-stream-node": { 2667 | "version": "3.171.0", 2668 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-stream-node/-/util-stream-node-3.171.0.tgz", 2669 | "integrity": "sha512-XuEUlixZnwqc1HSIRLFzIlfbpwMdAmGUkcADyvUYeTAEYf3hHzvvWERno4ZinuGQdU/+ogW29CsbTFnA80mz+A==", 2670 | "requires": { 2671 | "@aws-sdk/node-http-handler": "3.171.0", 2672 | "@aws-sdk/types": "3.171.0", 2673 | "@aws-sdk/util-buffer-from": "3.170.0", 2674 | "tslib": "^2.3.1" 2675 | } 2676 | }, 2677 | "@aws-sdk/util-uri-escape": { 2678 | "version": "3.170.0", 2679 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.170.0.tgz", 2680 | "integrity": "sha512-Fof0urZ3Lx6z6LNKSEO6T4DNaNh6sLJaSWFaC6gtVDPux/C3R7wy2RQRDp0baHxE8m1KMB0XnKzHizJNrbDI1w==", 2681 | "requires": { 2682 | "tslib": "^2.3.1" 2683 | } 2684 | }, 2685 | "@aws-sdk/util-user-agent-browser": { 2686 | "version": "3.171.0", 2687 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.171.0.tgz", 2688 | "integrity": "sha512-DNps82f+fOOySUO49I8kAJIGdTtZiL0l3hPEY1V9vp4SbF8B1jbFjPRR24tRN1S0B9AfC78k0EmJTmNWvq6EBQ==", 2689 | "requires": { 2690 | "@aws-sdk/types": "3.171.0", 2691 | "bowser": "^2.11.0", 2692 | "tslib": "^2.3.1" 2693 | } 2694 | }, 2695 | "@aws-sdk/util-user-agent-node": { 2696 | "version": "3.171.0", 2697 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.171.0.tgz", 2698 | "integrity": "sha512-xyBOIA2UUoP6dWkxkxpJIQq2zt3PhZoIlMcFwcVPfKtnqOM0FzdTlUPN4iqi7UAOkKg020lZhflzMqu5454Ucg==", 2699 | "requires": { 2700 | "@aws-sdk/node-config-provider": "3.171.0", 2701 | "@aws-sdk/types": "3.171.0", 2702 | "tslib": "^2.3.1" 2703 | } 2704 | }, 2705 | "@aws-sdk/util-utf8-browser": { 2706 | "version": "3.170.0", 2707 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.170.0.tgz", 2708 | "integrity": "sha512-tJby9krepSwDsBK+KQF5ACacZQ4LH1Aheh5Dy0pghxsN/9IRw7kMWTumuRCnSntLFFphDD7GM494/Dvnl1UCLA==", 2709 | "requires": { 2710 | "tslib": "^2.3.1" 2711 | } 2712 | }, 2713 | "@aws-sdk/util-utf8-node": { 2714 | "version": "3.170.0", 2715 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.170.0.tgz", 2716 | "integrity": "sha512-52QWGNoNQoyT2CuoQz6LjBKxHQtN/ceMFLW+9J1E0I1ni8XTuTYP52BlMe5484KkmZKsHOm+EWe4xuwwVetTxg==", 2717 | "requires": { 2718 | "@aws-sdk/util-buffer-from": "3.170.0", 2719 | "tslib": "^2.3.1" 2720 | } 2721 | }, 2722 | "@aws-sdk/util-waiter": { 2723 | "version": "3.171.0", 2724 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-waiter/-/util-waiter-3.171.0.tgz", 2725 | "integrity": "sha512-h4iqRxX09tM9yjnHWihnzM5cDboSEJAbx68ar4zjzDIUbVroVkDfl77AWVlS9D5SlfdWr70G3WT4EQfIK5Vd2g==", 2726 | "requires": { 2727 | "@aws-sdk/abort-controller": "3.171.0", 2728 | "@aws-sdk/types": "3.171.0", 2729 | "tslib": "^2.3.1" 2730 | } 2731 | }, 2732 | "@aws-sdk/xml-builder": { 2733 | "version": "3.170.0", 2734 | "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.170.0.tgz", 2735 | "integrity": "sha512-eN458rrukeI62yU1k4a+032IfpAS7aK30VEITzKanklMW6AxTpxUC6vGrP6bwtIpCFDN8yVaIiAwGXQg5l1X4g==", 2736 | "requires": { 2737 | "tslib": "^2.3.1" 2738 | } 2739 | }, 2740 | "agent-base": { 2741 | "version": "6.0.2", 2742 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 2743 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 2744 | "requires": { 2745 | "debug": "4" 2746 | } 2747 | }, 2748 | "asap": { 2749 | "version": "2.0.6", 2750 | "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", 2751 | "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" 2752 | }, 2753 | "asynckit": { 2754 | "version": "0.4.0", 2755 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 2756 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 2757 | }, 2758 | "axios": { 2759 | "version": "0.27.2", 2760 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", 2761 | "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", 2762 | "requires": { 2763 | "follow-redirects": "^1.14.9", 2764 | "form-data": "^4.0.0" 2765 | } 2766 | }, 2767 | "bowser": { 2768 | "version": "2.11.0", 2769 | "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", 2770 | "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" 2771 | }, 2772 | "buffer-equal-constant-time": { 2773 | "version": "1.0.1", 2774 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", 2775 | "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" 2776 | }, 2777 | "call-bind": { 2778 | "version": "1.0.2", 2779 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 2780 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 2781 | "requires": { 2782 | "function-bind": "^1.1.1", 2783 | "get-intrinsic": "^1.0.2" 2784 | } 2785 | }, 2786 | "combined-stream": { 2787 | "version": "1.0.8", 2788 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 2789 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 2790 | "requires": { 2791 | "delayed-stream": "~1.0.0" 2792 | } 2793 | }, 2794 | "commander": { 2795 | "version": "6.2.1", 2796 | "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", 2797 | "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==" 2798 | }, 2799 | "dayjs": { 2800 | "version": "1.11.5", 2801 | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.5.tgz", 2802 | "integrity": "sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA==" 2803 | }, 2804 | "debug": { 2805 | "version": "4.3.4", 2806 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 2807 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 2808 | "requires": { 2809 | "ms": "2.1.2" 2810 | } 2811 | }, 2812 | "delayed-stream": { 2813 | "version": "1.0.0", 2814 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 2815 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 2816 | }, 2817 | "ecdsa-sig-formatter": { 2818 | "version": "1.0.11", 2819 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", 2820 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", 2821 | "requires": { 2822 | "safe-buffer": "^5.0.1" 2823 | } 2824 | }, 2825 | "entities": { 2826 | "version": "2.2.0", 2827 | "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", 2828 | "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" 2829 | }, 2830 | "fast-xml-parser": { 2831 | "version": "3.19.0", 2832 | "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz", 2833 | "integrity": "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==" 2834 | }, 2835 | "follow-redirects": { 2836 | "version": "1.15.2", 2837 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 2838 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 2839 | }, 2840 | "form-data": { 2841 | "version": "4.0.0", 2842 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 2843 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 2844 | "requires": { 2845 | "asynckit": "^0.4.0", 2846 | "combined-stream": "^1.0.8", 2847 | "mime-types": "^2.1.12" 2848 | } 2849 | }, 2850 | "function-bind": { 2851 | "version": "1.1.1", 2852 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 2853 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 2854 | }, 2855 | "get-intrinsic": { 2856 | "version": "1.1.3", 2857 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", 2858 | "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", 2859 | "requires": { 2860 | "function-bind": "^1.1.1", 2861 | "has": "^1.0.3", 2862 | "has-symbols": "^1.0.3" 2863 | } 2864 | }, 2865 | "has": { 2866 | "version": "1.0.3", 2867 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 2868 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 2869 | "requires": { 2870 | "function-bind": "^1.1.1" 2871 | } 2872 | }, 2873 | "has-symbols": { 2874 | "version": "1.0.3", 2875 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 2876 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 2877 | }, 2878 | "https-proxy-agent": { 2879 | "version": "5.0.1", 2880 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 2881 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 2882 | "requires": { 2883 | "agent-base": "6", 2884 | "debug": "4" 2885 | } 2886 | }, 2887 | "json2csv": { 2888 | "version": "5.0.7", 2889 | "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz", 2890 | "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==", 2891 | "requires": { 2892 | "commander": "^6.1.0", 2893 | "jsonparse": "^1.3.1", 2894 | "lodash.get": "^4.4.2" 2895 | } 2896 | }, 2897 | "jsonparse": { 2898 | "version": "1.3.1", 2899 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 2900 | "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==" 2901 | }, 2902 | "jsonwebtoken": { 2903 | "version": "8.5.1", 2904 | "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", 2905 | "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", 2906 | "requires": { 2907 | "jws": "^3.2.2", 2908 | "lodash.includes": "^4.3.0", 2909 | "lodash.isboolean": "^3.0.3", 2910 | "lodash.isinteger": "^4.0.4", 2911 | "lodash.isnumber": "^3.0.3", 2912 | "lodash.isplainobject": "^4.0.6", 2913 | "lodash.isstring": "^4.0.1", 2914 | "lodash.once": "^4.0.0", 2915 | "ms": "^2.1.1", 2916 | "semver": "^5.6.0" 2917 | } 2918 | }, 2919 | "jwa": { 2920 | "version": "1.4.1", 2921 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", 2922 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", 2923 | "requires": { 2924 | "buffer-equal-constant-time": "1.0.1", 2925 | "ecdsa-sig-formatter": "1.0.11", 2926 | "safe-buffer": "^5.0.1" 2927 | } 2928 | }, 2929 | "jws": { 2930 | "version": "3.2.2", 2931 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", 2932 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", 2933 | "requires": { 2934 | "jwa": "^1.4.1", 2935 | "safe-buffer": "^5.0.1" 2936 | } 2937 | }, 2938 | "lodash": { 2939 | "version": "4.17.21", 2940 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2941 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" 2942 | }, 2943 | "lodash.get": { 2944 | "version": "4.4.2", 2945 | "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", 2946 | "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" 2947 | }, 2948 | "lodash.includes": { 2949 | "version": "4.3.0", 2950 | "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", 2951 | "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" 2952 | }, 2953 | "lodash.isboolean": { 2954 | "version": "3.0.3", 2955 | "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", 2956 | "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" 2957 | }, 2958 | "lodash.isinteger": { 2959 | "version": "4.0.4", 2960 | "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", 2961 | "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" 2962 | }, 2963 | "lodash.isnumber": { 2964 | "version": "3.0.3", 2965 | "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", 2966 | "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" 2967 | }, 2968 | "lodash.isplainobject": { 2969 | "version": "4.0.6", 2970 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 2971 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" 2972 | }, 2973 | "lodash.isstring": { 2974 | "version": "4.0.1", 2975 | "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 2976 | "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" 2977 | }, 2978 | "lodash.once": { 2979 | "version": "4.1.1", 2980 | "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", 2981 | "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" 2982 | }, 2983 | "mime-db": { 2984 | "version": "1.52.0", 2985 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 2986 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 2987 | }, 2988 | "mime-types": { 2989 | "version": "2.1.35", 2990 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 2991 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 2992 | "requires": { 2993 | "mime-db": "1.52.0" 2994 | } 2995 | }, 2996 | "ms": { 2997 | "version": "2.1.2", 2998 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 2999 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 3000 | }, 3001 | "object-inspect": { 3002 | "version": "1.12.2", 3003 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", 3004 | "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==" 3005 | }, 3006 | "pop-iterate": { 3007 | "version": "1.0.1", 3008 | "resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz", 3009 | "integrity": "sha512-HRCx4+KJE30JhX84wBN4+vja9bNfysxg1y28l0DuJmkoaICiv2ZSilKddbS48pq50P8d2erAhqDLbp47yv3MbQ==" 3010 | }, 3011 | "q": { 3012 | "version": "2.0.3", 3013 | "resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz", 3014 | "integrity": "sha512-gv6vLGcmAOg96/fgo3d9tvA4dJNZL3fMyBqVRrGxQ+Q/o4k9QzbJ3NQF9cOO/71wRodoXhaPgphvMFU68qVAJQ==", 3015 | "requires": { 3016 | "asap": "^2.0.0", 3017 | "pop-iterate": "^1.0.1", 3018 | "weak-map": "^1.0.5" 3019 | } 3020 | }, 3021 | "qs": { 3022 | "version": "6.11.0", 3023 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 3024 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 3025 | "requires": { 3026 | "side-channel": "^1.0.4" 3027 | } 3028 | }, 3029 | "querystringify": { 3030 | "version": "2.2.0", 3031 | "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", 3032 | "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" 3033 | }, 3034 | "requires-port": { 3035 | "version": "1.0.0", 3036 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 3037 | "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" 3038 | }, 3039 | "rootpath": { 3040 | "version": "0.1.2", 3041 | "resolved": "https://registry.npmjs.org/rootpath/-/rootpath-0.1.2.tgz", 3042 | "integrity": "sha512-R3wLbuAYejpxQjL/SjXo1Cjv4wcJECnMRT/FlcCfTwCBhaji9rWaRCoVEQ1SPiTJ4kKK+yh+bZLAV7SCafoDDw==" 3043 | }, 3044 | "safe-buffer": { 3045 | "version": "5.2.1", 3046 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 3047 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 3048 | }, 3049 | "scmp": { 3050 | "version": "2.1.0", 3051 | "resolved": "https://registry.npmjs.org/scmp/-/scmp-2.1.0.tgz", 3052 | "integrity": "sha512-o/mRQGk9Rcer/jEEw/yw4mwo3EU/NvYvp577/Btqrym9Qy5/MdWGBqipbALgd2lrdWTJ5/gqDusxfnQBxOxT2Q==" 3053 | }, 3054 | "semver": { 3055 | "version": "5.7.1", 3056 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 3057 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 3058 | }, 3059 | "side-channel": { 3060 | "version": "1.0.4", 3061 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 3062 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 3063 | "requires": { 3064 | "call-bind": "^1.0.0", 3065 | "get-intrinsic": "^1.0.2", 3066 | "object-inspect": "^1.9.0" 3067 | } 3068 | }, 3069 | "tslib": { 3070 | "version": "2.4.0", 3071 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", 3072 | "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" 3073 | }, 3074 | "twilio": { 3075 | "version": "3.82.0", 3076 | "resolved": "https://registry.npmjs.org/twilio/-/twilio-3.82.0.tgz", 3077 | "integrity": "sha512-7j21FIb0tq3udzlOitrnMaIBIMrnB0gO9sDzxHytNfZlMAZXWVIRSP3SodU9lxLTVjyZeFLfr7Qqs1Xafo36uQ==", 3078 | "requires": { 3079 | "axios": "^0.26.1", 3080 | "dayjs": "^1.8.29", 3081 | "https-proxy-agent": "^5.0.0", 3082 | "jsonwebtoken": "^8.5.1", 3083 | "lodash": "^4.17.21", 3084 | "q": "2.0.x", 3085 | "qs": "^6.9.4", 3086 | "rootpath": "^0.1.2", 3087 | "scmp": "^2.1.0", 3088 | "url-parse": "^1.5.9", 3089 | "xmlbuilder": "^13.0.2" 3090 | }, 3091 | "dependencies": { 3092 | "axios": { 3093 | "version": "0.26.1", 3094 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 3095 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 3096 | "requires": { 3097 | "follow-redirects": "^1.14.8" 3098 | } 3099 | } 3100 | } 3101 | }, 3102 | "url-parse": { 3103 | "version": "1.5.10", 3104 | "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", 3105 | "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", 3106 | "requires": { 3107 | "querystringify": "^2.1.1", 3108 | "requires-port": "^1.0.0" 3109 | } 3110 | }, 3111 | "uuid": { 3112 | "version": "8.3.2", 3113 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 3114 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 3115 | }, 3116 | "weak-map": { 3117 | "version": "1.0.8", 3118 | "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz", 3119 | "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==" 3120 | }, 3121 | "xmlbuilder": { 3122 | "version": "13.0.2", 3123 | "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-13.0.2.tgz", 3124 | "integrity": "sha512-Eux0i2QdDYKbdbA6AM6xE4m6ZTZr4G4xF9kahI2ukSEMCzwce2eX9WlTI5J3s+NU7hpasFsr8hWIONae7LluAQ==" 3125 | } 3126 | } 3127 | } 3128 | -------------------------------------------------------------------------------- /triggers-examples/functions/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "functions", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "sendOrderConfirmationText.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "@aws-sdk/client-s3": "^3.171.0", 14 | "axios": "^0.27.2", 15 | "json2csv": "^5.0.7", 16 | "twilio": "^3.82.0" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /triggers-examples/functions/passwordResetFunc.js: -------------------------------------------------------------------------------- 1 | exports = () => { 2 | // will always reset the password 3 | return { status: "success" }; 4 | }; 5 | -------------------------------------------------------------------------------- /triggers-examples/functions/scaleCluster.js: -------------------------------------------------------------------------------- 1 | // Note: You must use an HTTP client that supports HTTP digest authentication, 2 | // the authentication method used by the Atlas Admin API. 3 | // Certain JavaScript HTTP clients, like Axios, do not support digest authentication. 4 | async function scaleCluster( 5 | username, 6 | password, 7 | projectId, 8 | clusterName, 9 | clusterProvider, 10 | scaleInstanceSize 11 | ) { 12 | const headers = { 13 | "Content-Type": ["application/json"], 14 | "Accept-Encoding": ["bzip, deflate"], 15 | }; 16 | 17 | // Set the request body 18 | const body = { 19 | providerSettings: { 20 | providerName: clusterProvider, 21 | instanceSizeName: scaleInstanceSize, 22 | }, 23 | }; 24 | 25 | const arg = { 26 | scheme: "https", 27 | host: "cloud.mongodb.com", 28 | path: "api/atlas/v1.0/groups/" + projectId + "/clusters/" + clusterName, 29 | username: username, 30 | password: password, 31 | headers, 32 | // Must set `digestAuth: true` as the Atlas API uses HTTP digest authentication 33 | digestAuth: true, 34 | body: JSON.stringify(body), 35 | }; 36 | const response = await context.http.patch(arg); 37 | return EJSON.parse(response.body.text()); 38 | } 39 | 40 | exports = scaleCluster; 41 | -------------------------------------------------------------------------------- /triggers-examples/functions/scaleDownCluster.js: -------------------------------------------------------------------------------- 1 | async function scaleDownCluster() { 2 | // Get scaling information 3 | const { 4 | username, 5 | password, 6 | projectId, 7 | clusterName, 8 | clusterProvider, 9 | scaleDownInstanceSize, 10 | } = context.functions.execute("getClusterScalingInfo"); 11 | 12 | // Execute Atlas Function scaleCluster with the scaling up information 13 | const res = await context.functions.execute( 14 | "scaleCluster", 15 | username, 16 | password, 17 | projectId, 18 | clusterName, 19 | clusterProvider, 20 | scaleDownInstanceSize 21 | ); 22 | console.log(JSON.stringify(res)); 23 | } 24 | 25 | exports = scaleDownCluster; 26 | -------------------------------------------------------------------------------- /triggers-examples/functions/scaleUpCluster.js: -------------------------------------------------------------------------------- 1 | async function scaleUpCluster() { 2 | // Get scaling information 3 | const { 4 | username, 5 | password, 6 | projectId, 7 | clusterName, 8 | clusterProvider, 9 | scaleUpInstanceSize, 10 | } = context.functions.execute("getClusterScalingInfo"); 11 | 12 | // Execute Atlas Function scaleCluster with the scaling up information 13 | const res = await context.functions.execute( 14 | "scaleCluster", 15 | username, 16 | password, 17 | projectId, 18 | clusterName, 19 | clusterProvider, 20 | scaleUpInstanceSize 21 | ); 22 | console.log(JSON.stringify(res)); 23 | } 24 | 25 | exports = scaleUpCluster; 26 | -------------------------------------------------------------------------------- /triggers-examples/functions/sendOrderConfirmationText.js: -------------------------------------------------------------------------------- 1 | async function sendOrderConfirmationText({ fullDocument }) { 2 | const accountSid = context.environment.values["TWILIO_ACCOUNT_SID"]; 3 | const authToken = context.values.get("TWILIO_AUTH_TOKEN"); 4 | const fromNumber = context.environment.values["TWILIO_FROM_NUMBER"]; 5 | 6 | const { confirmationNumber, _id, orderItemName } = fullDocument; 7 | 8 | const twilioClient = require("twilio")(accountSid, authToken); 9 | await twilioClient.messages.create({ 10 | from: fromNumber, 11 | to: confirmationNumber, 12 | body: `Thank you for purchasing ${orderItemName}!\n\nYour order ID is: ${_id}`, 13 | }); 14 | } 15 | exports = sendOrderConfirmationText; 16 | -------------------------------------------------------------------------------- /triggers-examples/functions/updateCustomUserDataOnLogin.js: -------------------------------------------------------------------------------- 1 | async function createCustomUserDataOnSignUp(authEvent) { 2 | const { 3 | user: { id }, 4 | } = authEvent; 5 | 6 | const customUserData = context.services 7 | .get("mongodb-atlas") 8 | .db("store") 9 | .collection("userData"); 10 | const query = { _id: id }; 11 | const update = { 12 | $set: { 13 | lastLogIn: new Date(), 14 | }, 15 | }; 16 | const options = { upsert: true }; 17 | await customUserData.updateOne(query, update, options); 18 | } 19 | 20 | exports = createCustomUserDataOnSignUp; 21 | -------------------------------------------------------------------------------- /triggers-examples/graphql/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "use_natural_pluralization": true 3 | } 4 | -------------------------------------------------------------------------------- /triggers-examples/http_endpoints/config.json: -------------------------------------------------------------------------------- 1 | [] 2 | -------------------------------------------------------------------------------- /triggers-examples/jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | setupFiles: ["dotenv/config"], 3 | }; 4 | -------------------------------------------------------------------------------- /triggers-examples/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "app-services-examples-app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "scripts": { 6 | "test": "jest --forceExit", 7 | "deploy": "node ./scripts/deployWithSecrets.js", 8 | "deploy:app": "node ./scripts/deploy.js", 9 | "deploy:watch": "nodemon ./scripts/deployWithSecrets.js", 10 | "deploy:secrets": "node ./scripts/publishSecrets.js" 11 | }, 12 | "keywords": [], 13 | "author": "", 14 | "license": "ISC", 15 | "devDependencies": { 16 | "@aws-sdk/client-s3": "^3.178.0", 17 | "@faker-js/faker": "^7.5.0", 18 | "axios": "^0.27.2", 19 | "bson": "^4.7.0", 20 | "dotenv": "^16.0.2", 21 | "eslint": "^8.23.1", 22 | "eslint-plugin-jest": "^27.0.4", 23 | "jest": "^29.0.3", 24 | "mongodb": "^4.10.0", 25 | "mongodb-realm-cli": "^2.6.0", 26 | "nodemon": "^2.0.20", 27 | "realm": "^11.0.0" 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /triggers-examples/realm_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "config_version": 20210101, 3 | "app_id": "app_services_examples-gvlds", 4 | "name": "app_services_examples", 5 | "location": "US-VA", 6 | "deployment_model": "GLOBAL" 7 | } 8 | -------------------------------------------------------------------------------- /triggers-examples/scripts/deploy.js: -------------------------------------------------------------------------------- 1 | const { execWithHandler } = require("./utils"); 2 | require("dotenv").config(); 3 | 4 | const realmCliBin = "node_modules/.bin/realm-cli"; 5 | 6 | async function run() { 7 | // log user in if running in CI 8 | const { CI, PUBLIC_API_KEY, PRIVATE_API_KEY } = process.env; 9 | if (CI) { 10 | const loginCommand = `${realmCliBin} login --api-key ${PUBLIC_API_KEY} --private-api-key ${PRIVATE_API_KEY}`; 11 | await execWithHandler(loginCommand); 12 | } 13 | 14 | let command = `${realmCliBin} push --include-package-json --yes`; 15 | const { APP_ID } = process.env; 16 | if (APP_ID) { 17 | command += ` --remote ${APP_ID}`; 18 | } 19 | 20 | const { stdout, stderr } = await execWithHandler(command); 21 | if (stderr) { 22 | throw new Error(stderr); 23 | } 24 | console.log(stdout); 25 | } 26 | 27 | module.exports = run(); 28 | -------------------------------------------------------------------------------- /triggers-examples/scripts/deployWithSecrets.js: -------------------------------------------------------------------------------- 1 | require("./publishSecrets").then(() => require("./deploy")); 2 | -------------------------------------------------------------------------------- /triggers-examples/scripts/publishSecrets.js: -------------------------------------------------------------------------------- 1 | const axios = require("axios"); 2 | const { getAuthTokens } = require("./utils"); 3 | require("dotenv").config(); 4 | 5 | async function listSecrets(groupId, appId, accessToken) { 6 | const endpoint = `https://realm.mongodb.com/api/admin/v3.0/groups/${groupId}/apps/${appId}/secrets`; 7 | const { data: res } = await axios.get(endpoint, { 8 | headers: { 9 | Authorization: `Bearer ${accessToken}`, 10 | }, 11 | }); 12 | return res; 13 | } 14 | 15 | async function createSecret( 16 | groupId, 17 | appId, 18 | accessToken, 19 | secretName, 20 | secretValue 21 | ) { 22 | const endpoint = `https://realm.mongodb.com/api/admin/v3.0/groups/${groupId}/apps/${appId}/secrets`; 23 | const data = { name: secretName, value: secretValue }; 24 | const { data: res } = await axios.post(endpoint, data, { 25 | headers: { 26 | Authorization: `Bearer ${accessToken}`, 27 | }, 28 | }); 29 | console.log("Created secret: " + secretName); 30 | return res; 31 | } 32 | 33 | async function deleteSecret(groupId, appId, accessToken, secretId) { 34 | const endpoint = `https://realm.mongodb.com/api/admin/v3.0/groups/${groupId}/apps/${appId}/secrets/${secretId}`; 35 | const { status } = await axios.delete(endpoint, { 36 | headers: { 37 | Authorization: `Bearer ${accessToken}`, 38 | }, 39 | }); 40 | if (status !== 204) { 41 | throw new Error("Could not delete secret: " + secretId); 42 | } 43 | console.log("Deleted secret: " + secretId); 44 | } 45 | 46 | async function updateSecret( 47 | groupId, 48 | appId, 49 | accessToken, 50 | secretId, 51 | secretName, 52 | secretValue 53 | ) { 54 | const endpoint = `https://realm.mongodb.com/api/admin/v3.0/groups/${groupId}/apps/${appId}/secrets/${secretId}`; 55 | const data = { name: secretName, value: secretValue }; 56 | const { data: res } = await axios.put(endpoint, data, { 57 | headers: { 58 | Authorization: `Bearer ${accessToken}`, 59 | }, 60 | }); 61 | console.log("Updated secret: " + secretName); 62 | return res; 63 | } 64 | 65 | async function run() { 66 | const { 67 | PUBLIC_API_KEY, 68 | PRIVATE_API_KEY, 69 | ADMIN_API_GROUP_ID, 70 | ADMIN_API_APP_ID, 71 | } = process.env; 72 | const { access_token } = await getAuthTokens(PUBLIC_API_KEY, PRIVATE_API_KEY); 73 | const currentSecrets = await listSecrets( 74 | ADMIN_API_GROUP_ID, 75 | ADMIN_API_APP_ID, 76 | access_token 77 | ); 78 | 79 | const secretNames = Object.keys(process.env).filter((key) => 80 | key.startsWith("APP_SECRET_") 81 | ); 82 | 83 | const oldSecrets = currentSecrets.filter(({ name }) => { 84 | if (secretNames.includes(name)) { 85 | return false; 86 | } 87 | return true; 88 | }); 89 | 90 | const secretsPromises = secretNames.map((secretName) => { 91 | const found = currentSecrets.find(({ name, _id }) => { 92 | if (name === secretName) { 93 | return updateSecret( 94 | ADMIN_API_GROUP_ID, 95 | ADMIN_API_APP_ID, 96 | access_token, 97 | _id, 98 | secretName, 99 | process.env[secretName] 100 | ); 101 | } 102 | }); 103 | return ( 104 | found || 105 | createSecret( 106 | ADMIN_API_GROUP_ID, 107 | ADMIN_API_APP_ID, 108 | access_token, 109 | secretName, 110 | process.env[secretName] 111 | ) 112 | ); 113 | }); 114 | await Promise.all(secretsPromises); 115 | const oldSecretDeletionPromises = oldSecrets.map((oldSecret) => 116 | deleteSecret( 117 | ADMIN_API_GROUP_ID, 118 | ADMIN_API_APP_ID, 119 | access_token, 120 | oldSecret._id 121 | ) 122 | ); 123 | await Promise.all(oldSecretDeletionPromises); 124 | } 125 | 126 | module.exports = run(); 127 | -------------------------------------------------------------------------------- /triggers-examples/scripts/utils.js: -------------------------------------------------------------------------------- 1 | const util = require("util"); 2 | const axios = require("axios"); 3 | const exec = util.promisify(require("child_process").exec); 4 | 5 | async function execWithHandler(command) { 6 | const { stdout, stderr } = await exec(command); 7 | if (stderr) { 8 | throw new Error(stderr); 9 | } 10 | console.log(stdout); 11 | return stdout; 12 | } 13 | 14 | async function getAuthTokens(publicApiKey, privateApiKey) { 15 | const endpoint = 16 | "https://realm.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login"; 17 | const headers = { 18 | "Content-Type": "application/json", 19 | Accept: "application/json", 20 | }; 21 | const data = { 22 | username: publicApiKey, 23 | apiKey: privateApiKey, 24 | }; 25 | 26 | const { data: res } = await axios.post(endpoint, data, { headers }); 27 | const { access_token, refresh_token } = res; 28 | return { access_token, refresh_token }; 29 | } 30 | 31 | module.exports = { execWithHandler, getAuthTokens }; 32 | -------------------------------------------------------------------------------- /triggers-examples/sync/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "development_mode_enabled": false 3 | } 4 | -------------------------------------------------------------------------------- /triggers-examples/test/integration/generateMonthlySalesReport.test.js: -------------------------------------------------------------------------------- 1 | const Realm = require("realm"); 2 | const { GetObjectCommand, DeleteObjectCommand } = require("@aws-sdk/client-s3"); 3 | const { 4 | getRealmApp, 5 | connectToMongoDbClient, 6 | sleep, 7 | initS3Client, 8 | streamToString, 9 | getLastMonthAndYear, 10 | } = require("./utils"); 11 | 12 | // The `generateMonthlySalesReport` Atlas Function can be long running. 13 | // Set Jest to not timeout until after 30 seconds. 14 | jest.setTimeout(30000); 15 | 16 | const app = getRealmApp(); 17 | const s3Client = initS3Client(); 18 | const s3BucketName = "app-services-integration-testing"; 19 | const generateReportName = (year, month) => `${year}-${month}-sales-report.csv`; 20 | const april = 3; // starting with January as 0 index 21 | const twenty22 = 2022; 22 | 23 | const { lastMonth, lastMonthYear } = getLastMonthAndYear(); 24 | 25 | const lastMonthParams = { 26 | Bucket: s3BucketName, 27 | Key: generateReportName(lastMonthYear, lastMonth), 28 | }; 29 | 30 | const april2022ReportParams = { 31 | Bucket: s3BucketName, 32 | Key: generateReportName(twenty22, april), 33 | }; 34 | 35 | let client; 36 | beforeAll(async () => { 37 | await app.logIn(Realm.Credentials.apiKey(process.env.LOCAL_TEST_KEY)); 38 | client = connectToMongoDbClient(); 39 | }); 40 | 41 | afterAll(async () => { 42 | await app.currentUser.logOut(); 43 | await client 44 | .db("store") 45 | .collection("monthlyProductSales") 46 | .deleteMany({ month: april, year: twenty22 }); 47 | await client.close(); 48 | await s3Client.send(new DeleteObjectCommand(april2022ReportParams)); 49 | await s3Client.send(new DeleteObjectCommand(lastMonthParams)); 50 | }); 51 | 52 | test("Generate monthly sales report, specifying month", async () => { 53 | const materializedSales = client 54 | .db("store") 55 | .collection("monthlyProductSales"); 56 | 57 | const materializedSales1 = { 58 | year: twenty22, 59 | month: april, 60 | productId: "Ramen", 61 | totalSalesUsd: 15, 62 | }; 63 | const materializedSales2 = { 64 | year: twenty22, 65 | month: april, 66 | productId: "Salmon skin hand roll", 67 | totalSalesUsd: 200, 68 | }; 69 | const materializedSales3 = { 70 | year: twenty22, 71 | month: april, 72 | productId: "Ceviche", 73 | totalSalesUsd: 1000, 74 | }; 75 | 76 | await materializedSales.insertMany([ 77 | materializedSales1, 78 | materializedSales2, 79 | materializedSales3, 80 | ]); 81 | sleep(500); 82 | 83 | const response = await app.currentUser.functions.generateMonthlySalesReport( 84 | april, 85 | twenty22 86 | ); 87 | const data = await s3Client.send(new GetObjectCommand(april2022ReportParams)); 88 | const report = await streamToString(data.Body); 89 | expect( 90 | report.startsWith('"_id","year","month","productId","totalSalesUsd"') 91 | ).toBe(true); 92 | expect(response.$metadata.httpStatusCode).toBe(200); 93 | }); 94 | 95 | test("Generate monthly sales report, last month (Function default)", async () => { 96 | const materializedSales = client 97 | .db("store") 98 | .collection("monthlyProductSales"); 99 | 100 | // TODO: calculate and set to last month for month/year 101 | const materializedSales1 = { 102 | year: lastMonthYear, 103 | month: lastMonth, 104 | productId: "Ramen", 105 | totalSalesUsd: 15, 106 | }; 107 | const materializedSales2 = { 108 | year: lastMonthYear, 109 | month: lastMonth, 110 | productId: "Salmon skin hand roll", 111 | totalSalesUsd: 200, 112 | }; 113 | const materializedSales3 = { 114 | year: lastMonthYear, 115 | month: lastMonth, 116 | productId: "Ceviche", 117 | totalSalesUsd: 1000, 118 | }; 119 | await materializedSales.insertMany([ 120 | materializedSales1, 121 | materializedSales2, 122 | materializedSales3, 123 | ]); 124 | sleep(500); 125 | const response = await app.currentUser.functions.generateMonthlySalesReport(); 126 | const data = await s3Client.send(new GetObjectCommand(lastMonthParams)); 127 | const report = await streamToString(data.Body); 128 | expect( 129 | report.startsWith('"_id","year","month","productId","totalSalesUsd"') 130 | ).toBe(true); 131 | expect(response.$metadata.httpStatusCode).toBe(200); 132 | }); 133 | -------------------------------------------------------------------------------- /triggers-examples/test/integration/materializeMonthlyProductSales.test.js: -------------------------------------------------------------------------------- 1 | const { connectToMongoDbClient, sleep } = require("./utils"); 2 | 3 | describe("Materialize monthly product sales", () => { 4 | let client; 5 | beforeAll(async () => { 6 | client = connectToMongoDbClient(); 7 | }); 8 | afterAll(async () => { 9 | await client.close(); 10 | }); 11 | afterEach(async () => { 12 | const storeDb = client.db("store"); 13 | await storeDb.collection("sales").deleteMany({}); 14 | await storeDb.collection("monthlyProductSales").deleteMany({}); 15 | }); 16 | test("Should materialize sales", async () => { 17 | const sales = client.db("store").collection("sales"); 18 | 19 | const productId = "pizza"; 20 | const amountUsd = 3; 21 | const timeOfSale2 = new Date(2022, 9, 15); 22 | const timeOfSale1 = new Date(2022, 9, 20); 23 | const pizzaSale1 = { productId, timeOfSale: timeOfSale1, amountUsd }; 24 | const pizzaSale2 = { productId, timeOfSale: timeOfSale2, amountUsd }; 25 | await sales.insertMany([pizzaSale1, pizzaSale2]); 26 | 27 | // Give triggers time to execute 28 | await sleep(2000); 29 | const monthlySalesMaterialized = client 30 | .db("store") 31 | .collection("monthlyProductSales"); 32 | const materializedSept22Sales = await monthlySalesMaterialized.findOne({ 33 | productId, 34 | year: 2022, 35 | month: 9, 36 | }); 37 | expect(materializedSept22Sales.totalSalesUsd).toBe(6); 38 | }); 39 | }); 40 | -------------------------------------------------------------------------------- /triggers-examples/test/integration/scaleCluster.test.js: -------------------------------------------------------------------------------- 1 | const { Credentials } = require("realm"); 2 | const { getRealmApp } = require("./utils"); 3 | const app = getRealmApp(); 4 | beforeAll(async () => { 5 | await app.logIn(Credentials.serverApiKey(process.env.LOCAL_TEST_KEY)); 6 | }); 7 | afterAll(async () => { 8 | await app.currentUser.logOut(); 9 | }); 10 | 11 | // Note: this test is skipped by default since it requires performing some 12 | // heavy database operations that you probably do not want to run every time 13 | // that you run the integration tests suite. 14 | test.skip("Scale cluster", async () => { 15 | const { 16 | PUBLIC_API_KEY: username, 17 | PRIVATE_API_KEY: password, 18 | ADMIN_API_GROUP_ID: projectId, 19 | } = process.env; 20 | const clusterName = "Cluster1"; 21 | const clusterProvider = "AWS"; 22 | const scaleInstanceSize = "M10"; 23 | 24 | const res = await app.currentUser.functions.scaleCluster( 25 | username, 26 | password, 27 | projectId, 28 | clusterName, 29 | clusterProvider, 30 | scaleInstanceSize 31 | ); 32 | console.log(Object.keys(res.providerSettings)); 33 | expect(res.providerSettings.instanceSizeName).toBe("M10"); 34 | console.log(JSON.stringify(res, null, 4)); 35 | }); 36 | -------------------------------------------------------------------------------- /triggers-examples/test/integration/sendOrderConfirmationText.test.js: -------------------------------------------------------------------------------- 1 | const { connectToMongoDbClient } = require("./utils"); 2 | 3 | describe("Order confirmation text", () => { 4 | let client; 5 | beforeAll(async () => { 6 | client = connectToMongoDbClient(); 7 | }); 8 | afterAll(async () => { 9 | await client.close(); 10 | }); 11 | test("Should send text on DB post", async () => { 12 | const orders = client.db("store").collection("orders"); 13 | 14 | const orderInfo = { 15 | confirmationNumber: "+19145895304", 16 | orderItemName: "String cheese", 17 | }; 18 | await orders.insertOne(orderInfo); 19 | // TEST REQUIRES MANUAL VALIDATION ON PHONE THAT RECEIVES THE TEXT 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /triggers-examples/test/integration/updateCustomUserDataOnLogin.test.js: -------------------------------------------------------------------------------- 1 | const Realm = require("realm"); 2 | const { faker } = require("@faker-js/faker"); 3 | const { sleep, connectToMongoDbClient, getRealmApp } = require("./utils"); 4 | 5 | require("dotenv").config(); 6 | 7 | const app = getRealmApp(); 8 | let user; 9 | const email = faker.internet.email(); 10 | const password = faker.internet.password(); 11 | beforeEach(async () => { 12 | await app.emailPasswordAuth.registerUser({ email, password }); 13 | user = await app.logIn(Realm.Credentials.emailPassword(email, password)); 14 | await user.logOut(); 15 | }); 16 | afterEach(async () => { 17 | const userId = user.id; 18 | await app.deleteUser(user); 19 | user && (await user.logOut()); 20 | await client.db("store").collection("userData").deleteOne({ _id: userId }); 21 | }); 22 | 23 | let client; 24 | beforeAll(async () => { 25 | client = connectToMongoDbClient(); 26 | }); 27 | afterAll(async () => { 28 | await client.close(); 29 | }); 30 | test("Updates custom user data on email/password log in", async () => { 31 | await app.logIn(Realm.Credentials.emailPassword(email, password)); 32 | // Give time for Trigger to execute 33 | await sleep(1000); 34 | const userData = client.db("store").collection("userData"); 35 | const customUserData = await userData.findOne({ _id: user.id }); 36 | expect(customUserData._id).toBe(user.id); 37 | expect(customUserData.lastLogIn.getTime() < Date.now()).toBe(true); 38 | }); 39 | -------------------------------------------------------------------------------- /triggers-examples/test/integration/utils.js: -------------------------------------------------------------------------------- 1 | const { MongoClient } = require("mongodb"); 2 | const Realm = require("realm"); 3 | require("dotenv").config(); 4 | 5 | function getRealmApp() { 6 | const app = new Realm.App(process.env.APP_ID); 7 | return app; 8 | } 9 | 10 | function connectToMongoDbClient() { 11 | const { DB_USER, DB_PASSWORD } = process.env; 12 | const mongoDbConnectionUri = `mongodb+srv://${DB_USER}:${DB_PASSWORD}@cluster0.bcup9.mongodb.net/?retryWrites=true&w=majority`; 13 | 14 | const client = new MongoClient(mongoDbConnectionUri); 15 | return client; 16 | } 17 | 18 | function initS3Client() { 19 | const { S3Client } = require("@aws-sdk/client-s3"); 20 | const s3 = new S3Client({ 21 | credentials: { 22 | accessKeyId: "AKIAZ6OLG2JWZRUEWQHR", 23 | secretAccessKey: process.env.APP_SECRET_S3_SECRET_KEY, 24 | }, 25 | region: "us-east-1", 26 | }); 27 | return s3; 28 | } 29 | 30 | const streamToString = (stream) => 31 | new Promise((resolve, reject) => { 32 | const chunks = []; 33 | stream.on("data", (chunk) => chunks.push(chunk)); 34 | stream.on("error", reject); 35 | stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8"))); 36 | }); 37 | 38 | function getLastMonthAndYear() { 39 | const now = new Date(); 40 | const thisMonth = now.getUTCMonth(); 41 | const thisYear = now.getUTCFullYear(); 42 | const lastMonth = thisMonth === 0 ? 11 : thisMonth - 1; 43 | const lastMonthYear = now.getUTCMonth() === 0 ? thisYear - 1 : thisYear; 44 | return { lastMonth, lastMonthYear }; 45 | } 46 | 47 | function sleep(ms) { 48 | return new Promise((resolve) => setTimeout(resolve, ms)); 49 | } 50 | 51 | module.exports = { 52 | getRealmApp, 53 | connectToMongoDbClient, 54 | initS3Client, 55 | streamToString, 56 | getLastMonthAndYear, 57 | sleep, 58 | }; 59 | -------------------------------------------------------------------------------- /triggers-examples/triggers/generatePreviousMonthSalesReport.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "generatePreviousMonthSalesReport", 3 | "type": "SCHEDULED", 4 | "config": { 5 | "schedule": "0 3 1 * *", 6 | "skip_catchup_events": false 7 | }, 8 | "disabled": false, 9 | "event_processors": { 10 | "FUNCTION": { 11 | "config": { 12 | "function_name": "generateMonthlySalesReport" 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /triggers-examples/triggers/materializeMonthlyProductSales.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "materializeMonthlyProductSales", 3 | "type": "DATABASE", 4 | "config": { 5 | "operation_types": ["INSERT"], 6 | "database": "store", 7 | "collection": "sales", 8 | "service_name": "mongodb-atlas", 9 | "match": {}, 10 | "project": {}, 11 | "full_document": true, 12 | "full_document_before_change": false, 13 | "unordered": false, 14 | "skip_catchup_events": false 15 | }, 16 | "disabled": false, 17 | "event_processors": { 18 | "FUNCTION": { 19 | "config": { 20 | "function_name": "materializeMonthlyProductSales" 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /triggers-examples/triggers/scaleDownClusterDuringNight.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scaleDownClusterDuringDay", 3 | "type": "SCHEDULED", 4 | "config": { 5 | "schedule": "0 20 * * 1-5", 6 | "skip_catchup_events": false 7 | }, 8 | "disabled": true, 9 | "event_processors": { 10 | "FUNCTION": { 11 | "config": { 12 | "function_name": "scaleDownCluster" 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /triggers-examples/triggers/scaleUpClusterDuringDay.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "scaleUpClusterDuringDay", 3 | "type": "SCHEDULED", 4 | "config": { 5 | "schedule": "0 8 * * 1-5", 6 | "skip_catchup_events": false 7 | }, 8 | "disabled": true, 9 | "event_processors": { 10 | "FUNCTION": { 11 | "config": { 12 | "function_name": "scaleUpCluster" 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /triggers-examples/triggers/sendOrderConfirmationText.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sendOrderConfirmationText", 3 | "type": "DATABASE", 4 | "config": { 5 | "operation_types": ["INSERT"], 6 | "database": "store", 7 | "collection": "orders", 8 | "service_name": "mongodb-atlas", 9 | "match": {}, 10 | "project": {}, 11 | "full_document": true, 12 | "full_document_before_change": false, 13 | "unordered": false, 14 | "skip_catchup_events": false 15 | }, 16 | "disabled": false, 17 | "event_processors": { 18 | "FUNCTION": { 19 | "config": { 20 | "function_name": "sendOrderConfirmationText" 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /triggers-examples/triggers/updateCustomUserDataOnLogin.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "updateCustomUserDataOnLogin", 3 | "type": "AUTHENTICATION", 4 | "config": { 5 | "operation_type": "LOGIN", 6 | "providers": ["local-userpass"] 7 | }, 8 | "disabled": false, 9 | "event_processors": { 10 | "FUNCTION": { 11 | "config": { 12 | "function_name": "updateCustomUserDataOnLogin" 13 | } 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /triggers-examples/values/AWS_S3_ACCESS_KEY_SECRET.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "AWS_S3_ACCESS_KEY_SECRET", 3 | "from_secret": true, 4 | "value": "APP_SECRET_S3_SECRET_KEY" 5 | } 6 | -------------------------------------------------------------------------------- /triggers-examples/values/TWILIO_AUTH_TOKEN.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TWILIO_AUTH_TOKEN", 3 | "from_secret": true, 4 | "value": "APP_SECRET_TWILIO_AUTH_TOKEN" 5 | } 6 | --------------------------------------------------------------------------------