├── .gitignore ├── README.md ├── functions ├── ask-chatgpt │ ├── index.js │ ├── package-lock.json │ └── package.json ├── marshall-unmarshall-data │ ├── index.js │ ├── package-lock.json │ └── package.json ├── send-api-request │ ├── index.js │ ├── package-lock.json │ └── package.json ├── send-email │ ├── index.js │ ├── package-lock.json │ └── package.json └── set-log-retention │ ├── index.js │ ├── package-lock.json │ └── package.json ├── layers ├── index.js ├── package-lock.json └── package.json └── template.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | node_modules/ 9 | samconfig.toml 10 | .aws-sam/ 11 | # Diagnostic reports (https://nodejs.org/api/report.html) 12 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 13 | 14 | # Runtime data 15 | pids 16 | *.pid 17 | *.seed 18 | *.pid.lock 19 | 20 | # Directory for instrumented libs generated by jscoverage/JSCover 21 | lib-cov 22 | 23 | # Coverage directory used by tools like istanbul 24 | coverage 25 | *.lcov 26 | 27 | # nyc test coverage 28 | .nyc_output 29 | 30 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 31 | .grunt 32 | 33 | # Bower dependency directory (https://bower.io/) 34 | bower_components 35 | 36 | # node-waf configuration 37 | .lock-wscript 38 | 39 | # Compiled binary addons (https://nodejs.org/api/addons.html) 40 | build/Release 41 | 42 | # Dependency directories 43 | node_modules/ 44 | jspm_packages/ 45 | 46 | # TypeScript v1 declaration files 47 | typings/ 48 | 49 | # TypeScript cache 50 | *.tsbuildinfo 51 | 52 | # Optional npm cache directory 53 | .npm 54 | 55 | # Optional eslint cache 56 | .eslintcache 57 | 58 | # Microbundle cache 59 | .rpt2_cache/ 60 | .rts2_cache_cjs/ 61 | .rts2_cache_es/ 62 | .rts2_cache_umd/ 63 | 64 | # Optional REPL history 65 | .node_repl_history 66 | 67 | # Output of 'npm pack' 68 | *.tgz 69 | 70 | # Yarn Integrity file 71 | .yarn-integrity 72 | 73 | # dotenv environment variables file 74 | .env 75 | .env.test 76 | 77 | # parcel-bundler cache (https://parceljs.org/) 78 | .cache 79 | 80 | # Next.js build output 81 | .next 82 | 83 | # Nuxt.js build / generate output 84 | .nuxt 85 | dist 86 | 87 | # Gatsby files 88 | .cache/ 89 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 90 | # https://nextjs.org/blog/next-9-1#public-directory-support 91 | # public 92 | 93 | # vuepress build output 94 | .vuepress/dist 95 | 96 | # Serverless directories 97 | .serverless/ 98 | 99 | # FuseBox cache 100 | .fusebox/ 101 | 102 | # DynamoDB Local files 103 | .dynamodb/ 104 | 105 | # TernJS port file 106 | .tern-port 107 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Serverless Toolbox 2 | 3 | If you build serverless projects as a hobby, you might find yourself rebuilding the same utility functions over and over. With serverless, this isn't a problem when it comes to cost, but it does result in some difficulty if you need to make an update to the same function you've implemented 3+ times. 4 | 5 | With the serverless toolbox, you update your utility functions in one place... here. The contained functions are triggered either by event bridge events or are consumed via solving the ARN through SSM parameters, so they are loosely coupled with your projects. Make an update once, and all your projects seamlessly incorporate the changes. 6 | 7 | ## Deployment 8 | 9 | The toolbox is deployed via a SAM template, so if you don't already have it, you will need to install the [SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html). Once installed, you can run the following commands in a terminal in the root directory. 10 | 11 | ```bash 12 | sam build --parallel 13 | sam deploy --guided 14 | ``` 15 | 16 | The `sam deploy --guided` command will walk you through a wizard, asking for deployment variables. Below is a list of deployment variables and which functions they are required for. 17 | 18 | ### Variables 19 | 20 | You are not required to put in any deployment variables. However, if you choose to omit some, certain functions **will not deploy**. 21 | 22 | |Variable|Description|Used For| 23 | |--------|-----------|--------| 24 | |SendgridApiKey| API key used for authenticating calls to SendGrid|Send Email function| 25 | |AdminEmail| The email address used to as the "From" address when sending emails|Send Email function| 26 | |MomentoApiToken| API token used for authenticating calls to Momento|Ask ChatGPT function| 27 | |OpenAIApiKey| API key used for authenticaing calls to OpenAI (ChatGPT)|Ask ChatGPT function| 28 | 29 | ## Functions 30 | 31 | ### Ask ChatGPT 32 | 33 | This function will maintain conversations with ChatGPT for you across invocations and execution environments. Conversations are identified by a `conversationKey` property that stores the chat history in a Momento cache. 34 | 35 | #### Arguments 36 | 37 | | Name | Description | Required | 38 | |-----------------|-----------------------------------------------------|----------| 39 | | query | Prompt to ask ChatGPT | Yes | 40 | | conversationKey | Specifies the conversation key for context tracking. | No | 41 | | systemContext | Indicates the perspective you want ChatGPT to answer in | No | 42 | | rememberResponse| Determines if the response should be remembered in the conversation history. | No | 43 | | trim | Controls whether trailing and leading whitespace is removed. | No | 44 | | trimFront | Controls whether leading whitespace is removed. | No | 45 | | schema | Defines the schema for ChatGPT to structure the response. | No | 46 | | outputFormat | Specifies the desired output format of the response (json or string). | No | 47 | 48 | **Example input** 49 | 50 | ```json 51 | { 52 | "conversationKey": "Example", 53 | "systemContext": "You are a travel agent with 30 years experience", 54 | "query": "What is the safest place to travel with kids?", 55 | "rememberResponse": true, 56 | "schema": { 57 | "$schema": "http://json-schema.org/draft-07/schema#", 58 | "type": "object", 59 | "properties": { 60 | "destination": { 61 | "type": "string", 62 | "description": "Location safest to travel." 63 | }, 64 | "reasoning": { 65 | "type": "string", 66 | "description": "Reason why the place is the safest." 67 | } 68 | }, 69 | "required": [ "destination", "reasoning"] 70 | } 71 | } 72 | ``` 73 | 74 | **Example output** 75 | 76 | ```json 77 | { 78 | "response": { 79 | "destination": "Iceland", 80 | "reasoning": "Known for its stunning landscapes, Iceland offers a safe environment with low crime rates, clean cities, and a focus on child-friendly activities like exploring geothermal pools, waterfalls, and natural wonders" 81 | } 82 | } 83 | ``` 84 | 85 | **How to Invoke** 86 | 87 | This Lambda function is intended to be used synchronously or as part of a workflow. With this in mind, there are no explicit triggers on it, and it must be invoked manually (meaning you need to build it into whatever you're building). 88 | 89 | The ARN is exported into an SSM parameter for convenience/loose coupling. Here is an example of a StateMachine resource in SAM that consumes the function. 90 | 91 | ```yaml 92 | MyFirstStateMachine: 93 | Type: AWS::Serverless::StateMachine 94 | Properties: 95 | Type: STANDARD 96 | DefinitionUri: workflows/my-definition.asl.json 97 | DefinitionSubstitutions: 98 | AskChatGPTFunctionArn: "{{resolve:ssm:/serverless-toolbox/ask-chatgpt}}" 99 | Policies: 100 | - Version: 2012-10-17 101 | Statement: 102 | Effect: Allow 103 | Action: lambda:InvokeFunction 104 | Resource: "{{resolve:ssm:/serverless-toolbox/ask-chatgpt}}" 105 | ``` 106 | 107 | ### Send API Request 108 | 109 | A common task in any application is to hit a 3rd party API. This function will call a web API with the provided configuration and return the body of the response. 110 | 111 | **Example Input** 112 | 113 | ```json 114 | { 115 | "secretKey": "key-from-auth-token-secret", 116 | "request": { 117 | "method": "POST", 118 | "baseUrl": "https://api.medium.com/posts", 119 | "headers": { 120 | "x-custom-header": "value" 121 | }, 122 | "body": { 123 | "title": "My title", 124 | "body_markdown": "## Hello!" 125 | } 126 | }, 127 | "auth": { 128 | "prefix": "Bearer", 129 | "location": "header", 130 | "key": "Authorization" 131 | }, 132 | "query": { 133 | "custom-value": "anything-you-want" 134 | } 135 | } 136 | ``` 137 | 138 | **Example Output** 139 | 140 | ```json 141 | { 142 | "id": "A4G7222D" 143 | } 144 | ``` 145 | 146 | **How to Invoke** 147 | 148 | This is similar to the *ask-chatgpt* function in that it was intended to be called synchronously or as part of a workflow. See the example SAM resource of how to consume this function in a state machine. 149 | 150 | ```yaml 151 | MySecondStateMachine: 152 | Type: AWS::Serverless::StateMachine 153 | Properties: 154 | Type: STANDARD 155 | DefinitionUri: workflows/my-definition.asl.json 156 | DefinitionSubstitutions: 157 | AskChatGPTFunctionArn: "{{resolve:ssm:/serverless-toolbox/send-api-request}}" 158 | Policies: 159 | - Version: 2012-10-17 160 | Statement: 161 | Effect: Allow 162 | Action: lambda:InvokeFunction 163 | Resource: "{{resolve:ssm:/serverless-toolbox/send-api-request}}" 164 | ``` 165 | 166 | ### Send Email 167 | 168 | If you wish to send an email via SendGrid, this function is ready for you. You will need to [get a SendGrid API key](https://docs.sendgrid.com/ui/account-and-settings/api-keys) and [verify your email address](https://docs.sendgrid.com/for-developers/sending-email/sender-identity). After the initial setup is done, you can send emails with a simple event publish! 169 | 170 | **How to Invoke** 171 | 172 | This function is triggered via an EventBridge rule. Please refer to the example below publishing a `Send Email` event. 173 | 174 | **Example Input** 175 | 176 | ```json 177 | { 178 | "DetailType": "Send Email", 179 | "Source": "my.app", 180 | "Detail": { 181 | "subject": "Dear reader", 182 | "to": "personToRecieveEmail@mailinator.com", 183 | "html": "

Hello!

" 184 | } 185 | } 186 | ``` 187 | If you don't wish to use an html format in your email, you can use a `text` property instead in the `Detail` object. 188 | 189 | ### Set Log Retention 190 | 191 | This is a function with an administrative purpose. As you build more and more Lambda functions, you begin to accumulate CloudWatch logs with unlimited retention. Rarely do we need Lambda logs forever, so this function is set to run every day and set any new function logs to a configurable retention period. 192 | 193 | As you build new functions, they will be picked up automatically and the retention period will be updated. If you wish to change the retention period, it is an environment variable configured in the template. 194 | 195 | **Example Input** 196 | 197 | None 198 | 199 | **How to Invoke** 200 | 201 | Triggered automatically by an EventBridge scheduled invoke every day. 202 | 203 | ### Marshall/Unmarshall Data 204 | 205 | This function is intended to be used in a Step Function workflow. When you do direct integrations with DynamoDB, the data is required to be marshalled for PUTs and is returned in a marshalled format for a GET/QUERY. This function will dynamically convert it to standard format JSON 206 | 207 | **Example Input** 208 | 209 | ```json 210 | { 211 | "marshall": true, 212 | "data": { 213 | "myValue": "test" 214 | } 215 | } 216 | ``` 217 | 218 | **Example Output** 219 | 220 | ```json 221 | { 222 | "data": { 223 | "myValue": { 224 | "S": { "test" } 225 | } 226 | } 227 | } 228 | ``` 229 | 230 | If you do not provide the `marshall` property or set it to `false`, it will default to an *unmarshall* behavior and unmarshall the value in the `data` property. 231 | 232 | **How to Invoke** 233 | 234 | You can reference the Arn of this function in an IaC template with the following: 235 | 236 | ``` 237 | {{resolve:ssm:/serverless-toolbox/marshall-unmarshall-data}} 238 | ``` 239 | -------------------------------------------------------------------------------- /functions/ask-chatgpt/index.js: -------------------------------------------------------------------------------- 1 | const OpenAI = require('openai'); 2 | const { CacheClient, CredentialProvider, Configurations, CacheListFetch } = require('@gomomento/sdk'); 3 | const shared = require('/opt/nodejs/index'); 4 | const { TopicClient } = require('@gomomento/sdk'); 5 | 6 | let cacheClient; 7 | let topicClient; 8 | let openai; 9 | 10 | const JSON_MODE_MODELS = ['gpt-4-1106-preview', 'gpt-4-vision-preview']; 11 | 12 | exports.handler = async (state) => { 13 | let messages = []; 14 | await initialize(); 15 | 16 | if (state.conversationKey) { 17 | const previousMessageResponse = await cacheClient.listFetch('chatgpt', state.conversationKey); 18 | if (previousMessageResponse instanceof CacheListFetch.Hit) { 19 | messages = previousMessageResponse.valueListString().map(m => JSON.parse(m)); 20 | } 21 | } 22 | 23 | 24 | if (state.systemContext && !messages.some(m => m.role == 'system')) { 25 | messages.push({ role: 'system', content: state.systemContext }); 26 | } 27 | 28 | let query = state.query; 29 | const model = state.model?.toLowerCase() ?? 'gpt-4-0613'; 30 | if (JSON_MODE_MODELS.includes(model) && !state.query.toLowerCase().includes('json')) { 31 | query += " Structure your answer in JSON format."; 32 | } 33 | 34 | const newMessage = { role: 'user', content: query }; 35 | messages.push(newMessage); 36 | 37 | 38 | try { 39 | const params = { 40 | model, 41 | temperature: .7, 42 | messages, 43 | ...state.schema && { 44 | functions: [{ 45 | name: 'user-schema', 46 | parameters: state.schema 47 | }] 48 | }, 49 | ...(state.outputFormat?.toLowerCase() == 'json' && 50 | JSON_MODE_MODELS.includes(model)) && { 51 | response_format: { type: 'json_object' }, 52 | } 53 | }; 54 | 55 | let message; 56 | if (state.streamResponse) { 57 | message = await handleStreamResponse(params, state.conversationKey); 58 | } else { 59 | message = await handleRequestResponse(params); 60 | } 61 | 62 | 63 | if (state.conversationKey && state.rememberResponse) { 64 | await cacheClient.listConcatenateBack('chatgpt', state.conversationKey, [JSON.stringify(newMessage), JSON.stringify(message)]); 65 | } 66 | 67 | let response = message.content; 68 | if (state.schema) { 69 | try { 70 | response = JSON.parse(message.function_call.arguments); 71 | return { response }; 72 | } catch (err) { 73 | throwCustomError('ResponseFormatError', err.message); 74 | } 75 | } 76 | 77 | if (state.trim) { 78 | const pieces = response.split('\n\n'); 79 | 80 | if (pieces.length > 2) { 81 | const removedText = pieces.slice(1, pieces.length - 2); 82 | response = removedText.join('\n\n'); 83 | if (!response) { 84 | response = pieces.join('\n\n'); 85 | } 86 | } 87 | } else if (state.trimFront) { 88 | const pieces = response.split('\n\n'); 89 | if (pieces.length > 2) { 90 | const removedText = pieces.slice(1); 91 | response = removedText.join('\n\n'); 92 | } 93 | } 94 | 95 | switch (state.outputFormat?.toLowerCase()) { 96 | case 'json': 97 | response = JSON.parse(response); 98 | break; 99 | case 'number': 100 | response = Number(response); 101 | break; 102 | default: 103 | response = response.toString(); 104 | break; 105 | } 106 | 107 | 108 | return { response }; 109 | } catch (err) { 110 | if (err.response) { 111 | console.error({ status: err.response.status, data: err.response.data }); 112 | if (err.response.status == 429) { 113 | throwCustomError('RateLimitExceeded', err.message); 114 | } 115 | } else { 116 | console.error(err.message); 117 | } 118 | 119 | throw err; 120 | } 121 | }; 122 | 123 | const handleRequestResponse = async (params) => { 124 | const result = await openai.chat.completions.create(params); 125 | 126 | return result.choices[0].message; 127 | }; 128 | 129 | const handleStreamResponse = async (params, topicName) => { 130 | params.stream = true; 131 | const stream = await openai.beta.chat.completions.stream(params); 132 | 133 | for await (const chunk of stream) { 134 | const message = chunk.choices[0]?.delta?.content; 135 | if (message) { 136 | await topicClient.publish('chatgpt', topicName, message); 137 | } 138 | } 139 | 140 | const completion = await stream.finalChatCompletion(); 141 | return completion.choices[0].message; 142 | }; 143 | 144 | const setupOpenAI = async () => { 145 | if (!openai) { 146 | const authToken = await shared.getSecret('openai'); 147 | openai = new OpenAI({ apiKey: authToken }); 148 | } 149 | }; 150 | 151 | const initialize = async () => { 152 | await setupCacheClient(); 153 | await setupOpenAI(); 154 | }; 155 | 156 | const setupCacheClient = async () => { 157 | if (!cacheClient || !topicClient) { 158 | const apiKey = await shared.getSecret('momento'); 159 | 160 | cacheClient = new CacheClient({ 161 | configuration: Configurations.Lambda.latest(), 162 | credentialProvider: CredentialProvider.fromString({ apiKey }), 163 | defaultTtlSeconds: Number(process.env.CACHE_TTL) 164 | }); 165 | 166 | topicClient = new TopicClient({ 167 | configuration: Configurations.Lambda.latest(), 168 | credentialProvider: CredentialProvider.fromString({ apiKey }) 169 | }); 170 | } 171 | }; 172 | 173 | const throwCustomError = (type, message) => { 174 | function CustomError(message) { 175 | this.name = type; 176 | this.message = message; 177 | } 178 | 179 | CustomError.prototype = new Error(); 180 | console.log(`Throwing ${type}`); 181 | throw new CustomError(message); 182 | }; 183 | -------------------------------------------------------------------------------- /functions/ask-chatgpt/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ask-chatgpt", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ask-chatgpt", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@gomomento/sdk": "^1.51.1" 13 | }, 14 | "devDependencies": { 15 | "openai": "^4.19.1" 16 | } 17 | }, 18 | "node_modules/@gomomento/generated-types": { 19 | "version": "0.96.0", 20 | "resolved": "https://registry.npmjs.org/@gomomento/generated-types/-/generated-types-0.96.0.tgz", 21 | "integrity": "sha512-o4bTdJ/PIkvEMZU4IHcrOGyiAxAnrkHZKFlIDmcmEki2zIvpj7Pqkp+7TqQ6BIH6gVo+IOmTecP56HADVUdM9g==", 22 | "dependencies": { 23 | "@grpc/grpc-js": "1.9.0", 24 | "google-protobuf": "3.21.2", 25 | "grpc-tools": "^1.12.4", 26 | "protoc-gen-ts": "^0.8.6" 27 | } 28 | }, 29 | "node_modules/@gomomento/sdk": { 30 | "version": "1.51.1", 31 | "resolved": "https://registry.npmjs.org/@gomomento/sdk/-/sdk-1.51.1.tgz", 32 | "integrity": "sha512-VldUEt9c2LZahGvqSlebkxHnVqFkv+cjk7d6riOqD26NnwyCBhjZ5wH92OWvEfssQKpGTz5CWkRqZpHC0q0UZA==", 33 | "dependencies": { 34 | "@gomomento/generated-types": "0.96.0", 35 | "@gomomento/sdk-core": "1.51.1", 36 | "@grpc/grpc-js": "1.9.0", 37 | "@types/google-protobuf": "3.15.10", 38 | "google-protobuf": "3.21.2", 39 | "jwt-decode": "3.1.2" 40 | }, 41 | "engines": { 42 | "node": ">= 14" 43 | } 44 | }, 45 | "node_modules/@gomomento/sdk-core": { 46 | "version": "1.51.1", 47 | "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.51.1.tgz", 48 | "integrity": "sha512-u6x5Gpi+sVYNcyRpEfoSJJ3YTTyLG6889QkPo3Z/e6hjNQD51h1Xf52eG1P9numzWWixlStEXIJp3H4hqsZ2vA==", 49 | "dependencies": { 50 | "buffer": "6.0.3", 51 | "jwt-decode": "3.1.2" 52 | }, 53 | "engines": { 54 | "node": ">= 14" 55 | } 56 | }, 57 | "node_modules/@grpc/grpc-js": { 58 | "version": "1.9.0", 59 | "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.0.tgz", 60 | "integrity": "sha512-H8+iZh+kCE6VR/Krj6W28Y/ZlxoZ1fOzsNt77nrdE3knkbSelW1Uus192xOFCxHyeszLj8i4APQkSIXjAoOxXg==", 61 | "dependencies": { 62 | "@grpc/proto-loader": "^0.7.0", 63 | "@types/node": ">=12.12.47" 64 | }, 65 | "engines": { 66 | "node": "^8.13.0 || >=10.10.0" 67 | } 68 | }, 69 | "node_modules/@grpc/proto-loader": { 70 | "version": "0.7.10", 71 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", 72 | "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", 73 | "dependencies": { 74 | "lodash.camelcase": "^4.3.0", 75 | "long": "^5.0.0", 76 | "protobufjs": "^7.2.4", 77 | "yargs": "^17.7.2" 78 | }, 79 | "bin": { 80 | "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" 81 | }, 82 | "engines": { 83 | "node": ">=6" 84 | } 85 | }, 86 | "node_modules/@mapbox/node-pre-gyp": { 87 | "version": "1.0.11", 88 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", 89 | "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", 90 | "dependencies": { 91 | "detect-libc": "^2.0.0", 92 | "https-proxy-agent": "^5.0.0", 93 | "make-dir": "^3.1.0", 94 | "node-fetch": "^2.6.7", 95 | "nopt": "^5.0.0", 96 | "npmlog": "^5.0.1", 97 | "rimraf": "^3.0.2", 98 | "semver": "^7.3.5", 99 | "tar": "^6.1.11" 100 | }, 101 | "bin": { 102 | "node-pre-gyp": "bin/node-pre-gyp" 103 | } 104 | }, 105 | "node_modules/@protobufjs/aspromise": { 106 | "version": "1.1.2", 107 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 108 | "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" 109 | }, 110 | "node_modules/@protobufjs/base64": { 111 | "version": "1.1.2", 112 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 113 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 114 | }, 115 | "node_modules/@protobufjs/codegen": { 116 | "version": "2.0.4", 117 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 118 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 119 | }, 120 | "node_modules/@protobufjs/eventemitter": { 121 | "version": "1.1.0", 122 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 123 | "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" 124 | }, 125 | "node_modules/@protobufjs/fetch": { 126 | "version": "1.1.0", 127 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 128 | "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", 129 | "dependencies": { 130 | "@protobufjs/aspromise": "^1.1.1", 131 | "@protobufjs/inquire": "^1.1.0" 132 | } 133 | }, 134 | "node_modules/@protobufjs/float": { 135 | "version": "1.0.2", 136 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 137 | "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" 138 | }, 139 | "node_modules/@protobufjs/inquire": { 140 | "version": "1.1.0", 141 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 142 | "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" 143 | }, 144 | "node_modules/@protobufjs/path": { 145 | "version": "1.1.2", 146 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 147 | "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" 148 | }, 149 | "node_modules/@protobufjs/pool": { 150 | "version": "1.1.0", 151 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 152 | "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" 153 | }, 154 | "node_modules/@protobufjs/utf8": { 155 | "version": "1.1.0", 156 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 157 | "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" 158 | }, 159 | "node_modules/@types/google-protobuf": { 160 | "version": "3.15.10", 161 | "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.10.tgz", 162 | "integrity": "sha512-uiyKJCa8hbmPE4yxwjbkMOALaBAiOVcatW/yEGbjTqwAh4kzNgQPWRlJMNPXpB5CPUM66xsYufiSX9WKHZCE9g==" 163 | }, 164 | "node_modules/@types/node": { 165 | "version": "20.3.1", 166 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", 167 | "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==" 168 | }, 169 | "node_modules/@types/node-fetch": { 170 | "version": "2.6.9", 171 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", 172 | "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", 173 | "dev": true, 174 | "dependencies": { 175 | "@types/node": "*", 176 | "form-data": "^4.0.0" 177 | } 178 | }, 179 | "node_modules/abbrev": { 180 | "version": "1.1.1", 181 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 182 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 183 | }, 184 | "node_modules/abort-controller": { 185 | "version": "3.0.0", 186 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 187 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 188 | "dev": true, 189 | "dependencies": { 190 | "event-target-shim": "^5.0.0" 191 | }, 192 | "engines": { 193 | "node": ">=6.5" 194 | } 195 | }, 196 | "node_modules/agent-base": { 197 | "version": "6.0.2", 198 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 199 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 200 | "dependencies": { 201 | "debug": "4" 202 | }, 203 | "engines": { 204 | "node": ">= 6.0.0" 205 | } 206 | }, 207 | "node_modules/agentkeepalive": { 208 | "version": "4.5.0", 209 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", 210 | "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", 211 | "dev": true, 212 | "dependencies": { 213 | "humanize-ms": "^1.2.1" 214 | }, 215 | "engines": { 216 | "node": ">= 8.0.0" 217 | } 218 | }, 219 | "node_modules/ansi-regex": { 220 | "version": "5.0.1", 221 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 222 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 223 | "engines": { 224 | "node": ">=8" 225 | } 226 | }, 227 | "node_modules/ansi-styles": { 228 | "version": "4.3.0", 229 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 230 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 231 | "dependencies": { 232 | "color-convert": "^2.0.1" 233 | }, 234 | "engines": { 235 | "node": ">=8" 236 | }, 237 | "funding": { 238 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 239 | } 240 | }, 241 | "node_modules/aproba": { 242 | "version": "2.0.0", 243 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 244 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 245 | }, 246 | "node_modules/are-we-there-yet": { 247 | "version": "2.0.0", 248 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 249 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 250 | "dependencies": { 251 | "delegates": "^1.0.0", 252 | "readable-stream": "^3.6.0" 253 | }, 254 | "engines": { 255 | "node": ">=10" 256 | } 257 | }, 258 | "node_modules/asynckit": { 259 | "version": "0.4.0", 260 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 261 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 262 | "dev": true 263 | }, 264 | "node_modules/balanced-match": { 265 | "version": "1.0.2", 266 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 267 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 268 | }, 269 | "node_modules/base-64": { 270 | "version": "0.1.0", 271 | "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", 272 | "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==", 273 | "dev": true 274 | }, 275 | "node_modules/base64-js": { 276 | "version": "1.5.1", 277 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 278 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", 279 | "funding": [ 280 | { 281 | "type": "github", 282 | "url": "https://github.com/sponsors/feross" 283 | }, 284 | { 285 | "type": "patreon", 286 | "url": "https://www.patreon.com/feross" 287 | }, 288 | { 289 | "type": "consulting", 290 | "url": "https://feross.org/support" 291 | } 292 | ] 293 | }, 294 | "node_modules/brace-expansion": { 295 | "version": "1.1.11", 296 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 297 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 298 | "dependencies": { 299 | "balanced-match": "^1.0.0", 300 | "concat-map": "0.0.1" 301 | } 302 | }, 303 | "node_modules/buffer": { 304 | "version": "6.0.3", 305 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 306 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 307 | "funding": [ 308 | { 309 | "type": "github", 310 | "url": "https://github.com/sponsors/feross" 311 | }, 312 | { 313 | "type": "patreon", 314 | "url": "https://www.patreon.com/feross" 315 | }, 316 | { 317 | "type": "consulting", 318 | "url": "https://feross.org/support" 319 | } 320 | ], 321 | "dependencies": { 322 | "base64-js": "^1.3.1", 323 | "ieee754": "^1.2.1" 324 | } 325 | }, 326 | "node_modules/charenc": { 327 | "version": "0.0.2", 328 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 329 | "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", 330 | "dev": true, 331 | "engines": { 332 | "node": "*" 333 | } 334 | }, 335 | "node_modules/chownr": { 336 | "version": "2.0.0", 337 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 338 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 339 | "engines": { 340 | "node": ">=10" 341 | } 342 | }, 343 | "node_modules/cliui": { 344 | "version": "8.0.1", 345 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 346 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 347 | "dependencies": { 348 | "string-width": "^4.2.0", 349 | "strip-ansi": "^6.0.1", 350 | "wrap-ansi": "^7.0.0" 351 | }, 352 | "engines": { 353 | "node": ">=12" 354 | } 355 | }, 356 | "node_modules/color-convert": { 357 | "version": "2.0.1", 358 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 359 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 360 | "dependencies": { 361 | "color-name": "~1.1.4" 362 | }, 363 | "engines": { 364 | "node": ">=7.0.0" 365 | } 366 | }, 367 | "node_modules/color-name": { 368 | "version": "1.1.4", 369 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 370 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 371 | }, 372 | "node_modules/color-support": { 373 | "version": "1.1.3", 374 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 375 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", 376 | "bin": { 377 | "color-support": "bin.js" 378 | } 379 | }, 380 | "node_modules/combined-stream": { 381 | "version": "1.0.8", 382 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 383 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 384 | "dev": true, 385 | "dependencies": { 386 | "delayed-stream": "~1.0.0" 387 | }, 388 | "engines": { 389 | "node": ">= 0.8" 390 | } 391 | }, 392 | "node_modules/concat-map": { 393 | "version": "0.0.1", 394 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 395 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 396 | }, 397 | "node_modules/console-control-strings": { 398 | "version": "1.1.0", 399 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 400 | "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" 401 | }, 402 | "node_modules/crypt": { 403 | "version": "0.0.2", 404 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 405 | "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", 406 | "dev": true, 407 | "engines": { 408 | "node": "*" 409 | } 410 | }, 411 | "node_modules/debug": { 412 | "version": "4.3.4", 413 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 414 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 415 | "dependencies": { 416 | "ms": "2.1.2" 417 | }, 418 | "engines": { 419 | "node": ">=6.0" 420 | }, 421 | "peerDependenciesMeta": { 422 | "supports-color": { 423 | "optional": true 424 | } 425 | } 426 | }, 427 | "node_modules/debug/node_modules/ms": { 428 | "version": "2.1.2", 429 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 430 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 431 | }, 432 | "node_modules/delayed-stream": { 433 | "version": "1.0.0", 434 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 435 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 436 | "dev": true, 437 | "engines": { 438 | "node": ">=0.4.0" 439 | } 440 | }, 441 | "node_modules/delegates": { 442 | "version": "1.0.0", 443 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 444 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" 445 | }, 446 | "node_modules/detect-libc": { 447 | "version": "2.0.2", 448 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", 449 | "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", 450 | "engines": { 451 | "node": ">=8" 452 | } 453 | }, 454 | "node_modules/digest-fetch": { 455 | "version": "1.3.0", 456 | "resolved": "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz", 457 | "integrity": "sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==", 458 | "dev": true, 459 | "dependencies": { 460 | "base-64": "^0.1.0", 461 | "md5": "^2.3.0" 462 | } 463 | }, 464 | "node_modules/emoji-regex": { 465 | "version": "8.0.0", 466 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 467 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 468 | }, 469 | "node_modules/escalade": { 470 | "version": "3.1.1", 471 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 472 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 473 | "engines": { 474 | "node": ">=6" 475 | } 476 | }, 477 | "node_modules/event-target-shim": { 478 | "version": "5.0.1", 479 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 480 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 481 | "dev": true, 482 | "engines": { 483 | "node": ">=6" 484 | } 485 | }, 486 | "node_modules/form-data": { 487 | "version": "4.0.0", 488 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 489 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 490 | "dev": true, 491 | "dependencies": { 492 | "asynckit": "^0.4.0", 493 | "combined-stream": "^1.0.8", 494 | "mime-types": "^2.1.12" 495 | }, 496 | "engines": { 497 | "node": ">= 6" 498 | } 499 | }, 500 | "node_modules/form-data-encoder": { 501 | "version": "1.7.2", 502 | "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", 503 | "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", 504 | "dev": true 505 | }, 506 | "node_modules/formdata-node": { 507 | "version": "4.4.1", 508 | "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", 509 | "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", 510 | "dev": true, 511 | "dependencies": { 512 | "node-domexception": "1.0.0", 513 | "web-streams-polyfill": "4.0.0-beta.3" 514 | }, 515 | "engines": { 516 | "node": ">= 12.20" 517 | } 518 | }, 519 | "node_modules/formdata-node/node_modules/web-streams-polyfill": { 520 | "version": "4.0.0-beta.3", 521 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", 522 | "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", 523 | "dev": true, 524 | "engines": { 525 | "node": ">= 14" 526 | } 527 | }, 528 | "node_modules/fs-minipass": { 529 | "version": "2.1.0", 530 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 531 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 532 | "dependencies": { 533 | "minipass": "^3.0.0" 534 | }, 535 | "engines": { 536 | "node": ">= 8" 537 | } 538 | }, 539 | "node_modules/fs-minipass/node_modules/minipass": { 540 | "version": "3.3.6", 541 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 542 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 543 | "dependencies": { 544 | "yallist": "^4.0.0" 545 | }, 546 | "engines": { 547 | "node": ">=8" 548 | } 549 | }, 550 | "node_modules/fs.realpath": { 551 | "version": "1.0.0", 552 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 553 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 554 | }, 555 | "node_modules/gauge": { 556 | "version": "3.0.2", 557 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 558 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 559 | "dependencies": { 560 | "aproba": "^1.0.3 || ^2.0.0", 561 | "color-support": "^1.1.2", 562 | "console-control-strings": "^1.0.0", 563 | "has-unicode": "^2.0.1", 564 | "object-assign": "^4.1.1", 565 | "signal-exit": "^3.0.0", 566 | "string-width": "^4.2.3", 567 | "strip-ansi": "^6.0.1", 568 | "wide-align": "^1.1.2" 569 | }, 570 | "engines": { 571 | "node": ">=10" 572 | } 573 | }, 574 | "node_modules/get-caller-file": { 575 | "version": "2.0.5", 576 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 577 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 578 | "engines": { 579 | "node": "6.* || 8.* || >= 10.*" 580 | } 581 | }, 582 | "node_modules/glob": { 583 | "version": "7.2.3", 584 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 585 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 586 | "dependencies": { 587 | "fs.realpath": "^1.0.0", 588 | "inflight": "^1.0.4", 589 | "inherits": "2", 590 | "minimatch": "^3.1.1", 591 | "once": "^1.3.0", 592 | "path-is-absolute": "^1.0.0" 593 | }, 594 | "engines": { 595 | "node": "*" 596 | }, 597 | "funding": { 598 | "url": "https://github.com/sponsors/isaacs" 599 | } 600 | }, 601 | "node_modules/google-protobuf": { 602 | "version": "3.21.2", 603 | "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", 604 | "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" 605 | }, 606 | "node_modules/grpc-tools": { 607 | "version": "1.12.4", 608 | "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", 609 | "integrity": "sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==", 610 | "hasInstallScript": true, 611 | "dependencies": { 612 | "@mapbox/node-pre-gyp": "^1.0.5" 613 | }, 614 | "bin": { 615 | "grpc_tools_node_protoc": "bin/protoc.js", 616 | "grpc_tools_node_protoc_plugin": "bin/protoc_plugin.js" 617 | } 618 | }, 619 | "node_modules/has-unicode": { 620 | "version": "2.0.1", 621 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 622 | "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" 623 | }, 624 | "node_modules/https-proxy-agent": { 625 | "version": "5.0.1", 626 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 627 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 628 | "dependencies": { 629 | "agent-base": "6", 630 | "debug": "4" 631 | }, 632 | "engines": { 633 | "node": ">= 6" 634 | } 635 | }, 636 | "node_modules/humanize-ms": { 637 | "version": "1.2.1", 638 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 639 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 640 | "dev": true, 641 | "dependencies": { 642 | "ms": "^2.0.0" 643 | } 644 | }, 645 | "node_modules/ieee754": { 646 | "version": "1.2.1", 647 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 648 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", 649 | "funding": [ 650 | { 651 | "type": "github", 652 | "url": "https://github.com/sponsors/feross" 653 | }, 654 | { 655 | "type": "patreon", 656 | "url": "https://www.patreon.com/feross" 657 | }, 658 | { 659 | "type": "consulting", 660 | "url": "https://feross.org/support" 661 | } 662 | ] 663 | }, 664 | "node_modules/inflight": { 665 | "version": "1.0.6", 666 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 667 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 668 | "dependencies": { 669 | "once": "^1.3.0", 670 | "wrappy": "1" 671 | } 672 | }, 673 | "node_modules/inherits": { 674 | "version": "2.0.4", 675 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 676 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 677 | }, 678 | "node_modules/is-buffer": { 679 | "version": "1.1.6", 680 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 681 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 682 | "dev": true 683 | }, 684 | "node_modules/is-fullwidth-code-point": { 685 | "version": "3.0.0", 686 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 687 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 688 | "engines": { 689 | "node": ">=8" 690 | } 691 | }, 692 | "node_modules/jwt-decode": { 693 | "version": "3.1.2", 694 | "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", 695 | "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" 696 | }, 697 | "node_modules/lodash.camelcase": { 698 | "version": "4.3.0", 699 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 700 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" 701 | }, 702 | "node_modules/long": { 703 | "version": "5.2.3", 704 | "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", 705 | "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" 706 | }, 707 | "node_modules/lru-cache": { 708 | "version": "6.0.0", 709 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 710 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 711 | "dependencies": { 712 | "yallist": "^4.0.0" 713 | }, 714 | "engines": { 715 | "node": ">=10" 716 | } 717 | }, 718 | "node_modules/make-dir": { 719 | "version": "3.1.0", 720 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 721 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 722 | "dependencies": { 723 | "semver": "^6.0.0" 724 | }, 725 | "engines": { 726 | "node": ">=8" 727 | }, 728 | "funding": { 729 | "url": "https://github.com/sponsors/sindresorhus" 730 | } 731 | }, 732 | "node_modules/make-dir/node_modules/semver": { 733 | "version": "6.3.1", 734 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 735 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", 736 | "bin": { 737 | "semver": "bin/semver.js" 738 | } 739 | }, 740 | "node_modules/md5": { 741 | "version": "2.3.0", 742 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", 743 | "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", 744 | "dev": true, 745 | "dependencies": { 746 | "charenc": "0.0.2", 747 | "crypt": "0.0.2", 748 | "is-buffer": "~1.1.6" 749 | } 750 | }, 751 | "node_modules/mime-db": { 752 | "version": "1.52.0", 753 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 754 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 755 | "dev": true, 756 | "engines": { 757 | "node": ">= 0.6" 758 | } 759 | }, 760 | "node_modules/mime-types": { 761 | "version": "2.1.35", 762 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 763 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 764 | "dev": true, 765 | "dependencies": { 766 | "mime-db": "1.52.0" 767 | }, 768 | "engines": { 769 | "node": ">= 0.6" 770 | } 771 | }, 772 | "node_modules/minimatch": { 773 | "version": "3.1.2", 774 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 775 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 776 | "dependencies": { 777 | "brace-expansion": "^1.1.7" 778 | }, 779 | "engines": { 780 | "node": "*" 781 | } 782 | }, 783 | "node_modules/minipass": { 784 | "version": "5.0.0", 785 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 786 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", 787 | "engines": { 788 | "node": ">=8" 789 | } 790 | }, 791 | "node_modules/minizlib": { 792 | "version": "2.1.2", 793 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 794 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 795 | "dependencies": { 796 | "minipass": "^3.0.0", 797 | "yallist": "^4.0.0" 798 | }, 799 | "engines": { 800 | "node": ">= 8" 801 | } 802 | }, 803 | "node_modules/minizlib/node_modules/minipass": { 804 | "version": "3.3.6", 805 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 806 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 807 | "dependencies": { 808 | "yallist": "^4.0.0" 809 | }, 810 | "engines": { 811 | "node": ">=8" 812 | } 813 | }, 814 | "node_modules/mkdirp": { 815 | "version": "1.0.4", 816 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 817 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 818 | "bin": { 819 | "mkdirp": "bin/cmd.js" 820 | }, 821 | "engines": { 822 | "node": ">=10" 823 | } 824 | }, 825 | "node_modules/ms": { 826 | "version": "2.1.3", 827 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 828 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 829 | "dev": true 830 | }, 831 | "node_modules/node-domexception": { 832 | "version": "1.0.0", 833 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 834 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 835 | "dev": true, 836 | "funding": [ 837 | { 838 | "type": "github", 839 | "url": "https://github.com/sponsors/jimmywarting" 840 | }, 841 | { 842 | "type": "github", 843 | "url": "https://paypal.me/jimmywarting" 844 | } 845 | ], 846 | "engines": { 847 | "node": ">=10.5.0" 848 | } 849 | }, 850 | "node_modules/node-fetch": { 851 | "version": "2.7.0", 852 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 853 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 854 | "dependencies": { 855 | "whatwg-url": "^5.0.0" 856 | }, 857 | "engines": { 858 | "node": "4.x || >=6.0.0" 859 | }, 860 | "peerDependencies": { 861 | "encoding": "^0.1.0" 862 | }, 863 | "peerDependenciesMeta": { 864 | "encoding": { 865 | "optional": true 866 | } 867 | } 868 | }, 869 | "node_modules/nopt": { 870 | "version": "5.0.0", 871 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 872 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 873 | "dependencies": { 874 | "abbrev": "1" 875 | }, 876 | "bin": { 877 | "nopt": "bin/nopt.js" 878 | }, 879 | "engines": { 880 | "node": ">=6" 881 | } 882 | }, 883 | "node_modules/npmlog": { 884 | "version": "5.0.1", 885 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 886 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 887 | "dependencies": { 888 | "are-we-there-yet": "^2.0.0", 889 | "console-control-strings": "^1.1.0", 890 | "gauge": "^3.0.0", 891 | "set-blocking": "^2.0.0" 892 | } 893 | }, 894 | "node_modules/object-assign": { 895 | "version": "4.1.1", 896 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 897 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 898 | "engines": { 899 | "node": ">=0.10.0" 900 | } 901 | }, 902 | "node_modules/once": { 903 | "version": "1.4.0", 904 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 905 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 906 | "dependencies": { 907 | "wrappy": "1" 908 | } 909 | }, 910 | "node_modules/openai": { 911 | "version": "4.19.1", 912 | "resolved": "https://registry.npmjs.org/openai/-/openai-4.19.1.tgz", 913 | "integrity": "sha512-9TddzuZBn2xxhghGGTHLZ4EeNBGTLs3xVzh266NiSJvtUsCsZQ5yVV6H5NhnhyAkKK8uUiZOUUlUAk3HdV+4xg==", 914 | "dev": true, 915 | "dependencies": { 916 | "@types/node": "^18.11.18", 917 | "@types/node-fetch": "^2.6.4", 918 | "abort-controller": "^3.0.0", 919 | "agentkeepalive": "^4.2.1", 920 | "digest-fetch": "^1.3.0", 921 | "form-data-encoder": "1.7.2", 922 | "formdata-node": "^4.3.2", 923 | "node-fetch": "^2.6.7", 924 | "web-streams-polyfill": "^3.2.1" 925 | }, 926 | "bin": { 927 | "openai": "bin/cli" 928 | } 929 | }, 930 | "node_modules/openai/node_modules/@types/node": { 931 | "version": "18.18.12", 932 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.12.tgz", 933 | "integrity": "sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==", 934 | "dev": true, 935 | "dependencies": { 936 | "undici-types": "~5.26.4" 937 | } 938 | }, 939 | "node_modules/path-is-absolute": { 940 | "version": "1.0.1", 941 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 942 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 943 | "engines": { 944 | "node": ">=0.10.0" 945 | } 946 | }, 947 | "node_modules/protobufjs": { 948 | "version": "7.2.5", 949 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", 950 | "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", 951 | "hasInstallScript": true, 952 | "dependencies": { 953 | "@protobufjs/aspromise": "^1.1.2", 954 | "@protobufjs/base64": "^1.1.2", 955 | "@protobufjs/codegen": "^2.0.4", 956 | "@protobufjs/eventemitter": "^1.1.0", 957 | "@protobufjs/fetch": "^1.1.0", 958 | "@protobufjs/float": "^1.0.2", 959 | "@protobufjs/inquire": "^1.1.0", 960 | "@protobufjs/path": "^1.1.2", 961 | "@protobufjs/pool": "^1.1.0", 962 | "@protobufjs/utf8": "^1.1.0", 963 | "@types/node": ">=13.7.0", 964 | "long": "^5.0.0" 965 | }, 966 | "engines": { 967 | "node": ">=12.0.0" 968 | } 969 | }, 970 | "node_modules/protoc-gen-ts": { 971 | "version": "0.8.7", 972 | "resolved": "https://registry.npmjs.org/protoc-gen-ts/-/protoc-gen-ts-0.8.7.tgz", 973 | "integrity": "sha512-jr4VJey2J9LVYCV7EVyVe53g1VMw28cCmYJhBe5e3YX5wiyiDwgxWxeDf9oTqAe4P1bN/YGAkW2jhlH8LohwiQ==", 974 | "bin": { 975 | "protoc-gen-ts": "protoc-gen-ts.js" 976 | }, 977 | "funding": { 978 | "type": "individual", 979 | "url": "https://www.buymeacoffee.com/thesayyn" 980 | } 981 | }, 982 | "node_modules/readable-stream": { 983 | "version": "3.6.2", 984 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 985 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 986 | "dependencies": { 987 | "inherits": "^2.0.3", 988 | "string_decoder": "^1.1.1", 989 | "util-deprecate": "^1.0.1" 990 | }, 991 | "engines": { 992 | "node": ">= 6" 993 | } 994 | }, 995 | "node_modules/require-directory": { 996 | "version": "2.1.1", 997 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 998 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 999 | "engines": { 1000 | "node": ">=0.10.0" 1001 | } 1002 | }, 1003 | "node_modules/rimraf": { 1004 | "version": "3.0.2", 1005 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1006 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1007 | "dependencies": { 1008 | "glob": "^7.1.3" 1009 | }, 1010 | "bin": { 1011 | "rimraf": "bin.js" 1012 | }, 1013 | "funding": { 1014 | "url": "https://github.com/sponsors/isaacs" 1015 | } 1016 | }, 1017 | "node_modules/safe-buffer": { 1018 | "version": "5.2.1", 1019 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1020 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1021 | "funding": [ 1022 | { 1023 | "type": "github", 1024 | "url": "https://github.com/sponsors/feross" 1025 | }, 1026 | { 1027 | "type": "patreon", 1028 | "url": "https://www.patreon.com/feross" 1029 | }, 1030 | { 1031 | "type": "consulting", 1032 | "url": "https://feross.org/support" 1033 | } 1034 | ] 1035 | }, 1036 | "node_modules/semver": { 1037 | "version": "7.5.4", 1038 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 1039 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 1040 | "dependencies": { 1041 | "lru-cache": "^6.0.0" 1042 | }, 1043 | "bin": { 1044 | "semver": "bin/semver.js" 1045 | }, 1046 | "engines": { 1047 | "node": ">=10" 1048 | } 1049 | }, 1050 | "node_modules/set-blocking": { 1051 | "version": "2.0.0", 1052 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1053 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" 1054 | }, 1055 | "node_modules/signal-exit": { 1056 | "version": "3.0.7", 1057 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1058 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1059 | }, 1060 | "node_modules/string_decoder": { 1061 | "version": "1.3.0", 1062 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1063 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1064 | "dependencies": { 1065 | "safe-buffer": "~5.2.0" 1066 | } 1067 | }, 1068 | "node_modules/string-width": { 1069 | "version": "4.2.3", 1070 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1071 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1072 | "dependencies": { 1073 | "emoji-regex": "^8.0.0", 1074 | "is-fullwidth-code-point": "^3.0.0", 1075 | "strip-ansi": "^6.0.1" 1076 | }, 1077 | "engines": { 1078 | "node": ">=8" 1079 | } 1080 | }, 1081 | "node_modules/strip-ansi": { 1082 | "version": "6.0.1", 1083 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1084 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1085 | "dependencies": { 1086 | "ansi-regex": "^5.0.1" 1087 | }, 1088 | "engines": { 1089 | "node": ">=8" 1090 | } 1091 | }, 1092 | "node_modules/tar": { 1093 | "version": "6.2.0", 1094 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", 1095 | "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", 1096 | "dependencies": { 1097 | "chownr": "^2.0.0", 1098 | "fs-minipass": "^2.0.0", 1099 | "minipass": "^5.0.0", 1100 | "minizlib": "^2.1.1", 1101 | "mkdirp": "^1.0.3", 1102 | "yallist": "^4.0.0" 1103 | }, 1104 | "engines": { 1105 | "node": ">=10" 1106 | } 1107 | }, 1108 | "node_modules/tr46": { 1109 | "version": "0.0.3", 1110 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1111 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1112 | }, 1113 | "node_modules/undici-types": { 1114 | "version": "5.26.5", 1115 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 1116 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 1117 | "dev": true 1118 | }, 1119 | "node_modules/util-deprecate": { 1120 | "version": "1.0.2", 1121 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1122 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 1123 | }, 1124 | "node_modules/web-streams-polyfill": { 1125 | "version": "3.2.1", 1126 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", 1127 | "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", 1128 | "dev": true, 1129 | "engines": { 1130 | "node": ">= 8" 1131 | } 1132 | }, 1133 | "node_modules/webidl-conversions": { 1134 | "version": "3.0.1", 1135 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1136 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1137 | }, 1138 | "node_modules/whatwg-url": { 1139 | "version": "5.0.0", 1140 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1141 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1142 | "dependencies": { 1143 | "tr46": "~0.0.3", 1144 | "webidl-conversions": "^3.0.0" 1145 | } 1146 | }, 1147 | "node_modules/wide-align": { 1148 | "version": "1.1.5", 1149 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 1150 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 1151 | "dependencies": { 1152 | "string-width": "^1.0.2 || 2 || 3 || 4" 1153 | } 1154 | }, 1155 | "node_modules/wrap-ansi": { 1156 | "version": "7.0.0", 1157 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1158 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1159 | "dependencies": { 1160 | "ansi-styles": "^4.0.0", 1161 | "string-width": "^4.1.0", 1162 | "strip-ansi": "^6.0.0" 1163 | }, 1164 | "engines": { 1165 | "node": ">=10" 1166 | }, 1167 | "funding": { 1168 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1169 | } 1170 | }, 1171 | "node_modules/wrappy": { 1172 | "version": "1.0.2", 1173 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1174 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 1175 | }, 1176 | "node_modules/y18n": { 1177 | "version": "5.0.8", 1178 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1179 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1180 | "engines": { 1181 | "node": ">=10" 1182 | } 1183 | }, 1184 | "node_modules/yallist": { 1185 | "version": "4.0.0", 1186 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1187 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1188 | }, 1189 | "node_modules/yargs": { 1190 | "version": "17.7.2", 1191 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 1192 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 1193 | "dependencies": { 1194 | "cliui": "^8.0.1", 1195 | "escalade": "^3.1.1", 1196 | "get-caller-file": "^2.0.5", 1197 | "require-directory": "^2.1.1", 1198 | "string-width": "^4.2.3", 1199 | "y18n": "^5.0.5", 1200 | "yargs-parser": "^21.1.1" 1201 | }, 1202 | "engines": { 1203 | "node": ">=12" 1204 | } 1205 | }, 1206 | "node_modules/yargs-parser": { 1207 | "version": "21.1.1", 1208 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 1209 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 1210 | "engines": { 1211 | "node": ">=12" 1212 | } 1213 | } 1214 | }, 1215 | "dependencies": { 1216 | "@gomomento/generated-types": { 1217 | "version": "0.96.0", 1218 | "resolved": "https://registry.npmjs.org/@gomomento/generated-types/-/generated-types-0.96.0.tgz", 1219 | "integrity": "sha512-o4bTdJ/PIkvEMZU4IHcrOGyiAxAnrkHZKFlIDmcmEki2zIvpj7Pqkp+7TqQ6BIH6gVo+IOmTecP56HADVUdM9g==", 1220 | "requires": { 1221 | "@grpc/grpc-js": "1.9.0", 1222 | "google-protobuf": "3.21.2", 1223 | "grpc-tools": "^1.12.4", 1224 | "protoc-gen-ts": "^0.8.6" 1225 | } 1226 | }, 1227 | "@gomomento/sdk": { 1228 | "version": "1.51.1", 1229 | "resolved": "https://registry.npmjs.org/@gomomento/sdk/-/sdk-1.51.1.tgz", 1230 | "integrity": "sha512-VldUEt9c2LZahGvqSlebkxHnVqFkv+cjk7d6riOqD26NnwyCBhjZ5wH92OWvEfssQKpGTz5CWkRqZpHC0q0UZA==", 1231 | "requires": { 1232 | "@gomomento/generated-types": "0.96.0", 1233 | "@gomomento/sdk-core": "1.51.1", 1234 | "@grpc/grpc-js": "1.9.0", 1235 | "@types/google-protobuf": "3.15.10", 1236 | "google-protobuf": "3.21.2", 1237 | "jwt-decode": "3.1.2" 1238 | } 1239 | }, 1240 | "@gomomento/sdk-core": { 1241 | "version": "1.51.1", 1242 | "resolved": "https://registry.npmjs.org/@gomomento/sdk-core/-/sdk-core-1.51.1.tgz", 1243 | "integrity": "sha512-u6x5Gpi+sVYNcyRpEfoSJJ3YTTyLG6889QkPo3Z/e6hjNQD51h1Xf52eG1P9numzWWixlStEXIJp3H4hqsZ2vA==", 1244 | "requires": { 1245 | "buffer": "6.0.3", 1246 | "jwt-decode": "3.1.2" 1247 | } 1248 | }, 1249 | "@grpc/grpc-js": { 1250 | "version": "1.9.0", 1251 | "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.0.tgz", 1252 | "integrity": "sha512-H8+iZh+kCE6VR/Krj6W28Y/ZlxoZ1fOzsNt77nrdE3knkbSelW1Uus192xOFCxHyeszLj8i4APQkSIXjAoOxXg==", 1253 | "requires": { 1254 | "@grpc/proto-loader": "^0.7.0", 1255 | "@types/node": ">=12.12.47" 1256 | } 1257 | }, 1258 | "@grpc/proto-loader": { 1259 | "version": "0.7.10", 1260 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", 1261 | "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", 1262 | "requires": { 1263 | "lodash.camelcase": "^4.3.0", 1264 | "long": "^5.0.0", 1265 | "protobufjs": "^7.2.4", 1266 | "yargs": "^17.7.2" 1267 | } 1268 | }, 1269 | "@mapbox/node-pre-gyp": { 1270 | "version": "1.0.11", 1271 | "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.11.tgz", 1272 | "integrity": "sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==", 1273 | "requires": { 1274 | "detect-libc": "^2.0.0", 1275 | "https-proxy-agent": "^5.0.0", 1276 | "make-dir": "^3.1.0", 1277 | "node-fetch": "^2.6.7", 1278 | "nopt": "^5.0.0", 1279 | "npmlog": "^5.0.1", 1280 | "rimraf": "^3.0.2", 1281 | "semver": "^7.3.5", 1282 | "tar": "^6.1.11" 1283 | } 1284 | }, 1285 | "@protobufjs/aspromise": { 1286 | "version": "1.1.2", 1287 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 1288 | "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" 1289 | }, 1290 | "@protobufjs/base64": { 1291 | "version": "1.1.2", 1292 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 1293 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 1294 | }, 1295 | "@protobufjs/codegen": { 1296 | "version": "2.0.4", 1297 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 1298 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 1299 | }, 1300 | "@protobufjs/eventemitter": { 1301 | "version": "1.1.0", 1302 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 1303 | "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" 1304 | }, 1305 | "@protobufjs/fetch": { 1306 | "version": "1.1.0", 1307 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 1308 | "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", 1309 | "requires": { 1310 | "@protobufjs/aspromise": "^1.1.1", 1311 | "@protobufjs/inquire": "^1.1.0" 1312 | } 1313 | }, 1314 | "@protobufjs/float": { 1315 | "version": "1.0.2", 1316 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 1317 | "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" 1318 | }, 1319 | "@protobufjs/inquire": { 1320 | "version": "1.1.0", 1321 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 1322 | "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" 1323 | }, 1324 | "@protobufjs/path": { 1325 | "version": "1.1.2", 1326 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 1327 | "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" 1328 | }, 1329 | "@protobufjs/pool": { 1330 | "version": "1.1.0", 1331 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 1332 | "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" 1333 | }, 1334 | "@protobufjs/utf8": { 1335 | "version": "1.1.0", 1336 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 1337 | "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" 1338 | }, 1339 | "@types/google-protobuf": { 1340 | "version": "3.15.10", 1341 | "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.10.tgz", 1342 | "integrity": "sha512-uiyKJCa8hbmPE4yxwjbkMOALaBAiOVcatW/yEGbjTqwAh4kzNgQPWRlJMNPXpB5CPUM66xsYufiSX9WKHZCE9g==" 1343 | }, 1344 | "@types/node": { 1345 | "version": "20.3.1", 1346 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", 1347 | "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==" 1348 | }, 1349 | "@types/node-fetch": { 1350 | "version": "2.6.9", 1351 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", 1352 | "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", 1353 | "dev": true, 1354 | "requires": { 1355 | "@types/node": "*", 1356 | "form-data": "^4.0.0" 1357 | } 1358 | }, 1359 | "abbrev": { 1360 | "version": "1.1.1", 1361 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 1362 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 1363 | }, 1364 | "abort-controller": { 1365 | "version": "3.0.0", 1366 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 1367 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 1368 | "dev": true, 1369 | "requires": { 1370 | "event-target-shim": "^5.0.0" 1371 | } 1372 | }, 1373 | "agent-base": { 1374 | "version": "6.0.2", 1375 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 1376 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 1377 | "requires": { 1378 | "debug": "4" 1379 | } 1380 | }, 1381 | "agentkeepalive": { 1382 | "version": "4.5.0", 1383 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", 1384 | "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", 1385 | "dev": true, 1386 | "requires": { 1387 | "humanize-ms": "^1.2.1" 1388 | } 1389 | }, 1390 | "ansi-regex": { 1391 | "version": "5.0.1", 1392 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1393 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" 1394 | }, 1395 | "ansi-styles": { 1396 | "version": "4.3.0", 1397 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1398 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1399 | "requires": { 1400 | "color-convert": "^2.0.1" 1401 | } 1402 | }, 1403 | "aproba": { 1404 | "version": "2.0.0", 1405 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", 1406 | "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" 1407 | }, 1408 | "are-we-there-yet": { 1409 | "version": "2.0.0", 1410 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", 1411 | "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", 1412 | "requires": { 1413 | "delegates": "^1.0.0", 1414 | "readable-stream": "^3.6.0" 1415 | } 1416 | }, 1417 | "asynckit": { 1418 | "version": "0.4.0", 1419 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 1420 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", 1421 | "dev": true 1422 | }, 1423 | "balanced-match": { 1424 | "version": "1.0.2", 1425 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1426 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 1427 | }, 1428 | "base-64": { 1429 | "version": "0.1.0", 1430 | "resolved": "https://registry.npmjs.org/base-64/-/base-64-0.1.0.tgz", 1431 | "integrity": "sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==", 1432 | "dev": true 1433 | }, 1434 | "base64-js": { 1435 | "version": "1.5.1", 1436 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 1437 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 1438 | }, 1439 | "brace-expansion": { 1440 | "version": "1.1.11", 1441 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1442 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1443 | "requires": { 1444 | "balanced-match": "^1.0.0", 1445 | "concat-map": "0.0.1" 1446 | } 1447 | }, 1448 | "buffer": { 1449 | "version": "6.0.3", 1450 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", 1451 | "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", 1452 | "requires": { 1453 | "base64-js": "^1.3.1", 1454 | "ieee754": "^1.2.1" 1455 | } 1456 | }, 1457 | "charenc": { 1458 | "version": "0.0.2", 1459 | "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", 1460 | "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", 1461 | "dev": true 1462 | }, 1463 | "chownr": { 1464 | "version": "2.0.0", 1465 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 1466 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" 1467 | }, 1468 | "cliui": { 1469 | "version": "8.0.1", 1470 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1471 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1472 | "requires": { 1473 | "string-width": "^4.2.0", 1474 | "strip-ansi": "^6.0.1", 1475 | "wrap-ansi": "^7.0.0" 1476 | } 1477 | }, 1478 | "color-convert": { 1479 | "version": "2.0.1", 1480 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1481 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1482 | "requires": { 1483 | "color-name": "~1.1.4" 1484 | } 1485 | }, 1486 | "color-name": { 1487 | "version": "1.1.4", 1488 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1489 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1490 | }, 1491 | "color-support": { 1492 | "version": "1.1.3", 1493 | "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", 1494 | "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" 1495 | }, 1496 | "combined-stream": { 1497 | "version": "1.0.8", 1498 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 1499 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 1500 | "dev": true, 1501 | "requires": { 1502 | "delayed-stream": "~1.0.0" 1503 | } 1504 | }, 1505 | "concat-map": { 1506 | "version": "0.0.1", 1507 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1508 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 1509 | }, 1510 | "console-control-strings": { 1511 | "version": "1.1.0", 1512 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 1513 | "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" 1514 | }, 1515 | "crypt": { 1516 | "version": "0.0.2", 1517 | "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", 1518 | "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", 1519 | "dev": true 1520 | }, 1521 | "debug": { 1522 | "version": "4.3.4", 1523 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1524 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1525 | "requires": { 1526 | "ms": "2.1.2" 1527 | }, 1528 | "dependencies": { 1529 | "ms": { 1530 | "version": "2.1.2", 1531 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1532 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1533 | } 1534 | } 1535 | }, 1536 | "delayed-stream": { 1537 | "version": "1.0.0", 1538 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 1539 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 1540 | "dev": true 1541 | }, 1542 | "delegates": { 1543 | "version": "1.0.0", 1544 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 1545 | "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" 1546 | }, 1547 | "detect-libc": { 1548 | "version": "2.0.2", 1549 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", 1550 | "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" 1551 | }, 1552 | "digest-fetch": { 1553 | "version": "1.3.0", 1554 | "resolved": "https://registry.npmjs.org/digest-fetch/-/digest-fetch-1.3.0.tgz", 1555 | "integrity": "sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==", 1556 | "dev": true, 1557 | "requires": { 1558 | "base-64": "^0.1.0", 1559 | "md5": "^2.3.0" 1560 | } 1561 | }, 1562 | "emoji-regex": { 1563 | "version": "8.0.0", 1564 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1565 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1566 | }, 1567 | "escalade": { 1568 | "version": "3.1.1", 1569 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1570 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" 1571 | }, 1572 | "event-target-shim": { 1573 | "version": "5.0.1", 1574 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 1575 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", 1576 | "dev": true 1577 | }, 1578 | "form-data": { 1579 | "version": "4.0.0", 1580 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 1581 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 1582 | "dev": true, 1583 | "requires": { 1584 | "asynckit": "^0.4.0", 1585 | "combined-stream": "^1.0.8", 1586 | "mime-types": "^2.1.12" 1587 | } 1588 | }, 1589 | "form-data-encoder": { 1590 | "version": "1.7.2", 1591 | "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz", 1592 | "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==", 1593 | "dev": true 1594 | }, 1595 | "formdata-node": { 1596 | "version": "4.4.1", 1597 | "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz", 1598 | "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==", 1599 | "dev": true, 1600 | "requires": { 1601 | "node-domexception": "1.0.0", 1602 | "web-streams-polyfill": "4.0.0-beta.3" 1603 | }, 1604 | "dependencies": { 1605 | "web-streams-polyfill": { 1606 | "version": "4.0.0-beta.3", 1607 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", 1608 | "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", 1609 | "dev": true 1610 | } 1611 | } 1612 | }, 1613 | "fs-minipass": { 1614 | "version": "2.1.0", 1615 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 1616 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 1617 | "requires": { 1618 | "minipass": "^3.0.0" 1619 | }, 1620 | "dependencies": { 1621 | "minipass": { 1622 | "version": "3.3.6", 1623 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 1624 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 1625 | "requires": { 1626 | "yallist": "^4.0.0" 1627 | } 1628 | } 1629 | } 1630 | }, 1631 | "fs.realpath": { 1632 | "version": "1.0.0", 1633 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 1634 | "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" 1635 | }, 1636 | "gauge": { 1637 | "version": "3.0.2", 1638 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", 1639 | "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", 1640 | "requires": { 1641 | "aproba": "^1.0.3 || ^2.0.0", 1642 | "color-support": "^1.1.2", 1643 | "console-control-strings": "^1.0.0", 1644 | "has-unicode": "^2.0.1", 1645 | "object-assign": "^4.1.1", 1646 | "signal-exit": "^3.0.0", 1647 | "string-width": "^4.2.3", 1648 | "strip-ansi": "^6.0.1", 1649 | "wide-align": "^1.1.2" 1650 | } 1651 | }, 1652 | "get-caller-file": { 1653 | "version": "2.0.5", 1654 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1655 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" 1656 | }, 1657 | "glob": { 1658 | "version": "7.2.3", 1659 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 1660 | "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 1661 | "requires": { 1662 | "fs.realpath": "^1.0.0", 1663 | "inflight": "^1.0.4", 1664 | "inherits": "2", 1665 | "minimatch": "^3.1.1", 1666 | "once": "^1.3.0", 1667 | "path-is-absolute": "^1.0.0" 1668 | } 1669 | }, 1670 | "google-protobuf": { 1671 | "version": "3.21.2", 1672 | "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", 1673 | "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" 1674 | }, 1675 | "grpc-tools": { 1676 | "version": "1.12.4", 1677 | "resolved": "https://registry.npmjs.org/grpc-tools/-/grpc-tools-1.12.4.tgz", 1678 | "integrity": "sha512-5+mLAJJma3BjnW/KQp6JBjUMgvu7Mu3dBvBPd1dcbNIb+qiR0817zDpgPjS7gRb+l/8EVNIa3cB02xI9JLToKg==", 1679 | "requires": { 1680 | "@mapbox/node-pre-gyp": "^1.0.5" 1681 | } 1682 | }, 1683 | "has-unicode": { 1684 | "version": "2.0.1", 1685 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 1686 | "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" 1687 | }, 1688 | "https-proxy-agent": { 1689 | "version": "5.0.1", 1690 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", 1691 | "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", 1692 | "requires": { 1693 | "agent-base": "6", 1694 | "debug": "4" 1695 | } 1696 | }, 1697 | "humanize-ms": { 1698 | "version": "1.2.1", 1699 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", 1700 | "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", 1701 | "dev": true, 1702 | "requires": { 1703 | "ms": "^2.0.0" 1704 | } 1705 | }, 1706 | "ieee754": { 1707 | "version": "1.2.1", 1708 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1709 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1710 | }, 1711 | "inflight": { 1712 | "version": "1.0.6", 1713 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1714 | "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1715 | "requires": { 1716 | "once": "^1.3.0", 1717 | "wrappy": "1" 1718 | } 1719 | }, 1720 | "inherits": { 1721 | "version": "2.0.4", 1722 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1723 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1724 | }, 1725 | "is-buffer": { 1726 | "version": "1.1.6", 1727 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1728 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1729 | "dev": true 1730 | }, 1731 | "is-fullwidth-code-point": { 1732 | "version": "3.0.0", 1733 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1734 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" 1735 | }, 1736 | "jwt-decode": { 1737 | "version": "3.1.2", 1738 | "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", 1739 | "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==" 1740 | }, 1741 | "lodash.camelcase": { 1742 | "version": "4.3.0", 1743 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1744 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" 1745 | }, 1746 | "long": { 1747 | "version": "5.2.3", 1748 | "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", 1749 | "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" 1750 | }, 1751 | "lru-cache": { 1752 | "version": "6.0.0", 1753 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1754 | "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1755 | "requires": { 1756 | "yallist": "^4.0.0" 1757 | } 1758 | }, 1759 | "make-dir": { 1760 | "version": "3.1.0", 1761 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", 1762 | "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", 1763 | "requires": { 1764 | "semver": "^6.0.0" 1765 | }, 1766 | "dependencies": { 1767 | "semver": { 1768 | "version": "6.3.1", 1769 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", 1770 | "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" 1771 | } 1772 | } 1773 | }, 1774 | "md5": { 1775 | "version": "2.3.0", 1776 | "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", 1777 | "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", 1778 | "dev": true, 1779 | "requires": { 1780 | "charenc": "0.0.2", 1781 | "crypt": "0.0.2", 1782 | "is-buffer": "~1.1.6" 1783 | } 1784 | }, 1785 | "mime-db": { 1786 | "version": "1.52.0", 1787 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1788 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 1789 | "dev": true 1790 | }, 1791 | "mime-types": { 1792 | "version": "2.1.35", 1793 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1794 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1795 | "dev": true, 1796 | "requires": { 1797 | "mime-db": "1.52.0" 1798 | } 1799 | }, 1800 | "minimatch": { 1801 | "version": "3.1.2", 1802 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1803 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1804 | "requires": { 1805 | "brace-expansion": "^1.1.7" 1806 | } 1807 | }, 1808 | "minipass": { 1809 | "version": "5.0.0", 1810 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 1811 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" 1812 | }, 1813 | "minizlib": { 1814 | "version": "2.1.2", 1815 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 1816 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 1817 | "requires": { 1818 | "minipass": "^3.0.0", 1819 | "yallist": "^4.0.0" 1820 | }, 1821 | "dependencies": { 1822 | "minipass": { 1823 | "version": "3.3.6", 1824 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 1825 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 1826 | "requires": { 1827 | "yallist": "^4.0.0" 1828 | } 1829 | } 1830 | } 1831 | }, 1832 | "mkdirp": { 1833 | "version": "1.0.4", 1834 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 1835 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 1836 | }, 1837 | "ms": { 1838 | "version": "2.1.3", 1839 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1840 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1841 | "dev": true 1842 | }, 1843 | "node-domexception": { 1844 | "version": "1.0.0", 1845 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", 1846 | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", 1847 | "dev": true 1848 | }, 1849 | "node-fetch": { 1850 | "version": "2.7.0", 1851 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", 1852 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", 1853 | "requires": { 1854 | "whatwg-url": "^5.0.0" 1855 | } 1856 | }, 1857 | "nopt": { 1858 | "version": "5.0.0", 1859 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", 1860 | "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", 1861 | "requires": { 1862 | "abbrev": "1" 1863 | } 1864 | }, 1865 | "npmlog": { 1866 | "version": "5.0.1", 1867 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", 1868 | "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", 1869 | "requires": { 1870 | "are-we-there-yet": "^2.0.0", 1871 | "console-control-strings": "^1.1.0", 1872 | "gauge": "^3.0.0", 1873 | "set-blocking": "^2.0.0" 1874 | } 1875 | }, 1876 | "object-assign": { 1877 | "version": "4.1.1", 1878 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1879 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1880 | }, 1881 | "once": { 1882 | "version": "1.4.0", 1883 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1884 | "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1885 | "requires": { 1886 | "wrappy": "1" 1887 | } 1888 | }, 1889 | "openai": { 1890 | "version": "4.19.1", 1891 | "resolved": "https://registry.npmjs.org/openai/-/openai-4.19.1.tgz", 1892 | "integrity": "sha512-9TddzuZBn2xxhghGGTHLZ4EeNBGTLs3xVzh266NiSJvtUsCsZQ5yVV6H5NhnhyAkKK8uUiZOUUlUAk3HdV+4xg==", 1893 | "dev": true, 1894 | "requires": { 1895 | "@types/node": "^18.11.18", 1896 | "@types/node-fetch": "^2.6.4", 1897 | "abort-controller": "^3.0.0", 1898 | "agentkeepalive": "^4.2.1", 1899 | "digest-fetch": "^1.3.0", 1900 | "form-data-encoder": "1.7.2", 1901 | "formdata-node": "^4.3.2", 1902 | "node-fetch": "^2.6.7", 1903 | "web-streams-polyfill": "^3.2.1" 1904 | }, 1905 | "dependencies": { 1906 | "@types/node": { 1907 | "version": "18.18.12", 1908 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.12.tgz", 1909 | "integrity": "sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==", 1910 | "dev": true, 1911 | "requires": { 1912 | "undici-types": "~5.26.4" 1913 | } 1914 | } 1915 | } 1916 | }, 1917 | "path-is-absolute": { 1918 | "version": "1.0.1", 1919 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1920 | "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" 1921 | }, 1922 | "protobufjs": { 1923 | "version": "7.2.5", 1924 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", 1925 | "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", 1926 | "requires": { 1927 | "@protobufjs/aspromise": "^1.1.2", 1928 | "@protobufjs/base64": "^1.1.2", 1929 | "@protobufjs/codegen": "^2.0.4", 1930 | "@protobufjs/eventemitter": "^1.1.0", 1931 | "@protobufjs/fetch": "^1.1.0", 1932 | "@protobufjs/float": "^1.0.2", 1933 | "@protobufjs/inquire": "^1.1.0", 1934 | "@protobufjs/path": "^1.1.2", 1935 | "@protobufjs/pool": "^1.1.0", 1936 | "@protobufjs/utf8": "^1.1.0", 1937 | "@types/node": ">=13.7.0", 1938 | "long": "^5.0.0" 1939 | } 1940 | }, 1941 | "protoc-gen-ts": { 1942 | "version": "0.8.7", 1943 | "resolved": "https://registry.npmjs.org/protoc-gen-ts/-/protoc-gen-ts-0.8.7.tgz", 1944 | "integrity": "sha512-jr4VJey2J9LVYCV7EVyVe53g1VMw28cCmYJhBe5e3YX5wiyiDwgxWxeDf9oTqAe4P1bN/YGAkW2jhlH8LohwiQ==" 1945 | }, 1946 | "readable-stream": { 1947 | "version": "3.6.2", 1948 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", 1949 | "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", 1950 | "requires": { 1951 | "inherits": "^2.0.3", 1952 | "string_decoder": "^1.1.1", 1953 | "util-deprecate": "^1.0.1" 1954 | } 1955 | }, 1956 | "require-directory": { 1957 | "version": "2.1.1", 1958 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1959 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" 1960 | }, 1961 | "rimraf": { 1962 | "version": "3.0.2", 1963 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1964 | "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1965 | "requires": { 1966 | "glob": "^7.1.3" 1967 | } 1968 | }, 1969 | "safe-buffer": { 1970 | "version": "5.2.1", 1971 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1972 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1973 | }, 1974 | "semver": { 1975 | "version": "7.5.4", 1976 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", 1977 | "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", 1978 | "requires": { 1979 | "lru-cache": "^6.0.0" 1980 | } 1981 | }, 1982 | "set-blocking": { 1983 | "version": "2.0.0", 1984 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 1985 | "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" 1986 | }, 1987 | "signal-exit": { 1988 | "version": "3.0.7", 1989 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 1990 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" 1991 | }, 1992 | "string_decoder": { 1993 | "version": "1.3.0", 1994 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", 1995 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", 1996 | "requires": { 1997 | "safe-buffer": "~5.2.0" 1998 | } 1999 | }, 2000 | "string-width": { 2001 | "version": "4.2.3", 2002 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2003 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2004 | "requires": { 2005 | "emoji-regex": "^8.0.0", 2006 | "is-fullwidth-code-point": "^3.0.0", 2007 | "strip-ansi": "^6.0.1" 2008 | } 2009 | }, 2010 | "strip-ansi": { 2011 | "version": "6.0.1", 2012 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2013 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2014 | "requires": { 2015 | "ansi-regex": "^5.0.1" 2016 | } 2017 | }, 2018 | "tar": { 2019 | "version": "6.2.0", 2020 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", 2021 | "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", 2022 | "requires": { 2023 | "chownr": "^2.0.0", 2024 | "fs-minipass": "^2.0.0", 2025 | "minipass": "^5.0.0", 2026 | "minizlib": "^2.1.1", 2027 | "mkdirp": "^1.0.3", 2028 | "yallist": "^4.0.0" 2029 | } 2030 | }, 2031 | "tr46": { 2032 | "version": "0.0.3", 2033 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2034 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 2035 | }, 2036 | "undici-types": { 2037 | "version": "5.26.5", 2038 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", 2039 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", 2040 | "dev": true 2041 | }, 2042 | "util-deprecate": { 2043 | "version": "1.0.2", 2044 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2045 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" 2046 | }, 2047 | "web-streams-polyfill": { 2048 | "version": "3.2.1", 2049 | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", 2050 | "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", 2051 | "dev": true 2052 | }, 2053 | "webidl-conversions": { 2054 | "version": "3.0.1", 2055 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2056 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 2057 | }, 2058 | "whatwg-url": { 2059 | "version": "5.0.0", 2060 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2061 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 2062 | "requires": { 2063 | "tr46": "~0.0.3", 2064 | "webidl-conversions": "^3.0.0" 2065 | } 2066 | }, 2067 | "wide-align": { 2068 | "version": "1.1.5", 2069 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", 2070 | "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", 2071 | "requires": { 2072 | "string-width": "^1.0.2 || 2 || 3 || 4" 2073 | } 2074 | }, 2075 | "wrap-ansi": { 2076 | "version": "7.0.0", 2077 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2078 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2079 | "requires": { 2080 | "ansi-styles": "^4.0.0", 2081 | "string-width": "^4.1.0", 2082 | "strip-ansi": "^6.0.0" 2083 | } 2084 | }, 2085 | "wrappy": { 2086 | "version": "1.0.2", 2087 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2088 | "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" 2089 | }, 2090 | "y18n": { 2091 | "version": "5.0.8", 2092 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2093 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" 2094 | }, 2095 | "yallist": { 2096 | "version": "4.0.0", 2097 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 2098 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 2099 | }, 2100 | "yargs": { 2101 | "version": "17.7.2", 2102 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 2103 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 2104 | "requires": { 2105 | "cliui": "^8.0.1", 2106 | "escalade": "^3.1.1", 2107 | "get-caller-file": "^2.0.5", 2108 | "require-directory": "^2.1.1", 2109 | "string-width": "^4.2.3", 2110 | "y18n": "^5.0.5", 2111 | "yargs-parser": "^21.1.1" 2112 | } 2113 | }, 2114 | "yargs-parser": { 2115 | "version": "21.1.1", 2116 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 2117 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" 2118 | } 2119 | } 2120 | } 2121 | -------------------------------------------------------------------------------- /functions/ask-chatgpt/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ask-chatgpt", 3 | "version": "1.0.0", 4 | "description": "Conversational function that allows multiple calls to build a contextual chat with ChatGPT", 5 | "main": "index.js", 6 | "dependencies": { 7 | "@gomomento/sdk": "^1.51.1" 8 | }, 9 | "author": "allenheltondev", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "openai": "^4.19.1" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /functions/marshall-unmarshall-data/index.js: -------------------------------------------------------------------------------- 1 | const { marshall, unmarshall } = require('@aws-sdk/util-dynamodb'); 2 | 3 | exports.handler = async (state) => { 4 | if (state.marshall) { 5 | const data = marshall(state.data); 6 | return { data }; 7 | } else { 8 | let data; 9 | if (state.isDynamoDBQuery) { 10 | data = state.data.map(d => unmarshall(d)); 11 | } else { 12 | data = unmarshall(state.data); 13 | } 14 | 15 | return { data }; 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /functions/marshall-unmarshall-data/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "marshall-unmarshall-data", 3 | "version": "1.0.0", 4 | "description": "Marshalls or unmarshalls data. Intended to be used in Step Functions", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "allenheltondev", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "@aws-sdk/util-dynamodb": "^3.438.0" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /functions/send-api-request/index.js: -------------------------------------------------------------------------------- 1 | const axios = require('axios').default; 2 | const shared = require('/opt/nodejs/index'); 3 | 4 | exports.handler = async (state) => { 5 | let authToken; 6 | if (state.secretKey) { 7 | authToken = await shared.getSecret(state.secretKey); 8 | if (!authToken) { 9 | throw new Error('Unable to get secret'); 10 | } 11 | } 12 | 13 | const config = getAxiosConfig(state, authToken); 14 | const response = await axios.request(config); 15 | return response.data; 16 | }; 17 | 18 | const getAxiosConfig = (state, authToken) => { 19 | const config = { 20 | method: state.request.method, 21 | baseURL: state.request.baseUrl, 22 | headers: state.request.headers ?? {}, 23 | ...state.request.body && { data: state.request.body }, 24 | responseType: 'json', 25 | validateStatus: (status) => status < 400 26 | }; 27 | 28 | if (state.auth) { 29 | let authValue = authToken; 30 | if (state.auth.prefix) { 31 | authValue = `${state.auth.prefix} ${authToken}`; 32 | } 33 | 34 | if (state.auth.location == 'query') { 35 | config.baseURL = `${config.baseURL}?${state.auth.key}=${authValue}`; 36 | } else if (state.auth.location == 'header') { 37 | config.headers[state.auth.key] = authValue; 38 | } 39 | } 40 | 41 | if (state.request.query) { 42 | const query = Object.entries(state.request.query).map(entry => `${entry[0]}=${entry[1]}`).join('&'); 43 | if (config.baseURL.includes('?')) { 44 | config.baseURL = `${config.baseURL}&${query}`; 45 | } else { 46 | config.baseURL = `${config.baseURL}?${query}`; 47 | } 48 | } 49 | 50 | return config; 51 | }; -------------------------------------------------------------------------------- /functions/send-api-request/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "send-api-request", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "send-api-request", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "axios": "^1.3.5" 13 | } 14 | }, 15 | "node_modules/asynckit": { 16 | "version": "0.4.0", 17 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 18 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 19 | }, 20 | "node_modules/axios": { 21 | "version": "1.3.5", 22 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.5.tgz", 23 | "integrity": "sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==", 24 | "dependencies": { 25 | "follow-redirects": "^1.15.0", 26 | "form-data": "^4.0.0", 27 | "proxy-from-env": "^1.1.0" 28 | } 29 | }, 30 | "node_modules/combined-stream": { 31 | "version": "1.0.8", 32 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 33 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 34 | "dependencies": { 35 | "delayed-stream": "~1.0.0" 36 | }, 37 | "engines": { 38 | "node": ">= 0.8" 39 | } 40 | }, 41 | "node_modules/delayed-stream": { 42 | "version": "1.0.0", 43 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 44 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", 45 | "engines": { 46 | "node": ">=0.4.0" 47 | } 48 | }, 49 | "node_modules/follow-redirects": { 50 | "version": "1.15.2", 51 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 52 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 53 | "funding": [ 54 | { 55 | "type": "individual", 56 | "url": "https://github.com/sponsors/RubenVerborgh" 57 | } 58 | ], 59 | "engines": { 60 | "node": ">=4.0" 61 | }, 62 | "peerDependenciesMeta": { 63 | "debug": { 64 | "optional": true 65 | } 66 | } 67 | }, 68 | "node_modules/form-data": { 69 | "version": "4.0.0", 70 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 71 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 72 | "dependencies": { 73 | "asynckit": "^0.4.0", 74 | "combined-stream": "^1.0.8", 75 | "mime-types": "^2.1.12" 76 | }, 77 | "engines": { 78 | "node": ">= 6" 79 | } 80 | }, 81 | "node_modules/mime-db": { 82 | "version": "1.52.0", 83 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 84 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 85 | "engines": { 86 | "node": ">= 0.6" 87 | } 88 | }, 89 | "node_modules/mime-types": { 90 | "version": "2.1.35", 91 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 92 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 93 | "dependencies": { 94 | "mime-db": "1.52.0" 95 | }, 96 | "engines": { 97 | "node": ">= 0.6" 98 | } 99 | }, 100 | "node_modules/proxy-from-env": { 101 | "version": "1.1.0", 102 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 103 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 104 | } 105 | }, 106 | "dependencies": { 107 | "asynckit": { 108 | "version": "0.4.0", 109 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 110 | "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" 111 | }, 112 | "axios": { 113 | "version": "1.3.5", 114 | "resolved": "https://registry.npmjs.org/axios/-/axios-1.3.5.tgz", 115 | "integrity": "sha512-glL/PvG/E+xCWwV8S6nCHcrfg1exGx7vxyUIivIA1iL7BIh6bePylCfVHwp6k13ao7SATxB6imau2kqY+I67kw==", 116 | "requires": { 117 | "follow-redirects": "^1.15.0", 118 | "form-data": "^4.0.0", 119 | "proxy-from-env": "^1.1.0" 120 | } 121 | }, 122 | "combined-stream": { 123 | "version": "1.0.8", 124 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 125 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 126 | "requires": { 127 | "delayed-stream": "~1.0.0" 128 | } 129 | }, 130 | "delayed-stream": { 131 | "version": "1.0.0", 132 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 133 | "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" 134 | }, 135 | "follow-redirects": { 136 | "version": "1.15.2", 137 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 138 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 139 | }, 140 | "form-data": { 141 | "version": "4.0.0", 142 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", 143 | "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", 144 | "requires": { 145 | "asynckit": "^0.4.0", 146 | "combined-stream": "^1.0.8", 147 | "mime-types": "^2.1.12" 148 | } 149 | }, 150 | "mime-db": { 151 | "version": "1.52.0", 152 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 153 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 154 | }, 155 | "mime-types": { 156 | "version": "2.1.35", 157 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 158 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 159 | "requires": { 160 | "mime-db": "1.52.0" 161 | } 162 | }, 163 | "proxy-from-env": { 164 | "version": "1.1.0", 165 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", 166 | "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" 167 | } 168 | } 169 | } 170 | -------------------------------------------------------------------------------- /functions/send-api-request/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "send-api-request", 3 | "version": "1.0.0", 4 | "description": "Sends an API request and returns the response", 5 | "main": "index.js", 6 | "author": "allenheltondev", 7 | "license": "ISC", 8 | "dependencies": { 9 | "axios": "^1.3.5" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /functions/send-email/index.js: -------------------------------------------------------------------------------- 1 | const sendgrid = require('@sendgrid/mail'); 2 | const shared = require('/opt/nodejs/index'); 3 | 4 | exports.handler = async (state) => { 5 | try { 6 | const apiKey = await shared.getSecret('sendgrid'); 7 | sendgrid.setApiKey(apiKey); 8 | 9 | let { to, subject, html, text } = state; 10 | if(state.detail){ 11 | to = state.detail.to; 12 | subject = state.detail.subject; 13 | html = state.detail.html; 14 | text = state.detail.text; 15 | } 16 | 17 | await sendMessage(to, subject, html, text); 18 | } catch (err) { 19 | console.error(err.response ?? err); 20 | } 21 | }; 22 | 23 | const sendMessage = async (to, subject, html, text) => { 24 | const msg = { 25 | to: to, 26 | from: process.env.FROM_EMAIL, 27 | subject: subject, 28 | ...html && { 29 | content: [ 30 | { 31 | type: 'text/html', 32 | value: html 33 | } 34 | ] 35 | }, 36 | ...text && { text: text } 37 | }; 38 | 39 | await sendgrid.send(msg); 40 | }; 41 | -------------------------------------------------------------------------------- /functions/send-email/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "send-email", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "send-email", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@sendgrid/mail": "^7.7.0" 13 | } 14 | }, 15 | "node_modules/@sendgrid/client": { 16 | "version": "7.7.0", 17 | "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", 18 | "integrity": "sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==", 19 | "dependencies": { 20 | "@sendgrid/helpers": "^7.7.0", 21 | "axios": "^0.26.0" 22 | }, 23 | "engines": { 24 | "node": "6.* || 8.* || >=10.*" 25 | } 26 | }, 27 | "node_modules/@sendgrid/helpers": { 28 | "version": "7.7.0", 29 | "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.7.0.tgz", 30 | "integrity": "sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==", 31 | "dependencies": { 32 | "deepmerge": "^4.2.2" 33 | }, 34 | "engines": { 35 | "node": ">= 6.0.0" 36 | } 37 | }, 38 | "node_modules/@sendgrid/mail": { 39 | "version": "7.7.0", 40 | "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.7.0.tgz", 41 | "integrity": "sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==", 42 | "dependencies": { 43 | "@sendgrid/client": "^7.7.0", 44 | "@sendgrid/helpers": "^7.7.0" 45 | }, 46 | "engines": { 47 | "node": "6.* || 8.* || >=10.*" 48 | } 49 | }, 50 | "node_modules/axios": { 51 | "version": "0.26.1", 52 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 53 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 54 | "dependencies": { 55 | "follow-redirects": "^1.14.8" 56 | } 57 | }, 58 | "node_modules/deepmerge": { 59 | "version": "4.3.1", 60 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 61 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", 62 | "engines": { 63 | "node": ">=0.10.0" 64 | } 65 | }, 66 | "node_modules/follow-redirects": { 67 | "version": "1.15.2", 68 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 69 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", 70 | "funding": [ 71 | { 72 | "type": "individual", 73 | "url": "https://github.com/sponsors/RubenVerborgh" 74 | } 75 | ], 76 | "engines": { 77 | "node": ">=4.0" 78 | }, 79 | "peerDependenciesMeta": { 80 | "debug": { 81 | "optional": true 82 | } 83 | } 84 | } 85 | }, 86 | "dependencies": { 87 | "@sendgrid/client": { 88 | "version": "7.7.0", 89 | "resolved": "https://registry.npmjs.org/@sendgrid/client/-/client-7.7.0.tgz", 90 | "integrity": "sha512-SxH+y8jeAQSnDavrTD0uGDXYIIkFylCo+eDofVmZLQ0f862nnqbC3Vd1ej6b7Le7lboyzQF6F7Fodv02rYspuA==", 91 | "requires": { 92 | "@sendgrid/helpers": "^7.7.0", 93 | "axios": "^0.26.0" 94 | } 95 | }, 96 | "@sendgrid/helpers": { 97 | "version": "7.7.0", 98 | "resolved": "https://registry.npmjs.org/@sendgrid/helpers/-/helpers-7.7.0.tgz", 99 | "integrity": "sha512-3AsAxfN3GDBcXoZ/y1mzAAbKzTtUZ5+ZrHOmWQ279AuaFXUNCh9bPnRpN504bgveTqoW+11IzPg3I0WVgDINpw==", 100 | "requires": { 101 | "deepmerge": "^4.2.2" 102 | } 103 | }, 104 | "@sendgrid/mail": { 105 | "version": "7.7.0", 106 | "resolved": "https://registry.npmjs.org/@sendgrid/mail/-/mail-7.7.0.tgz", 107 | "integrity": "sha512-5+nApPE9wINBvHSUxwOxkkQqM/IAAaBYoP9hw7WwgDNQPxraruVqHizeTitVtKGiqWCKm2mnjh4XGN3fvFLqaw==", 108 | "requires": { 109 | "@sendgrid/client": "^7.7.0", 110 | "@sendgrid/helpers": "^7.7.0" 111 | } 112 | }, 113 | "axios": { 114 | "version": "0.26.1", 115 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", 116 | "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", 117 | "requires": { 118 | "follow-redirects": "^1.14.8" 119 | } 120 | }, 121 | "deepmerge": { 122 | "version": "4.3.1", 123 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", 124 | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==" 125 | }, 126 | "follow-redirects": { 127 | "version": "1.15.2", 128 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", 129 | "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" 130 | } 131 | } 132 | } 133 | -------------------------------------------------------------------------------- /functions/send-email/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "send-email", 3 | "version": "1.0.0", 4 | "description": "Sends an email via SendGrid", 5 | "main": "index.js", 6 | "author": "allenheltondev", 7 | "license": "ISC", 8 | "dependencies": { 9 | "@sendgrid/mail": "^7.7.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /functions/set-log-retention/index.js: -------------------------------------------------------------------------------- 1 | const { CloudWatchLogsClient, DescribeLogGroupsCommand, PutRetentionPolicyCommand } = require("@aws-sdk/client-cloudwatch-logs"); 2 | const logs = new CloudWatchLogsClient(); 3 | 4 | exports.handler = async (event) => { 5 | let success = true; 6 | try { 7 | const logGroupsToUpdate = await getLambdaLogGroupsToUpdate(); 8 | if (logGroupsToUpdate?.length) { 9 | await setLogGroupRetentionPolicy(logGroupsToUpdate); 10 | } 11 | } 12 | catch (err) { 13 | console.error(err); 14 | success = false; 15 | } 16 | 17 | return { success }; 18 | }; 19 | 20 | 21 | const getLambdaLogGroupsToUpdate = async () => { 22 | let logGroups = []; 23 | const params = buildDescribeLogGroupsCommandInput(); 24 | do { 25 | const response = await logs.send(new DescribeLogGroupsCommand(params)); 26 | params.nextToken = response.nextToken; 27 | logGroups = logGroups.concat(response.logGroups.filter(lg => lg.retentionInDays !== process.env.RETENTION_DAYS).map(lg => lg.logGroupName)); 28 | } while (params.nextToken); 29 | 30 | return logGroups; 31 | }; 32 | 33 | const buildDescribeLogGroupsCommandInput = () => { 34 | const params = { 35 | limit: 50, 36 | logGroupNamePrefix: '/aws/lambda/' 37 | }; 38 | 39 | return params; 40 | }; 41 | 42 | const setLogGroupRetentionPolicy = async (logGroups) => { 43 | await Promise.all(logGroups.map(async (logGroupName) => { 44 | const params = buildPutRetentionPolicyCommandInput(logGroupName); 45 | await logs.send(new PutRetentionPolicyCommand(params)); 46 | })); 47 | }; 48 | 49 | const buildPutRetentionPolicyCommandInput = (logGroupName) => { 50 | const params = { 51 | logGroupName: logGroupName, 52 | retentionInDays: parseInt(process.env.RETENTION_DAYS) 53 | }; 54 | 55 | return params; 56 | }; -------------------------------------------------------------------------------- /functions/set-log-retention/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "set-log-retention", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "set-log-retention", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@aws-sdk/client-cloudwatch-logs": "^3.312.0" 13 | } 14 | }, 15 | "node_modules/@aws-crypto/ie11-detection": { 16 | "version": "3.0.0", 17 | "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", 18 | "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", 19 | "dependencies": { 20 | "tslib": "^1.11.1" 21 | } 22 | }, 23 | "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { 24 | "version": "1.14.1", 25 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 26 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 27 | }, 28 | "node_modules/@aws-crypto/sha256-browser": { 29 | "version": "3.0.0", 30 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", 31 | "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", 32 | "dependencies": { 33 | "@aws-crypto/ie11-detection": "^3.0.0", 34 | "@aws-crypto/sha256-js": "^3.0.0", 35 | "@aws-crypto/supports-web-crypto": "^3.0.0", 36 | "@aws-crypto/util": "^3.0.0", 37 | "@aws-sdk/types": "^3.222.0", 38 | "@aws-sdk/util-locate-window": "^3.0.0", 39 | "@aws-sdk/util-utf8-browser": "^3.0.0", 40 | "tslib": "^1.11.1" 41 | } 42 | }, 43 | "node_modules/@aws-crypto/sha256-browser/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/sha256-js": { 49 | "version": "3.0.0", 50 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", 51 | "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", 52 | "dependencies": { 53 | "@aws-crypto/util": "^3.0.0", 54 | "@aws-sdk/types": "^3.222.0", 55 | "tslib": "^1.11.1" 56 | } 57 | }, 58 | "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { 59 | "version": "1.14.1", 60 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 61 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 62 | }, 63 | "node_modules/@aws-crypto/supports-web-crypto": { 64 | "version": "3.0.0", 65 | "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", 66 | "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", 67 | "dependencies": { 68 | "tslib": "^1.11.1" 69 | } 70 | }, 71 | "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { 72 | "version": "1.14.1", 73 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 74 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 75 | }, 76 | "node_modules/@aws-crypto/util": { 77 | "version": "3.0.0", 78 | "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", 79 | "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", 80 | "dependencies": { 81 | "@aws-sdk/types": "^3.222.0", 82 | "@aws-sdk/util-utf8-browser": "^3.0.0", 83 | "tslib": "^1.11.1" 84 | } 85 | }, 86 | "node_modules/@aws-crypto/util/node_modules/tslib": { 87 | "version": "1.14.1", 88 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 89 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 90 | }, 91 | "node_modules/@aws-sdk/abort-controller": { 92 | "version": "3.310.0", 93 | "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", 94 | "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", 95 | "dependencies": { 96 | "@aws-sdk/types": "3.310.0", 97 | "tslib": "^2.5.0" 98 | }, 99 | "engines": { 100 | "node": ">=14.0.0" 101 | } 102 | }, 103 | "node_modules/@aws-sdk/client-cloudwatch-logs": { 104 | "version": "3.312.0", 105 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.312.0.tgz", 106 | "integrity": "sha512-AM5Ne5/OSS1Ku1ZVJDn9wRTqCev1J3EkwhOw70aYgt6HZyj/HpuWBn33z6+Fv8ajFIQBqHcUBQdZTsFn85cgKw==", 107 | "dependencies": { 108 | "@aws-crypto/sha256-browser": "3.0.0", 109 | "@aws-crypto/sha256-js": "3.0.0", 110 | "@aws-sdk/client-sts": "3.312.0", 111 | "@aws-sdk/config-resolver": "3.310.0", 112 | "@aws-sdk/credential-provider-node": "3.310.0", 113 | "@aws-sdk/fetch-http-handler": "3.310.0", 114 | "@aws-sdk/hash-node": "3.310.0", 115 | "@aws-sdk/invalid-dependency": "3.310.0", 116 | "@aws-sdk/middleware-content-length": "3.310.0", 117 | "@aws-sdk/middleware-endpoint": "3.310.0", 118 | "@aws-sdk/middleware-host-header": "3.310.0", 119 | "@aws-sdk/middleware-logger": "3.310.0", 120 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 121 | "@aws-sdk/middleware-retry": "3.310.0", 122 | "@aws-sdk/middleware-serde": "3.310.0", 123 | "@aws-sdk/middleware-signing": "3.310.0", 124 | "@aws-sdk/middleware-stack": "3.310.0", 125 | "@aws-sdk/middleware-user-agent": "3.310.0", 126 | "@aws-sdk/node-config-provider": "3.310.0", 127 | "@aws-sdk/node-http-handler": "3.310.0", 128 | "@aws-sdk/protocol-http": "3.310.0", 129 | "@aws-sdk/smithy-client": "3.310.0", 130 | "@aws-sdk/types": "3.310.0", 131 | "@aws-sdk/url-parser": "3.310.0", 132 | "@aws-sdk/util-base64": "3.310.0", 133 | "@aws-sdk/util-body-length-browser": "3.310.0", 134 | "@aws-sdk/util-body-length-node": "3.310.0", 135 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 136 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 137 | "@aws-sdk/util-endpoints": "3.310.0", 138 | "@aws-sdk/util-retry": "3.310.0", 139 | "@aws-sdk/util-user-agent-browser": "3.310.0", 140 | "@aws-sdk/util-user-agent-node": "3.310.0", 141 | "@aws-sdk/util-utf8": "3.310.0", 142 | "tslib": "^2.5.0" 143 | }, 144 | "engines": { 145 | "node": ">=14.0.0" 146 | } 147 | }, 148 | "node_modules/@aws-sdk/client-sso": { 149 | "version": "3.310.0", 150 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.310.0.tgz", 151 | "integrity": "sha512-netFap3Mp9I7bzAjsswHPA5WEbQtNMmXvW9/IVb7tmf85/esXCWindtyI43e/Xerut9ZVyEACPBFn30CLLE2xQ==", 152 | "dependencies": { 153 | "@aws-crypto/sha256-browser": "3.0.0", 154 | "@aws-crypto/sha256-js": "3.0.0", 155 | "@aws-sdk/config-resolver": "3.310.0", 156 | "@aws-sdk/fetch-http-handler": "3.310.0", 157 | "@aws-sdk/hash-node": "3.310.0", 158 | "@aws-sdk/invalid-dependency": "3.310.0", 159 | "@aws-sdk/middleware-content-length": "3.310.0", 160 | "@aws-sdk/middleware-endpoint": "3.310.0", 161 | "@aws-sdk/middleware-host-header": "3.310.0", 162 | "@aws-sdk/middleware-logger": "3.310.0", 163 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 164 | "@aws-sdk/middleware-retry": "3.310.0", 165 | "@aws-sdk/middleware-serde": "3.310.0", 166 | "@aws-sdk/middleware-stack": "3.310.0", 167 | "@aws-sdk/middleware-user-agent": "3.310.0", 168 | "@aws-sdk/node-config-provider": "3.310.0", 169 | "@aws-sdk/node-http-handler": "3.310.0", 170 | "@aws-sdk/protocol-http": "3.310.0", 171 | "@aws-sdk/smithy-client": "3.310.0", 172 | "@aws-sdk/types": "3.310.0", 173 | "@aws-sdk/url-parser": "3.310.0", 174 | "@aws-sdk/util-base64": "3.310.0", 175 | "@aws-sdk/util-body-length-browser": "3.310.0", 176 | "@aws-sdk/util-body-length-node": "3.310.0", 177 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 178 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 179 | "@aws-sdk/util-endpoints": "3.310.0", 180 | "@aws-sdk/util-retry": "3.310.0", 181 | "@aws-sdk/util-user-agent-browser": "3.310.0", 182 | "@aws-sdk/util-user-agent-node": "3.310.0", 183 | "@aws-sdk/util-utf8": "3.310.0", 184 | "tslib": "^2.5.0" 185 | }, 186 | "engines": { 187 | "node": ">=14.0.0" 188 | } 189 | }, 190 | "node_modules/@aws-sdk/client-sso-oidc": { 191 | "version": "3.310.0", 192 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.310.0.tgz", 193 | "integrity": "sha512-3GKaRSfMD3OiYWGa+qg5KvJw0nLV0Vu7zRiulLuKDvgmWw3SNJKn3frWlmq/bKFUKahLsV8zozbeJItxtKAD6g==", 194 | "dependencies": { 195 | "@aws-crypto/sha256-browser": "3.0.0", 196 | "@aws-crypto/sha256-js": "3.0.0", 197 | "@aws-sdk/config-resolver": "3.310.0", 198 | "@aws-sdk/fetch-http-handler": "3.310.0", 199 | "@aws-sdk/hash-node": "3.310.0", 200 | "@aws-sdk/invalid-dependency": "3.310.0", 201 | "@aws-sdk/middleware-content-length": "3.310.0", 202 | "@aws-sdk/middleware-endpoint": "3.310.0", 203 | "@aws-sdk/middleware-host-header": "3.310.0", 204 | "@aws-sdk/middleware-logger": "3.310.0", 205 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 206 | "@aws-sdk/middleware-retry": "3.310.0", 207 | "@aws-sdk/middleware-serde": "3.310.0", 208 | "@aws-sdk/middleware-stack": "3.310.0", 209 | "@aws-sdk/middleware-user-agent": "3.310.0", 210 | "@aws-sdk/node-config-provider": "3.310.0", 211 | "@aws-sdk/node-http-handler": "3.310.0", 212 | "@aws-sdk/protocol-http": "3.310.0", 213 | "@aws-sdk/smithy-client": "3.310.0", 214 | "@aws-sdk/types": "3.310.0", 215 | "@aws-sdk/url-parser": "3.310.0", 216 | "@aws-sdk/util-base64": "3.310.0", 217 | "@aws-sdk/util-body-length-browser": "3.310.0", 218 | "@aws-sdk/util-body-length-node": "3.310.0", 219 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 220 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 221 | "@aws-sdk/util-endpoints": "3.310.0", 222 | "@aws-sdk/util-retry": "3.310.0", 223 | "@aws-sdk/util-user-agent-browser": "3.310.0", 224 | "@aws-sdk/util-user-agent-node": "3.310.0", 225 | "@aws-sdk/util-utf8": "3.310.0", 226 | "tslib": "^2.5.0" 227 | }, 228 | "engines": { 229 | "node": ">=14.0.0" 230 | } 231 | }, 232 | "node_modules/@aws-sdk/client-sts": { 233 | "version": "3.312.0", 234 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.312.0.tgz", 235 | "integrity": "sha512-t0U7vRvWaMjrzBUo6tPrHe6HE97Blqx+b4GOjFbcbLtzxLlcRfhnWJik0Lp8hJtVqzNoN5mL4OeYgK7CRpL/Sw==", 236 | "dependencies": { 237 | "@aws-crypto/sha256-browser": "3.0.0", 238 | "@aws-crypto/sha256-js": "3.0.0", 239 | "@aws-sdk/config-resolver": "3.310.0", 240 | "@aws-sdk/credential-provider-node": "3.310.0", 241 | "@aws-sdk/fetch-http-handler": "3.310.0", 242 | "@aws-sdk/hash-node": "3.310.0", 243 | "@aws-sdk/invalid-dependency": "3.310.0", 244 | "@aws-sdk/middleware-content-length": "3.310.0", 245 | "@aws-sdk/middleware-endpoint": "3.310.0", 246 | "@aws-sdk/middleware-host-header": "3.310.0", 247 | "@aws-sdk/middleware-logger": "3.310.0", 248 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 249 | "@aws-sdk/middleware-retry": "3.310.0", 250 | "@aws-sdk/middleware-sdk-sts": "3.310.0", 251 | "@aws-sdk/middleware-serde": "3.310.0", 252 | "@aws-sdk/middleware-signing": "3.310.0", 253 | "@aws-sdk/middleware-stack": "3.310.0", 254 | "@aws-sdk/middleware-user-agent": "3.310.0", 255 | "@aws-sdk/node-config-provider": "3.310.0", 256 | "@aws-sdk/node-http-handler": "3.310.0", 257 | "@aws-sdk/protocol-http": "3.310.0", 258 | "@aws-sdk/smithy-client": "3.310.0", 259 | "@aws-sdk/types": "3.310.0", 260 | "@aws-sdk/url-parser": "3.310.0", 261 | "@aws-sdk/util-base64": "3.310.0", 262 | "@aws-sdk/util-body-length-browser": "3.310.0", 263 | "@aws-sdk/util-body-length-node": "3.310.0", 264 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 265 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 266 | "@aws-sdk/util-endpoints": "3.310.0", 267 | "@aws-sdk/util-retry": "3.310.0", 268 | "@aws-sdk/util-user-agent-browser": "3.310.0", 269 | "@aws-sdk/util-user-agent-node": "3.310.0", 270 | "@aws-sdk/util-utf8": "3.310.0", 271 | "fast-xml-parser": "4.1.2", 272 | "tslib": "^2.5.0" 273 | }, 274 | "engines": { 275 | "node": ">=14.0.0" 276 | } 277 | }, 278 | "node_modules/@aws-sdk/config-resolver": { 279 | "version": "3.310.0", 280 | "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", 281 | "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", 282 | "dependencies": { 283 | "@aws-sdk/types": "3.310.0", 284 | "@aws-sdk/util-config-provider": "3.310.0", 285 | "@aws-sdk/util-middleware": "3.310.0", 286 | "tslib": "^2.5.0" 287 | }, 288 | "engines": { 289 | "node": ">=14.0.0" 290 | } 291 | }, 292 | "node_modules/@aws-sdk/credential-provider-env": { 293 | "version": "3.310.0", 294 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", 295 | "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", 296 | "dependencies": { 297 | "@aws-sdk/property-provider": "3.310.0", 298 | "@aws-sdk/types": "3.310.0", 299 | "tslib": "^2.5.0" 300 | }, 301 | "engines": { 302 | "node": ">=14.0.0" 303 | } 304 | }, 305 | "node_modules/@aws-sdk/credential-provider-imds": { 306 | "version": "3.310.0", 307 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", 308 | "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", 309 | "dependencies": { 310 | "@aws-sdk/node-config-provider": "3.310.0", 311 | "@aws-sdk/property-provider": "3.310.0", 312 | "@aws-sdk/types": "3.310.0", 313 | "@aws-sdk/url-parser": "3.310.0", 314 | "tslib": "^2.5.0" 315 | }, 316 | "engines": { 317 | "node": ">=14.0.0" 318 | } 319 | }, 320 | "node_modules/@aws-sdk/credential-provider-ini": { 321 | "version": "3.310.0", 322 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.310.0.tgz", 323 | "integrity": "sha512-gtRz7I+4BBpwZ3tc6UIt5lQuiAFnkpOibxHh95x1M6HDxBjm+uqD6RPZYVH+dULZPYXOtOTsHV0IGjrcV0sSRg==", 324 | "dependencies": { 325 | "@aws-sdk/credential-provider-env": "3.310.0", 326 | "@aws-sdk/credential-provider-imds": "3.310.0", 327 | "@aws-sdk/credential-provider-process": "3.310.0", 328 | "@aws-sdk/credential-provider-sso": "3.310.0", 329 | "@aws-sdk/credential-provider-web-identity": "3.310.0", 330 | "@aws-sdk/property-provider": "3.310.0", 331 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 332 | "@aws-sdk/types": "3.310.0", 333 | "tslib": "^2.5.0" 334 | }, 335 | "engines": { 336 | "node": ">=14.0.0" 337 | } 338 | }, 339 | "node_modules/@aws-sdk/credential-provider-node": { 340 | "version": "3.310.0", 341 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.310.0.tgz", 342 | "integrity": "sha512-FrOztUcOq2Sp32xGtJvxfvdlmuAeoxIu/AElHzV1bkx6Pzo9DkQBhXrSQ+JFSpI++weOD4ZGFhAvgbgUOT4VAg==", 343 | "dependencies": { 344 | "@aws-sdk/credential-provider-env": "3.310.0", 345 | "@aws-sdk/credential-provider-imds": "3.310.0", 346 | "@aws-sdk/credential-provider-ini": "3.310.0", 347 | "@aws-sdk/credential-provider-process": "3.310.0", 348 | "@aws-sdk/credential-provider-sso": "3.310.0", 349 | "@aws-sdk/credential-provider-web-identity": "3.310.0", 350 | "@aws-sdk/property-provider": "3.310.0", 351 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 352 | "@aws-sdk/types": "3.310.0", 353 | "tslib": "^2.5.0" 354 | }, 355 | "engines": { 356 | "node": ">=14.0.0" 357 | } 358 | }, 359 | "node_modules/@aws-sdk/credential-provider-process": { 360 | "version": "3.310.0", 361 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", 362 | "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", 363 | "dependencies": { 364 | "@aws-sdk/property-provider": "3.310.0", 365 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 366 | "@aws-sdk/types": "3.310.0", 367 | "tslib": "^2.5.0" 368 | }, 369 | "engines": { 370 | "node": ">=14.0.0" 371 | } 372 | }, 373 | "node_modules/@aws-sdk/credential-provider-sso": { 374 | "version": "3.310.0", 375 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.310.0.tgz", 376 | "integrity": "sha512-nXkpT8mrM/wRqSiz/a4p9U2UrOKyfZXhbPHIHyQj8K+uLjsYS+WPuH287J4A5Q57A6uarTrj5RjHmVeZVLaHmg==", 377 | "dependencies": { 378 | "@aws-sdk/client-sso": "3.310.0", 379 | "@aws-sdk/property-provider": "3.310.0", 380 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 381 | "@aws-sdk/token-providers": "3.310.0", 382 | "@aws-sdk/types": "3.310.0", 383 | "tslib": "^2.5.0" 384 | }, 385 | "engines": { 386 | "node": ">=14.0.0" 387 | } 388 | }, 389 | "node_modules/@aws-sdk/credential-provider-web-identity": { 390 | "version": "3.310.0", 391 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", 392 | "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", 393 | "dependencies": { 394 | "@aws-sdk/property-provider": "3.310.0", 395 | "@aws-sdk/types": "3.310.0", 396 | "tslib": "^2.5.0" 397 | }, 398 | "engines": { 399 | "node": ">=14.0.0" 400 | } 401 | }, 402 | "node_modules/@aws-sdk/fetch-http-handler": { 403 | "version": "3.310.0", 404 | "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", 405 | "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", 406 | "dependencies": { 407 | "@aws-sdk/protocol-http": "3.310.0", 408 | "@aws-sdk/querystring-builder": "3.310.0", 409 | "@aws-sdk/types": "3.310.0", 410 | "@aws-sdk/util-base64": "3.310.0", 411 | "tslib": "^2.5.0" 412 | } 413 | }, 414 | "node_modules/@aws-sdk/hash-node": { 415 | "version": "3.310.0", 416 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", 417 | "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", 418 | "dependencies": { 419 | "@aws-sdk/types": "3.310.0", 420 | "@aws-sdk/util-buffer-from": "3.310.0", 421 | "@aws-sdk/util-utf8": "3.310.0", 422 | "tslib": "^2.5.0" 423 | }, 424 | "engines": { 425 | "node": ">=14.0.0" 426 | } 427 | }, 428 | "node_modules/@aws-sdk/invalid-dependency": { 429 | "version": "3.310.0", 430 | "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", 431 | "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", 432 | "dependencies": { 433 | "@aws-sdk/types": "3.310.0", 434 | "tslib": "^2.5.0" 435 | } 436 | }, 437 | "node_modules/@aws-sdk/is-array-buffer": { 438 | "version": "3.310.0", 439 | "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", 440 | "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", 441 | "dependencies": { 442 | "tslib": "^2.5.0" 443 | }, 444 | "engines": { 445 | "node": ">=14.0.0" 446 | } 447 | }, 448 | "node_modules/@aws-sdk/middleware-content-length": { 449 | "version": "3.310.0", 450 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz", 451 | "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==", 452 | "dependencies": { 453 | "@aws-sdk/protocol-http": "3.310.0", 454 | "@aws-sdk/types": "3.310.0", 455 | "tslib": "^2.5.0" 456 | }, 457 | "engines": { 458 | "node": ">=14.0.0" 459 | } 460 | }, 461 | "node_modules/@aws-sdk/middleware-endpoint": { 462 | "version": "3.310.0", 463 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz", 464 | "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==", 465 | "dependencies": { 466 | "@aws-sdk/middleware-serde": "3.310.0", 467 | "@aws-sdk/types": "3.310.0", 468 | "@aws-sdk/url-parser": "3.310.0", 469 | "@aws-sdk/util-middleware": "3.310.0", 470 | "tslib": "^2.5.0" 471 | }, 472 | "engines": { 473 | "node": ">=14.0.0" 474 | } 475 | }, 476 | "node_modules/@aws-sdk/middleware-host-header": { 477 | "version": "3.310.0", 478 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz", 479 | "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==", 480 | "dependencies": { 481 | "@aws-sdk/protocol-http": "3.310.0", 482 | "@aws-sdk/types": "3.310.0", 483 | "tslib": "^2.5.0" 484 | }, 485 | "engines": { 486 | "node": ">=14.0.0" 487 | } 488 | }, 489 | "node_modules/@aws-sdk/middleware-logger": { 490 | "version": "3.310.0", 491 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz", 492 | "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==", 493 | "dependencies": { 494 | "@aws-sdk/types": "3.310.0", 495 | "tslib": "^2.5.0" 496 | }, 497 | "engines": { 498 | "node": ">=14.0.0" 499 | } 500 | }, 501 | "node_modules/@aws-sdk/middleware-recursion-detection": { 502 | "version": "3.310.0", 503 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz", 504 | "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==", 505 | "dependencies": { 506 | "@aws-sdk/protocol-http": "3.310.0", 507 | "@aws-sdk/types": "3.310.0", 508 | "tslib": "^2.5.0" 509 | }, 510 | "engines": { 511 | "node": ">=14.0.0" 512 | } 513 | }, 514 | "node_modules/@aws-sdk/middleware-retry": { 515 | "version": "3.310.0", 516 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz", 517 | "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==", 518 | "dependencies": { 519 | "@aws-sdk/protocol-http": "3.310.0", 520 | "@aws-sdk/service-error-classification": "3.310.0", 521 | "@aws-sdk/types": "3.310.0", 522 | "@aws-sdk/util-middleware": "3.310.0", 523 | "@aws-sdk/util-retry": "3.310.0", 524 | "tslib": "^2.5.0", 525 | "uuid": "^8.3.2" 526 | }, 527 | "engines": { 528 | "node": ">=14.0.0" 529 | } 530 | }, 531 | "node_modules/@aws-sdk/middleware-sdk-sts": { 532 | "version": "3.310.0", 533 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz", 534 | "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==", 535 | "dependencies": { 536 | "@aws-sdk/middleware-signing": "3.310.0", 537 | "@aws-sdk/types": "3.310.0", 538 | "tslib": "^2.5.0" 539 | }, 540 | "engines": { 541 | "node": ">=14.0.0" 542 | } 543 | }, 544 | "node_modules/@aws-sdk/middleware-serde": { 545 | "version": "3.310.0", 546 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz", 547 | "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==", 548 | "dependencies": { 549 | "@aws-sdk/types": "3.310.0", 550 | "tslib": "^2.5.0" 551 | }, 552 | "engines": { 553 | "node": ">=14.0.0" 554 | } 555 | }, 556 | "node_modules/@aws-sdk/middleware-signing": { 557 | "version": "3.310.0", 558 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz", 559 | "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==", 560 | "dependencies": { 561 | "@aws-sdk/property-provider": "3.310.0", 562 | "@aws-sdk/protocol-http": "3.310.0", 563 | "@aws-sdk/signature-v4": "3.310.0", 564 | "@aws-sdk/types": "3.310.0", 565 | "@aws-sdk/util-middleware": "3.310.0", 566 | "tslib": "^2.5.0" 567 | }, 568 | "engines": { 569 | "node": ">=14.0.0" 570 | } 571 | }, 572 | "node_modules/@aws-sdk/middleware-stack": { 573 | "version": "3.310.0", 574 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz", 575 | "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==", 576 | "dependencies": { 577 | "tslib": "^2.5.0" 578 | }, 579 | "engines": { 580 | "node": ">=14.0.0" 581 | } 582 | }, 583 | "node_modules/@aws-sdk/middleware-user-agent": { 584 | "version": "3.310.0", 585 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz", 586 | "integrity": "sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g==", 587 | "dependencies": { 588 | "@aws-sdk/protocol-http": "3.310.0", 589 | "@aws-sdk/types": "3.310.0", 590 | "@aws-sdk/util-endpoints": "3.310.0", 591 | "tslib": "^2.5.0" 592 | }, 593 | "engines": { 594 | "node": ">=14.0.0" 595 | } 596 | }, 597 | "node_modules/@aws-sdk/node-config-provider": { 598 | "version": "3.310.0", 599 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", 600 | "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", 601 | "dependencies": { 602 | "@aws-sdk/property-provider": "3.310.0", 603 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 604 | "@aws-sdk/types": "3.310.0", 605 | "tslib": "^2.5.0" 606 | }, 607 | "engines": { 608 | "node": ">=14.0.0" 609 | } 610 | }, 611 | "node_modules/@aws-sdk/node-http-handler": { 612 | "version": "3.310.0", 613 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz", 614 | "integrity": "sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg==", 615 | "dependencies": { 616 | "@aws-sdk/abort-controller": "3.310.0", 617 | "@aws-sdk/protocol-http": "3.310.0", 618 | "@aws-sdk/querystring-builder": "3.310.0", 619 | "@aws-sdk/types": "3.310.0", 620 | "tslib": "^2.5.0" 621 | }, 622 | "engines": { 623 | "node": ">=14.0.0" 624 | } 625 | }, 626 | "node_modules/@aws-sdk/property-provider": { 627 | "version": "3.310.0", 628 | "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", 629 | "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", 630 | "dependencies": { 631 | "@aws-sdk/types": "3.310.0", 632 | "tslib": "^2.5.0" 633 | }, 634 | "engines": { 635 | "node": ">=14.0.0" 636 | } 637 | }, 638 | "node_modules/@aws-sdk/protocol-http": { 639 | "version": "3.310.0", 640 | "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", 641 | "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", 642 | "dependencies": { 643 | "@aws-sdk/types": "3.310.0", 644 | "tslib": "^2.5.0" 645 | }, 646 | "engines": { 647 | "node": ">=14.0.0" 648 | } 649 | }, 650 | "node_modules/@aws-sdk/querystring-builder": { 651 | "version": "3.310.0", 652 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", 653 | "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", 654 | "dependencies": { 655 | "@aws-sdk/types": "3.310.0", 656 | "@aws-sdk/util-uri-escape": "3.310.0", 657 | "tslib": "^2.5.0" 658 | }, 659 | "engines": { 660 | "node": ">=14.0.0" 661 | } 662 | }, 663 | "node_modules/@aws-sdk/querystring-parser": { 664 | "version": "3.310.0", 665 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", 666 | "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", 667 | "dependencies": { 668 | "@aws-sdk/types": "3.310.0", 669 | "tslib": "^2.5.0" 670 | }, 671 | "engines": { 672 | "node": ">=14.0.0" 673 | } 674 | }, 675 | "node_modules/@aws-sdk/service-error-classification": { 676 | "version": "3.310.0", 677 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", 678 | "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==", 679 | "engines": { 680 | "node": ">=14.0.0" 681 | } 682 | }, 683 | "node_modules/@aws-sdk/shared-ini-file-loader": { 684 | "version": "3.310.0", 685 | "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", 686 | "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", 687 | "dependencies": { 688 | "@aws-sdk/types": "3.310.0", 689 | "tslib": "^2.5.0" 690 | }, 691 | "engines": { 692 | "node": ">=14.0.0" 693 | } 694 | }, 695 | "node_modules/@aws-sdk/signature-v4": { 696 | "version": "3.310.0", 697 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", 698 | "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", 699 | "dependencies": { 700 | "@aws-sdk/is-array-buffer": "3.310.0", 701 | "@aws-sdk/types": "3.310.0", 702 | "@aws-sdk/util-hex-encoding": "3.310.0", 703 | "@aws-sdk/util-middleware": "3.310.0", 704 | "@aws-sdk/util-uri-escape": "3.310.0", 705 | "@aws-sdk/util-utf8": "3.310.0", 706 | "tslib": "^2.5.0" 707 | }, 708 | "engines": { 709 | "node": ">=14.0.0" 710 | } 711 | }, 712 | "node_modules/@aws-sdk/smithy-client": { 713 | "version": "3.310.0", 714 | "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.310.0.tgz", 715 | "integrity": "sha512-UHMFvhoB2RLzsTb0mQe1ofvBUg/+/JEu1uptavxf/hEpEKZnRAaHH5FNkTG+mbFd/olay/QFjqNcMD6t8LcsNQ==", 716 | "dependencies": { 717 | "@aws-sdk/middleware-stack": "3.310.0", 718 | "@aws-sdk/types": "3.310.0", 719 | "tslib": "^2.5.0" 720 | }, 721 | "engines": { 722 | "node": ">=14.0.0" 723 | } 724 | }, 725 | "node_modules/@aws-sdk/token-providers": { 726 | "version": "3.310.0", 727 | "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.310.0.tgz", 728 | "integrity": "sha512-G1JvB+2v8k900VJFkKVQXgLGF50ShOEIPxfK1gSQLkSU85vPwGIAANs1KvnlW08FsNbWp3+sKca4kfYKsooXMw==", 729 | "dependencies": { 730 | "@aws-sdk/client-sso-oidc": "3.310.0", 731 | "@aws-sdk/property-provider": "3.310.0", 732 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 733 | "@aws-sdk/types": "3.310.0", 734 | "tslib": "^2.5.0" 735 | }, 736 | "engines": { 737 | "node": ">=14.0.0" 738 | } 739 | }, 740 | "node_modules/@aws-sdk/types": { 741 | "version": "3.310.0", 742 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", 743 | "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", 744 | "dependencies": { 745 | "tslib": "^2.5.0" 746 | }, 747 | "engines": { 748 | "node": ">=14.0.0" 749 | } 750 | }, 751 | "node_modules/@aws-sdk/url-parser": { 752 | "version": "3.310.0", 753 | "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", 754 | "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", 755 | "dependencies": { 756 | "@aws-sdk/querystring-parser": "3.310.0", 757 | "@aws-sdk/types": "3.310.0", 758 | "tslib": "^2.5.0" 759 | } 760 | }, 761 | "node_modules/@aws-sdk/util-base64": { 762 | "version": "3.310.0", 763 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", 764 | "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", 765 | "dependencies": { 766 | "@aws-sdk/util-buffer-from": "3.310.0", 767 | "tslib": "^2.5.0" 768 | }, 769 | "engines": { 770 | "node": ">=14.0.0" 771 | } 772 | }, 773 | "node_modules/@aws-sdk/util-body-length-browser": { 774 | "version": "3.310.0", 775 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", 776 | "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", 777 | "dependencies": { 778 | "tslib": "^2.5.0" 779 | } 780 | }, 781 | "node_modules/@aws-sdk/util-body-length-node": { 782 | "version": "3.310.0", 783 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", 784 | "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", 785 | "dependencies": { 786 | "tslib": "^2.5.0" 787 | }, 788 | "engines": { 789 | "node": ">=14.0.0" 790 | } 791 | }, 792 | "node_modules/@aws-sdk/util-buffer-from": { 793 | "version": "3.310.0", 794 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", 795 | "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", 796 | "dependencies": { 797 | "@aws-sdk/is-array-buffer": "3.310.0", 798 | "tslib": "^2.5.0" 799 | }, 800 | "engines": { 801 | "node": ">=14.0.0" 802 | } 803 | }, 804 | "node_modules/@aws-sdk/util-config-provider": { 805 | "version": "3.310.0", 806 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", 807 | "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", 808 | "dependencies": { 809 | "tslib": "^2.5.0" 810 | }, 811 | "engines": { 812 | "node": ">=14.0.0" 813 | } 814 | }, 815 | "node_modules/@aws-sdk/util-defaults-mode-browser": { 816 | "version": "3.310.0", 817 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.310.0.tgz", 818 | "integrity": "sha512-Mr2AoQsjAYNM5oAS2YJlYJqhiCvkFV/hu48slOZgbY4G7ueW4cM0DPkR16wqjcRCGqZ4JmAZB8Q5R0DMrLjhOQ==", 819 | "dependencies": { 820 | "@aws-sdk/property-provider": "3.310.0", 821 | "@aws-sdk/types": "3.310.0", 822 | "bowser": "^2.11.0", 823 | "tslib": "^2.5.0" 824 | }, 825 | "engines": { 826 | "node": ">= 10.0.0" 827 | } 828 | }, 829 | "node_modules/@aws-sdk/util-defaults-mode-node": { 830 | "version": "3.310.0", 831 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.310.0.tgz", 832 | "integrity": "sha512-JyBlvhQGR8w8NpFRZZXRVTDesafFKTu/gTWjcoxP7twa+fYHSIgPPFGnlcJ/iHaucjamSaWi5EQ+YQmnSZ8yHA==", 833 | "dependencies": { 834 | "@aws-sdk/config-resolver": "3.310.0", 835 | "@aws-sdk/credential-provider-imds": "3.310.0", 836 | "@aws-sdk/node-config-provider": "3.310.0", 837 | "@aws-sdk/property-provider": "3.310.0", 838 | "@aws-sdk/types": "3.310.0", 839 | "tslib": "^2.5.0" 840 | }, 841 | "engines": { 842 | "node": ">= 10.0.0" 843 | } 844 | }, 845 | "node_modules/@aws-sdk/util-endpoints": { 846 | "version": "3.310.0", 847 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz", 848 | "integrity": "sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ==", 849 | "dependencies": { 850 | "@aws-sdk/types": "3.310.0", 851 | "tslib": "^2.5.0" 852 | }, 853 | "engines": { 854 | "node": ">=14.0.0" 855 | } 856 | }, 857 | "node_modules/@aws-sdk/util-hex-encoding": { 858 | "version": "3.310.0", 859 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", 860 | "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", 861 | "dependencies": { 862 | "tslib": "^2.5.0" 863 | }, 864 | "engines": { 865 | "node": ">=14.0.0" 866 | } 867 | }, 868 | "node_modules/@aws-sdk/util-locate-window": { 869 | "version": "3.310.0", 870 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", 871 | "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", 872 | "dependencies": { 873 | "tslib": "^2.5.0" 874 | }, 875 | "engines": { 876 | "node": ">=14.0.0" 877 | } 878 | }, 879 | "node_modules/@aws-sdk/util-middleware": { 880 | "version": "3.310.0", 881 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", 882 | "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", 883 | "dependencies": { 884 | "tslib": "^2.5.0" 885 | }, 886 | "engines": { 887 | "node": ">=14.0.0" 888 | } 889 | }, 890 | "node_modules/@aws-sdk/util-retry": { 891 | "version": "3.310.0", 892 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", 893 | "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", 894 | "dependencies": { 895 | "@aws-sdk/service-error-classification": "3.310.0", 896 | "tslib": "^2.5.0" 897 | }, 898 | "engines": { 899 | "node": ">= 14.0.0" 900 | } 901 | }, 902 | "node_modules/@aws-sdk/util-uri-escape": { 903 | "version": "3.310.0", 904 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", 905 | "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", 906 | "dependencies": { 907 | "tslib": "^2.5.0" 908 | }, 909 | "engines": { 910 | "node": ">=14.0.0" 911 | } 912 | }, 913 | "node_modules/@aws-sdk/util-user-agent-browser": { 914 | "version": "3.310.0", 915 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", 916 | "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", 917 | "dependencies": { 918 | "@aws-sdk/types": "3.310.0", 919 | "bowser": "^2.11.0", 920 | "tslib": "^2.5.0" 921 | } 922 | }, 923 | "node_modules/@aws-sdk/util-user-agent-node": { 924 | "version": "3.310.0", 925 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", 926 | "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", 927 | "dependencies": { 928 | "@aws-sdk/node-config-provider": "3.310.0", 929 | "@aws-sdk/types": "3.310.0", 930 | "tslib": "^2.5.0" 931 | }, 932 | "engines": { 933 | "node": ">=14.0.0" 934 | }, 935 | "peerDependencies": { 936 | "aws-crt": ">=1.0.0" 937 | }, 938 | "peerDependenciesMeta": { 939 | "aws-crt": { 940 | "optional": true 941 | } 942 | } 943 | }, 944 | "node_modules/@aws-sdk/util-utf8": { 945 | "version": "3.310.0", 946 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", 947 | "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", 948 | "dependencies": { 949 | "@aws-sdk/util-buffer-from": "3.310.0", 950 | "tslib": "^2.5.0" 951 | }, 952 | "engines": { 953 | "node": ">=14.0.0" 954 | } 955 | }, 956 | "node_modules/@aws-sdk/util-utf8-browser": { 957 | "version": "3.259.0", 958 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", 959 | "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", 960 | "dependencies": { 961 | "tslib": "^2.3.1" 962 | } 963 | }, 964 | "node_modules/bowser": { 965 | "version": "2.11.0", 966 | "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", 967 | "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" 968 | }, 969 | "node_modules/fast-xml-parser": { 970 | "version": "4.1.2", 971 | "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", 972 | "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", 973 | "dependencies": { 974 | "strnum": "^1.0.5" 975 | }, 976 | "bin": { 977 | "fxparser": "src/cli/cli.js" 978 | }, 979 | "funding": { 980 | "type": "paypal", 981 | "url": "https://paypal.me/naturalintelligence" 982 | } 983 | }, 984 | "node_modules/strnum": { 985 | "version": "1.0.5", 986 | "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", 987 | "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" 988 | }, 989 | "node_modules/tslib": { 990 | "version": "2.5.0", 991 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 992 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 993 | }, 994 | "node_modules/uuid": { 995 | "version": "8.3.2", 996 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 997 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 998 | "bin": { 999 | "uuid": "dist/bin/uuid" 1000 | } 1001 | } 1002 | }, 1003 | "dependencies": { 1004 | "@aws-crypto/ie11-detection": { 1005 | "version": "3.0.0", 1006 | "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", 1007 | "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", 1008 | "requires": { 1009 | "tslib": "^1.11.1" 1010 | }, 1011 | "dependencies": { 1012 | "tslib": { 1013 | "version": "1.14.1", 1014 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1015 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1016 | } 1017 | } 1018 | }, 1019 | "@aws-crypto/sha256-browser": { 1020 | "version": "3.0.0", 1021 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", 1022 | "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", 1023 | "requires": { 1024 | "@aws-crypto/ie11-detection": "^3.0.0", 1025 | "@aws-crypto/sha256-js": "^3.0.0", 1026 | "@aws-crypto/supports-web-crypto": "^3.0.0", 1027 | "@aws-crypto/util": "^3.0.0", 1028 | "@aws-sdk/types": "^3.222.0", 1029 | "@aws-sdk/util-locate-window": "^3.0.0", 1030 | "@aws-sdk/util-utf8-browser": "^3.0.0", 1031 | "tslib": "^1.11.1" 1032 | }, 1033 | "dependencies": { 1034 | "tslib": { 1035 | "version": "1.14.1", 1036 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1037 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1038 | } 1039 | } 1040 | }, 1041 | "@aws-crypto/sha256-js": { 1042 | "version": "3.0.0", 1043 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", 1044 | "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", 1045 | "requires": { 1046 | "@aws-crypto/util": "^3.0.0", 1047 | "@aws-sdk/types": "^3.222.0", 1048 | "tslib": "^1.11.1" 1049 | }, 1050 | "dependencies": { 1051 | "tslib": { 1052 | "version": "1.14.1", 1053 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1054 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1055 | } 1056 | } 1057 | }, 1058 | "@aws-crypto/supports-web-crypto": { 1059 | "version": "3.0.0", 1060 | "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", 1061 | "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", 1062 | "requires": { 1063 | "tslib": "^1.11.1" 1064 | }, 1065 | "dependencies": { 1066 | "tslib": { 1067 | "version": "1.14.1", 1068 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1069 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1070 | } 1071 | } 1072 | }, 1073 | "@aws-crypto/util": { 1074 | "version": "3.0.0", 1075 | "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", 1076 | "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", 1077 | "requires": { 1078 | "@aws-sdk/types": "^3.222.0", 1079 | "@aws-sdk/util-utf8-browser": "^3.0.0", 1080 | "tslib": "^1.11.1" 1081 | }, 1082 | "dependencies": { 1083 | "tslib": { 1084 | "version": "1.14.1", 1085 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1086 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" 1087 | } 1088 | } 1089 | }, 1090 | "@aws-sdk/abort-controller": { 1091 | "version": "3.310.0", 1092 | "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.310.0.tgz", 1093 | "integrity": "sha512-v1zrRQxDLA1MdPim159Vx/CPHqsB4uybSxRi1CnfHO5ZjHryx3a5htW2gdGAykVCul40+yJXvfpufMrELVxH+g==", 1094 | "requires": { 1095 | "@aws-sdk/types": "3.310.0", 1096 | "tslib": "^2.5.0" 1097 | } 1098 | }, 1099 | "@aws-sdk/client-cloudwatch-logs": { 1100 | "version": "3.312.0", 1101 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudwatch-logs/-/client-cloudwatch-logs-3.312.0.tgz", 1102 | "integrity": "sha512-AM5Ne5/OSS1Ku1ZVJDn9wRTqCev1J3EkwhOw70aYgt6HZyj/HpuWBn33z6+Fv8ajFIQBqHcUBQdZTsFn85cgKw==", 1103 | "requires": { 1104 | "@aws-crypto/sha256-browser": "3.0.0", 1105 | "@aws-crypto/sha256-js": "3.0.0", 1106 | "@aws-sdk/client-sts": "3.312.0", 1107 | "@aws-sdk/config-resolver": "3.310.0", 1108 | "@aws-sdk/credential-provider-node": "3.310.0", 1109 | "@aws-sdk/fetch-http-handler": "3.310.0", 1110 | "@aws-sdk/hash-node": "3.310.0", 1111 | "@aws-sdk/invalid-dependency": "3.310.0", 1112 | "@aws-sdk/middleware-content-length": "3.310.0", 1113 | "@aws-sdk/middleware-endpoint": "3.310.0", 1114 | "@aws-sdk/middleware-host-header": "3.310.0", 1115 | "@aws-sdk/middleware-logger": "3.310.0", 1116 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 1117 | "@aws-sdk/middleware-retry": "3.310.0", 1118 | "@aws-sdk/middleware-serde": "3.310.0", 1119 | "@aws-sdk/middleware-signing": "3.310.0", 1120 | "@aws-sdk/middleware-stack": "3.310.0", 1121 | "@aws-sdk/middleware-user-agent": "3.310.0", 1122 | "@aws-sdk/node-config-provider": "3.310.0", 1123 | "@aws-sdk/node-http-handler": "3.310.0", 1124 | "@aws-sdk/protocol-http": "3.310.0", 1125 | "@aws-sdk/smithy-client": "3.310.0", 1126 | "@aws-sdk/types": "3.310.0", 1127 | "@aws-sdk/url-parser": "3.310.0", 1128 | "@aws-sdk/util-base64": "3.310.0", 1129 | "@aws-sdk/util-body-length-browser": "3.310.0", 1130 | "@aws-sdk/util-body-length-node": "3.310.0", 1131 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 1132 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 1133 | "@aws-sdk/util-endpoints": "3.310.0", 1134 | "@aws-sdk/util-retry": "3.310.0", 1135 | "@aws-sdk/util-user-agent-browser": "3.310.0", 1136 | "@aws-sdk/util-user-agent-node": "3.310.0", 1137 | "@aws-sdk/util-utf8": "3.310.0", 1138 | "tslib": "^2.5.0" 1139 | } 1140 | }, 1141 | "@aws-sdk/client-sso": { 1142 | "version": "3.310.0", 1143 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.310.0.tgz", 1144 | "integrity": "sha512-netFap3Mp9I7bzAjsswHPA5WEbQtNMmXvW9/IVb7tmf85/esXCWindtyI43e/Xerut9ZVyEACPBFn30CLLE2xQ==", 1145 | "requires": { 1146 | "@aws-crypto/sha256-browser": "3.0.0", 1147 | "@aws-crypto/sha256-js": "3.0.0", 1148 | "@aws-sdk/config-resolver": "3.310.0", 1149 | "@aws-sdk/fetch-http-handler": "3.310.0", 1150 | "@aws-sdk/hash-node": "3.310.0", 1151 | "@aws-sdk/invalid-dependency": "3.310.0", 1152 | "@aws-sdk/middleware-content-length": "3.310.0", 1153 | "@aws-sdk/middleware-endpoint": "3.310.0", 1154 | "@aws-sdk/middleware-host-header": "3.310.0", 1155 | "@aws-sdk/middleware-logger": "3.310.0", 1156 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 1157 | "@aws-sdk/middleware-retry": "3.310.0", 1158 | "@aws-sdk/middleware-serde": "3.310.0", 1159 | "@aws-sdk/middleware-stack": "3.310.0", 1160 | "@aws-sdk/middleware-user-agent": "3.310.0", 1161 | "@aws-sdk/node-config-provider": "3.310.0", 1162 | "@aws-sdk/node-http-handler": "3.310.0", 1163 | "@aws-sdk/protocol-http": "3.310.0", 1164 | "@aws-sdk/smithy-client": "3.310.0", 1165 | "@aws-sdk/types": "3.310.0", 1166 | "@aws-sdk/url-parser": "3.310.0", 1167 | "@aws-sdk/util-base64": "3.310.0", 1168 | "@aws-sdk/util-body-length-browser": "3.310.0", 1169 | "@aws-sdk/util-body-length-node": "3.310.0", 1170 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 1171 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 1172 | "@aws-sdk/util-endpoints": "3.310.0", 1173 | "@aws-sdk/util-retry": "3.310.0", 1174 | "@aws-sdk/util-user-agent-browser": "3.310.0", 1175 | "@aws-sdk/util-user-agent-node": "3.310.0", 1176 | "@aws-sdk/util-utf8": "3.310.0", 1177 | "tslib": "^2.5.0" 1178 | } 1179 | }, 1180 | "@aws-sdk/client-sso-oidc": { 1181 | "version": "3.310.0", 1182 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.310.0.tgz", 1183 | "integrity": "sha512-3GKaRSfMD3OiYWGa+qg5KvJw0nLV0Vu7zRiulLuKDvgmWw3SNJKn3frWlmq/bKFUKahLsV8zozbeJItxtKAD6g==", 1184 | "requires": { 1185 | "@aws-crypto/sha256-browser": "3.0.0", 1186 | "@aws-crypto/sha256-js": "3.0.0", 1187 | "@aws-sdk/config-resolver": "3.310.0", 1188 | "@aws-sdk/fetch-http-handler": "3.310.0", 1189 | "@aws-sdk/hash-node": "3.310.0", 1190 | "@aws-sdk/invalid-dependency": "3.310.0", 1191 | "@aws-sdk/middleware-content-length": "3.310.0", 1192 | "@aws-sdk/middleware-endpoint": "3.310.0", 1193 | "@aws-sdk/middleware-host-header": "3.310.0", 1194 | "@aws-sdk/middleware-logger": "3.310.0", 1195 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 1196 | "@aws-sdk/middleware-retry": "3.310.0", 1197 | "@aws-sdk/middleware-serde": "3.310.0", 1198 | "@aws-sdk/middleware-stack": "3.310.0", 1199 | "@aws-sdk/middleware-user-agent": "3.310.0", 1200 | "@aws-sdk/node-config-provider": "3.310.0", 1201 | "@aws-sdk/node-http-handler": "3.310.0", 1202 | "@aws-sdk/protocol-http": "3.310.0", 1203 | "@aws-sdk/smithy-client": "3.310.0", 1204 | "@aws-sdk/types": "3.310.0", 1205 | "@aws-sdk/url-parser": "3.310.0", 1206 | "@aws-sdk/util-base64": "3.310.0", 1207 | "@aws-sdk/util-body-length-browser": "3.310.0", 1208 | "@aws-sdk/util-body-length-node": "3.310.0", 1209 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 1210 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 1211 | "@aws-sdk/util-endpoints": "3.310.0", 1212 | "@aws-sdk/util-retry": "3.310.0", 1213 | "@aws-sdk/util-user-agent-browser": "3.310.0", 1214 | "@aws-sdk/util-user-agent-node": "3.310.0", 1215 | "@aws-sdk/util-utf8": "3.310.0", 1216 | "tslib": "^2.5.0" 1217 | } 1218 | }, 1219 | "@aws-sdk/client-sts": { 1220 | "version": "3.312.0", 1221 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.312.0.tgz", 1222 | "integrity": "sha512-t0U7vRvWaMjrzBUo6tPrHe6HE97Blqx+b4GOjFbcbLtzxLlcRfhnWJik0Lp8hJtVqzNoN5mL4OeYgK7CRpL/Sw==", 1223 | "requires": { 1224 | "@aws-crypto/sha256-browser": "3.0.0", 1225 | "@aws-crypto/sha256-js": "3.0.0", 1226 | "@aws-sdk/config-resolver": "3.310.0", 1227 | "@aws-sdk/credential-provider-node": "3.310.0", 1228 | "@aws-sdk/fetch-http-handler": "3.310.0", 1229 | "@aws-sdk/hash-node": "3.310.0", 1230 | "@aws-sdk/invalid-dependency": "3.310.0", 1231 | "@aws-sdk/middleware-content-length": "3.310.0", 1232 | "@aws-sdk/middleware-endpoint": "3.310.0", 1233 | "@aws-sdk/middleware-host-header": "3.310.0", 1234 | "@aws-sdk/middleware-logger": "3.310.0", 1235 | "@aws-sdk/middleware-recursion-detection": "3.310.0", 1236 | "@aws-sdk/middleware-retry": "3.310.0", 1237 | "@aws-sdk/middleware-sdk-sts": "3.310.0", 1238 | "@aws-sdk/middleware-serde": "3.310.0", 1239 | "@aws-sdk/middleware-signing": "3.310.0", 1240 | "@aws-sdk/middleware-stack": "3.310.0", 1241 | "@aws-sdk/middleware-user-agent": "3.310.0", 1242 | "@aws-sdk/node-config-provider": "3.310.0", 1243 | "@aws-sdk/node-http-handler": "3.310.0", 1244 | "@aws-sdk/protocol-http": "3.310.0", 1245 | "@aws-sdk/smithy-client": "3.310.0", 1246 | "@aws-sdk/types": "3.310.0", 1247 | "@aws-sdk/url-parser": "3.310.0", 1248 | "@aws-sdk/util-base64": "3.310.0", 1249 | "@aws-sdk/util-body-length-browser": "3.310.0", 1250 | "@aws-sdk/util-body-length-node": "3.310.0", 1251 | "@aws-sdk/util-defaults-mode-browser": "3.310.0", 1252 | "@aws-sdk/util-defaults-mode-node": "3.310.0", 1253 | "@aws-sdk/util-endpoints": "3.310.0", 1254 | "@aws-sdk/util-retry": "3.310.0", 1255 | "@aws-sdk/util-user-agent-browser": "3.310.0", 1256 | "@aws-sdk/util-user-agent-node": "3.310.0", 1257 | "@aws-sdk/util-utf8": "3.310.0", 1258 | "fast-xml-parser": "4.1.2", 1259 | "tslib": "^2.5.0" 1260 | } 1261 | }, 1262 | "@aws-sdk/config-resolver": { 1263 | "version": "3.310.0", 1264 | "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.310.0.tgz", 1265 | "integrity": "sha512-8vsT+/50lOqfDxka9m/rRt6oxv1WuGZoP8oPMk0Dt+TxXMbAzf4+rejBgiB96wshI1k3gLokYRjSQZn+dDtT8g==", 1266 | "requires": { 1267 | "@aws-sdk/types": "3.310.0", 1268 | "@aws-sdk/util-config-provider": "3.310.0", 1269 | "@aws-sdk/util-middleware": "3.310.0", 1270 | "tslib": "^2.5.0" 1271 | } 1272 | }, 1273 | "@aws-sdk/credential-provider-env": { 1274 | "version": "3.310.0", 1275 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.310.0.tgz", 1276 | "integrity": "sha512-vvIPQpI16fj95xwS7M3D48F7QhZJBnnCgB5lR+b7So+vsG9ibm1mZRVGzVpdxCvgyOhHFbvrby9aalNJmmIP1A==", 1277 | "requires": { 1278 | "@aws-sdk/property-provider": "3.310.0", 1279 | "@aws-sdk/types": "3.310.0", 1280 | "tslib": "^2.5.0" 1281 | } 1282 | }, 1283 | "@aws-sdk/credential-provider-imds": { 1284 | "version": "3.310.0", 1285 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.310.0.tgz", 1286 | "integrity": "sha512-baxK7Zp6dai5AGW01FIW27xS2KAaPUmKLIXv5SvFYsUgXXvNW55im4uG3b+2gA0F7V+hXvVBH08OEqmwW6we5w==", 1287 | "requires": { 1288 | "@aws-sdk/node-config-provider": "3.310.0", 1289 | "@aws-sdk/property-provider": "3.310.0", 1290 | "@aws-sdk/types": "3.310.0", 1291 | "@aws-sdk/url-parser": "3.310.0", 1292 | "tslib": "^2.5.0" 1293 | } 1294 | }, 1295 | "@aws-sdk/credential-provider-ini": { 1296 | "version": "3.310.0", 1297 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.310.0.tgz", 1298 | "integrity": "sha512-gtRz7I+4BBpwZ3tc6UIt5lQuiAFnkpOibxHh95x1M6HDxBjm+uqD6RPZYVH+dULZPYXOtOTsHV0IGjrcV0sSRg==", 1299 | "requires": { 1300 | "@aws-sdk/credential-provider-env": "3.310.0", 1301 | "@aws-sdk/credential-provider-imds": "3.310.0", 1302 | "@aws-sdk/credential-provider-process": "3.310.0", 1303 | "@aws-sdk/credential-provider-sso": "3.310.0", 1304 | "@aws-sdk/credential-provider-web-identity": "3.310.0", 1305 | "@aws-sdk/property-provider": "3.310.0", 1306 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 1307 | "@aws-sdk/types": "3.310.0", 1308 | "tslib": "^2.5.0" 1309 | } 1310 | }, 1311 | "@aws-sdk/credential-provider-node": { 1312 | "version": "3.310.0", 1313 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.310.0.tgz", 1314 | "integrity": "sha512-FrOztUcOq2Sp32xGtJvxfvdlmuAeoxIu/AElHzV1bkx6Pzo9DkQBhXrSQ+JFSpI++weOD4ZGFhAvgbgUOT4VAg==", 1315 | "requires": { 1316 | "@aws-sdk/credential-provider-env": "3.310.0", 1317 | "@aws-sdk/credential-provider-imds": "3.310.0", 1318 | "@aws-sdk/credential-provider-ini": "3.310.0", 1319 | "@aws-sdk/credential-provider-process": "3.310.0", 1320 | "@aws-sdk/credential-provider-sso": "3.310.0", 1321 | "@aws-sdk/credential-provider-web-identity": "3.310.0", 1322 | "@aws-sdk/property-provider": "3.310.0", 1323 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 1324 | "@aws-sdk/types": "3.310.0", 1325 | "tslib": "^2.5.0" 1326 | } 1327 | }, 1328 | "@aws-sdk/credential-provider-process": { 1329 | "version": "3.310.0", 1330 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.310.0.tgz", 1331 | "integrity": "sha512-h73sg6GPMUWC+3zMCbA1nZ2O03nNJt7G96JdmnantiXBwHpRKWW8nBTLzx5uhXn6hTuTaoQRP/P+oxQJKYdMmA==", 1332 | "requires": { 1333 | "@aws-sdk/property-provider": "3.310.0", 1334 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 1335 | "@aws-sdk/types": "3.310.0", 1336 | "tslib": "^2.5.0" 1337 | } 1338 | }, 1339 | "@aws-sdk/credential-provider-sso": { 1340 | "version": "3.310.0", 1341 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.310.0.tgz", 1342 | "integrity": "sha512-nXkpT8mrM/wRqSiz/a4p9U2UrOKyfZXhbPHIHyQj8K+uLjsYS+WPuH287J4A5Q57A6uarTrj5RjHmVeZVLaHmg==", 1343 | "requires": { 1344 | "@aws-sdk/client-sso": "3.310.0", 1345 | "@aws-sdk/property-provider": "3.310.0", 1346 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 1347 | "@aws-sdk/token-providers": "3.310.0", 1348 | "@aws-sdk/types": "3.310.0", 1349 | "tslib": "^2.5.0" 1350 | } 1351 | }, 1352 | "@aws-sdk/credential-provider-web-identity": { 1353 | "version": "3.310.0", 1354 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.310.0.tgz", 1355 | "integrity": "sha512-H4SzuZXILNhK6/IR1uVvsUDZvzc051hem7GLyYghBCu8mU+tq28YhKE8MfSroi6eL2e5Vujloij1OM2EQQkPkw==", 1356 | "requires": { 1357 | "@aws-sdk/property-provider": "3.310.0", 1358 | "@aws-sdk/types": "3.310.0", 1359 | "tslib": "^2.5.0" 1360 | } 1361 | }, 1362 | "@aws-sdk/fetch-http-handler": { 1363 | "version": "3.310.0", 1364 | "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.310.0.tgz", 1365 | "integrity": "sha512-Bi9vIwzdkw1zMcvi/zGzlWS9KfIEnAq4NNhsnCxbQ4OoIRU9wvU+WGZdBBhxg0ZxZmpp1j1aZhU53lLjA07MHw==", 1366 | "requires": { 1367 | "@aws-sdk/protocol-http": "3.310.0", 1368 | "@aws-sdk/querystring-builder": "3.310.0", 1369 | "@aws-sdk/types": "3.310.0", 1370 | "@aws-sdk/util-base64": "3.310.0", 1371 | "tslib": "^2.5.0" 1372 | } 1373 | }, 1374 | "@aws-sdk/hash-node": { 1375 | "version": "3.310.0", 1376 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.310.0.tgz", 1377 | "integrity": "sha512-NvE2fhRc8GRwCXBfDehxVAWCmVwVMILliAKVPAEr4yz2CkYs0tqU51S48x23dtna07H4qHtgpeNqVTthcIQOEQ==", 1378 | "requires": { 1379 | "@aws-sdk/types": "3.310.0", 1380 | "@aws-sdk/util-buffer-from": "3.310.0", 1381 | "@aws-sdk/util-utf8": "3.310.0", 1382 | "tslib": "^2.5.0" 1383 | } 1384 | }, 1385 | "@aws-sdk/invalid-dependency": { 1386 | "version": "3.310.0", 1387 | "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.310.0.tgz", 1388 | "integrity": "sha512-1s5RG5rSPXoa/aZ/Kqr5U/7lqpx+Ry81GprQ2bxWqJvWQIJ0IRUwo5pk8XFxbKVr/2a+4lZT/c3OGoBOM1yRRA==", 1389 | "requires": { 1390 | "@aws-sdk/types": "3.310.0", 1391 | "tslib": "^2.5.0" 1392 | } 1393 | }, 1394 | "@aws-sdk/is-array-buffer": { 1395 | "version": "3.310.0", 1396 | "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.310.0.tgz", 1397 | "integrity": "sha512-urnbcCR+h9NWUnmOtet/s4ghvzsidFmspfhYaHAmSRdy9yDjdjBJMFjjsn85A1ODUktztm+cVncXjQ38WCMjMQ==", 1398 | "requires": { 1399 | "tslib": "^2.5.0" 1400 | } 1401 | }, 1402 | "@aws-sdk/middleware-content-length": { 1403 | "version": "3.310.0", 1404 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.310.0.tgz", 1405 | "integrity": "sha512-P8tQZxgDt6CAh1wd/W6WPzjc+uWPJwQkm+F7rAwRlM+k9q17HrhnksGDKcpuuLyIhPQYdmOMIkpKVgXGa4avhQ==", 1406 | "requires": { 1407 | "@aws-sdk/protocol-http": "3.310.0", 1408 | "@aws-sdk/types": "3.310.0", 1409 | "tslib": "^2.5.0" 1410 | } 1411 | }, 1412 | "@aws-sdk/middleware-endpoint": { 1413 | "version": "3.310.0", 1414 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.310.0.tgz", 1415 | "integrity": "sha512-Z+N2vOL8K354/lstkClxLLsr6hCpVRh+0tCMXrVj66/NtKysCEZ/0b9LmqOwD9pWHNiI2mJqXwY0gxNlKAroUg==", 1416 | "requires": { 1417 | "@aws-sdk/middleware-serde": "3.310.0", 1418 | "@aws-sdk/types": "3.310.0", 1419 | "@aws-sdk/url-parser": "3.310.0", 1420 | "@aws-sdk/util-middleware": "3.310.0", 1421 | "tslib": "^2.5.0" 1422 | } 1423 | }, 1424 | "@aws-sdk/middleware-host-header": { 1425 | "version": "3.310.0", 1426 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.310.0.tgz", 1427 | "integrity": "sha512-QWSA+46/hXorXyWa61ic2K7qZzwHTiwfk2e9mRRjeIRepUgI3qxFjsYqrWtrOGBjmFmq0pYIY8Bb/DCJuQqcoA==", 1428 | "requires": { 1429 | "@aws-sdk/protocol-http": "3.310.0", 1430 | "@aws-sdk/types": "3.310.0", 1431 | "tslib": "^2.5.0" 1432 | } 1433 | }, 1434 | "@aws-sdk/middleware-logger": { 1435 | "version": "3.310.0", 1436 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.310.0.tgz", 1437 | "integrity": "sha512-Lurm8XofrASBRnAVtiSNuDSRsRqPNg27RIFLLsLp/pqog9nFJ0vz0kgdb9S5Z+zw83Mm+UlqOe6D8NTUNp4fVg==", 1438 | "requires": { 1439 | "@aws-sdk/types": "3.310.0", 1440 | "tslib": "^2.5.0" 1441 | } 1442 | }, 1443 | "@aws-sdk/middleware-recursion-detection": { 1444 | "version": "3.310.0", 1445 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.310.0.tgz", 1446 | "integrity": "sha512-SuB75/xk/gyue24gkriTwO2jFd7YcUGZDClQYuRejgbXSa3CO0lWyawQtfLcSSEBp9izrEVXuFH24K1eAft5nQ==", 1447 | "requires": { 1448 | "@aws-sdk/protocol-http": "3.310.0", 1449 | "@aws-sdk/types": "3.310.0", 1450 | "tslib": "^2.5.0" 1451 | } 1452 | }, 1453 | "@aws-sdk/middleware-retry": { 1454 | "version": "3.310.0", 1455 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.310.0.tgz", 1456 | "integrity": "sha512-oTPsRy2W4s+dfxbJPW7Km+hHtv/OMsNsVfThAq8DDYKC13qlr1aAyOqGLD+dpBy2aKe7ss517Sy2HcHtHqm7/g==", 1457 | "requires": { 1458 | "@aws-sdk/protocol-http": "3.310.0", 1459 | "@aws-sdk/service-error-classification": "3.310.0", 1460 | "@aws-sdk/types": "3.310.0", 1461 | "@aws-sdk/util-middleware": "3.310.0", 1462 | "@aws-sdk/util-retry": "3.310.0", 1463 | "tslib": "^2.5.0", 1464 | "uuid": "^8.3.2" 1465 | } 1466 | }, 1467 | "@aws-sdk/middleware-sdk-sts": { 1468 | "version": "3.310.0", 1469 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.310.0.tgz", 1470 | "integrity": "sha512-+5PFwlYNLvLLIfw0ASAoWV/iIF8Zv6R6QGtyP0CclhRSvNjgbQDVnV0g95MC5qvh+GB/Yjlkt8qAjLSPjHfsrQ==", 1471 | "requires": { 1472 | "@aws-sdk/middleware-signing": "3.310.0", 1473 | "@aws-sdk/types": "3.310.0", 1474 | "tslib": "^2.5.0" 1475 | } 1476 | }, 1477 | "@aws-sdk/middleware-serde": { 1478 | "version": "3.310.0", 1479 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.310.0.tgz", 1480 | "integrity": "sha512-RNeeTVWSLTaentUeCgQKZhAl+C6hxtwD78cQWS10UymWpQFwbaxztzKUu4UQS5xA2j6PxwPRRUjqa4jcFjfLsg==", 1481 | "requires": { 1482 | "@aws-sdk/types": "3.310.0", 1483 | "tslib": "^2.5.0" 1484 | } 1485 | }, 1486 | "@aws-sdk/middleware-signing": { 1487 | "version": "3.310.0", 1488 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.310.0.tgz", 1489 | "integrity": "sha512-f9mKq+XMdW207Af3hKjdTnpNhdtwqWuvFs/ZyXoOkp/g1MY1O6L23Jy6i52m29LxbT4AuNRG1oKODfXM0vYVjQ==", 1490 | "requires": { 1491 | "@aws-sdk/property-provider": "3.310.0", 1492 | "@aws-sdk/protocol-http": "3.310.0", 1493 | "@aws-sdk/signature-v4": "3.310.0", 1494 | "@aws-sdk/types": "3.310.0", 1495 | "@aws-sdk/util-middleware": "3.310.0", 1496 | "tslib": "^2.5.0" 1497 | } 1498 | }, 1499 | "@aws-sdk/middleware-stack": { 1500 | "version": "3.310.0", 1501 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.310.0.tgz", 1502 | "integrity": "sha512-010O1PD+UAcZVKRvqEusE1KJqN96wwrf6QsqbRM0ywsKQ21NDweaHvEDlds2VHpgmofxkRLRu/IDrlPkKRQrRg==", 1503 | "requires": { 1504 | "tslib": "^2.5.0" 1505 | } 1506 | }, 1507 | "@aws-sdk/middleware-user-agent": { 1508 | "version": "3.310.0", 1509 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.310.0.tgz", 1510 | "integrity": "sha512-x3IOwSwSbwKidlxRk3CNVHVUb06SRuaELxggCaR++QVI8NU6qD/l4VHXKVRvbTHiC/cYxXE/GaBDgQVpDR7V/g==", 1511 | "requires": { 1512 | "@aws-sdk/protocol-http": "3.310.0", 1513 | "@aws-sdk/types": "3.310.0", 1514 | "@aws-sdk/util-endpoints": "3.310.0", 1515 | "tslib": "^2.5.0" 1516 | } 1517 | }, 1518 | "@aws-sdk/node-config-provider": { 1519 | "version": "3.310.0", 1520 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.310.0.tgz", 1521 | "integrity": "sha512-T/Pp6htc6hq/Cq+MLNDSyiwWCMVF6GqbBbXKVlO5L8rdHx4sq9xPdoPveZhGWrxvkanjA6eCwUp6E0riBOSVng==", 1522 | "requires": { 1523 | "@aws-sdk/property-provider": "3.310.0", 1524 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 1525 | "@aws-sdk/types": "3.310.0", 1526 | "tslib": "^2.5.0" 1527 | } 1528 | }, 1529 | "@aws-sdk/node-http-handler": { 1530 | "version": "3.310.0", 1531 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.310.0.tgz", 1532 | "integrity": "sha512-irv9mbcM9xC2xYjArQF5SYmHBMu4ciMWtGsoHII1nRuFOl9FoT4ffTvEPuLlfC6pznzvKt9zvnm6xXj7gDChKg==", 1533 | "requires": { 1534 | "@aws-sdk/abort-controller": "3.310.0", 1535 | "@aws-sdk/protocol-http": "3.310.0", 1536 | "@aws-sdk/querystring-builder": "3.310.0", 1537 | "@aws-sdk/types": "3.310.0", 1538 | "tslib": "^2.5.0" 1539 | } 1540 | }, 1541 | "@aws-sdk/property-provider": { 1542 | "version": "3.310.0", 1543 | "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.310.0.tgz", 1544 | "integrity": "sha512-3lxDb0akV6BBzmFe4nLPaoliQbAifyWJhuvuDOu7e8NzouvpQXs0275w9LePhhcgjKAEVXUIse05ZW2DLbxo/g==", 1545 | "requires": { 1546 | "@aws-sdk/types": "3.310.0", 1547 | "tslib": "^2.5.0" 1548 | } 1549 | }, 1550 | "@aws-sdk/protocol-http": { 1551 | "version": "3.310.0", 1552 | "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.310.0.tgz", 1553 | "integrity": "sha512-fgZ1aw/irQtnrsR58pS8ThKOWo57Py3xX6giRvwSgZDEcxHfVzuQjy9yPuV++v04fdmdtgpbGf8WfvAAJ11yXQ==", 1554 | "requires": { 1555 | "@aws-sdk/types": "3.310.0", 1556 | "tslib": "^2.5.0" 1557 | } 1558 | }, 1559 | "@aws-sdk/querystring-builder": { 1560 | "version": "3.310.0", 1561 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.310.0.tgz", 1562 | "integrity": "sha512-ZHH8GV/80+pWGo7DzsvwvXR5xVxUHXUvPJPFAkhr6nCf78igdoF8gR10ScFoEKbtEapoNTaZlKHPXxpD8aPG7A==", 1563 | "requires": { 1564 | "@aws-sdk/types": "3.310.0", 1565 | "@aws-sdk/util-uri-escape": "3.310.0", 1566 | "tslib": "^2.5.0" 1567 | } 1568 | }, 1569 | "@aws-sdk/querystring-parser": { 1570 | "version": "3.310.0", 1571 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.310.0.tgz", 1572 | "integrity": "sha512-YkIznoP6lsiIUHinx++/lbb3tlMURGGqMpo0Pnn32zYzGrJXA6eC3D0as2EcMjo55onTfuLcIiX4qzXes2MYOA==", 1573 | "requires": { 1574 | "@aws-sdk/types": "3.310.0", 1575 | "tslib": "^2.5.0" 1576 | } 1577 | }, 1578 | "@aws-sdk/service-error-classification": { 1579 | "version": "3.310.0", 1580 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.310.0.tgz", 1581 | "integrity": "sha512-PuyC7k3qfIKeH2LCnDwbttMOKq3qAx4buvg0yfnJtQOz6t1AR8gsnAq0CjKXXyfkXwNKWTqCpE6lVNUIkXgsMw==" 1582 | }, 1583 | "@aws-sdk/shared-ini-file-loader": { 1584 | "version": "3.310.0", 1585 | "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.310.0.tgz", 1586 | "integrity": "sha512-N0q9pG0xSjQwc690YQND5bofm+4nfUviQ/Ppgan2kU6aU0WUq8KwgHJBto/YEEI+VlrME30jZJnxtOvcZJc2XA==", 1587 | "requires": { 1588 | "@aws-sdk/types": "3.310.0", 1589 | "tslib": "^2.5.0" 1590 | } 1591 | }, 1592 | "@aws-sdk/signature-v4": { 1593 | "version": "3.310.0", 1594 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.310.0.tgz", 1595 | "integrity": "sha512-1M60P1ZBNAjCFv9sYW29OF6okktaeibWyW3lMXqzoHF70lHBZh+838iUchznXUA5FLabfn4jBFWMRxlAXJUY2Q==", 1596 | "requires": { 1597 | "@aws-sdk/is-array-buffer": "3.310.0", 1598 | "@aws-sdk/types": "3.310.0", 1599 | "@aws-sdk/util-hex-encoding": "3.310.0", 1600 | "@aws-sdk/util-middleware": "3.310.0", 1601 | "@aws-sdk/util-uri-escape": "3.310.0", 1602 | "@aws-sdk/util-utf8": "3.310.0", 1603 | "tslib": "^2.5.0" 1604 | } 1605 | }, 1606 | "@aws-sdk/smithy-client": { 1607 | "version": "3.310.0", 1608 | "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.310.0.tgz", 1609 | "integrity": "sha512-UHMFvhoB2RLzsTb0mQe1ofvBUg/+/JEu1uptavxf/hEpEKZnRAaHH5FNkTG+mbFd/olay/QFjqNcMD6t8LcsNQ==", 1610 | "requires": { 1611 | "@aws-sdk/middleware-stack": "3.310.0", 1612 | "@aws-sdk/types": "3.310.0", 1613 | "tslib": "^2.5.0" 1614 | } 1615 | }, 1616 | "@aws-sdk/token-providers": { 1617 | "version": "3.310.0", 1618 | "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.310.0.tgz", 1619 | "integrity": "sha512-G1JvB+2v8k900VJFkKVQXgLGF50ShOEIPxfK1gSQLkSU85vPwGIAANs1KvnlW08FsNbWp3+sKca4kfYKsooXMw==", 1620 | "requires": { 1621 | "@aws-sdk/client-sso-oidc": "3.310.0", 1622 | "@aws-sdk/property-provider": "3.310.0", 1623 | "@aws-sdk/shared-ini-file-loader": "3.310.0", 1624 | "@aws-sdk/types": "3.310.0", 1625 | "tslib": "^2.5.0" 1626 | } 1627 | }, 1628 | "@aws-sdk/types": { 1629 | "version": "3.310.0", 1630 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.310.0.tgz", 1631 | "integrity": "sha512-j8eamQJ7YcIhw7fneUfs8LYl3t01k4uHi4ZDmNRgtbmbmTTG3FZc2MotStZnp3nZB6vLiPF1o5aoJxWVvkzS6A==", 1632 | "requires": { 1633 | "tslib": "^2.5.0" 1634 | } 1635 | }, 1636 | "@aws-sdk/url-parser": { 1637 | "version": "3.310.0", 1638 | "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.310.0.tgz", 1639 | "integrity": "sha512-mCLnCaSB9rQvAgx33u0DujLvr4d5yEm/W5r789GblwwQnlNXedVu50QRizMLTpltYWyAUoXjJgQnJHmJMaKXhw==", 1640 | "requires": { 1641 | "@aws-sdk/querystring-parser": "3.310.0", 1642 | "@aws-sdk/types": "3.310.0", 1643 | "tslib": "^2.5.0" 1644 | } 1645 | }, 1646 | "@aws-sdk/util-base64": { 1647 | "version": "3.310.0", 1648 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.310.0.tgz", 1649 | "integrity": "sha512-v3+HBKQvqgdzcbL+pFswlx5HQsd9L6ZTlyPVL2LS9nNXnCcR3XgGz9jRskikRUuUvUXtkSG1J88GAOnJ/apTPg==", 1650 | "requires": { 1651 | "@aws-sdk/util-buffer-from": "3.310.0", 1652 | "tslib": "^2.5.0" 1653 | } 1654 | }, 1655 | "@aws-sdk/util-body-length-browser": { 1656 | "version": "3.310.0", 1657 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.310.0.tgz", 1658 | "integrity": "sha512-sxsC3lPBGfpHtNTUoGXMQXLwjmR0zVpx0rSvzTPAuoVILVsp5AU/w5FphNPxD5OVIjNbZv9KsKTuvNTiZjDp9g==", 1659 | "requires": { 1660 | "tslib": "^2.5.0" 1661 | } 1662 | }, 1663 | "@aws-sdk/util-body-length-node": { 1664 | "version": "3.310.0", 1665 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.310.0.tgz", 1666 | "integrity": "sha512-2tqGXdyKhyA6w4zz7UPoS8Ip+7sayOg9BwHNidiGm2ikbDxm1YrCfYXvCBdwaJxa4hJfRVz+aL9e+d3GqPI9pQ==", 1667 | "requires": { 1668 | "tslib": "^2.5.0" 1669 | } 1670 | }, 1671 | "@aws-sdk/util-buffer-from": { 1672 | "version": "3.310.0", 1673 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.310.0.tgz", 1674 | "integrity": "sha512-i6LVeXFtGih5Zs8enLrt+ExXY92QV25jtEnTKHsmlFqFAuL3VBeod6boeMXkN2p9lbSVVQ1sAOOYZOHYbYkntw==", 1675 | "requires": { 1676 | "@aws-sdk/is-array-buffer": "3.310.0", 1677 | "tslib": "^2.5.0" 1678 | } 1679 | }, 1680 | "@aws-sdk/util-config-provider": { 1681 | "version": "3.310.0", 1682 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.310.0.tgz", 1683 | "integrity": "sha512-xIBaYo8dwiojCw8vnUcIL4Z5tyfb1v3yjqyJKJWV/dqKUFOOS0U591plmXbM+M/QkXyML3ypon1f8+BoaDExrg==", 1684 | "requires": { 1685 | "tslib": "^2.5.0" 1686 | } 1687 | }, 1688 | "@aws-sdk/util-defaults-mode-browser": { 1689 | "version": "3.310.0", 1690 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.310.0.tgz", 1691 | "integrity": "sha512-Mr2AoQsjAYNM5oAS2YJlYJqhiCvkFV/hu48slOZgbY4G7ueW4cM0DPkR16wqjcRCGqZ4JmAZB8Q5R0DMrLjhOQ==", 1692 | "requires": { 1693 | "@aws-sdk/property-provider": "3.310.0", 1694 | "@aws-sdk/types": "3.310.0", 1695 | "bowser": "^2.11.0", 1696 | "tslib": "^2.5.0" 1697 | } 1698 | }, 1699 | "@aws-sdk/util-defaults-mode-node": { 1700 | "version": "3.310.0", 1701 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.310.0.tgz", 1702 | "integrity": "sha512-JyBlvhQGR8w8NpFRZZXRVTDesafFKTu/gTWjcoxP7twa+fYHSIgPPFGnlcJ/iHaucjamSaWi5EQ+YQmnSZ8yHA==", 1703 | "requires": { 1704 | "@aws-sdk/config-resolver": "3.310.0", 1705 | "@aws-sdk/credential-provider-imds": "3.310.0", 1706 | "@aws-sdk/node-config-provider": "3.310.0", 1707 | "@aws-sdk/property-provider": "3.310.0", 1708 | "@aws-sdk/types": "3.310.0", 1709 | "tslib": "^2.5.0" 1710 | } 1711 | }, 1712 | "@aws-sdk/util-endpoints": { 1713 | "version": "3.310.0", 1714 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.310.0.tgz", 1715 | "integrity": "sha512-zG+/d/O5KPmAaeOMPd6bW1abifdT0H03f42keLjYEoRZzYtHPC5DuPE0UayiWGckI6BCDgy0sRKXCYS49UNFaQ==", 1716 | "requires": { 1717 | "@aws-sdk/types": "3.310.0", 1718 | "tslib": "^2.5.0" 1719 | } 1720 | }, 1721 | "@aws-sdk/util-hex-encoding": { 1722 | "version": "3.310.0", 1723 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.310.0.tgz", 1724 | "integrity": "sha512-sVN7mcCCDSJ67pI1ZMtk84SKGqyix6/0A1Ab163YKn+lFBQRMKexleZzpYzNGxYzmQS6VanP/cfU7NiLQOaSfA==", 1725 | "requires": { 1726 | "tslib": "^2.5.0" 1727 | } 1728 | }, 1729 | "@aws-sdk/util-locate-window": { 1730 | "version": "3.310.0", 1731 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.310.0.tgz", 1732 | "integrity": "sha512-qo2t/vBTnoXpjKxlsC2e1gBrRm80M3bId27r0BRB2VniSSe7bL1mmzM+/HFtujm0iAxtPM+aLEflLJlJeDPg0w==", 1733 | "requires": { 1734 | "tslib": "^2.5.0" 1735 | } 1736 | }, 1737 | "@aws-sdk/util-middleware": { 1738 | "version": "3.310.0", 1739 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.310.0.tgz", 1740 | "integrity": "sha512-FTSUKL/eRb9X6uEZClrTe27QFXUNNp7fxYrPndZwk1hlaOP5ix+MIHBcI7pIiiY/JPfOUmPyZOu+HetlFXjWog==", 1741 | "requires": { 1742 | "tslib": "^2.5.0" 1743 | } 1744 | }, 1745 | "@aws-sdk/util-retry": { 1746 | "version": "3.310.0", 1747 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.310.0.tgz", 1748 | "integrity": "sha512-FwWGhCBLfoivTMUHu1LIn4NjrN9JLJ/aX5aZmbcPIOhZVFJj638j0qDgZXyfvVqBuBZh7M8kGq0Oahy3dp69OA==", 1749 | "requires": { 1750 | "@aws-sdk/service-error-classification": "3.310.0", 1751 | "tslib": "^2.5.0" 1752 | } 1753 | }, 1754 | "@aws-sdk/util-uri-escape": { 1755 | "version": "3.310.0", 1756 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.310.0.tgz", 1757 | "integrity": "sha512-drzt+aB2qo2LgtDoiy/3sVG8w63cgLkqFIa2NFlGpUgHFWTXkqtbgf4L5QdjRGKWhmZsnqkbtL7vkSWEcYDJ4Q==", 1758 | "requires": { 1759 | "tslib": "^2.5.0" 1760 | } 1761 | }, 1762 | "@aws-sdk/util-user-agent-browser": { 1763 | "version": "3.310.0", 1764 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.310.0.tgz", 1765 | "integrity": "sha512-yU/4QnHHuQ5z3vsUqMQVfYLbZGYwpYblPiuZx4Zo9+x0PBkNjYMqctdDcrpoH9Z2xZiDN16AmQGK1tix117ZKw==", 1766 | "requires": { 1767 | "@aws-sdk/types": "3.310.0", 1768 | "bowser": "^2.11.0", 1769 | "tslib": "^2.5.0" 1770 | } 1771 | }, 1772 | "@aws-sdk/util-user-agent-node": { 1773 | "version": "3.310.0", 1774 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.310.0.tgz", 1775 | "integrity": "sha512-Ra3pEl+Gn2BpeE7KiDGpi4zj7WJXZA5GXnGo3mjbi9+Y3zrbuhJAbdZO3mO/o7xDgMC6ph4xCTbaSGzU6b6EDg==", 1776 | "requires": { 1777 | "@aws-sdk/node-config-provider": "3.310.0", 1778 | "@aws-sdk/types": "3.310.0", 1779 | "tslib": "^2.5.0" 1780 | } 1781 | }, 1782 | "@aws-sdk/util-utf8": { 1783 | "version": "3.310.0", 1784 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.310.0.tgz", 1785 | "integrity": "sha512-DnLfFT8uCO22uOJc0pt0DsSNau1GTisngBCDw8jQuWT5CqogMJu4b/uXmwEqfj8B3GX6Xsz8zOd6JpRlPftQoA==", 1786 | "requires": { 1787 | "@aws-sdk/util-buffer-from": "3.310.0", 1788 | "tslib": "^2.5.0" 1789 | } 1790 | }, 1791 | "@aws-sdk/util-utf8-browser": { 1792 | "version": "3.259.0", 1793 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", 1794 | "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", 1795 | "requires": { 1796 | "tslib": "^2.3.1" 1797 | } 1798 | }, 1799 | "bowser": { 1800 | "version": "2.11.0", 1801 | "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", 1802 | "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==" 1803 | }, 1804 | "fast-xml-parser": { 1805 | "version": "4.1.2", 1806 | "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.1.2.tgz", 1807 | "integrity": "sha512-CDYeykkle1LiA/uqQyNwYpFbyF6Axec6YapmpUP+/RHWIoR1zKjocdvNaTsxCxZzQ6v9MLXaSYm9Qq0thv0DHg==", 1808 | "requires": { 1809 | "strnum": "^1.0.5" 1810 | } 1811 | }, 1812 | "strnum": { 1813 | "version": "1.0.5", 1814 | "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", 1815 | "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" 1816 | }, 1817 | "tslib": { 1818 | "version": "2.5.0", 1819 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 1820 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 1821 | }, 1822 | "uuid": { 1823 | "version": "8.3.2", 1824 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1825 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" 1826 | } 1827 | } 1828 | } 1829 | -------------------------------------------------------------------------------- /functions/set-log-retention/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "set-log-retention", 3 | "version": "1.0.0", 4 | "description": "Sets all Lambda function log retention period to a configured value. Runs on a daily schedule.", 5 | "main": "index.js", 6 | "author": "allenheltondev", 7 | "license": "ISC", 8 | "dependencies": { 9 | "@aws-sdk/client-cloudwatch-logs": "^3.312.0" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /layers/index.js: -------------------------------------------------------------------------------- 1 | const { SecretsManagerClient, GetSecretValueCommand } = require('@aws-sdk/client-secrets-manager'); 2 | 3 | const secrets = new SecretsManagerClient(); 4 | let cachedSecrets; 5 | 6 | exports.getSecret = async (secretKey) => { 7 | if (cachedSecrets) { 8 | return cachedSecrets[secretKey]; 9 | } else { 10 | const secretResponse = await secrets.send(new GetSecretValueCommand({ SecretId: process.env.SECRET_ID })); 11 | if (secretResponse) { 12 | cachedSecrets = JSON.parse(secretResponse.SecretString); 13 | return cachedSecrets[secretKey]; 14 | } 15 | } 16 | }; -------------------------------------------------------------------------------- /layers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "layers", 3 | "version": "1.0.0", 4 | "description": "Shared code and dependencies", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "allenheltondev", 10 | "license": "ISC", 11 | "dependencies": { 12 | "openai": "^4.19.1" 13 | }, 14 | "devDependencies": { 15 | "@aws-sdk/client-secrets-manager": "^3.312.0" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /template.yaml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Transform: AWS::Serverless-2016-10-31 3 | Description: > 4 | Serverless Toolbox - Set of functions to help you move faster 5 | 6 | Parameters: 7 | SendgridApiKey: 8 | Type: String 9 | Description: Api Key of the SendGrid account that will send the newsletter 10 | NoEcho: true 11 | Default: '' 12 | AdminEmail: 13 | Type: String 14 | Description: Your personal email address or email address to notify 15 | Default: '' 16 | MomentoApiKey: 17 | Type: String 18 | Description: API Key for Momento 19 | NoEcho: true 20 | Default: '' 21 | OpenAIApiKey: 22 | Type: String 23 | Description: Auth token for OpenAI 24 | NoEcho: true 25 | Default: '' 26 | StripeApiKey: 27 | Type: String 28 | Description: API Key for interacting with your Stripe account 29 | NoEcho: true 30 | Default: '' 31 | MediumApiKey: 32 | Type: String 33 | Description: API Key for interacting with Medium 34 | Default: '' 35 | DevApiKey: 36 | Type: String 37 | Description: API Key for interacting with Dev.to 38 | Default: '' 39 | HashnodeApiKey: 40 | Type: String 41 | Description: API Key for interacting with Hashnode 42 | Default: '' 43 | GitHubPAT: 44 | Type: String 45 | Description: Personal Access Token for GitHub 46 | Default: '' 47 | MediumCookie: 48 | Type: String 49 | Description: Alternate auth for interacting with Medium 50 | Default: '' 51 | GACreds: 52 | Type: String 53 | Description: Gooogle Analytics credentials 54 | Default: '' 55 | 56 | Globals: 57 | Function: 58 | Runtime: nodejs20.x 59 | Architectures: 60 | - arm64 61 | Tracing: Active 62 | Timeout: 15 63 | MemorySize: 1024 64 | Handler: index.handler 65 | Layers: 66 | - !Ref SharedLayer 67 | Environment: 68 | Variables: 69 | AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1 70 | 71 | Conditions: 72 | DeployEmailFunction: 73 | !And 74 | - !Not [!Equals [!Ref SendgridApiKey, '']] 75 | - !Not [!Equals [!Ref AdminEmail, '']] 76 | 77 | DeployChatGptFunction: 78 | !And 79 | - !Not [!Equals [!Ref MomentoApiKey, '']] 80 | - !Not [!Equals [!Ref OpenAIApiKey, '']] 81 | 82 | Resources: 83 | SharedLayer: 84 | Type: AWS::Serverless::LayerVersion 85 | Metadata: 86 | BuildMethod: nodejs18.x 87 | BuildArchitecture: arm64 88 | Properties: 89 | ContentUri: layers/ 90 | CompatibleRuntimes: 91 | - nodejs18.x 92 | 93 | AuthTokensSecret: 94 | Type: AWS::SecretsManager::Secret 95 | Properties: 96 | SecretString: 97 | Fn::Sub: 98 | - |- 99 | { 100 | "medium": "${MediumApiKey}", 101 | "medium-cookie": "${MediumCookie}", 102 | "momento": "${MomentoApiKey}", 103 | "dev": "${DevApiKey}", 104 | "hashnode": "${HashnodeApiKey}", 105 | "github": "${GitHubPAT}", 106 | "sendgrid":"${SendgridApiKey}", 107 | "ga": "${GoogleAnalyticsCreds}", 108 | "openai": "${OpenAIApiKey}", 109 | "stripe": "${StripeApiKey}" 110 | } 111 | - MediumApiKey: !Ref MediumApiKey 112 | DevApiKey: !Ref DevApiKey 113 | HashnodeApiKey: !Ref HashnodeApiKey 114 | GitHubPAT: !Ref GitHubPAT 115 | SendgridApiKey: !Ref SendgridApiKey 116 | GoogleAnalyticsCreds: !Ref GACreds 117 | MomentoApiKey: !Ref MomentoApiKey 118 | OpenAIApiKey: !Ref OpenAIApiKey 119 | StripeApiKey: !Ref StripeApiKey 120 | 121 | AuthTokenSecretParameter: 122 | Type: AWS::SSM::Parameter 123 | Properties: 124 | Name: /serverless-toolbox/secrets 125 | Type: String 126 | Value: !Ref AuthTokensSecret 127 | Description: Arn for the Secrets Manager Secret for auth tokens 128 | 129 | SendEmailFunction: 130 | Type: AWS::Serverless::Function 131 | Condition: DeployEmailFunction 132 | Properties: 133 | CodeUri: functions/send-email 134 | Policies: 135 | - AWSLambdaBasicExecutionRole 136 | - Version: 2012-10-17 137 | Statement: 138 | - Effect: Allow 139 | Action: 140 | - secretsmanager:GetSecretValue 141 | Resource: !Ref AuthTokensSecret 142 | Environment: 143 | Variables: 144 | SECRET_ID: !Ref AuthTokensSecret 145 | FROM_EMAIL: !Ref AdminEmail 146 | Events: 147 | SendMailEvent: 148 | Type: EventBridgeRule 149 | Properties: 150 | Pattern: 151 | detail-type: 152 | - Send Email 153 | 154 | SendApiRequestFunction: 155 | Type: AWS::Serverless::Function 156 | Properties: 157 | CodeUri: functions/send-api-request 158 | Policies: 159 | - AWSLambdaBasicExecutionRole 160 | - Version: 2012-10-17 161 | Statement: 162 | - Effect: Allow 163 | Action: 164 | - secretsmanager:GetSecretValue 165 | Resource: !Ref AuthTokensSecret 166 | Environment: 167 | Variables: 168 | SECRET_ID: !Ref AuthTokensSecret 169 | 170 | SendApiRequestParameter: 171 | Type: AWS::SSM::Parameter 172 | Properties: 173 | Name: /serverless-toolbox/send-api-request 174 | Type: String 175 | Value: !GetAtt SendApiRequestFunction.Arn 176 | Description: Arn for the Send API Request Lambda function 177 | 178 | AskChatGPTFunction: 179 | Type: AWS::Serverless::Function 180 | Condition: DeployChatGptFunction 181 | Properties: 182 | CodeUri: functions/ask-chatgpt 183 | Timeout: 300 184 | MemorySize: 512 185 | Policies: 186 | - AWSLambdaBasicExecutionRole 187 | - Version: 2012-10-17 188 | Statement: 189 | - Effect: Allow 190 | Action: 191 | - secretsmanager:GetSecretValue 192 | Resource: !Ref AuthTokensSecret 193 | Environment: 194 | Variables: 195 | CACHE_TTL: 3600 196 | SECRET_ID: !Ref AuthTokensSecret 197 | 198 | AskChatGPTParameter: 199 | Type: AWS::SSM::Parameter 200 | Condition: DeployChatGptFunction 201 | Properties: 202 | Name: /serverless-toolbox/ask-chatgpt 203 | Type: String 204 | Value: !GetAtt AskChatGPTFunction.Arn 205 | Description: Arn for the Ask ChatGPT Lambda function 206 | 207 | SetLogRetentionFunction: 208 | Type: AWS::Serverless::Function 209 | Properties: 210 | CodeUri: functions/set-log-retention/ 211 | Environment: 212 | Variables: 213 | RETENTION_DAYS: 7 214 | Events: 215 | ScheduledEvent: 216 | Type: Schedule 217 | Properties: 218 | Schedule: "cron(0 2 * * ? *)" 219 | Policies: 220 | - AWSLambdaBasicExecutionRole 221 | - Version: 2012-10-17 222 | Statement: 223 | - Effect: Allow 224 | Action: 225 | - logs:DescribeLogGroups 226 | - logs:PutRetentionPolicy 227 | Resource: !Sub arn:${AWS::Partition}:logs:${AWS::Region}:${AWS::AccountId}:log-group:* 228 | 229 | MarshallUnmarshallFunction: 230 | Type: AWS::Serverless::Function 231 | Properties: 232 | CodeUri: functions/marshall-unmarshall-data 233 | Policies: 234 | - AWSLambdaBasicExecutionRole 235 | 236 | MarshallUnmarshallParameter: 237 | Type: AWS::SSM::Parameter 238 | Properties: 239 | Name: /serverless-toolbox/marshall-unmarshall-data 240 | Type: String 241 | Value: !GetAtt MarshallUnmarshallFunction.Arn 242 | Description: Arn for the Marshall Unmarshall Data Lambda function 243 | --------------------------------------------------------------------------------