├── .editorconfig ├── .github ├── build │ └── elasticmq.conf └── workflows │ ├── publish.yml │ └── test.yml ├── .gitignore ├── .npmignore ├── .npmrc ├── .vscode └── settings.json ├── LICENSE ├── README.md ├── auto-imports.d.ts ├── biome.json ├── e2e └── module.e2e-spec.ts ├── lib ├── index.ts ├── sqs.constants.ts ├── sqs.decorators.ts ├── sqs.module.ts ├── sqs.service.ts └── sqs.types.ts ├── package.json ├── pnpm-lock.yaml ├── tsconfig.json └── vitest.config.ts /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | # Use 4 spaces for the Python files 5 | [*.py] 6 | indent_size = 4 7 | max_line_length = 80 8 | 9 | # The JSON files contain newlines inconsistently 10 | [*.json] 11 | insert_final_newline = ignore 12 | 13 | # Minified JavaScript files shouldn't be changed 14 | [**.min.js] 15 | indent_style = ignore 16 | insert_final_newline = ignore 17 | 18 | # Makefiles always use tabs for indentation 19 | [Makefile] 20 | indent_style = tab 21 | 22 | # Batch files use tabs for indentation 23 | [*.bat] 24 | indent_style = tab 25 | 26 | [*.md] 27 | trim_trailing_whitespace = false 28 | 29 | -------------------------------------------------------------------------------- /.github/build/elasticmq.conf: -------------------------------------------------------------------------------- 1 | include classpath("application.conf") 2 | 3 | node-address { 4 | protocol = http 5 | host = localhost 6 | port = 9324 7 | context-path = "" 8 | } 9 | 10 | rest-sqs { 11 | enabled = true 12 | bind-port = 9324 13 | bind-hostname = "0.0.0.0" 14 | # Possible values: relaxed, strict 15 | sqs-limits = strict 16 | } 17 | 18 | akka.http.server.request-timeout = 30 seconds 19 | 20 | queues { 21 | test { 22 | defaultVisibilityTimeout = 10 seconds 23 | delay = 0 seconds 24 | receiveMessageWait = 0 seconds 25 | deadLettersQueue { 26 | name = "test-dead.fifo" 27 | maxReceiveCount = 1 28 | } 29 | fifo = true 30 | contentBasedDeduplication = false 31 | tags { 32 | } 33 | } 34 | test-dead { 35 | fifo = true 36 | } 37 | } 38 | 39 | aws { 40 | region = us-west-2 41 | accountId = 000000000000 42 | } 43 | -------------------------------------------------------------------------------- /.github/workflows/publish.yml: -------------------------------------------------------------------------------- 1 | name: 🚀 Publish 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | test: 9 | runs-on: ubuntu-24.04 10 | strategy: 11 | matrix: 12 | node-version: 13 | - 18.x 14 | - 20.x 15 | - 22.x 16 | services: 17 | elasticmq: 18 | image: softwaremill/elasticmq 19 | options: -p 9324:9324 --name elasticmq 20 | steps: 21 | - name: Checkout code 22 | uses: actions/checkout@v4 23 | 24 | - name: ElasticMQ Configuration 25 | run: | 26 | cp ${{ github.workspace }}/.github/build/elasticmq.conf /tmp/elasticmq.conf 27 | docker cp /tmp/elasticmq.conf elasticmq:/opt/elasticmq.conf 28 | docker restart elasticmq 29 | 30 | - name: Setup pnpm 31 | uses: pnpm/action-setup@v4 32 | 33 | - uses: actions/setup-node@v4 34 | name: Use Node.js ${{ matrix.node-version }} 35 | with: 36 | node-version: ${{ matrix.node-version }} 37 | cache: 'pnpm' 38 | 39 | - name: Install Dependencies 40 | run: pnpm install 41 | 42 | - name: Check lint 43 | run: pnpm biome ci 44 | 45 | - name: Run Tests 46 | run: pnpm run test:e2e 47 | 48 | 49 | publish-npm: 50 | runs-on: ubuntu-24.04 51 | needs: test 52 | permissions: 53 | contents: read 54 | id-token: write 55 | packages: write 56 | steps: 57 | - name: ⬇️ Checkout 58 | uses: actions/checkout@v4 59 | with: 60 | fetch-depth: 0 61 | 62 | - name: Install Node.js 63 | uses: actions/setup-node@v4 64 | with: 65 | node-version: 20.x 66 | 67 | - uses: pnpm/action-setup@v4 68 | name: Install pnpm 69 | id: pnpm-install 70 | with: 71 | run_install: false 72 | 73 | - name: Install Dependencies 74 | run: pnpm install --frozen-lockfile --strict-peer-dependencies 75 | 76 | - name: Build 77 | run: pnpm build 78 | 79 | - name: 📝 Version 80 | env: 81 | TAG_NAME: ${{ github.event.release.tag_name }} 82 | run: pnpm version ${TAG_NAME} --no-git-tag-version || true 83 | 84 | - name: Set publishing config 85 | run: pnpm config set '//registry.npmjs.org/:_authToken' "${NODE_AUTH_TOKEN}" 86 | env: 87 | NODE_AUTH_TOKEN: ${{ secrets.REGISTRY_TOKEN }} 88 | 89 | - name: 🐙 Publish 90 | run: | 91 | pnpm publish --no-git-checks --access=public 92 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: push 4 | 5 | jobs: 6 | test: 7 | runs-on: ubuntu-24.04 8 | 9 | strategy: 10 | matrix: 11 | node-version: 12 | - 18.x 13 | - 20.x 14 | - 22.x 15 | 16 | services: 17 | elasticmq: 18 | image: softwaremill/elasticmq 19 | options: -p 9324:9324 --name elasticmq 20 | 21 | steps: 22 | - name: Checkout code 23 | uses: actions/checkout@v4 24 | 25 | - name: ElasticMQ Configuration 26 | run: | 27 | cp ${{ github.workspace }}/.github/build/elasticmq.conf /tmp/elasticmq.conf 28 | docker cp /tmp/elasticmq.conf elasticmq:/opt/elasticmq.conf 29 | docker restart elasticmq 30 | 31 | - name: Setup pnpm 32 | uses: pnpm/action-setup@v4 33 | 34 | - uses: actions/setup-node@v4 35 | name: Use Node.js ${{ matrix.node-version }} 36 | with: 37 | node-version: ${{ matrix.node-version }} 38 | cache: 'pnpm' 39 | 40 | - name: Install Dependencies 41 | run: pnpm install 42 | 43 | - name: Check lint 44 | run: pnpm biome ci 45 | 46 | - name: Run Tests 47 | run: pnpm run test:e2e 48 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Created by .ignore support plugin (hsz.mobi) 2 | ### Example user template template 3 | ### Example user template 4 | 5 | # IntelliJ project files 6 | .idea 7 | *.iml 8 | out 9 | gen 10 | ### VisualStudioCode template 11 | .vscode/* 12 | !.vscode/settings.json 13 | !.vscode/tasks.json 14 | !.vscode/launch.json 15 | !.vscode/extensions.json 16 | *.code-workspace 17 | 18 | # Local History for Visual Studio Code 19 | .history/ 20 | 21 | ### Windows template 22 | # Windows thumbnail cache files 23 | Thumbs.db 24 | Thumbs.db:encryptable 25 | ehthumbs.db 26 | ehthumbs_vista.db 27 | 28 | # Dump file 29 | *.stackdump 30 | 31 | # Folder config file 32 | [Dd]esktop.ini 33 | 34 | # Recycle Bin used on file shares 35 | $RECYCLE.BIN/ 36 | 37 | # Windows Installer files 38 | *.cab 39 | *.msi 40 | *.msix 41 | *.msm 42 | *.msp 43 | 44 | # Windows shortcuts 45 | *.lnk 46 | 47 | ### macOS template 48 | # General 49 | .DS_Store 50 | .AppleDouble 51 | .LSOverride 52 | 53 | # Icon must end with two \r 54 | Icon 55 | 56 | # Thumbnails 57 | ._* 58 | 59 | # Files that might appear in the root of a volume 60 | .DocumentRevisions-V100 61 | .fseventsd 62 | .Spotlight-V100 63 | .TemporaryItems 64 | .Trashes 65 | .VolumeIcon.icns 66 | .com.apple.timemachine.donotpresent 67 | 68 | # Directories potentially created on remote AFP share 69 | .AppleDB 70 | .AppleDesktop 71 | Network Trash Folder 72 | Temporary Items 73 | .apdisk 74 | 75 | dist/ 76 | node_modules/ 77 | 78 | *.tgz 79 | tsconfig.vitest-temp.json 80 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .github/ 2 | .idea/ 3 | .vscode/ 4 | coverage/ 5 | e2e/ 6 | lib/ 7 | node_modules/ 8 | tsconfig.json 9 | tsconfig.eslint.json 10 | .prettierignore 11 | .prettierrc 12 | .eslintignore 13 | .eslintrc.js 14 | jest-e2e.config.js 15 | jest.config.js 16 | .editorconfig 17 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | message="chore(release): release %s" 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib", 3 | "eslint.enable": false, 4 | "prettier.enable": false, 5 | "biome.enabled": true, 6 | "[json]": { 7 | "editor.defaultFormatter": "biomejs.biome" 8 | }, 9 | "editor.codeActionsOnSave": { 10 | "source.fixAll.eslint": "never", 11 | "quickfix.biome": "always", 12 | "source.organizeImports.biome": "always" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Suhun Han 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # nestjs-sqs 2 | 3 | [![Test](https://github.com/ssut/nestjs-sqs/workflows/Test/badge.svg)](https://github.com/ssut/nestjs-sqs/actions?query=workflow%3ATest) 4 | [![npm version](https://badge.fury.io/js/%40ssut%2Fnestjs-sqs.svg)](https://badge.fury.io/js/%40ssut%2Fnestjs-sqs) 5 | 6 | Tested with: [AWS SQS](https://aws.amazon.com/en/sqs/) and [ElasticMQ](https://github.com/softwaremill/elasticmq). 7 | 8 | Nestjs-sqs is a project to make SQS easier to use and control some required flows with NestJS. 9 | This module provides decorator-based message handling suited for simple use. 10 | 11 | This library internally uses [bbc/sqs-producer](https://github.com/bbc/sqs-producer) and [bbc/sqs-consumer](https://github.com/bbc/sqs-consumer), and implements some more useful features on top of the basic functionality given by them. 12 | 13 | ## Installation 14 | 15 | ```shell script 16 | npm i --save @ssut/nestjs-sqs @aws-sdk/client-sqs 17 | ``` 18 | 19 | ## Quick Start 20 | 21 | ### Register module 22 | 23 | Just register this module: 24 | 25 | ```ts 26 | @Module({ 27 | imports: [ 28 | SqsModule.register({ 29 | consumers: [ 30 | { 31 | // Name is a unique identifier for this consumer instance 32 | name: "myConsumer1", 33 | // The actual SQS queue URL 34 | queueUrl: "https://sqs.region.amazonaws.com/account/queue-name", 35 | region: "us-east-1", 36 | }, 37 | ], 38 | producers: [ 39 | { 40 | // Name is a unique identifier for this producer instance 41 | name: "myProducer1", 42 | // The actual SQS queue URL 43 | queueUrl: "https://sqs.region.amazonaws.com/account/queue-name", 44 | region: "us-east-1", 45 | }, 46 | ], 47 | }), 48 | ], 49 | }) 50 | class AppModule {} 51 | ``` 52 | 53 | Quite often you might want to asynchronously pass module options instead of passing them beforehand. 54 | In such case, use `registerAsync()` method like many other Nest.js libraries. 55 | 56 | - Use factory 57 | 58 | ```ts 59 | SqsModule.registerAsync({ 60 | useFactory: () => { 61 | return { 62 | consumers: [...], 63 | producers: [...], 64 | }; 65 | }, 66 | }); 67 | ``` 68 | 69 | - Use class 70 | 71 | ```ts 72 | SqsModule.registerAsync({ 73 | useClass: SqsConfigService, 74 | }); 75 | ``` 76 | 77 | - Use existing 78 | 79 | ```ts 80 | SqsModule.registerAsync({ 81 | imports: [ConfigModule], 82 | useExisting: ConfigService, 83 | }); 84 | ``` 85 | 86 | ### Decorate methods 87 | 88 | You need to decorate methods in your NestJS providers in order to have them be automatically attached as event handlers for incoming SQS messages: 89 | 90 | ```ts 91 | import { Message } from "@aws-sdk/client-sqs"; 92 | 93 | @Injectable() 94 | export class AppMessageHandler { 95 | @SqsMessageHandler(/** name: */ "myConsumer1", /** batch: */ false) 96 | public async handleMessage(message: Message) {} 97 | 98 | @SqsConsumerEventHandler( 99 | /** name: */ "myConsumer1", 100 | /** eventName: */ "processing_error", 101 | ) 102 | public onProcessingError(error: Error, message: Message) { 103 | // report errors here 104 | } 105 | } 106 | ``` 107 | 108 | ### Produce messages 109 | 110 | ```ts 111 | export class AppService { 112 | public constructor( 113 | private readonly sqsService: SqsService, 114 | ) { } 115 | 116 | public async dispatchSomething() { 117 | await this.sqsService.send(/** name: */ 'myProducer1', { 118 | id: 'id', 119 | body: { ... }, 120 | groupId: 'groupId', 121 | deduplicationId: 'deduplicationId', 122 | messageAttributes: { ... }, 123 | delaySeconds: 0, 124 | }); 125 | } 126 | } 127 | ``` 128 | 129 | ### Configuration 130 | 131 | See [here](https://github.com/ssut/nestjs-sqs/blob/master/lib/sqs.types.ts), and note that we have same configuration as [bbc/sqs-consumer's](https://github.com/bbc/sqs-consumer). 132 | In most time you just need to specify both `name` and `queueUrl` at the minimum requirements. 133 | 134 | ## License 135 | 136 | This project is licensed under the terms of the MIT license. 137 | -------------------------------------------------------------------------------- /auto-imports.d.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | /* prettier-ignore */ 3 | // @ts-nocheck 4 | // noinspection JSUnusedGlobalSymbols 5 | // Generated by unplugin-auto-import 6 | export {} 7 | declare global { 8 | const afterAll: typeof import('vitest')['afterAll'] 9 | const afterEach: typeof import('vitest')['afterEach'] 10 | const assert: typeof import('vitest')['assert'] 11 | const beforeAll: typeof import('vitest')['beforeAll'] 12 | const beforeEach: typeof import('vitest')['beforeEach'] 13 | const chai: typeof import('vitest')['chai'] 14 | const describe: typeof import('vitest')['describe'] 15 | const expect: typeof import('vitest')['expect'] 16 | const it: typeof import('vitest')['it'] 17 | const suite: typeof import('vitest')['suite'] 18 | const test: typeof import('vitest')['test'] 19 | const vi: typeof import('vitest')['vi'] 20 | const vitest: typeof import('vitest')['vitest'] 21 | } 22 | -------------------------------------------------------------------------------- /biome.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@biomejs/biome/configuration_schema.json", 3 | "files": { 4 | "include": ["e2e/**/*.ts", "lib/**/*.ts"], 5 | "ignore": ["dist/"] 6 | }, 7 | "formatter": { 8 | "enabled": true, 9 | "indentStyle": "space", 10 | "lineWidth": 120, 11 | "formatWithErrors": false, 12 | "lineEnding": "lf" 13 | }, 14 | "organizeImports": { 15 | "enabled": true 16 | }, 17 | "javascript": { 18 | "formatter": { 19 | "lineWidth": 120, 20 | "semicolons": "always", 21 | "quoteStyle": "single", 22 | "arrowParentheses": "always", 23 | "jsxQuoteStyle": "double" 24 | }, 25 | "parser": { 26 | "unsafeParameterDecoratorsEnabled": true 27 | } 28 | }, 29 | "linter": { 30 | "enabled": true, 31 | "rules": { 32 | "recommended": false, 33 | "complexity": { 34 | "noBannedTypes": "error", 35 | "noUselessTypeConstraint": "error" 36 | }, 37 | "correctness": { 38 | "noPrecisionLoss": "error", 39 | "noUnusedVariables": "warn", 40 | "useArrayLiterals": "off" 41 | }, 42 | "style": { 43 | "noInferrableTypes": "off", 44 | "noNamespace": "error", 45 | "noNonNullAssertion": "warn", 46 | "useAsConstAssertion": "error", 47 | "useBlockStatements": "off", 48 | "useConst": "warn" 49 | }, 50 | "suspicious": { 51 | "noAssignInExpressions": "warn", 52 | "noExplicitAny": "off", 53 | "noExtraNonNullAssertion": "error", 54 | "noMisleadingInstantiator": "error", 55 | "noUnsafeDeclarationMerging": "error", 56 | "useGetterReturn": "off" 57 | } 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /e2e/module.e2e-spec.ts: -------------------------------------------------------------------------------- 1 | import { Message, SQSClient } from '@aws-sdk/client-sqs'; 2 | import { Injectable } from '@nestjs/common'; 3 | import { Test, TestingModule } from '@nestjs/testing'; 4 | import { vi } from 'vitest'; 5 | import { beforeAll } from 'vitest'; 6 | import { describe } from 'vitest'; 7 | import { expect } from 'vitest'; 8 | import { afterAll } from 'vitest'; 9 | import { it } from 'vitest'; 10 | import { afterEach } from 'vitest'; 11 | import { SqsModule, SqsService } from '../lib'; 12 | import { SqsConsumerEventHandler, SqsMessageHandler } from '../lib/sqs.decorators'; 13 | import { SqsConsumerOptions, SqsProducerOptions } from '../lib/sqs.types'; 14 | 15 | const SQS_ENDPOINT = process.env.SQS_ENDPOINT || 'http://localhost:9324/000000000000'; 16 | 17 | enum TestQueue { 18 | Test = 'test', 19 | DLQ = 'test-dead', 20 | } 21 | 22 | const sqs = new SQSClient({ 23 | apiVersion: '2012-11-05', 24 | credentials: { accessKeyId: 'x', secretAccessKey: 'x' }, 25 | endpoint: SQS_ENDPOINT, 26 | region: 'us-west-2', 27 | }); 28 | 29 | const TestQueues: { [key in TestQueue]: SqsConsumerOptions | SqsProducerOptions } = { 30 | [TestQueue.Test]: { 31 | name: TestQueue.Test, 32 | queueUrl: `${SQS_ENDPOINT}/test.fifo`, 33 | sqs, 34 | }, 35 | [TestQueue.DLQ]: { 36 | name: TestQueue.DLQ, 37 | queueUrl: `${SQS_ENDPOINT}/test-dead.fifo`, 38 | sqs, 39 | }, 40 | }; 41 | 42 | describe('SqsModule', () => { 43 | let module: TestingModule; 44 | 45 | describe('registerAsync', () => { 46 | let module: TestingModule; 47 | 48 | afterAll(async () => { 49 | await module?.close(); 50 | }); 51 | 52 | it('should register module async', async () => { 53 | module = await Test.createTestingModule({ 54 | imports: [ 55 | SqsModule.registerAsync({ 56 | useFactory: async () => { 57 | return { 58 | consumers: [TestQueues[TestQueue.Test]], 59 | producers: [TestQueues[TestQueue.Test]], 60 | }; 61 | }, 62 | }), 63 | ], 64 | }).compile(); 65 | 66 | const sqsService = module.get(SqsService); 67 | expect(sqsService).toBeTruthy(); 68 | expect(sqsService.options.consumers).toHaveLength(1); 69 | expect(sqsService.options.producers).toHaveLength(1); 70 | }); 71 | }); 72 | 73 | describe('full flow', () => { 74 | const fakeProcessor = vi.fn(); 75 | const fakeDLQProcessor = vi.fn(); 76 | const fakeErrorEventHandler = vi.fn(); 77 | 78 | @Injectable() 79 | class A { 80 | public constructor(public readonly sqsService: SqsService) {} 81 | 82 | @SqsMessageHandler(TestQueue.Test) 83 | public async handleTestMessage(message: Message) { 84 | fakeProcessor(message); 85 | } 86 | 87 | @SqsConsumerEventHandler(TestQueue.Test, 'processing_error') 88 | public handleErrorEvent(err: Error, message: Message) { 89 | fakeErrorEventHandler(err, message); 90 | } 91 | 92 | @SqsMessageHandler(TestQueue.DLQ) 93 | public async handleDLQMessage(message: Message) { 94 | fakeDLQProcessor(message); 95 | } 96 | } 97 | 98 | beforeAll(async () => { 99 | module = await Test.createTestingModule({ 100 | imports: [ 101 | SqsModule.register({ 102 | consumers: [ 103 | { 104 | ...TestQueues[TestQueue.Test], 105 | waitTimeSeconds: 1, 106 | batchSize: 3, 107 | terminateVisibilityTimeout: true, 108 | messageAttributeNames: ['All'], 109 | }, 110 | { 111 | ...TestQueues[TestQueue.DLQ], 112 | waitTimeSeconds: 1, 113 | }, 114 | ], 115 | producers: [ 116 | { 117 | ...TestQueues[TestQueue.Test], 118 | }, 119 | ], 120 | }), 121 | ], 122 | providers: [A], 123 | }).compile(); 124 | await module.init(); 125 | 126 | const sqsService = module.get(SqsService); 127 | await Promise.all(Object.values(TestQueue).map((queueName) => sqsService.purgeQueue(queueName))); 128 | }); 129 | 130 | afterEach(() => { 131 | fakeProcessor.mockReset(); 132 | fakeErrorEventHandler.mockReset(); 133 | }); 134 | 135 | afterAll(async () => { 136 | fakeDLQProcessor.mockReset(); 137 | await module.close(); 138 | }); 139 | 140 | it('should register message handler', () => { 141 | const sqsService = module.get(SqsService); 142 | expect(sqsService.consumers.has(TestQueue.Test)).toBe(true); 143 | }); 144 | 145 | it('should register message producer', () => { 146 | const sqsService = module.get(SqsService); 147 | expect(sqsService.producers.has(TestQueue.Test)).toBe(true); 148 | }); 149 | 150 | it('should call message handler when a new message has come', async () => { 151 | const sqsService = module.get(SqsService); 152 | const id = String(Math.floor(Math.random() * 1000000)); 153 | 154 | await new Promise(async (resolve, reject) => { 155 | try { 156 | fakeProcessor.mockImplementation((message) => { 157 | expect(message).toBeTruthy(); 158 | expect(JSON.parse(message.Body)).toStrictEqual({ test: true }); 159 | resolve(); 160 | }); 161 | 162 | await sqsService.send(TestQueue.Test, { 163 | id, 164 | body: { test: true }, 165 | delaySeconds: 0, 166 | groupId: 'test', 167 | deduplicationId: id, 168 | }); 169 | } catch (e) { 170 | reject(e); 171 | } 172 | }); 173 | }, 5000); 174 | 175 | it('should call message handler multiple times when multiple messages have come', async () => { 176 | const sqsService = module.get(SqsService); 177 | const groupId = String(Math.floor(Math.random() * 1000000)); 178 | 179 | await Promise.all( 180 | Array.from({ length: 3 }).map(async (_, i) => { 181 | const id = `${groupId}_${i}`; 182 | await sqsService.send(TestQueue.Test, { 183 | id, 184 | body: { test: true, i }, 185 | delaySeconds: 0, 186 | groupId, 187 | deduplicationId: id, 188 | }); 189 | }), 190 | ); 191 | 192 | await vi.waitFor( 193 | () => { 194 | expect(fakeProcessor.mock.calls).toHaveLength(3); 195 | for (const call of fakeProcessor.mock.calls) { 196 | expect(call).toHaveLength(1); 197 | expect(call[0]).toBeTruthy(); 198 | } 199 | }, 200 | { 201 | interval: 100, 202 | timeout: 5000, 203 | }, 204 | ); 205 | }, 5500); 206 | 207 | it('should call the registered error handler when an error occurs', async () => { 208 | const sqsService = module.get(SqsService); 209 | const id = String(Math.floor(Math.random() * 1000000)); 210 | fakeProcessor.mockImplementation((_message) => { 211 | throw new Error('test'); 212 | }); 213 | 214 | await new Promise(async (resolve, reject) => { 215 | try { 216 | fakeErrorEventHandler.mockImplementationOnce((error, _message) => { 217 | expect(error).toBeInstanceOf(Error); 218 | expect(error.message).toContain('test'); 219 | resolve(); 220 | }); 221 | 222 | await sqsService.send(TestQueue.Test, { 223 | id, 224 | body: { test: true }, 225 | delaySeconds: 0, 226 | groupId: 'test', 227 | deduplicationId: id, 228 | }); 229 | } catch (e) { 230 | reject(e); 231 | } 232 | }); 233 | }, 5000); 234 | 235 | it('should consume a dead letter from DLQ', async () => { 236 | await vi.waitFor( 237 | () => { 238 | expect(fakeDLQProcessor.mock.calls.length).toBe(1); 239 | }, 240 | { 241 | interval: 500, 242 | timeout: 9900, 243 | }, 244 | ); 245 | }, 10000); 246 | }); 247 | }); 248 | -------------------------------------------------------------------------------- /lib/index.ts: -------------------------------------------------------------------------------- 1 | export * from './sqs.module'; 2 | export * from './sqs.service'; 3 | export * from './sqs.decorators'; 4 | -------------------------------------------------------------------------------- /lib/sqs.constants.ts: -------------------------------------------------------------------------------- 1 | export const SQS_OPTIONS = Symbol.for('SQS_OPTIONS'); 2 | 3 | export const SQS_CONSUMER_METHOD = Symbol.for('SQS_CONSUMER_METHOD'); 4 | export const SQS_CONSUMER_EVENT_HANDLER = Symbol.for('SQS_CONSUMER_EVENT_HANDLER'); 5 | -------------------------------------------------------------------------------- /lib/sqs.decorators.ts: -------------------------------------------------------------------------------- 1 | import { SetMetadata } from '@nestjs/common'; 2 | import { SQS_CONSUMER_EVENT_HANDLER, SQS_CONSUMER_METHOD } from './sqs.constants'; 3 | 4 | export const SqsMessageHandler = (name: string, batch?: boolean) => SetMetadata(SQS_CONSUMER_METHOD, { name, batch }); 5 | export const SqsConsumerEventHandler = (name: string, eventName: string) => 6 | SetMetadata(SQS_CONSUMER_EVENT_HANDLER, { name, eventName }); 7 | -------------------------------------------------------------------------------- /lib/sqs.module.ts: -------------------------------------------------------------------------------- 1 | import { DiscoveryModule, DiscoveryService } from '@golevelup/nestjs-discovery'; 2 | import { DynamicModule, Global, Module, Provider, Type } from '@nestjs/common'; 3 | import { SQS_OPTIONS } from './sqs.constants'; 4 | import { SqsService } from './sqs.service'; 5 | import { SqsModuleAsyncOptions, SqsModuleOptionsFactory, SqsOptions } from './sqs.types'; 6 | 7 | @Global() 8 | @Module({ 9 | imports: [DiscoveryModule], 10 | providers: [SqsService], 11 | exports: [SqsService], 12 | }) 13 | export class SqsModule { 14 | public static register(options: SqsOptions): DynamicModule { 15 | const sqsOptions: Provider = { 16 | provide: SQS_OPTIONS, 17 | useValue: options, 18 | }; 19 | const sqsProvider: Provider = { 20 | provide: SqsService, 21 | // biome-ignore lint/correctness/noUnusedVariables: 22 | useFactory: (sqsOptions: SqsOptions, discover: DiscoveryService) => new SqsService(options, discover), 23 | inject: [SQS_OPTIONS, DiscoveryService], 24 | }; 25 | 26 | return { 27 | global: true, 28 | module: SqsModule, 29 | imports: [DiscoveryModule], 30 | providers: [sqsOptions, sqsProvider], 31 | exports: [sqsProvider], 32 | }; 33 | } 34 | 35 | public static registerAsync(options: SqsModuleAsyncOptions): DynamicModule { 36 | const asyncProviders = this.createAsyncProviders(options); 37 | const sqsProvider: Provider = { 38 | provide: SqsService, 39 | useFactory: (options: SqsOptions, discover: DiscoveryService) => new SqsService(options, discover), 40 | inject: [SQS_OPTIONS, DiscoveryService], 41 | }; 42 | 43 | return { 44 | global: true, 45 | module: SqsModule, 46 | imports: [DiscoveryModule, ...(options.imports ?? [])], 47 | providers: [...asyncProviders, sqsProvider], 48 | exports: [sqsProvider], 49 | }; 50 | } 51 | 52 | private static createAsyncProviders(options: SqsModuleAsyncOptions): Provider[] { 53 | if (options.useExisting || options.useFactory) { 54 | return [this.createAsyncOptionsProvider(options)]; 55 | } 56 | const useClass = options.useClass as Type; 57 | return [ 58 | this.createAsyncOptionsProvider(options), 59 | { 60 | provide: useClass, 61 | useClass, 62 | }, 63 | ]; 64 | } 65 | 66 | private static createAsyncOptionsProvider(options: SqsModuleAsyncOptions): Provider { 67 | if (options.useFactory) { 68 | return { 69 | provide: SQS_OPTIONS, 70 | useFactory: options.useFactory, 71 | inject: options.inject || [], 72 | }; 73 | } 74 | 75 | const inject = [(options.useClass || options.useExisting) as Type]; 76 | return { 77 | provide: SQS_OPTIONS, 78 | useFactory: async (optionsFactory: SqsModuleOptionsFactory) => await optionsFactory.createOptions(), 79 | inject, 80 | }; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /lib/sqs.service.ts: -------------------------------------------------------------------------------- 1 | import { GetQueueAttributesCommand, PurgeQueueCommand, QueueAttributeName, SQSClient } from '@aws-sdk/client-sqs'; 2 | import { DiscoveryService } from '@golevelup/nestjs-discovery'; 3 | import { Inject, Injectable, Logger, LoggerService, OnModuleDestroy, OnModuleInit } from '@nestjs/common'; 4 | import { Consumer, StopOptions } from 'sqs-consumer'; 5 | import { Producer } from 'sqs-producer'; 6 | import { SQS_CONSUMER_EVENT_HANDLER, SQS_CONSUMER_METHOD, SQS_OPTIONS } from './sqs.constants'; 7 | import { 8 | Message, 9 | QueueName, 10 | SqsConsumerEventHandlerMeta, 11 | SqsConsumerMapValues, 12 | SqsMessageHandlerMeta, 13 | SqsOptions, 14 | } from './sqs.types'; 15 | 16 | @Injectable() 17 | export class SqsService implements OnModuleInit, OnModuleDestroy { 18 | public readonly consumers = new Map(); 19 | public readonly producers = new Map(); 20 | 21 | private logger: LoggerService; 22 | private globalStopOptions: StopOptions; 23 | 24 | public constructor( 25 | @Inject(SQS_OPTIONS) public readonly options: SqsOptions, 26 | private readonly discover: DiscoveryService, 27 | ) {} 28 | 29 | public async onModuleInit(): Promise { 30 | this.logger = this.options.logger ?? new Logger('SqsService', { timestamp: false }); 31 | this.globalStopOptions = this.options.globalStopOptions ?? {}; 32 | 33 | const messageHandlers = 34 | await this.discover.providerMethodsWithMetaAtKey(SQS_CONSUMER_METHOD); 35 | const eventHandlers = 36 | await this.discover.providerMethodsWithMetaAtKey(SQS_CONSUMER_EVENT_HANDLER); 37 | 38 | this.options.consumers?.forEach((options) => { 39 | const { name, stopOptions, ...consumerOptions } = options; 40 | if (this.consumers.has(name)) { 41 | throw new Error(`Consumer already exists: ${name}`); 42 | } 43 | 44 | const metadata = messageHandlers.find(({ meta }) => meta.name === name); 45 | if (!metadata) { 46 | this.logger.warn(`No metadata found for: ${name}`); 47 | return; 48 | } 49 | 50 | const isBatchHandler = metadata.meta.batch === true; 51 | const consumer = Consumer.create({ 52 | ...consumerOptions, 53 | ...(isBatchHandler 54 | ? { 55 | handleMessageBatch: metadata.discoveredMethod.handler.bind( 56 | metadata.discoveredMethod.parentClass.instance, 57 | ), 58 | } 59 | : { handleMessage: metadata.discoveredMethod.handler.bind(metadata.discoveredMethod.parentClass.instance) }), 60 | }); 61 | 62 | const eventsMetadata = eventHandlers.filter(({ meta }) => meta.name === name); 63 | for (const eventMetadata of eventsMetadata) { 64 | if (eventMetadata) { 65 | consumer.addListener( 66 | eventMetadata.meta.eventName, 67 | eventMetadata.discoveredMethod.handler.bind(metadata.discoveredMethod.parentClass.instance), 68 | ); 69 | } 70 | } 71 | this.consumers.set(name, { instance: consumer, stopOptions: stopOptions ?? this.globalStopOptions }); 72 | }); 73 | 74 | this.options.producers?.forEach((options) => { 75 | const { name, ...producerOptions } = options; 76 | if (this.producers.has(name)) { 77 | throw new Error(`Producer already exists: ${name}`); 78 | } 79 | 80 | const producer = Producer.create(producerOptions); 81 | this.producers.set(name, producer); 82 | }); 83 | 84 | for (const consumer of this.consumers.values()) { 85 | consumer.instance.start(); 86 | } 87 | } 88 | 89 | public onModuleDestroy() { 90 | for (const consumer of this.consumers.values()) { 91 | consumer.instance.stop(consumer.stopOptions); 92 | } 93 | } 94 | 95 | private getQueueInfo(name: QueueName) { 96 | if (!this.consumers.has(name) && !this.producers.has(name)) { 97 | throw new Error(`Consumer/Producer does not exist: ${name}`); 98 | } 99 | 100 | const { sqs, queueUrl } = (this.consumers.get(name)?.instance ?? this.producers.get(name)) as { 101 | sqs: SQSClient; 102 | queueUrl: string; 103 | }; 104 | if (!sqs) { 105 | throw new Error('SQS instance does not exist'); 106 | } 107 | 108 | return { 109 | sqs, 110 | queueUrl, 111 | }; 112 | } 113 | 114 | public async purgeQueue(name: QueueName) { 115 | const { sqs, queueUrl } = this.getQueueInfo(name); 116 | const command = new PurgeQueueCommand({ 117 | QueueUrl: queueUrl, 118 | }); 119 | return await sqs.send(command); 120 | } 121 | 122 | public async getQueueAttributes(name: QueueName) { 123 | const { sqs, queueUrl } = this.getQueueInfo(name); 124 | const command = new GetQueueAttributesCommand({ 125 | QueueUrl: queueUrl, 126 | AttributeNames: ['All'], 127 | }); 128 | const response = await sqs.send(command); 129 | return response.Attributes as { [key in QueueAttributeName]: string }; 130 | } 131 | 132 | public getProducerQueueSize(name: QueueName) { 133 | if (!this.producers.has(name)) { 134 | throw new Error(`Producer does not exist: ${name}`); 135 | } 136 | 137 | return this.producers.get(name).queueSize(); 138 | } 139 | 140 | public send(name: QueueName, payload: Message | Message[]) { 141 | if (!this.producers.has(name)) { 142 | throw new Error(`Producer does not exist: ${name}`); 143 | } 144 | 145 | const originalMessages = Array.isArray(payload) ? payload : [payload]; 146 | const messages = originalMessages.map((message) => { 147 | let body = message.body; 148 | if (typeof body !== 'string') { 149 | body = JSON.stringify(body) as any; 150 | } 151 | 152 | return { 153 | ...message, 154 | body, 155 | }; 156 | }); 157 | 158 | const producer = this.producers.get(name); 159 | return producer.send(messages as any[]); 160 | } 161 | } 162 | -------------------------------------------------------------------------------- /lib/sqs.types.ts: -------------------------------------------------------------------------------- 1 | import type { MessageAttributeValue } from '@aws-sdk/client-sqs'; 2 | import type { LoggerService, ModuleMetadata, Type } from '@nestjs/common'; 3 | import type { Consumer, ConsumerOptions, StopOptions } from 'sqs-consumer'; 4 | import type { Producer } from 'sqs-producer'; 5 | 6 | export type ProducerOptions = Parameters[0]; 7 | export type QueueName = string; 8 | 9 | export type SqsConsumerOptions = Omit & { 10 | name: QueueName; 11 | stopOptions?: StopOptions; 12 | }; 13 | 14 | export type SqsConsumerMapValues = { 15 | instance: Consumer; 16 | stopOptions: StopOptions; 17 | }; 18 | 19 | export type SqsProducerOptions = ProducerOptions & { 20 | name: QueueName; 21 | }; 22 | 23 | export interface SqsOptions { 24 | consumers?: SqsConsumerOptions[]; 25 | producers?: SqsProducerOptions[]; 26 | logger?: LoggerService; 27 | globalStopOptions?: StopOptions; 28 | } 29 | 30 | export interface SqsModuleOptionsFactory { 31 | createOptions(): Promise | SqsOptions; 32 | } 33 | 34 | export interface SqsModuleAsyncOptions extends Pick { 35 | useExisting?: Type; 36 | useClass?: Type; 37 | useFactory?: (...args: any[]) => Promise | SqsOptions; 38 | inject?: any[]; 39 | } 40 | 41 | export interface Message { 42 | id: string; 43 | body: T; 44 | groupId?: string; 45 | deduplicationId?: string; 46 | delaySeconds?: number; 47 | messageAttributes?: Record; 48 | } 49 | 50 | export interface SqsMessageHandlerMeta { 51 | name: string; 52 | batch?: boolean; 53 | } 54 | 55 | export interface SqsConsumerEventHandlerMeta { 56 | name: string; 57 | eventName: string; 58 | } 59 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@ssut/nestjs-sqs", 3 | "version": "3.0.1", 4 | "description": "", 5 | "main": "dist/index.js", 6 | "types": "dist/index.d.ts", 7 | "engines": { 8 | "node": ">=18.0.0" 9 | }, 10 | "scripts": { 11 | "test:e2e": "vitest", 12 | "build": "rimraf -rf dist && tsc -p tsconfig.json" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/ssut/nestjs-sqs/issues" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "git+https://github.com/ssut/nestjs-sqs.git" 20 | }, 21 | "keywords": [], 22 | "author": "Suhun Han ", 23 | "license": "MIT", 24 | "dependencies": { 25 | "@golevelup/nestjs-discovery": "^4.0.3", 26 | "sqs-consumer": "^11.0.1", 27 | "sqs-producer": "^5.0.0" 28 | }, 29 | "devDependencies": { 30 | "@biomejs/biome": "^1.8.3", 31 | "@nestjs/common": "^11.0.6", 32 | "@nestjs/core": "^11.0.6", 33 | "@nestjs/testing": "^11.0.6", 34 | "prettier": "^3.3.2", 35 | "reflect-metadata": "^0.2.2", 36 | "rimraf": "^6.0.1", 37 | "rxjs": "^7.8.1", 38 | "ts-node": "^10.9.2", 39 | "tsconfig-paths": "^4.2.0", 40 | "typescript": "^5.5.3", 41 | "unplugin-auto-import": "^0.18.0", 42 | "vitest": "^2.0.2" 43 | }, 44 | "peerDependencies": { 45 | "@aws-sdk/client-sqs": "^3.600.0", 46 | "@nestjs/common": "^6.10.11 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0", 47 | "@nestjs/core": "^6.10.11 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0" 48 | }, 49 | "packageManager": "pnpm@9.5.0" 50 | } 51 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '9.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | importers: 8 | 9 | .: 10 | dependencies: 11 | '@aws-sdk/client-sqs': 12 | specifier: ^3.600.0 13 | version: 3.614.0 14 | '@golevelup/nestjs-discovery': 15 | specifier: ^4.0.3 16 | version: 4.0.3(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1)) 17 | sqs-consumer: 18 | specifier: ^11.0.1 19 | version: 11.0.1(@aws-sdk/client-sqs@3.614.0) 20 | sqs-producer: 21 | specifier: ^5.0.0 22 | version: 5.0.0(@aws-sdk/client-sqs@3.614.0) 23 | devDependencies: 24 | '@biomejs/biome': 25 | specifier: ^1.8.3 26 | version: 1.8.3 27 | '@nestjs/common': 28 | specifier: ^11.0.6 29 | version: 11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1) 30 | '@nestjs/core': 31 | specifier: ^11.0.6 32 | version: 11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1) 33 | '@nestjs/testing': 34 | specifier: ^11.0.6 35 | version: 11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1)) 36 | prettier: 37 | specifier: ^3.3.2 38 | version: 3.3.2 39 | reflect-metadata: 40 | specifier: ^0.2.2 41 | version: 0.2.2 42 | rimraf: 43 | specifier: ^6.0.1 44 | version: 6.0.1 45 | rxjs: 46 | specifier: ^7.8.1 47 | version: 7.8.1 48 | ts-node: 49 | specifier: ^10.9.2 50 | version: 10.9.2(@types/node@20.14.10)(typescript@5.5.3) 51 | tsconfig-paths: 52 | specifier: ^4.2.0 53 | version: 4.2.0 54 | typescript: 55 | specifier: ^5.5.3 56 | version: 5.5.3 57 | unplugin-auto-import: 58 | specifier: ^0.18.0 59 | version: 0.18.0(rollup@4.18.1) 60 | vitest: 61 | specifier: ^2.0.2 62 | version: 2.0.2(@types/node@20.14.10) 63 | 64 | packages: 65 | 66 | '@ampproject/remapping@2.3.0': 67 | resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 68 | engines: {node: '>=6.0.0'} 69 | 70 | '@antfu/utils@0.7.10': 71 | resolution: {integrity: sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==} 72 | 73 | '@aws-crypto/sha256-browser@5.2.0': 74 | resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} 75 | 76 | '@aws-crypto/sha256-js@5.2.0': 77 | resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} 78 | engines: {node: '>=16.0.0'} 79 | 80 | '@aws-crypto/supports-web-crypto@5.2.0': 81 | resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} 82 | 83 | '@aws-crypto/util@5.2.0': 84 | resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} 85 | 86 | '@aws-sdk/client-sqs@3.614.0': 87 | resolution: {integrity: sha512-jCeHIlfwBSuoKN7Nf+DHYbH1eBuWALf+o9WaK8J+xhU0VE6G0DGdjHhjW1aTGTchBntARzqzMqwvY1e18Ac1zQ==} 88 | engines: {node: '>=16.0.0'} 89 | 90 | '@aws-sdk/client-sso-oidc@3.614.0': 91 | resolution: {integrity: sha512-BI1NWcpppbHg/28zbUg54dZeckork8BItZIcjls12vxasy+p3iEzrJVG60jcbUTTsk3Qc1tyxNfrdcVqx0y7Ww==} 92 | engines: {node: '>=16.0.0'} 93 | peerDependencies: 94 | '@aws-sdk/client-sts': ^3.614.0 95 | 96 | '@aws-sdk/client-sso@3.614.0': 97 | resolution: {integrity: sha512-p5pyYaxRzBttjBkqfc8i3K7DzBdTg3ECdVgBo6INIUxfvDy0J8QUE8vNtCgvFIkq+uPw/8M+Eo4zzln7anuO0Q==} 98 | engines: {node: '>=16.0.0'} 99 | 100 | '@aws-sdk/client-sts@3.614.0': 101 | resolution: {integrity: sha512-i6QmaVA1KHHYNnI2VYQy/sc31rLm4+jSp8b/YbQpFnD0w3aXsrEEHHlxek45uSkHb4Nrj1omFBVy/xp1WVYx2Q==} 102 | engines: {node: '>=16.0.0'} 103 | 104 | '@aws-sdk/core@3.614.0': 105 | resolution: {integrity: sha512-BUuS5/1YkgmKc4J0bg83XEtMyDHVyqG2QDzfmhYe8gbOIZabUl1FlrFVwhCAthtrrI6MPGTQcERB4BtJKUSplw==} 106 | engines: {node: '>=16.0.0'} 107 | 108 | '@aws-sdk/credential-provider-env@3.609.0': 109 | resolution: {integrity: sha512-v69ZCWcec2iuV9vLVJMa6fAb5xwkzN4jYIT8yjo2c4Ia/j976Q+TPf35Pnz5My48Xr94EFcaBazrWedF+kwfuQ==} 110 | engines: {node: '>=16.0.0'} 111 | 112 | '@aws-sdk/credential-provider-http@3.614.0': 113 | resolution: {integrity: sha512-YIEjlNUKb3Vo/iTnGAPdsiDC3FUUnNoex2OwU8LmR7AkYZiWdB8nx99DfgkkY+OFMUpw7nKD2PCOtuFONelfGA==} 114 | engines: {node: '>=16.0.0'} 115 | 116 | '@aws-sdk/credential-provider-ini@3.614.0': 117 | resolution: {integrity: sha512-KfLuLFGwlvFSZ2MuzYwWGPb1y5TeiwX5okIDe0aQ1h10oD3924FXbN+mabOnUHQ8EFcGAtCaWbrC86mI7ktC6A==} 118 | engines: {node: '>=16.0.0'} 119 | peerDependencies: 120 | '@aws-sdk/client-sts': ^3.614.0 121 | 122 | '@aws-sdk/credential-provider-node@3.614.0': 123 | resolution: {integrity: sha512-4J6gPEuFZP0mkWq5E//oMS1vrmMM88iNNcv7TEljYnsc6JTAlKejCyFwx6CN+nkIhmIZsl06SXIhBemzBdBPfg==} 124 | engines: {node: '>=16.0.0'} 125 | 126 | '@aws-sdk/credential-provider-process@3.614.0': 127 | resolution: {integrity: sha512-Q0SI0sTRwi8iNODLs5+bbv8vgz8Qy2QdxbCHnPk/6Cx6LMf7i3dqmWquFbspqFRd8QiqxStrblwxrUYZi09tkA==} 128 | engines: {node: '>=16.0.0'} 129 | 130 | '@aws-sdk/credential-provider-sso@3.614.0': 131 | resolution: {integrity: sha512-55+gp0JY4451cWI1qXmVMFM0GQaBKiQpXv2P0xmd9P3qLDyeFUSEW8XPh0d2lb1ICr6x4s47ynXVdGCIv2mXMg==} 132 | engines: {node: '>=16.0.0'} 133 | 134 | '@aws-sdk/credential-provider-web-identity@3.609.0': 135 | resolution: {integrity: sha512-U+PG8NhlYYF45zbr1km3ROtBMYqyyj/oK8NRp++UHHeuavgrP+4wJ4wQnlEaKvJBjevfo3+dlIBcaeQ7NYejWg==} 136 | engines: {node: '>=16.0.0'} 137 | peerDependencies: 138 | '@aws-sdk/client-sts': ^3.609.0 139 | 140 | '@aws-sdk/middleware-host-header@3.609.0': 141 | resolution: {integrity: sha512-iTKfo158lc4jLDfYeZmYMIBHsn8m6zX+XB6birCSNZ/rrlzAkPbGE43CNdKfvjyWdqgLMRXF+B+OcZRvqhMXPQ==} 142 | engines: {node: '>=16.0.0'} 143 | 144 | '@aws-sdk/middleware-logger@3.609.0': 145 | resolution: {integrity: sha512-S62U2dy4jMDhDFDK5gZ4VxFdWzCtLzwbYyFZx2uvPYTECkepLUfzLic2BHg2Qvtu4QjX+oGE3P/7fwaGIsGNuQ==} 146 | engines: {node: '>=16.0.0'} 147 | 148 | '@aws-sdk/middleware-recursion-detection@3.609.0': 149 | resolution: {integrity: sha512-6sewsYB7/o/nbUfA99Aa/LokM+a/u4Wpm/X2o0RxOsDtSB795ObebLJe2BxY5UssbGaWkn7LswyfvrdZNXNj1w==} 150 | engines: {node: '>=16.0.0'} 151 | 152 | '@aws-sdk/middleware-sdk-sqs@3.614.0': 153 | resolution: {integrity: sha512-TFBbXEMnzBqGVPatL5Pg8a3kPOUrhSWxXXWZjr6S4D5ffCJnCNSzfi09SUoehe6uYmTQlS7AAqugTIFdRnA/ww==} 154 | engines: {node: '>=16.0.0'} 155 | 156 | '@aws-sdk/middleware-user-agent@3.614.0': 157 | resolution: {integrity: sha512-xUxh0UPQiMTG6E31Yvu6zVYlikrIcFDKljM11CaatInzvZubGTGiX0DjpqRlfGzUNsuPc/zNrKwRP2+wypgqIw==} 158 | engines: {node: '>=16.0.0'} 159 | 160 | '@aws-sdk/region-config-resolver@3.614.0': 161 | resolution: {integrity: sha512-vDCeMXvic/LU0KFIUjpC3RiSTIkkvESsEfbVHiHH0YINfl8HnEqR5rj+L8+phsCeVg2+LmYwYxd5NRz4PHxt5g==} 162 | engines: {node: '>=16.0.0'} 163 | 164 | '@aws-sdk/token-providers@3.614.0': 165 | resolution: {integrity: sha512-okItqyY6L9IHdxqs+Z116y5/nda7rHxLvROxtAJdLavWTYDydxrZstImNgGWTeVdmc0xX2gJCI77UYUTQWnhRw==} 166 | engines: {node: '>=16.0.0'} 167 | peerDependencies: 168 | '@aws-sdk/client-sso-oidc': ^3.614.0 169 | 170 | '@aws-sdk/types@3.609.0': 171 | resolution: {integrity: sha512-+Tqnh9w0h2LcrUsdXyT1F8mNhXz+tVYBtP19LpeEGntmvHwa2XzvLUCWpoIAIVsHp5+HdB2X9Sn0KAtmbFXc2Q==} 172 | engines: {node: '>=16.0.0'} 173 | 174 | '@aws-sdk/util-endpoints@3.614.0': 175 | resolution: {integrity: sha512-wK2cdrXHH4oz4IomV/yrGkftU9A+ITB6nFL+rxxyO78is2ifHJpFdV4aqk4LSkXYPi6CXWNru/Dqc7yiKXgJPw==} 176 | engines: {node: '>=16.0.0'} 177 | 178 | '@aws-sdk/util-locate-window@3.568.0': 179 | resolution: {integrity: sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==} 180 | engines: {node: '>=16.0.0'} 181 | 182 | '@aws-sdk/util-user-agent-browser@3.609.0': 183 | resolution: {integrity: sha512-fojPU+mNahzQ0YHYBsx0ZIhmMA96H+ZIZ665ObU9tl+SGdbLneVZVikGve+NmHTQwHzwkFsZYYnVKAkreJLAtA==} 184 | 185 | '@aws-sdk/util-user-agent-node@3.614.0': 186 | resolution: {integrity: sha512-15ElZT88peoHnq5TEoEtZwoXTXRxNrk60TZNdpl/TUBJ5oNJ9Dqb5Z4ryb8ofN6nm9aFf59GVAerFDz8iUoHBA==} 187 | engines: {node: '>=16.0.0'} 188 | peerDependencies: 189 | aws-crt: '>=1.0.0' 190 | peerDependenciesMeta: 191 | aws-crt: 192 | optional: true 193 | 194 | '@biomejs/biome@1.8.3': 195 | resolution: {integrity: sha512-/uUV3MV+vyAczO+vKrPdOW0Iaet7UnJMU4bNMinggGJTAnBPjCoLEYcyYtYHNnUNYlv4xZMH6hVIQCAozq8d5w==} 196 | engines: {node: '>=14.21.3'} 197 | hasBin: true 198 | 199 | '@biomejs/cli-darwin-arm64@1.8.3': 200 | resolution: {integrity: sha512-9DYOjclFpKrH/m1Oz75SSExR8VKvNSSsLnVIqdnKexj6NwmiMlKk94Wa1kZEdv6MCOHGHgyyoV57Cw8WzL5n3A==} 201 | engines: {node: '>=14.21.3'} 202 | cpu: [arm64] 203 | os: [darwin] 204 | 205 | '@biomejs/cli-darwin-x64@1.8.3': 206 | resolution: {integrity: sha512-UeW44L/AtbmOF7KXLCoM+9PSgPo0IDcyEUfIoOXYeANaNXXf9mLUwV1GeF2OWjyic5zj6CnAJ9uzk2LT3v/wAw==} 207 | engines: {node: '>=14.21.3'} 208 | cpu: [x64] 209 | os: [darwin] 210 | 211 | '@biomejs/cli-linux-arm64-musl@1.8.3': 212 | resolution: {integrity: sha512-9yjUfOFN7wrYsXt/T/gEWfvVxKlnh3yBpnScw98IF+oOeCYb5/b/+K7YNqKROV2i1DlMjg9g/EcN9wvj+NkMuQ==} 213 | engines: {node: '>=14.21.3'} 214 | cpu: [arm64] 215 | os: [linux] 216 | 217 | '@biomejs/cli-linux-arm64@1.8.3': 218 | resolution: {integrity: sha512-fed2ji8s+I/m8upWpTJGanqiJ0rnlHOK3DdxsyVLZQ8ClY6qLuPc9uehCREBifRJLl/iJyQpHIRufLDeotsPtw==} 219 | engines: {node: '>=14.21.3'} 220 | cpu: [arm64] 221 | os: [linux] 222 | 223 | '@biomejs/cli-linux-x64-musl@1.8.3': 224 | resolution: {integrity: sha512-UHrGJX7PrKMKzPGoEsooKC9jXJMa28TUSMjcIlbDnIO4EAavCoVmNQaIuUSH0Ls2mpGMwUIf+aZJv657zfWWjA==} 225 | engines: {node: '>=14.21.3'} 226 | cpu: [x64] 227 | os: [linux] 228 | 229 | '@biomejs/cli-linux-x64@1.8.3': 230 | resolution: {integrity: sha512-I8G2QmuE1teISyT8ie1HXsjFRz9L1m5n83U1O6m30Kw+kPMPSKjag6QGUn+sXT8V+XWIZxFFBoTDEDZW2KPDDw==} 231 | engines: {node: '>=14.21.3'} 232 | cpu: [x64] 233 | os: [linux] 234 | 235 | '@biomejs/cli-win32-arm64@1.8.3': 236 | resolution: {integrity: sha512-J+Hu9WvrBevfy06eU1Na0lpc7uR9tibm9maHynLIoAjLZpQU3IW+OKHUtyL8p6/3pT2Ju5t5emReeIS2SAxhkQ==} 237 | engines: {node: '>=14.21.3'} 238 | cpu: [arm64] 239 | os: [win32] 240 | 241 | '@biomejs/cli-win32-x64@1.8.3': 242 | resolution: {integrity: sha512-/PJ59vA1pnQeKahemaQf4Nyj7IKUvGQSc3Ze1uIGi+Wvr1xF7rGobSrAAG01T/gUDG21vkDsZYM03NAmPiVkqg==} 243 | engines: {node: '>=14.21.3'} 244 | cpu: [x64] 245 | os: [win32] 246 | 247 | '@cspotcode/source-map-support@0.8.1': 248 | resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 249 | engines: {node: '>=12'} 250 | 251 | '@esbuild/aix-ppc64@0.21.5': 252 | resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} 253 | engines: {node: '>=12'} 254 | cpu: [ppc64] 255 | os: [aix] 256 | 257 | '@esbuild/android-arm64@0.21.5': 258 | resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} 259 | engines: {node: '>=12'} 260 | cpu: [arm64] 261 | os: [android] 262 | 263 | '@esbuild/android-arm@0.21.5': 264 | resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} 265 | engines: {node: '>=12'} 266 | cpu: [arm] 267 | os: [android] 268 | 269 | '@esbuild/android-x64@0.21.5': 270 | resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} 271 | engines: {node: '>=12'} 272 | cpu: [x64] 273 | os: [android] 274 | 275 | '@esbuild/darwin-arm64@0.21.5': 276 | resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} 277 | engines: {node: '>=12'} 278 | cpu: [arm64] 279 | os: [darwin] 280 | 281 | '@esbuild/darwin-x64@0.21.5': 282 | resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} 283 | engines: {node: '>=12'} 284 | cpu: [x64] 285 | os: [darwin] 286 | 287 | '@esbuild/freebsd-arm64@0.21.5': 288 | resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} 289 | engines: {node: '>=12'} 290 | cpu: [arm64] 291 | os: [freebsd] 292 | 293 | '@esbuild/freebsd-x64@0.21.5': 294 | resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} 295 | engines: {node: '>=12'} 296 | cpu: [x64] 297 | os: [freebsd] 298 | 299 | '@esbuild/linux-arm64@0.21.5': 300 | resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} 301 | engines: {node: '>=12'} 302 | cpu: [arm64] 303 | os: [linux] 304 | 305 | '@esbuild/linux-arm@0.21.5': 306 | resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} 307 | engines: {node: '>=12'} 308 | cpu: [arm] 309 | os: [linux] 310 | 311 | '@esbuild/linux-ia32@0.21.5': 312 | resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} 313 | engines: {node: '>=12'} 314 | cpu: [ia32] 315 | os: [linux] 316 | 317 | '@esbuild/linux-loong64@0.21.5': 318 | resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} 319 | engines: {node: '>=12'} 320 | cpu: [loong64] 321 | os: [linux] 322 | 323 | '@esbuild/linux-mips64el@0.21.5': 324 | resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} 325 | engines: {node: '>=12'} 326 | cpu: [mips64el] 327 | os: [linux] 328 | 329 | '@esbuild/linux-ppc64@0.21.5': 330 | resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} 331 | engines: {node: '>=12'} 332 | cpu: [ppc64] 333 | os: [linux] 334 | 335 | '@esbuild/linux-riscv64@0.21.5': 336 | resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} 337 | engines: {node: '>=12'} 338 | cpu: [riscv64] 339 | os: [linux] 340 | 341 | '@esbuild/linux-s390x@0.21.5': 342 | resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} 343 | engines: {node: '>=12'} 344 | cpu: [s390x] 345 | os: [linux] 346 | 347 | '@esbuild/linux-x64@0.21.5': 348 | resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} 349 | engines: {node: '>=12'} 350 | cpu: [x64] 351 | os: [linux] 352 | 353 | '@esbuild/netbsd-x64@0.21.5': 354 | resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} 355 | engines: {node: '>=12'} 356 | cpu: [x64] 357 | os: [netbsd] 358 | 359 | '@esbuild/openbsd-x64@0.21.5': 360 | resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} 361 | engines: {node: '>=12'} 362 | cpu: [x64] 363 | os: [openbsd] 364 | 365 | '@esbuild/sunos-x64@0.21.5': 366 | resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} 367 | engines: {node: '>=12'} 368 | cpu: [x64] 369 | os: [sunos] 370 | 371 | '@esbuild/win32-arm64@0.21.5': 372 | resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} 373 | engines: {node: '>=12'} 374 | cpu: [arm64] 375 | os: [win32] 376 | 377 | '@esbuild/win32-ia32@0.21.5': 378 | resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} 379 | engines: {node: '>=12'} 380 | cpu: [ia32] 381 | os: [win32] 382 | 383 | '@esbuild/win32-x64@0.21.5': 384 | resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} 385 | engines: {node: '>=12'} 386 | cpu: [x64] 387 | os: [win32] 388 | 389 | '@golevelup/nestjs-discovery@4.0.3': 390 | resolution: {integrity: sha512-8w3CsXHN7+7Sn2i419Eal1Iw/kOjAd6Kb55M/ZqKBBwACCMn4WiEuzssC71LpBMI1090CiDxuelfPRwwIrQK+A==} 391 | peerDependencies: 392 | '@nestjs/common': ^10.x || ^11.0.0 393 | '@nestjs/core': ^10.x || ^11.0.0 394 | 395 | '@isaacs/cliui@8.0.2': 396 | resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 397 | engines: {node: '>=12'} 398 | 399 | '@jridgewell/gen-mapping@0.3.5': 400 | resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 401 | engines: {node: '>=6.0.0'} 402 | 403 | '@jridgewell/resolve-uri@3.1.2': 404 | resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 405 | engines: {node: '>=6.0.0'} 406 | 407 | '@jridgewell/set-array@1.2.1': 408 | resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 409 | engines: {node: '>=6.0.0'} 410 | 411 | '@jridgewell/sourcemap-codec@1.5.0': 412 | resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 413 | 414 | '@jridgewell/trace-mapping@0.3.25': 415 | resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 416 | 417 | '@jridgewell/trace-mapping@0.3.9': 418 | resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 419 | 420 | '@lukeed/csprng@1.1.0': 421 | resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} 422 | engines: {node: '>=8'} 423 | 424 | '@nestjs/common@11.0.6': 425 | resolution: {integrity: sha512-j+M3WOU6loZPNirIHDiZ1LxXRXVNb62XicgLBqdgyrDBFCJrAZaq0lfERUEPlN0/j4GBFnTSPg+CNsoGTBW1zQ==} 426 | peerDependencies: 427 | class-transformer: '*' 428 | class-validator: '*' 429 | reflect-metadata: ^0.1.12 || ^0.2.0 430 | rxjs: ^7.1.0 431 | peerDependenciesMeta: 432 | class-transformer: 433 | optional: true 434 | class-validator: 435 | optional: true 436 | 437 | '@nestjs/core@11.0.6': 438 | resolution: {integrity: sha512-Xf33bwc3waAJ/faJBW06+Dwq3m15p3wbFOc/CcK8ua5EZna4sMjIjXXAb6bQmEjR1KfTXV5z595UD2vwp6cyHg==} 439 | engines: {node: '>= 20'} 440 | peerDependencies: 441 | '@nestjs/common': ^11.0.0 442 | '@nestjs/microservices': ^11.0.0 443 | '@nestjs/platform-express': ^11.0.0 444 | '@nestjs/websockets': ^11.0.0 445 | reflect-metadata: ^0.1.12 || ^0.2.0 446 | rxjs: ^7.1.0 447 | peerDependenciesMeta: 448 | '@nestjs/microservices': 449 | optional: true 450 | '@nestjs/platform-express': 451 | optional: true 452 | '@nestjs/websockets': 453 | optional: true 454 | 455 | '@nestjs/testing@11.0.6': 456 | resolution: {integrity: sha512-RZDWdnOncOQ1vT3630VlRzKee2P21ZJoF1+NAY+nzYUuYuYAaBdjrTZQGwymmiZQcrM+TQaViSjSPUmcJXdKyA==} 457 | peerDependencies: 458 | '@nestjs/common': ^11.0.0 459 | '@nestjs/core': ^11.0.0 460 | '@nestjs/microservices': ^11.0.0 461 | '@nestjs/platform-express': ^11.0.0 462 | peerDependenciesMeta: 463 | '@nestjs/microservices': 464 | optional: true 465 | '@nestjs/platform-express': 466 | optional: true 467 | 468 | '@nodelib/fs.scandir@2.1.5': 469 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 470 | engines: {node: '>= 8'} 471 | 472 | '@nodelib/fs.stat@2.0.5': 473 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 474 | engines: {node: '>= 8'} 475 | 476 | '@nodelib/fs.walk@1.2.8': 477 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 478 | engines: {node: '>= 8'} 479 | 480 | '@nuxt/opencollective@0.4.1': 481 | resolution: {integrity: sha512-GXD3wy50qYbxCJ652bDrDzgMr3NFEkIS374+IgFQKkCvk9yiYcLvX2XDYr7UyQxf4wK0e+yqDYRubZ0DtOxnmQ==} 482 | engines: {node: ^14.18.0 || >=16.10.0, npm: '>=5.10.0'} 483 | hasBin: true 484 | 485 | '@pkgjs/parseargs@0.11.0': 486 | resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 487 | engines: {node: '>=14'} 488 | 489 | '@rollup/pluginutils@5.1.0': 490 | resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} 491 | engines: {node: '>=14.0.0'} 492 | peerDependencies: 493 | rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 494 | peerDependenciesMeta: 495 | rollup: 496 | optional: true 497 | 498 | '@rollup/rollup-android-arm-eabi@4.18.1': 499 | resolution: {integrity: sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==} 500 | cpu: [arm] 501 | os: [android] 502 | 503 | '@rollup/rollup-android-arm64@4.18.1': 504 | resolution: {integrity: sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==} 505 | cpu: [arm64] 506 | os: [android] 507 | 508 | '@rollup/rollup-darwin-arm64@4.18.1': 509 | resolution: {integrity: sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==} 510 | cpu: [arm64] 511 | os: [darwin] 512 | 513 | '@rollup/rollup-darwin-x64@4.18.1': 514 | resolution: {integrity: sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==} 515 | cpu: [x64] 516 | os: [darwin] 517 | 518 | '@rollup/rollup-linux-arm-gnueabihf@4.18.1': 519 | resolution: {integrity: sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==} 520 | cpu: [arm] 521 | os: [linux] 522 | 523 | '@rollup/rollup-linux-arm-musleabihf@4.18.1': 524 | resolution: {integrity: sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==} 525 | cpu: [arm] 526 | os: [linux] 527 | 528 | '@rollup/rollup-linux-arm64-gnu@4.18.1': 529 | resolution: {integrity: sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==} 530 | cpu: [arm64] 531 | os: [linux] 532 | 533 | '@rollup/rollup-linux-arm64-musl@4.18.1': 534 | resolution: {integrity: sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==} 535 | cpu: [arm64] 536 | os: [linux] 537 | 538 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': 539 | resolution: {integrity: sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==} 540 | cpu: [ppc64] 541 | os: [linux] 542 | 543 | '@rollup/rollup-linux-riscv64-gnu@4.18.1': 544 | resolution: {integrity: sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==} 545 | cpu: [riscv64] 546 | os: [linux] 547 | 548 | '@rollup/rollup-linux-s390x-gnu@4.18.1': 549 | resolution: {integrity: sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==} 550 | cpu: [s390x] 551 | os: [linux] 552 | 553 | '@rollup/rollup-linux-x64-gnu@4.18.1': 554 | resolution: {integrity: sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==} 555 | cpu: [x64] 556 | os: [linux] 557 | 558 | '@rollup/rollup-linux-x64-musl@4.18.1': 559 | resolution: {integrity: sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==} 560 | cpu: [x64] 561 | os: [linux] 562 | 563 | '@rollup/rollup-win32-arm64-msvc@4.18.1': 564 | resolution: {integrity: sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==} 565 | cpu: [arm64] 566 | os: [win32] 567 | 568 | '@rollup/rollup-win32-ia32-msvc@4.18.1': 569 | resolution: {integrity: sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==} 570 | cpu: [ia32] 571 | os: [win32] 572 | 573 | '@rollup/rollup-win32-x64-msvc@4.18.1': 574 | resolution: {integrity: sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==} 575 | cpu: [x64] 576 | os: [win32] 577 | 578 | '@smithy/abort-controller@3.1.1': 579 | resolution: {integrity: sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==} 580 | engines: {node: '>=16.0.0'} 581 | 582 | '@smithy/config-resolver@3.0.5': 583 | resolution: {integrity: sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==} 584 | engines: {node: '>=16.0.0'} 585 | 586 | '@smithy/core@2.2.6': 587 | resolution: {integrity: sha512-tBbVIv/ui7/lLTKayYJJvi8JLVL2SwOQTbNFEOrvzSE3ktByvsa1erwBOnAMo8N5Vu30g7lN4lLStrU75oDGuw==} 588 | engines: {node: '>=16.0.0'} 589 | 590 | '@smithy/credential-provider-imds@3.1.4': 591 | resolution: {integrity: sha512-NKyH01m97Xa5xf3pB2QOF3lnuE8RIK0hTVNU5zvZAwZU8uspYO4DHQVlK+Y5gwSrujTfHvbfd1D9UFJAc0iYKQ==} 592 | engines: {node: '>=16.0.0'} 593 | 594 | '@smithy/fetch-http-handler@3.2.1': 595 | resolution: {integrity: sha512-0w0bgUvZmfa0vHN8a+moByhCJT07WN6AHKEhFSOLsDpnszm+5dLVv5utGaqbhOrZ/aF5x3xuPMs/oMCd+4O5xg==} 596 | 597 | '@smithy/hash-node@3.0.3': 598 | resolution: {integrity: sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==} 599 | engines: {node: '>=16.0.0'} 600 | 601 | '@smithy/invalid-dependency@3.0.3': 602 | resolution: {integrity: sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==} 603 | 604 | '@smithy/is-array-buffer@2.2.0': 605 | resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} 606 | engines: {node: '>=14.0.0'} 607 | 608 | '@smithy/is-array-buffer@3.0.0': 609 | resolution: {integrity: sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==} 610 | engines: {node: '>=16.0.0'} 611 | 612 | '@smithy/md5-js@3.0.3': 613 | resolution: {integrity: sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==} 614 | 615 | '@smithy/middleware-content-length@3.0.3': 616 | resolution: {integrity: sha512-Dbz2bzexReYIQDWMr+gZhpwBetNXzbhnEMhYKA6urqmojO14CsXjnsoPYO8UL/xxcawn8ZsuVU61ElkLSltIUQ==} 617 | engines: {node: '>=16.0.0'} 618 | 619 | '@smithy/middleware-endpoint@3.0.5': 620 | resolution: {integrity: sha512-V4acqqrh5tDxUEGVTOgf2lYMZqPQsoGntCrjrJZEeBzEzDry2d2vcI1QCXhGltXPPY+BMc6eksZMguA9fIY8vA==} 621 | engines: {node: '>=16.0.0'} 622 | 623 | '@smithy/middleware-retry@3.0.9': 624 | resolution: {integrity: sha512-Mrv9omExU1gA7Y0VEJG2LieGfPYtwwcEiOnVGZ54a37NEMr66TJ0glFslOJFuKWG6izg5DpKIUmDV9rRxjm47Q==} 625 | engines: {node: '>=16.0.0'} 626 | 627 | '@smithy/middleware-serde@3.0.3': 628 | resolution: {integrity: sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==} 629 | engines: {node: '>=16.0.0'} 630 | 631 | '@smithy/middleware-stack@3.0.3': 632 | resolution: {integrity: sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==} 633 | engines: {node: '>=16.0.0'} 634 | 635 | '@smithy/node-config-provider@3.1.4': 636 | resolution: {integrity: sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==} 637 | engines: {node: '>=16.0.0'} 638 | 639 | '@smithy/node-http-handler@3.1.2': 640 | resolution: {integrity: sha512-Td3rUNI7qqtoSLTsJBtsyfoG4cF/XMFmJr6Z2dX8QNzIi6tIW6YmuyFml8mJ2cNpyWNqITKbROMOFrvQjmsOvw==} 641 | engines: {node: '>=16.0.0'} 642 | 643 | '@smithy/property-provider@3.1.3': 644 | resolution: {integrity: sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==} 645 | engines: {node: '>=16.0.0'} 646 | 647 | '@smithy/protocol-http@4.0.3': 648 | resolution: {integrity: sha512-x5jmrCWwQlx+Zv4jAtc33ijJ+vqqYN+c/ZkrnpvEe/uDas7AT7A/4Rc2CdfxgWv4WFGmEqODIrrUToPN6DDkGw==} 649 | engines: {node: '>=16.0.0'} 650 | 651 | '@smithy/querystring-builder@3.0.3': 652 | resolution: {integrity: sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==} 653 | engines: {node: '>=16.0.0'} 654 | 655 | '@smithy/querystring-parser@3.0.3': 656 | resolution: {integrity: sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==} 657 | engines: {node: '>=16.0.0'} 658 | 659 | '@smithy/service-error-classification@3.0.3': 660 | resolution: {integrity: sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==} 661 | engines: {node: '>=16.0.0'} 662 | 663 | '@smithy/shared-ini-file-loader@3.1.4': 664 | resolution: {integrity: sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==} 665 | engines: {node: '>=16.0.0'} 666 | 667 | '@smithy/signature-v4@3.1.2': 668 | resolution: {integrity: sha512-3BcPylEsYtD0esM4Hoyml/+s7WP2LFhcM3J2AGdcL2vx9O60TtfpDOL72gjb4lU8NeRPeKAwR77YNyyGvMbuEA==} 669 | engines: {node: '>=16.0.0'} 670 | 671 | '@smithy/smithy-client@3.1.7': 672 | resolution: {integrity: sha512-nZbJZB0XI3YnaFBWGDBr7kjaew6O0oNYNmopyIz6gKZEbxzrtH7rwvU1GcVxcSFoOwWecLJEe79fxEMljHopFQ==} 673 | engines: {node: '>=16.0.0'} 674 | 675 | '@smithy/types@3.3.0': 676 | resolution: {integrity: sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==} 677 | engines: {node: '>=16.0.0'} 678 | 679 | '@smithy/url-parser@3.0.3': 680 | resolution: {integrity: sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==} 681 | 682 | '@smithy/util-base64@3.0.0': 683 | resolution: {integrity: sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==} 684 | engines: {node: '>=16.0.0'} 685 | 686 | '@smithy/util-body-length-browser@3.0.0': 687 | resolution: {integrity: sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==} 688 | 689 | '@smithy/util-body-length-node@3.0.0': 690 | resolution: {integrity: sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==} 691 | engines: {node: '>=16.0.0'} 692 | 693 | '@smithy/util-buffer-from@2.2.0': 694 | resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} 695 | engines: {node: '>=14.0.0'} 696 | 697 | '@smithy/util-buffer-from@3.0.0': 698 | resolution: {integrity: sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==} 699 | engines: {node: '>=16.0.0'} 700 | 701 | '@smithy/util-config-provider@3.0.0': 702 | resolution: {integrity: sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==} 703 | engines: {node: '>=16.0.0'} 704 | 705 | '@smithy/util-defaults-mode-browser@3.0.9': 706 | resolution: {integrity: sha512-WKPcElz92MAQG09miBdb0GxEH/MwD5GfE8g07WokITq5g6J1ROQfYCKC1wNnkqAGfrSywT7L0rdvvqlBplqiyA==} 707 | engines: {node: '>= 10.0.0'} 708 | 709 | '@smithy/util-defaults-mode-node@3.0.9': 710 | resolution: {integrity: sha512-dQLrUqFxqpf0GvEKEuFdgXcdZwz6oFm752h4d6C7lQz+RLddf761L2r7dSwGWzESMMB3wKj0jL+skRhEGlecjw==} 711 | engines: {node: '>= 10.0.0'} 712 | 713 | '@smithy/util-endpoints@2.0.5': 714 | resolution: {integrity: sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==} 715 | engines: {node: '>=16.0.0'} 716 | 717 | '@smithy/util-hex-encoding@3.0.0': 718 | resolution: {integrity: sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==} 719 | engines: {node: '>=16.0.0'} 720 | 721 | '@smithy/util-middleware@3.0.3': 722 | resolution: {integrity: sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==} 723 | engines: {node: '>=16.0.0'} 724 | 725 | '@smithy/util-retry@3.0.3': 726 | resolution: {integrity: sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==} 727 | engines: {node: '>=16.0.0'} 728 | 729 | '@smithy/util-stream@3.0.6': 730 | resolution: {integrity: sha512-w9i//7egejAIvplX821rPWWgaiY1dxsQUw0hXX7qwa/uZ9U3zplqTQ871jWadkcVB9gFDhkPWYVZf4yfFbZ0xA==} 731 | engines: {node: '>=16.0.0'} 732 | 733 | '@smithy/util-uri-escape@3.0.0': 734 | resolution: {integrity: sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==} 735 | engines: {node: '>=16.0.0'} 736 | 737 | '@smithy/util-utf8@2.3.0': 738 | resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} 739 | engines: {node: '>=14.0.0'} 740 | 741 | '@smithy/util-utf8@3.0.0': 742 | resolution: {integrity: sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==} 743 | engines: {node: '>=16.0.0'} 744 | 745 | '@tsconfig/node10@1.0.11': 746 | resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} 747 | 748 | '@tsconfig/node12@1.0.11': 749 | resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 750 | 751 | '@tsconfig/node14@1.0.3': 752 | resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 753 | 754 | '@tsconfig/node16@1.0.4': 755 | resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 756 | 757 | '@types/estree@1.0.5': 758 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 759 | 760 | '@types/node@20.14.10': 761 | resolution: {integrity: sha512-MdiXf+nDuMvY0gJKxyfZ7/6UFsETO7mGKF54MVD/ekJS6HdFtpZFBgrh6Pseu64XTb2MLyFPlbW6hj8HYRQNOQ==} 762 | 763 | '@vitest/expect@2.0.2': 764 | resolution: {integrity: sha512-nKAvxBYqcDugYZ4nJvnm5OR8eDJdgWjk4XM9owQKUjzW70q0icGV2HVnQOyYsp906xJaBDUXw0+9EHw2T8e0mQ==} 765 | 766 | '@vitest/pretty-format@2.0.2': 767 | resolution: {integrity: sha512-SBCyOXfGVvddRd9r2PwoVR0fonQjh9BMIcBMlSzbcNwFfGr6ZhOhvBzurjvi2F4ryut2HcqiFhNeDVGwru8tLg==} 768 | 769 | '@vitest/runner@2.0.2': 770 | resolution: {integrity: sha512-OCh437Vi8Wdbif1e0OvQcbfM3sW4s2lpmOjAE7qfLrpzJX2M7J1IQlNvEcb/fu6kaIB9n9n35wS0G2Q3en5kHg==} 771 | 772 | '@vitest/snapshot@2.0.2': 773 | resolution: {integrity: sha512-Yc2ewhhZhx+0f9cSUdfzPRcsM6PhIb+S43wxE7OG0kTxqgqzo8tHkXFuFlndXeDMp09G3sY/X5OAo/RfYydf1g==} 774 | 775 | '@vitest/spy@2.0.2': 776 | resolution: {integrity: sha512-MgwJ4AZtCgqyp2d7WcQVE8aNG5vQ9zu9qMPYQHjsld/QVsrvg78beNrXdO4HYkP0lDahCO3P4F27aagIag+SGQ==} 777 | 778 | '@vitest/utils@2.0.2': 779 | resolution: {integrity: sha512-pxCY1v7kmOCWYWjzc0zfjGTA3Wmn8PKnlPvSrsA643P1NHl1fOyXj2Q9SaNlrlFE+ivCsxM80Ov3AR82RmHCWQ==} 780 | 781 | acorn-walk@8.3.3: 782 | resolution: {integrity: sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==} 783 | engines: {node: '>=0.4.0'} 784 | 785 | acorn@8.12.1: 786 | resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} 787 | engines: {node: '>=0.4.0'} 788 | hasBin: true 789 | 790 | ansi-regex@5.0.1: 791 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 792 | engines: {node: '>=8'} 793 | 794 | ansi-regex@6.0.1: 795 | resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} 796 | engines: {node: '>=12'} 797 | 798 | ansi-styles@4.3.0: 799 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 800 | engines: {node: '>=8'} 801 | 802 | ansi-styles@6.2.1: 803 | resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 804 | engines: {node: '>=12'} 805 | 806 | anymatch@3.1.3: 807 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 808 | engines: {node: '>= 8'} 809 | 810 | arg@4.1.3: 811 | resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 812 | 813 | assertion-error@2.0.1: 814 | resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} 815 | engines: {node: '>=12'} 816 | 817 | balanced-match@1.0.2: 818 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 819 | 820 | binary-extensions@2.3.0: 821 | resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 822 | engines: {node: '>=8'} 823 | 824 | bowser@2.11.0: 825 | resolution: {integrity: sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==} 826 | 827 | brace-expansion@2.0.1: 828 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 829 | 830 | braces@3.0.3: 831 | resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 832 | engines: {node: '>=8'} 833 | 834 | cac@6.7.14: 835 | resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 836 | engines: {node: '>=8'} 837 | 838 | chai@5.1.1: 839 | resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} 840 | engines: {node: '>=12'} 841 | 842 | check-error@2.1.1: 843 | resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} 844 | engines: {node: '>= 16'} 845 | 846 | chokidar@3.6.0: 847 | resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 848 | engines: {node: '>= 8.10.0'} 849 | 850 | color-convert@2.0.1: 851 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 852 | engines: {node: '>=7.0.0'} 853 | 854 | color-name@1.1.4: 855 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 856 | 857 | confbox@0.1.7: 858 | resolution: {integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==} 859 | 860 | consola@3.4.0: 861 | resolution: {integrity: sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==} 862 | engines: {node: ^14.18.0 || >=16.10.0} 863 | 864 | create-require@1.1.1: 865 | resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 866 | 867 | cross-spawn@7.0.3: 868 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 869 | engines: {node: '>= 8'} 870 | 871 | debug@4.3.5: 872 | resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} 873 | engines: {node: '>=6.0'} 874 | peerDependencies: 875 | supports-color: '*' 876 | peerDependenciesMeta: 877 | supports-color: 878 | optional: true 879 | 880 | deep-eql@5.0.2: 881 | resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} 882 | engines: {node: '>=6'} 883 | 884 | diff@4.0.2: 885 | resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 886 | engines: {node: '>=0.3.1'} 887 | 888 | eastasianwidth@0.2.0: 889 | resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 890 | 891 | emoji-regex@8.0.0: 892 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 893 | 894 | emoji-regex@9.2.2: 895 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 896 | 897 | esbuild@0.21.5: 898 | resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} 899 | engines: {node: '>=12'} 900 | hasBin: true 901 | 902 | escape-string-regexp@5.0.0: 903 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 904 | engines: {node: '>=12'} 905 | 906 | estree-walker@2.0.2: 907 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 908 | 909 | estree-walker@3.0.3: 910 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 911 | 912 | execa@8.0.1: 913 | resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} 914 | engines: {node: '>=16.17'} 915 | 916 | fast-glob@3.3.2: 917 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 918 | engines: {node: '>=8.6.0'} 919 | 920 | fast-safe-stringify@2.1.1: 921 | resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 922 | 923 | fast-xml-parser@4.2.5: 924 | resolution: {integrity: sha512-B9/wizE4WngqQftFPmdaMYlXoJlJOYxGQOanC77fq9k8+Z0v5dDSVh+3glErdIROP//s/jgb7ZuxKfB8nVyo0g==} 925 | hasBin: true 926 | 927 | fastq@1.17.1: 928 | resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 929 | 930 | fill-range@7.1.1: 931 | resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 932 | engines: {node: '>=8'} 933 | 934 | foreground-child@3.2.1: 935 | resolution: {integrity: sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==} 936 | engines: {node: '>=14'} 937 | 938 | fsevents@2.3.3: 939 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 940 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 941 | os: [darwin] 942 | 943 | get-func-name@2.0.2: 944 | resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} 945 | 946 | get-stream@8.0.1: 947 | resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} 948 | engines: {node: '>=16'} 949 | 950 | glob-parent@5.1.2: 951 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 952 | engines: {node: '>= 6'} 953 | 954 | glob@11.0.0: 955 | resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} 956 | engines: {node: 20 || >=22} 957 | hasBin: true 958 | 959 | human-signals@5.0.0: 960 | resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} 961 | engines: {node: '>=16.17.0'} 962 | 963 | is-binary-path@2.1.0: 964 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 965 | engines: {node: '>=8'} 966 | 967 | is-extglob@2.1.1: 968 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 969 | engines: {node: '>=0.10.0'} 970 | 971 | is-fullwidth-code-point@3.0.0: 972 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 973 | engines: {node: '>=8'} 974 | 975 | is-glob@4.0.3: 976 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 977 | engines: {node: '>=0.10.0'} 978 | 979 | is-number@7.0.0: 980 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 981 | engines: {node: '>=0.12.0'} 982 | 983 | is-stream@3.0.0: 984 | resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} 985 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 986 | 987 | isexe@2.0.0: 988 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 989 | 990 | iterare@1.2.1: 991 | resolution: {integrity: sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==} 992 | engines: {node: '>=6'} 993 | 994 | jackspeak@4.0.1: 995 | resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} 996 | engines: {node: 20 || >=22} 997 | 998 | js-tokens@9.0.0: 999 | resolution: {integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==} 1000 | 1001 | json5@2.2.3: 1002 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1003 | engines: {node: '>=6'} 1004 | hasBin: true 1005 | 1006 | local-pkg@0.5.0: 1007 | resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} 1008 | engines: {node: '>=14'} 1009 | 1010 | lodash@4.17.21: 1011 | resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} 1012 | 1013 | loupe@3.1.1: 1014 | resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} 1015 | 1016 | lru-cache@11.0.0: 1017 | resolution: {integrity: sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==} 1018 | engines: {node: 20 || >=22} 1019 | 1020 | magic-string@0.30.10: 1021 | resolution: {integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==} 1022 | 1023 | make-error@1.3.6: 1024 | resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 1025 | 1026 | merge-stream@2.0.0: 1027 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1028 | 1029 | merge2@1.4.1: 1030 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 1031 | engines: {node: '>= 8'} 1032 | 1033 | micromatch@4.0.7: 1034 | resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==} 1035 | engines: {node: '>=8.6'} 1036 | 1037 | mimic-fn@4.0.0: 1038 | resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} 1039 | engines: {node: '>=12'} 1040 | 1041 | minimatch@10.0.1: 1042 | resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 1043 | engines: {node: 20 || >=22} 1044 | 1045 | minimatch@9.0.5: 1046 | resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 1047 | engines: {node: '>=16 || 14 >=14.17'} 1048 | 1049 | minimist@1.2.8: 1050 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 1051 | 1052 | minipass@7.1.2: 1053 | resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 1054 | engines: {node: '>=16 || 14 >=14.17'} 1055 | 1056 | mlly@1.7.1: 1057 | resolution: {integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==} 1058 | 1059 | ms@2.1.2: 1060 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1061 | 1062 | nanoid@3.3.7: 1063 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 1064 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 1065 | hasBin: true 1066 | 1067 | normalize-path@3.0.0: 1068 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1069 | engines: {node: '>=0.10.0'} 1070 | 1071 | npm-run-path@5.3.0: 1072 | resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} 1073 | engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 1074 | 1075 | onetime@6.0.0: 1076 | resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} 1077 | engines: {node: '>=12'} 1078 | 1079 | package-json-from-dist@1.0.0: 1080 | resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} 1081 | 1082 | path-key@3.1.1: 1083 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1084 | engines: {node: '>=8'} 1085 | 1086 | path-key@4.0.0: 1087 | resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} 1088 | engines: {node: '>=12'} 1089 | 1090 | path-scurry@2.0.0: 1091 | resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} 1092 | engines: {node: 20 || >=22} 1093 | 1094 | path-to-regexp@8.2.0: 1095 | resolution: {integrity: sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==} 1096 | engines: {node: '>=16'} 1097 | 1098 | pathe@1.1.2: 1099 | resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} 1100 | 1101 | pathval@2.0.0: 1102 | resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} 1103 | engines: {node: '>= 14.16'} 1104 | 1105 | picocolors@1.0.1: 1106 | resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} 1107 | 1108 | picomatch@2.3.1: 1109 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1110 | engines: {node: '>=8.6'} 1111 | 1112 | pkg-types@1.1.3: 1113 | resolution: {integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==} 1114 | 1115 | postcss@8.4.39: 1116 | resolution: {integrity: sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==} 1117 | engines: {node: ^10 || ^12 || >=14} 1118 | 1119 | prettier@3.3.2: 1120 | resolution: {integrity: sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==} 1121 | engines: {node: '>=14'} 1122 | hasBin: true 1123 | 1124 | queue-microtask@1.2.3: 1125 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 1126 | 1127 | readdirp@3.6.0: 1128 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 1129 | engines: {node: '>=8.10.0'} 1130 | 1131 | reflect-metadata@0.2.2: 1132 | resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} 1133 | 1134 | reusify@1.0.4: 1135 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 1136 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 1137 | 1138 | rimraf@6.0.1: 1139 | resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} 1140 | engines: {node: 20 || >=22} 1141 | hasBin: true 1142 | 1143 | rollup@4.18.1: 1144 | resolution: {integrity: sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==} 1145 | engines: {node: '>=18.0.0', npm: '>=8.0.0'} 1146 | hasBin: true 1147 | 1148 | run-parallel@1.2.0: 1149 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 1150 | 1151 | rxjs@7.8.1: 1152 | resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} 1153 | 1154 | scule@1.3.0: 1155 | resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} 1156 | 1157 | shebang-command@2.0.0: 1158 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1159 | engines: {node: '>=8'} 1160 | 1161 | shebang-regex@3.0.0: 1162 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 1163 | engines: {node: '>=8'} 1164 | 1165 | siginfo@2.0.0: 1166 | resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} 1167 | 1168 | signal-exit@4.1.0: 1169 | resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 1170 | engines: {node: '>=14'} 1171 | 1172 | source-map-js@1.2.0: 1173 | resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} 1174 | engines: {node: '>=0.10.0'} 1175 | 1176 | sqs-consumer@11.0.1: 1177 | resolution: {integrity: sha512-YLt1d5udjDKbGZggu5ewj99Fk4K2nz2sVTXAjI8P7PZk+Hv+EffIw1WAeNh/VzPyDBuHKNVlR4EgKW5XUaW2wg==} 1178 | engines: {node: '>=18.0.0'} 1179 | peerDependencies: 1180 | '@aws-sdk/client-sqs': ^3.614.0 1181 | 1182 | sqs-producer@5.0.0: 1183 | resolution: {integrity: sha512-xP1Vo/frpv5d20I0sC1sIUhnABFEPoHUE58ppstmjNE7HDzB33cuUdMOaZEOTtDMMje09xIcqf4ch0dFY83/cA==} 1184 | engines: {node: '>=18.0.0'} 1185 | peerDependencies: 1186 | '@aws-sdk/client-sqs': ^3.529.1 1187 | 1188 | stackback@0.0.2: 1189 | resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} 1190 | 1191 | std-env@3.7.0: 1192 | resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} 1193 | 1194 | string-width@4.2.3: 1195 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 1196 | engines: {node: '>=8'} 1197 | 1198 | string-width@5.1.2: 1199 | resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 1200 | engines: {node: '>=12'} 1201 | 1202 | strip-ansi@6.0.1: 1203 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 1204 | engines: {node: '>=8'} 1205 | 1206 | strip-ansi@7.1.0: 1207 | resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 1208 | engines: {node: '>=12'} 1209 | 1210 | strip-bom@3.0.0: 1211 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 1212 | engines: {node: '>=4'} 1213 | 1214 | strip-final-newline@3.0.0: 1215 | resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} 1216 | engines: {node: '>=12'} 1217 | 1218 | strip-literal@2.1.0: 1219 | resolution: {integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==} 1220 | 1221 | strnum@1.0.5: 1222 | resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==} 1223 | 1224 | tinybench@2.8.0: 1225 | resolution: {integrity: sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==} 1226 | 1227 | tinypool@1.0.0: 1228 | resolution: {integrity: sha512-KIKExllK7jp3uvrNtvRBYBWBOAXSX8ZvoaD8T+7KB/QHIuoJW3Pmr60zucywjAlMb5TeXUkcs/MWeWLu0qvuAQ==} 1229 | engines: {node: ^18.0.0 || >=20.0.0} 1230 | 1231 | tinyrainbow@1.2.0: 1232 | resolution: {integrity: sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==} 1233 | engines: {node: '>=14.0.0'} 1234 | 1235 | tinyspy@3.0.0: 1236 | resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} 1237 | engines: {node: '>=14.0.0'} 1238 | 1239 | to-regex-range@5.0.1: 1240 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 1241 | engines: {node: '>=8.0'} 1242 | 1243 | ts-node@10.9.2: 1244 | resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 1245 | hasBin: true 1246 | peerDependencies: 1247 | '@swc/core': '>=1.2.50' 1248 | '@swc/wasm': '>=1.2.50' 1249 | '@types/node': '*' 1250 | typescript: '>=2.7' 1251 | peerDependenciesMeta: 1252 | '@swc/core': 1253 | optional: true 1254 | '@swc/wasm': 1255 | optional: true 1256 | 1257 | tsconfig-paths@4.2.0: 1258 | resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} 1259 | engines: {node: '>=6'} 1260 | 1261 | tslib@2.1.0: 1262 | resolution: {integrity: sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==} 1263 | 1264 | tslib@2.6.3: 1265 | resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} 1266 | 1267 | tslib@2.8.1: 1268 | resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 1269 | 1270 | typescript@5.5.3: 1271 | resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==} 1272 | engines: {node: '>=14.17'} 1273 | hasBin: true 1274 | 1275 | ufo@1.5.3: 1276 | resolution: {integrity: sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==} 1277 | 1278 | uid@2.0.2: 1279 | resolution: {integrity: sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==} 1280 | engines: {node: '>=8'} 1281 | 1282 | undici-types@5.26.5: 1283 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 1284 | 1285 | unimport@3.7.2: 1286 | resolution: {integrity: sha512-91mxcZTadgXyj3lFWmrGT8GyoRHWuE5fqPOjg5RVtF6vj+OfM5G6WCzXjuYtSgELE5ggB34RY4oiCSEP8I3AHw==} 1287 | 1288 | unplugin-auto-import@0.18.0: 1289 | resolution: {integrity: sha512-DZcj8tceMpwuZgBPM9hhKd7v05WAYCUc/qYjxV7vGbeVCGsQ8SHWumCyOYBDqYzkPd4FlQkuh+OH0cWgdCjcdw==} 1290 | engines: {node: '>=14'} 1291 | peerDependencies: 1292 | '@nuxt/kit': ^3.2.2 1293 | '@vueuse/core': '*' 1294 | peerDependenciesMeta: 1295 | '@nuxt/kit': 1296 | optional: true 1297 | '@vueuse/core': 1298 | optional: true 1299 | 1300 | unplugin@1.11.0: 1301 | resolution: {integrity: sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==} 1302 | engines: {node: '>=14.0.0'} 1303 | 1304 | uuid@9.0.1: 1305 | resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} 1306 | hasBin: true 1307 | 1308 | v8-compile-cache-lib@3.0.1: 1309 | resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 1310 | 1311 | vite-node@2.0.2: 1312 | resolution: {integrity: sha512-w4vkSz1Wo+NIQg8pjlEn0jQbcM/0D+xVaYjhw3cvarTanLLBh54oNiRbsT8PNK5GfuST0IlVXjsNRoNlqvY/fw==} 1313 | engines: {node: ^18.0.0 || >=20.0.0} 1314 | hasBin: true 1315 | 1316 | vite@5.3.3: 1317 | resolution: {integrity: sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==} 1318 | engines: {node: ^18.0.0 || >=20.0.0} 1319 | hasBin: true 1320 | peerDependencies: 1321 | '@types/node': ^18.0.0 || >=20.0.0 1322 | less: '*' 1323 | lightningcss: ^1.21.0 1324 | sass: '*' 1325 | stylus: '*' 1326 | sugarss: '*' 1327 | terser: ^5.4.0 1328 | peerDependenciesMeta: 1329 | '@types/node': 1330 | optional: true 1331 | less: 1332 | optional: true 1333 | lightningcss: 1334 | optional: true 1335 | sass: 1336 | optional: true 1337 | stylus: 1338 | optional: true 1339 | sugarss: 1340 | optional: true 1341 | terser: 1342 | optional: true 1343 | 1344 | vitest@2.0.2: 1345 | resolution: {integrity: sha512-WlpZ9neRIjNBIOQwBYfBSr0+of5ZCbxT2TVGKW4Lv0c8+srCFIiRdsP7U009t8mMn821HQ4XKgkx5dVWpyoyLw==} 1346 | engines: {node: ^18.0.0 || >=20.0.0} 1347 | hasBin: true 1348 | peerDependencies: 1349 | '@edge-runtime/vm': '*' 1350 | '@types/node': ^18.0.0 || >=20.0.0 1351 | '@vitest/browser': 2.0.2 1352 | '@vitest/ui': 2.0.2 1353 | happy-dom: '*' 1354 | jsdom: '*' 1355 | peerDependenciesMeta: 1356 | '@edge-runtime/vm': 1357 | optional: true 1358 | '@types/node': 1359 | optional: true 1360 | '@vitest/browser': 1361 | optional: true 1362 | '@vitest/ui': 1363 | optional: true 1364 | happy-dom: 1365 | optional: true 1366 | jsdom: 1367 | optional: true 1368 | 1369 | webpack-sources@3.2.3: 1370 | resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} 1371 | engines: {node: '>=10.13.0'} 1372 | 1373 | webpack-virtual-modules@0.6.2: 1374 | resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} 1375 | 1376 | which@2.0.2: 1377 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 1378 | engines: {node: '>= 8'} 1379 | hasBin: true 1380 | 1381 | why-is-node-running@2.3.0: 1382 | resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} 1383 | engines: {node: '>=8'} 1384 | hasBin: true 1385 | 1386 | wrap-ansi@7.0.0: 1387 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 1388 | engines: {node: '>=10'} 1389 | 1390 | wrap-ansi@8.1.0: 1391 | resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 1392 | engines: {node: '>=12'} 1393 | 1394 | yn@3.1.1: 1395 | resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 1396 | engines: {node: '>=6'} 1397 | 1398 | snapshots: 1399 | 1400 | '@ampproject/remapping@2.3.0': 1401 | dependencies: 1402 | '@jridgewell/gen-mapping': 0.3.5 1403 | '@jridgewell/trace-mapping': 0.3.25 1404 | 1405 | '@antfu/utils@0.7.10': {} 1406 | 1407 | '@aws-crypto/sha256-browser@5.2.0': 1408 | dependencies: 1409 | '@aws-crypto/sha256-js': 5.2.0 1410 | '@aws-crypto/supports-web-crypto': 5.2.0 1411 | '@aws-crypto/util': 5.2.0 1412 | '@aws-sdk/types': 3.609.0 1413 | '@aws-sdk/util-locate-window': 3.568.0 1414 | '@smithy/util-utf8': 2.3.0 1415 | tslib: 2.6.3 1416 | 1417 | '@aws-crypto/sha256-js@5.2.0': 1418 | dependencies: 1419 | '@aws-crypto/util': 5.2.0 1420 | '@aws-sdk/types': 3.609.0 1421 | tslib: 2.6.3 1422 | 1423 | '@aws-crypto/supports-web-crypto@5.2.0': 1424 | dependencies: 1425 | tslib: 2.6.3 1426 | 1427 | '@aws-crypto/util@5.2.0': 1428 | dependencies: 1429 | '@aws-sdk/types': 3.609.0 1430 | '@smithy/util-utf8': 2.3.0 1431 | tslib: 2.6.3 1432 | 1433 | '@aws-sdk/client-sqs@3.614.0': 1434 | dependencies: 1435 | '@aws-crypto/sha256-browser': 5.2.0 1436 | '@aws-crypto/sha256-js': 5.2.0 1437 | '@aws-sdk/client-sso-oidc': 3.614.0(@aws-sdk/client-sts@3.614.0) 1438 | '@aws-sdk/client-sts': 3.614.0 1439 | '@aws-sdk/core': 3.614.0 1440 | '@aws-sdk/credential-provider-node': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))(@aws-sdk/client-sts@3.614.0) 1441 | '@aws-sdk/middleware-host-header': 3.609.0 1442 | '@aws-sdk/middleware-logger': 3.609.0 1443 | '@aws-sdk/middleware-recursion-detection': 3.609.0 1444 | '@aws-sdk/middleware-sdk-sqs': 3.614.0 1445 | '@aws-sdk/middleware-user-agent': 3.614.0 1446 | '@aws-sdk/region-config-resolver': 3.614.0 1447 | '@aws-sdk/types': 3.609.0 1448 | '@aws-sdk/util-endpoints': 3.614.0 1449 | '@aws-sdk/util-user-agent-browser': 3.609.0 1450 | '@aws-sdk/util-user-agent-node': 3.614.0 1451 | '@smithy/config-resolver': 3.0.5 1452 | '@smithy/core': 2.2.6 1453 | '@smithy/fetch-http-handler': 3.2.1 1454 | '@smithy/hash-node': 3.0.3 1455 | '@smithy/invalid-dependency': 3.0.3 1456 | '@smithy/md5-js': 3.0.3 1457 | '@smithy/middleware-content-length': 3.0.3 1458 | '@smithy/middleware-endpoint': 3.0.5 1459 | '@smithy/middleware-retry': 3.0.9 1460 | '@smithy/middleware-serde': 3.0.3 1461 | '@smithy/middleware-stack': 3.0.3 1462 | '@smithy/node-config-provider': 3.1.4 1463 | '@smithy/node-http-handler': 3.1.2 1464 | '@smithy/protocol-http': 4.0.3 1465 | '@smithy/smithy-client': 3.1.7 1466 | '@smithy/types': 3.3.0 1467 | '@smithy/url-parser': 3.0.3 1468 | '@smithy/util-base64': 3.0.0 1469 | '@smithy/util-body-length-browser': 3.0.0 1470 | '@smithy/util-body-length-node': 3.0.0 1471 | '@smithy/util-defaults-mode-browser': 3.0.9 1472 | '@smithy/util-defaults-mode-node': 3.0.9 1473 | '@smithy/util-endpoints': 2.0.5 1474 | '@smithy/util-middleware': 3.0.3 1475 | '@smithy/util-retry': 3.0.3 1476 | '@smithy/util-utf8': 3.0.0 1477 | tslib: 2.6.3 1478 | transitivePeerDependencies: 1479 | - aws-crt 1480 | 1481 | '@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0)': 1482 | dependencies: 1483 | '@aws-crypto/sha256-browser': 5.2.0 1484 | '@aws-crypto/sha256-js': 5.2.0 1485 | '@aws-sdk/client-sts': 3.614.0 1486 | '@aws-sdk/core': 3.614.0 1487 | '@aws-sdk/credential-provider-node': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))(@aws-sdk/client-sts@3.614.0) 1488 | '@aws-sdk/middleware-host-header': 3.609.0 1489 | '@aws-sdk/middleware-logger': 3.609.0 1490 | '@aws-sdk/middleware-recursion-detection': 3.609.0 1491 | '@aws-sdk/middleware-user-agent': 3.614.0 1492 | '@aws-sdk/region-config-resolver': 3.614.0 1493 | '@aws-sdk/types': 3.609.0 1494 | '@aws-sdk/util-endpoints': 3.614.0 1495 | '@aws-sdk/util-user-agent-browser': 3.609.0 1496 | '@aws-sdk/util-user-agent-node': 3.614.0 1497 | '@smithy/config-resolver': 3.0.5 1498 | '@smithy/core': 2.2.6 1499 | '@smithy/fetch-http-handler': 3.2.1 1500 | '@smithy/hash-node': 3.0.3 1501 | '@smithy/invalid-dependency': 3.0.3 1502 | '@smithy/middleware-content-length': 3.0.3 1503 | '@smithy/middleware-endpoint': 3.0.5 1504 | '@smithy/middleware-retry': 3.0.9 1505 | '@smithy/middleware-serde': 3.0.3 1506 | '@smithy/middleware-stack': 3.0.3 1507 | '@smithy/node-config-provider': 3.1.4 1508 | '@smithy/node-http-handler': 3.1.2 1509 | '@smithy/protocol-http': 4.0.3 1510 | '@smithy/smithy-client': 3.1.7 1511 | '@smithy/types': 3.3.0 1512 | '@smithy/url-parser': 3.0.3 1513 | '@smithy/util-base64': 3.0.0 1514 | '@smithy/util-body-length-browser': 3.0.0 1515 | '@smithy/util-body-length-node': 3.0.0 1516 | '@smithy/util-defaults-mode-browser': 3.0.9 1517 | '@smithy/util-defaults-mode-node': 3.0.9 1518 | '@smithy/util-endpoints': 2.0.5 1519 | '@smithy/util-middleware': 3.0.3 1520 | '@smithy/util-retry': 3.0.3 1521 | '@smithy/util-utf8': 3.0.0 1522 | tslib: 2.6.3 1523 | transitivePeerDependencies: 1524 | - aws-crt 1525 | 1526 | '@aws-sdk/client-sso@3.614.0': 1527 | dependencies: 1528 | '@aws-crypto/sha256-browser': 5.2.0 1529 | '@aws-crypto/sha256-js': 5.2.0 1530 | '@aws-sdk/core': 3.614.0 1531 | '@aws-sdk/middleware-host-header': 3.609.0 1532 | '@aws-sdk/middleware-logger': 3.609.0 1533 | '@aws-sdk/middleware-recursion-detection': 3.609.0 1534 | '@aws-sdk/middleware-user-agent': 3.614.0 1535 | '@aws-sdk/region-config-resolver': 3.614.0 1536 | '@aws-sdk/types': 3.609.0 1537 | '@aws-sdk/util-endpoints': 3.614.0 1538 | '@aws-sdk/util-user-agent-browser': 3.609.0 1539 | '@aws-sdk/util-user-agent-node': 3.614.0 1540 | '@smithy/config-resolver': 3.0.5 1541 | '@smithy/core': 2.2.6 1542 | '@smithy/fetch-http-handler': 3.2.1 1543 | '@smithy/hash-node': 3.0.3 1544 | '@smithy/invalid-dependency': 3.0.3 1545 | '@smithy/middleware-content-length': 3.0.3 1546 | '@smithy/middleware-endpoint': 3.0.5 1547 | '@smithy/middleware-retry': 3.0.9 1548 | '@smithy/middleware-serde': 3.0.3 1549 | '@smithy/middleware-stack': 3.0.3 1550 | '@smithy/node-config-provider': 3.1.4 1551 | '@smithy/node-http-handler': 3.1.2 1552 | '@smithy/protocol-http': 4.0.3 1553 | '@smithy/smithy-client': 3.1.7 1554 | '@smithy/types': 3.3.0 1555 | '@smithy/url-parser': 3.0.3 1556 | '@smithy/util-base64': 3.0.0 1557 | '@smithy/util-body-length-browser': 3.0.0 1558 | '@smithy/util-body-length-node': 3.0.0 1559 | '@smithy/util-defaults-mode-browser': 3.0.9 1560 | '@smithy/util-defaults-mode-node': 3.0.9 1561 | '@smithy/util-endpoints': 2.0.5 1562 | '@smithy/util-middleware': 3.0.3 1563 | '@smithy/util-retry': 3.0.3 1564 | '@smithy/util-utf8': 3.0.0 1565 | tslib: 2.6.3 1566 | transitivePeerDependencies: 1567 | - aws-crt 1568 | 1569 | '@aws-sdk/client-sts@3.614.0': 1570 | dependencies: 1571 | '@aws-crypto/sha256-browser': 5.2.0 1572 | '@aws-crypto/sha256-js': 5.2.0 1573 | '@aws-sdk/client-sso-oidc': 3.614.0(@aws-sdk/client-sts@3.614.0) 1574 | '@aws-sdk/core': 3.614.0 1575 | '@aws-sdk/credential-provider-node': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))(@aws-sdk/client-sts@3.614.0) 1576 | '@aws-sdk/middleware-host-header': 3.609.0 1577 | '@aws-sdk/middleware-logger': 3.609.0 1578 | '@aws-sdk/middleware-recursion-detection': 3.609.0 1579 | '@aws-sdk/middleware-user-agent': 3.614.0 1580 | '@aws-sdk/region-config-resolver': 3.614.0 1581 | '@aws-sdk/types': 3.609.0 1582 | '@aws-sdk/util-endpoints': 3.614.0 1583 | '@aws-sdk/util-user-agent-browser': 3.609.0 1584 | '@aws-sdk/util-user-agent-node': 3.614.0 1585 | '@smithy/config-resolver': 3.0.5 1586 | '@smithy/core': 2.2.6 1587 | '@smithy/fetch-http-handler': 3.2.1 1588 | '@smithy/hash-node': 3.0.3 1589 | '@smithy/invalid-dependency': 3.0.3 1590 | '@smithy/middleware-content-length': 3.0.3 1591 | '@smithy/middleware-endpoint': 3.0.5 1592 | '@smithy/middleware-retry': 3.0.9 1593 | '@smithy/middleware-serde': 3.0.3 1594 | '@smithy/middleware-stack': 3.0.3 1595 | '@smithy/node-config-provider': 3.1.4 1596 | '@smithy/node-http-handler': 3.1.2 1597 | '@smithy/protocol-http': 4.0.3 1598 | '@smithy/smithy-client': 3.1.7 1599 | '@smithy/types': 3.3.0 1600 | '@smithy/url-parser': 3.0.3 1601 | '@smithy/util-base64': 3.0.0 1602 | '@smithy/util-body-length-browser': 3.0.0 1603 | '@smithy/util-body-length-node': 3.0.0 1604 | '@smithy/util-defaults-mode-browser': 3.0.9 1605 | '@smithy/util-defaults-mode-node': 3.0.9 1606 | '@smithy/util-endpoints': 2.0.5 1607 | '@smithy/util-middleware': 3.0.3 1608 | '@smithy/util-retry': 3.0.3 1609 | '@smithy/util-utf8': 3.0.0 1610 | tslib: 2.6.3 1611 | transitivePeerDependencies: 1612 | - aws-crt 1613 | 1614 | '@aws-sdk/core@3.614.0': 1615 | dependencies: 1616 | '@smithy/core': 2.2.6 1617 | '@smithy/protocol-http': 4.0.3 1618 | '@smithy/signature-v4': 3.1.2 1619 | '@smithy/smithy-client': 3.1.7 1620 | '@smithy/types': 3.3.0 1621 | fast-xml-parser: 4.2.5 1622 | tslib: 2.6.3 1623 | 1624 | '@aws-sdk/credential-provider-env@3.609.0': 1625 | dependencies: 1626 | '@aws-sdk/types': 3.609.0 1627 | '@smithy/property-provider': 3.1.3 1628 | '@smithy/types': 3.3.0 1629 | tslib: 2.6.3 1630 | 1631 | '@aws-sdk/credential-provider-http@3.614.0': 1632 | dependencies: 1633 | '@aws-sdk/types': 3.609.0 1634 | '@smithy/fetch-http-handler': 3.2.1 1635 | '@smithy/node-http-handler': 3.1.2 1636 | '@smithy/property-provider': 3.1.3 1637 | '@smithy/protocol-http': 4.0.3 1638 | '@smithy/smithy-client': 3.1.7 1639 | '@smithy/types': 3.3.0 1640 | '@smithy/util-stream': 3.0.6 1641 | tslib: 2.6.3 1642 | 1643 | '@aws-sdk/credential-provider-ini@3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))(@aws-sdk/client-sts@3.614.0)': 1644 | dependencies: 1645 | '@aws-sdk/client-sts': 3.614.0 1646 | '@aws-sdk/credential-provider-env': 3.609.0 1647 | '@aws-sdk/credential-provider-http': 3.614.0 1648 | '@aws-sdk/credential-provider-process': 3.614.0 1649 | '@aws-sdk/credential-provider-sso': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0)) 1650 | '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.614.0) 1651 | '@aws-sdk/types': 3.609.0 1652 | '@smithy/credential-provider-imds': 3.1.4 1653 | '@smithy/property-provider': 3.1.3 1654 | '@smithy/shared-ini-file-loader': 3.1.4 1655 | '@smithy/types': 3.3.0 1656 | tslib: 2.6.3 1657 | transitivePeerDependencies: 1658 | - '@aws-sdk/client-sso-oidc' 1659 | - aws-crt 1660 | 1661 | '@aws-sdk/credential-provider-node@3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))(@aws-sdk/client-sts@3.614.0)': 1662 | dependencies: 1663 | '@aws-sdk/credential-provider-env': 3.609.0 1664 | '@aws-sdk/credential-provider-http': 3.614.0 1665 | '@aws-sdk/credential-provider-ini': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))(@aws-sdk/client-sts@3.614.0) 1666 | '@aws-sdk/credential-provider-process': 3.614.0 1667 | '@aws-sdk/credential-provider-sso': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0)) 1668 | '@aws-sdk/credential-provider-web-identity': 3.609.0(@aws-sdk/client-sts@3.614.0) 1669 | '@aws-sdk/types': 3.609.0 1670 | '@smithy/credential-provider-imds': 3.1.4 1671 | '@smithy/property-provider': 3.1.3 1672 | '@smithy/shared-ini-file-loader': 3.1.4 1673 | '@smithy/types': 3.3.0 1674 | tslib: 2.6.3 1675 | transitivePeerDependencies: 1676 | - '@aws-sdk/client-sso-oidc' 1677 | - '@aws-sdk/client-sts' 1678 | - aws-crt 1679 | 1680 | '@aws-sdk/credential-provider-process@3.614.0': 1681 | dependencies: 1682 | '@aws-sdk/types': 3.609.0 1683 | '@smithy/property-provider': 3.1.3 1684 | '@smithy/shared-ini-file-loader': 3.1.4 1685 | '@smithy/types': 3.3.0 1686 | tslib: 2.6.3 1687 | 1688 | '@aws-sdk/credential-provider-sso@3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))': 1689 | dependencies: 1690 | '@aws-sdk/client-sso': 3.614.0 1691 | '@aws-sdk/token-providers': 3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0)) 1692 | '@aws-sdk/types': 3.609.0 1693 | '@smithy/property-provider': 3.1.3 1694 | '@smithy/shared-ini-file-loader': 3.1.4 1695 | '@smithy/types': 3.3.0 1696 | tslib: 2.6.3 1697 | transitivePeerDependencies: 1698 | - '@aws-sdk/client-sso-oidc' 1699 | - aws-crt 1700 | 1701 | '@aws-sdk/credential-provider-web-identity@3.609.0(@aws-sdk/client-sts@3.614.0)': 1702 | dependencies: 1703 | '@aws-sdk/client-sts': 3.614.0 1704 | '@aws-sdk/types': 3.609.0 1705 | '@smithy/property-provider': 3.1.3 1706 | '@smithy/types': 3.3.0 1707 | tslib: 2.6.3 1708 | 1709 | '@aws-sdk/middleware-host-header@3.609.0': 1710 | dependencies: 1711 | '@aws-sdk/types': 3.609.0 1712 | '@smithy/protocol-http': 4.0.3 1713 | '@smithy/types': 3.3.0 1714 | tslib: 2.6.3 1715 | 1716 | '@aws-sdk/middleware-logger@3.609.0': 1717 | dependencies: 1718 | '@aws-sdk/types': 3.609.0 1719 | '@smithy/types': 3.3.0 1720 | tslib: 2.6.3 1721 | 1722 | '@aws-sdk/middleware-recursion-detection@3.609.0': 1723 | dependencies: 1724 | '@aws-sdk/types': 3.609.0 1725 | '@smithy/protocol-http': 4.0.3 1726 | '@smithy/types': 3.3.0 1727 | tslib: 2.6.3 1728 | 1729 | '@aws-sdk/middleware-sdk-sqs@3.614.0': 1730 | dependencies: 1731 | '@aws-sdk/types': 3.609.0 1732 | '@smithy/smithy-client': 3.1.7 1733 | '@smithy/types': 3.3.0 1734 | '@smithy/util-hex-encoding': 3.0.0 1735 | '@smithy/util-utf8': 3.0.0 1736 | tslib: 2.6.3 1737 | 1738 | '@aws-sdk/middleware-user-agent@3.614.0': 1739 | dependencies: 1740 | '@aws-sdk/types': 3.609.0 1741 | '@aws-sdk/util-endpoints': 3.614.0 1742 | '@smithy/protocol-http': 4.0.3 1743 | '@smithy/types': 3.3.0 1744 | tslib: 2.6.3 1745 | 1746 | '@aws-sdk/region-config-resolver@3.614.0': 1747 | dependencies: 1748 | '@aws-sdk/types': 3.609.0 1749 | '@smithy/node-config-provider': 3.1.4 1750 | '@smithy/types': 3.3.0 1751 | '@smithy/util-config-provider': 3.0.0 1752 | '@smithy/util-middleware': 3.0.3 1753 | tslib: 2.6.3 1754 | 1755 | '@aws-sdk/token-providers@3.614.0(@aws-sdk/client-sso-oidc@3.614.0(@aws-sdk/client-sts@3.614.0))': 1756 | dependencies: 1757 | '@aws-sdk/client-sso-oidc': 3.614.0(@aws-sdk/client-sts@3.614.0) 1758 | '@aws-sdk/types': 3.609.0 1759 | '@smithy/property-provider': 3.1.3 1760 | '@smithy/shared-ini-file-loader': 3.1.4 1761 | '@smithy/types': 3.3.0 1762 | tslib: 2.6.3 1763 | 1764 | '@aws-sdk/types@3.609.0': 1765 | dependencies: 1766 | '@smithy/types': 3.3.0 1767 | tslib: 2.6.3 1768 | 1769 | '@aws-sdk/util-endpoints@3.614.0': 1770 | dependencies: 1771 | '@aws-sdk/types': 3.609.0 1772 | '@smithy/types': 3.3.0 1773 | '@smithy/util-endpoints': 2.0.5 1774 | tslib: 2.6.3 1775 | 1776 | '@aws-sdk/util-locate-window@3.568.0': 1777 | dependencies: 1778 | tslib: 2.6.3 1779 | 1780 | '@aws-sdk/util-user-agent-browser@3.609.0': 1781 | dependencies: 1782 | '@aws-sdk/types': 3.609.0 1783 | '@smithy/types': 3.3.0 1784 | bowser: 2.11.0 1785 | tslib: 2.6.3 1786 | 1787 | '@aws-sdk/util-user-agent-node@3.614.0': 1788 | dependencies: 1789 | '@aws-sdk/types': 3.609.0 1790 | '@smithy/node-config-provider': 3.1.4 1791 | '@smithy/types': 3.3.0 1792 | tslib: 2.6.3 1793 | 1794 | '@biomejs/biome@1.8.3': 1795 | optionalDependencies: 1796 | '@biomejs/cli-darwin-arm64': 1.8.3 1797 | '@biomejs/cli-darwin-x64': 1.8.3 1798 | '@biomejs/cli-linux-arm64': 1.8.3 1799 | '@biomejs/cli-linux-arm64-musl': 1.8.3 1800 | '@biomejs/cli-linux-x64': 1.8.3 1801 | '@biomejs/cli-linux-x64-musl': 1.8.3 1802 | '@biomejs/cli-win32-arm64': 1.8.3 1803 | '@biomejs/cli-win32-x64': 1.8.3 1804 | 1805 | '@biomejs/cli-darwin-arm64@1.8.3': 1806 | optional: true 1807 | 1808 | '@biomejs/cli-darwin-x64@1.8.3': 1809 | optional: true 1810 | 1811 | '@biomejs/cli-linux-arm64-musl@1.8.3': 1812 | optional: true 1813 | 1814 | '@biomejs/cli-linux-arm64@1.8.3': 1815 | optional: true 1816 | 1817 | '@biomejs/cli-linux-x64-musl@1.8.3': 1818 | optional: true 1819 | 1820 | '@biomejs/cli-linux-x64@1.8.3': 1821 | optional: true 1822 | 1823 | '@biomejs/cli-win32-arm64@1.8.3': 1824 | optional: true 1825 | 1826 | '@biomejs/cli-win32-x64@1.8.3': 1827 | optional: true 1828 | 1829 | '@cspotcode/source-map-support@0.8.1': 1830 | dependencies: 1831 | '@jridgewell/trace-mapping': 0.3.9 1832 | 1833 | '@esbuild/aix-ppc64@0.21.5': 1834 | optional: true 1835 | 1836 | '@esbuild/android-arm64@0.21.5': 1837 | optional: true 1838 | 1839 | '@esbuild/android-arm@0.21.5': 1840 | optional: true 1841 | 1842 | '@esbuild/android-x64@0.21.5': 1843 | optional: true 1844 | 1845 | '@esbuild/darwin-arm64@0.21.5': 1846 | optional: true 1847 | 1848 | '@esbuild/darwin-x64@0.21.5': 1849 | optional: true 1850 | 1851 | '@esbuild/freebsd-arm64@0.21.5': 1852 | optional: true 1853 | 1854 | '@esbuild/freebsd-x64@0.21.5': 1855 | optional: true 1856 | 1857 | '@esbuild/linux-arm64@0.21.5': 1858 | optional: true 1859 | 1860 | '@esbuild/linux-arm@0.21.5': 1861 | optional: true 1862 | 1863 | '@esbuild/linux-ia32@0.21.5': 1864 | optional: true 1865 | 1866 | '@esbuild/linux-loong64@0.21.5': 1867 | optional: true 1868 | 1869 | '@esbuild/linux-mips64el@0.21.5': 1870 | optional: true 1871 | 1872 | '@esbuild/linux-ppc64@0.21.5': 1873 | optional: true 1874 | 1875 | '@esbuild/linux-riscv64@0.21.5': 1876 | optional: true 1877 | 1878 | '@esbuild/linux-s390x@0.21.5': 1879 | optional: true 1880 | 1881 | '@esbuild/linux-x64@0.21.5': 1882 | optional: true 1883 | 1884 | '@esbuild/netbsd-x64@0.21.5': 1885 | optional: true 1886 | 1887 | '@esbuild/openbsd-x64@0.21.5': 1888 | optional: true 1889 | 1890 | '@esbuild/sunos-x64@0.21.5': 1891 | optional: true 1892 | 1893 | '@esbuild/win32-arm64@0.21.5': 1894 | optional: true 1895 | 1896 | '@esbuild/win32-ia32@0.21.5': 1897 | optional: true 1898 | 1899 | '@esbuild/win32-x64@0.21.5': 1900 | optional: true 1901 | 1902 | '@golevelup/nestjs-discovery@4.0.3(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1))': 1903 | dependencies: 1904 | '@nestjs/common': 11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1) 1905 | '@nestjs/core': 11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1) 1906 | lodash: 4.17.21 1907 | 1908 | '@isaacs/cliui@8.0.2': 1909 | dependencies: 1910 | string-width: 5.1.2 1911 | string-width-cjs: string-width@4.2.3 1912 | strip-ansi: 7.1.0 1913 | strip-ansi-cjs: strip-ansi@6.0.1 1914 | wrap-ansi: 8.1.0 1915 | wrap-ansi-cjs: wrap-ansi@7.0.0 1916 | 1917 | '@jridgewell/gen-mapping@0.3.5': 1918 | dependencies: 1919 | '@jridgewell/set-array': 1.2.1 1920 | '@jridgewell/sourcemap-codec': 1.5.0 1921 | '@jridgewell/trace-mapping': 0.3.25 1922 | 1923 | '@jridgewell/resolve-uri@3.1.2': {} 1924 | 1925 | '@jridgewell/set-array@1.2.1': {} 1926 | 1927 | '@jridgewell/sourcemap-codec@1.5.0': {} 1928 | 1929 | '@jridgewell/trace-mapping@0.3.25': 1930 | dependencies: 1931 | '@jridgewell/resolve-uri': 3.1.2 1932 | '@jridgewell/sourcemap-codec': 1.5.0 1933 | 1934 | '@jridgewell/trace-mapping@0.3.9': 1935 | dependencies: 1936 | '@jridgewell/resolve-uri': 3.1.2 1937 | '@jridgewell/sourcemap-codec': 1.5.0 1938 | 1939 | '@lukeed/csprng@1.1.0': {} 1940 | 1941 | '@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1)': 1942 | dependencies: 1943 | iterare: 1.2.1 1944 | reflect-metadata: 0.2.2 1945 | rxjs: 7.8.1 1946 | tslib: 2.8.1 1947 | uid: 2.0.2 1948 | 1949 | '@nestjs/core@11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1)': 1950 | dependencies: 1951 | '@nestjs/common': 11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1) 1952 | '@nuxt/opencollective': 0.4.1 1953 | fast-safe-stringify: 2.1.1 1954 | iterare: 1.2.1 1955 | path-to-regexp: 8.2.0 1956 | reflect-metadata: 0.2.2 1957 | rxjs: 7.8.1 1958 | tslib: 2.8.1 1959 | uid: 2.0.2 1960 | 1961 | '@nestjs/testing@11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(@nestjs/core@11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1))': 1962 | dependencies: 1963 | '@nestjs/common': 11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1) 1964 | '@nestjs/core': 11.0.6(@nestjs/common@11.0.6(reflect-metadata@0.2.2)(rxjs@7.8.1))(reflect-metadata@0.2.2)(rxjs@7.8.1) 1965 | tslib: 2.8.1 1966 | 1967 | '@nodelib/fs.scandir@2.1.5': 1968 | dependencies: 1969 | '@nodelib/fs.stat': 2.0.5 1970 | run-parallel: 1.2.0 1971 | 1972 | '@nodelib/fs.stat@2.0.5': {} 1973 | 1974 | '@nodelib/fs.walk@1.2.8': 1975 | dependencies: 1976 | '@nodelib/fs.scandir': 2.1.5 1977 | fastq: 1.17.1 1978 | 1979 | '@nuxt/opencollective@0.4.1': 1980 | dependencies: 1981 | consola: 3.4.0 1982 | 1983 | '@pkgjs/parseargs@0.11.0': 1984 | optional: true 1985 | 1986 | '@rollup/pluginutils@5.1.0(rollup@4.18.1)': 1987 | dependencies: 1988 | '@types/estree': 1.0.5 1989 | estree-walker: 2.0.2 1990 | picomatch: 2.3.1 1991 | optionalDependencies: 1992 | rollup: 4.18.1 1993 | 1994 | '@rollup/rollup-android-arm-eabi@4.18.1': 1995 | optional: true 1996 | 1997 | '@rollup/rollup-android-arm64@4.18.1': 1998 | optional: true 1999 | 2000 | '@rollup/rollup-darwin-arm64@4.18.1': 2001 | optional: true 2002 | 2003 | '@rollup/rollup-darwin-x64@4.18.1': 2004 | optional: true 2005 | 2006 | '@rollup/rollup-linux-arm-gnueabihf@4.18.1': 2007 | optional: true 2008 | 2009 | '@rollup/rollup-linux-arm-musleabihf@4.18.1': 2010 | optional: true 2011 | 2012 | '@rollup/rollup-linux-arm64-gnu@4.18.1': 2013 | optional: true 2014 | 2015 | '@rollup/rollup-linux-arm64-musl@4.18.1': 2016 | optional: true 2017 | 2018 | '@rollup/rollup-linux-powerpc64le-gnu@4.18.1': 2019 | optional: true 2020 | 2021 | '@rollup/rollup-linux-riscv64-gnu@4.18.1': 2022 | optional: true 2023 | 2024 | '@rollup/rollup-linux-s390x-gnu@4.18.1': 2025 | optional: true 2026 | 2027 | '@rollup/rollup-linux-x64-gnu@4.18.1': 2028 | optional: true 2029 | 2030 | '@rollup/rollup-linux-x64-musl@4.18.1': 2031 | optional: true 2032 | 2033 | '@rollup/rollup-win32-arm64-msvc@4.18.1': 2034 | optional: true 2035 | 2036 | '@rollup/rollup-win32-ia32-msvc@4.18.1': 2037 | optional: true 2038 | 2039 | '@rollup/rollup-win32-x64-msvc@4.18.1': 2040 | optional: true 2041 | 2042 | '@smithy/abort-controller@3.1.1': 2043 | dependencies: 2044 | '@smithy/types': 3.3.0 2045 | tslib: 2.6.3 2046 | 2047 | '@smithy/config-resolver@3.0.5': 2048 | dependencies: 2049 | '@smithy/node-config-provider': 3.1.4 2050 | '@smithy/types': 3.3.0 2051 | '@smithy/util-config-provider': 3.0.0 2052 | '@smithy/util-middleware': 3.0.3 2053 | tslib: 2.6.3 2054 | 2055 | '@smithy/core@2.2.6': 2056 | dependencies: 2057 | '@smithy/middleware-endpoint': 3.0.5 2058 | '@smithy/middleware-retry': 3.0.9 2059 | '@smithy/middleware-serde': 3.0.3 2060 | '@smithy/protocol-http': 4.0.3 2061 | '@smithy/smithy-client': 3.1.7 2062 | '@smithy/types': 3.3.0 2063 | '@smithy/util-middleware': 3.0.3 2064 | tslib: 2.6.3 2065 | 2066 | '@smithy/credential-provider-imds@3.1.4': 2067 | dependencies: 2068 | '@smithy/node-config-provider': 3.1.4 2069 | '@smithy/property-provider': 3.1.3 2070 | '@smithy/types': 3.3.0 2071 | '@smithy/url-parser': 3.0.3 2072 | tslib: 2.6.3 2073 | 2074 | '@smithy/fetch-http-handler@3.2.1': 2075 | dependencies: 2076 | '@smithy/protocol-http': 4.0.3 2077 | '@smithy/querystring-builder': 3.0.3 2078 | '@smithy/types': 3.3.0 2079 | '@smithy/util-base64': 3.0.0 2080 | tslib: 2.6.3 2081 | 2082 | '@smithy/hash-node@3.0.3': 2083 | dependencies: 2084 | '@smithy/types': 3.3.0 2085 | '@smithy/util-buffer-from': 3.0.0 2086 | '@smithy/util-utf8': 3.0.0 2087 | tslib: 2.6.3 2088 | 2089 | '@smithy/invalid-dependency@3.0.3': 2090 | dependencies: 2091 | '@smithy/types': 3.3.0 2092 | tslib: 2.6.3 2093 | 2094 | '@smithy/is-array-buffer@2.2.0': 2095 | dependencies: 2096 | tslib: 2.6.3 2097 | 2098 | '@smithy/is-array-buffer@3.0.0': 2099 | dependencies: 2100 | tslib: 2.6.3 2101 | 2102 | '@smithy/md5-js@3.0.3': 2103 | dependencies: 2104 | '@smithy/types': 3.3.0 2105 | '@smithy/util-utf8': 3.0.0 2106 | tslib: 2.6.3 2107 | 2108 | '@smithy/middleware-content-length@3.0.3': 2109 | dependencies: 2110 | '@smithy/protocol-http': 4.0.3 2111 | '@smithy/types': 3.3.0 2112 | tslib: 2.6.3 2113 | 2114 | '@smithy/middleware-endpoint@3.0.5': 2115 | dependencies: 2116 | '@smithy/middleware-serde': 3.0.3 2117 | '@smithy/node-config-provider': 3.1.4 2118 | '@smithy/shared-ini-file-loader': 3.1.4 2119 | '@smithy/types': 3.3.0 2120 | '@smithy/url-parser': 3.0.3 2121 | '@smithy/util-middleware': 3.0.3 2122 | tslib: 2.6.3 2123 | 2124 | '@smithy/middleware-retry@3.0.9': 2125 | dependencies: 2126 | '@smithy/node-config-provider': 3.1.4 2127 | '@smithy/protocol-http': 4.0.3 2128 | '@smithy/service-error-classification': 3.0.3 2129 | '@smithy/smithy-client': 3.1.7 2130 | '@smithy/types': 3.3.0 2131 | '@smithy/util-middleware': 3.0.3 2132 | '@smithy/util-retry': 3.0.3 2133 | tslib: 2.6.3 2134 | uuid: 9.0.1 2135 | 2136 | '@smithy/middleware-serde@3.0.3': 2137 | dependencies: 2138 | '@smithy/types': 3.3.0 2139 | tslib: 2.6.3 2140 | 2141 | '@smithy/middleware-stack@3.0.3': 2142 | dependencies: 2143 | '@smithy/types': 3.3.0 2144 | tslib: 2.6.3 2145 | 2146 | '@smithy/node-config-provider@3.1.4': 2147 | dependencies: 2148 | '@smithy/property-provider': 3.1.3 2149 | '@smithy/shared-ini-file-loader': 3.1.4 2150 | '@smithy/types': 3.3.0 2151 | tslib: 2.6.3 2152 | 2153 | '@smithy/node-http-handler@3.1.2': 2154 | dependencies: 2155 | '@smithy/abort-controller': 3.1.1 2156 | '@smithy/protocol-http': 4.0.3 2157 | '@smithy/querystring-builder': 3.0.3 2158 | '@smithy/types': 3.3.0 2159 | tslib: 2.6.3 2160 | 2161 | '@smithy/property-provider@3.1.3': 2162 | dependencies: 2163 | '@smithy/types': 3.3.0 2164 | tslib: 2.6.3 2165 | 2166 | '@smithy/protocol-http@4.0.3': 2167 | dependencies: 2168 | '@smithy/types': 3.3.0 2169 | tslib: 2.6.3 2170 | 2171 | '@smithy/querystring-builder@3.0.3': 2172 | dependencies: 2173 | '@smithy/types': 3.3.0 2174 | '@smithy/util-uri-escape': 3.0.0 2175 | tslib: 2.6.3 2176 | 2177 | '@smithy/querystring-parser@3.0.3': 2178 | dependencies: 2179 | '@smithy/types': 3.3.0 2180 | tslib: 2.6.3 2181 | 2182 | '@smithy/service-error-classification@3.0.3': 2183 | dependencies: 2184 | '@smithy/types': 3.3.0 2185 | 2186 | '@smithy/shared-ini-file-loader@3.1.4': 2187 | dependencies: 2188 | '@smithy/types': 3.3.0 2189 | tslib: 2.6.3 2190 | 2191 | '@smithy/signature-v4@3.1.2': 2192 | dependencies: 2193 | '@smithy/is-array-buffer': 3.0.0 2194 | '@smithy/types': 3.3.0 2195 | '@smithy/util-hex-encoding': 3.0.0 2196 | '@smithy/util-middleware': 3.0.3 2197 | '@smithy/util-uri-escape': 3.0.0 2198 | '@smithy/util-utf8': 3.0.0 2199 | tslib: 2.6.3 2200 | 2201 | '@smithy/smithy-client@3.1.7': 2202 | dependencies: 2203 | '@smithy/middleware-endpoint': 3.0.5 2204 | '@smithy/middleware-stack': 3.0.3 2205 | '@smithy/protocol-http': 4.0.3 2206 | '@smithy/types': 3.3.0 2207 | '@smithy/util-stream': 3.0.6 2208 | tslib: 2.6.3 2209 | 2210 | '@smithy/types@3.3.0': 2211 | dependencies: 2212 | tslib: 2.6.3 2213 | 2214 | '@smithy/url-parser@3.0.3': 2215 | dependencies: 2216 | '@smithy/querystring-parser': 3.0.3 2217 | '@smithy/types': 3.3.0 2218 | tslib: 2.6.3 2219 | 2220 | '@smithy/util-base64@3.0.0': 2221 | dependencies: 2222 | '@smithy/util-buffer-from': 3.0.0 2223 | '@smithy/util-utf8': 3.0.0 2224 | tslib: 2.6.3 2225 | 2226 | '@smithy/util-body-length-browser@3.0.0': 2227 | dependencies: 2228 | tslib: 2.6.3 2229 | 2230 | '@smithy/util-body-length-node@3.0.0': 2231 | dependencies: 2232 | tslib: 2.6.3 2233 | 2234 | '@smithy/util-buffer-from@2.2.0': 2235 | dependencies: 2236 | '@smithy/is-array-buffer': 2.2.0 2237 | tslib: 2.6.3 2238 | 2239 | '@smithy/util-buffer-from@3.0.0': 2240 | dependencies: 2241 | '@smithy/is-array-buffer': 3.0.0 2242 | tslib: 2.6.3 2243 | 2244 | '@smithy/util-config-provider@3.0.0': 2245 | dependencies: 2246 | tslib: 2.6.3 2247 | 2248 | '@smithy/util-defaults-mode-browser@3.0.9': 2249 | dependencies: 2250 | '@smithy/property-provider': 3.1.3 2251 | '@smithy/smithy-client': 3.1.7 2252 | '@smithy/types': 3.3.0 2253 | bowser: 2.11.0 2254 | tslib: 2.6.3 2255 | 2256 | '@smithy/util-defaults-mode-node@3.0.9': 2257 | dependencies: 2258 | '@smithy/config-resolver': 3.0.5 2259 | '@smithy/credential-provider-imds': 3.1.4 2260 | '@smithy/node-config-provider': 3.1.4 2261 | '@smithy/property-provider': 3.1.3 2262 | '@smithy/smithy-client': 3.1.7 2263 | '@smithy/types': 3.3.0 2264 | tslib: 2.6.3 2265 | 2266 | '@smithy/util-endpoints@2.0.5': 2267 | dependencies: 2268 | '@smithy/node-config-provider': 3.1.4 2269 | '@smithy/types': 3.3.0 2270 | tslib: 2.6.3 2271 | 2272 | '@smithy/util-hex-encoding@3.0.0': 2273 | dependencies: 2274 | tslib: 2.6.3 2275 | 2276 | '@smithy/util-middleware@3.0.3': 2277 | dependencies: 2278 | '@smithy/types': 3.3.0 2279 | tslib: 2.6.3 2280 | 2281 | '@smithy/util-retry@3.0.3': 2282 | dependencies: 2283 | '@smithy/service-error-classification': 3.0.3 2284 | '@smithy/types': 3.3.0 2285 | tslib: 2.6.3 2286 | 2287 | '@smithy/util-stream@3.0.6': 2288 | dependencies: 2289 | '@smithy/fetch-http-handler': 3.2.1 2290 | '@smithy/node-http-handler': 3.1.2 2291 | '@smithy/types': 3.3.0 2292 | '@smithy/util-base64': 3.0.0 2293 | '@smithy/util-buffer-from': 3.0.0 2294 | '@smithy/util-hex-encoding': 3.0.0 2295 | '@smithy/util-utf8': 3.0.0 2296 | tslib: 2.6.3 2297 | 2298 | '@smithy/util-uri-escape@3.0.0': 2299 | dependencies: 2300 | tslib: 2.6.3 2301 | 2302 | '@smithy/util-utf8@2.3.0': 2303 | dependencies: 2304 | '@smithy/util-buffer-from': 2.2.0 2305 | tslib: 2.6.3 2306 | 2307 | '@smithy/util-utf8@3.0.0': 2308 | dependencies: 2309 | '@smithy/util-buffer-from': 3.0.0 2310 | tslib: 2.6.3 2311 | 2312 | '@tsconfig/node10@1.0.11': {} 2313 | 2314 | '@tsconfig/node12@1.0.11': {} 2315 | 2316 | '@tsconfig/node14@1.0.3': {} 2317 | 2318 | '@tsconfig/node16@1.0.4': {} 2319 | 2320 | '@types/estree@1.0.5': {} 2321 | 2322 | '@types/node@20.14.10': 2323 | dependencies: 2324 | undici-types: 5.26.5 2325 | 2326 | '@vitest/expect@2.0.2': 2327 | dependencies: 2328 | '@vitest/spy': 2.0.2 2329 | '@vitest/utils': 2.0.2 2330 | chai: 5.1.1 2331 | tinyrainbow: 1.2.0 2332 | 2333 | '@vitest/pretty-format@2.0.2': 2334 | dependencies: 2335 | tinyrainbow: 1.2.0 2336 | 2337 | '@vitest/runner@2.0.2': 2338 | dependencies: 2339 | '@vitest/utils': 2.0.2 2340 | pathe: 1.1.2 2341 | 2342 | '@vitest/snapshot@2.0.2': 2343 | dependencies: 2344 | '@vitest/pretty-format': 2.0.2 2345 | magic-string: 0.30.10 2346 | pathe: 1.1.2 2347 | 2348 | '@vitest/spy@2.0.2': 2349 | dependencies: 2350 | tinyspy: 3.0.0 2351 | 2352 | '@vitest/utils@2.0.2': 2353 | dependencies: 2354 | '@vitest/pretty-format': 2.0.2 2355 | estree-walker: 3.0.3 2356 | loupe: 3.1.1 2357 | tinyrainbow: 1.2.0 2358 | 2359 | acorn-walk@8.3.3: 2360 | dependencies: 2361 | acorn: 8.12.1 2362 | 2363 | acorn@8.12.1: {} 2364 | 2365 | ansi-regex@5.0.1: {} 2366 | 2367 | ansi-regex@6.0.1: {} 2368 | 2369 | ansi-styles@4.3.0: 2370 | dependencies: 2371 | color-convert: 2.0.1 2372 | 2373 | ansi-styles@6.2.1: {} 2374 | 2375 | anymatch@3.1.3: 2376 | dependencies: 2377 | normalize-path: 3.0.0 2378 | picomatch: 2.3.1 2379 | 2380 | arg@4.1.3: {} 2381 | 2382 | assertion-error@2.0.1: {} 2383 | 2384 | balanced-match@1.0.2: {} 2385 | 2386 | binary-extensions@2.3.0: {} 2387 | 2388 | bowser@2.11.0: {} 2389 | 2390 | brace-expansion@2.0.1: 2391 | dependencies: 2392 | balanced-match: 1.0.2 2393 | 2394 | braces@3.0.3: 2395 | dependencies: 2396 | fill-range: 7.1.1 2397 | 2398 | cac@6.7.14: {} 2399 | 2400 | chai@5.1.1: 2401 | dependencies: 2402 | assertion-error: 2.0.1 2403 | check-error: 2.1.1 2404 | deep-eql: 5.0.2 2405 | loupe: 3.1.1 2406 | pathval: 2.0.0 2407 | 2408 | check-error@2.1.1: {} 2409 | 2410 | chokidar@3.6.0: 2411 | dependencies: 2412 | anymatch: 3.1.3 2413 | braces: 3.0.3 2414 | glob-parent: 5.1.2 2415 | is-binary-path: 2.1.0 2416 | is-glob: 4.0.3 2417 | normalize-path: 3.0.0 2418 | readdirp: 3.6.0 2419 | optionalDependencies: 2420 | fsevents: 2.3.3 2421 | 2422 | color-convert@2.0.1: 2423 | dependencies: 2424 | color-name: 1.1.4 2425 | 2426 | color-name@1.1.4: {} 2427 | 2428 | confbox@0.1.7: {} 2429 | 2430 | consola@3.4.0: {} 2431 | 2432 | create-require@1.1.1: {} 2433 | 2434 | cross-spawn@7.0.3: 2435 | dependencies: 2436 | path-key: 3.1.1 2437 | shebang-command: 2.0.0 2438 | which: 2.0.2 2439 | 2440 | debug@4.3.5: 2441 | dependencies: 2442 | ms: 2.1.2 2443 | 2444 | deep-eql@5.0.2: {} 2445 | 2446 | diff@4.0.2: {} 2447 | 2448 | eastasianwidth@0.2.0: {} 2449 | 2450 | emoji-regex@8.0.0: {} 2451 | 2452 | emoji-regex@9.2.2: {} 2453 | 2454 | esbuild@0.21.5: 2455 | optionalDependencies: 2456 | '@esbuild/aix-ppc64': 0.21.5 2457 | '@esbuild/android-arm': 0.21.5 2458 | '@esbuild/android-arm64': 0.21.5 2459 | '@esbuild/android-x64': 0.21.5 2460 | '@esbuild/darwin-arm64': 0.21.5 2461 | '@esbuild/darwin-x64': 0.21.5 2462 | '@esbuild/freebsd-arm64': 0.21.5 2463 | '@esbuild/freebsd-x64': 0.21.5 2464 | '@esbuild/linux-arm': 0.21.5 2465 | '@esbuild/linux-arm64': 0.21.5 2466 | '@esbuild/linux-ia32': 0.21.5 2467 | '@esbuild/linux-loong64': 0.21.5 2468 | '@esbuild/linux-mips64el': 0.21.5 2469 | '@esbuild/linux-ppc64': 0.21.5 2470 | '@esbuild/linux-riscv64': 0.21.5 2471 | '@esbuild/linux-s390x': 0.21.5 2472 | '@esbuild/linux-x64': 0.21.5 2473 | '@esbuild/netbsd-x64': 0.21.5 2474 | '@esbuild/openbsd-x64': 0.21.5 2475 | '@esbuild/sunos-x64': 0.21.5 2476 | '@esbuild/win32-arm64': 0.21.5 2477 | '@esbuild/win32-ia32': 0.21.5 2478 | '@esbuild/win32-x64': 0.21.5 2479 | 2480 | escape-string-regexp@5.0.0: {} 2481 | 2482 | estree-walker@2.0.2: {} 2483 | 2484 | estree-walker@3.0.3: 2485 | dependencies: 2486 | '@types/estree': 1.0.5 2487 | 2488 | execa@8.0.1: 2489 | dependencies: 2490 | cross-spawn: 7.0.3 2491 | get-stream: 8.0.1 2492 | human-signals: 5.0.0 2493 | is-stream: 3.0.0 2494 | merge-stream: 2.0.0 2495 | npm-run-path: 5.3.0 2496 | onetime: 6.0.0 2497 | signal-exit: 4.1.0 2498 | strip-final-newline: 3.0.0 2499 | 2500 | fast-glob@3.3.2: 2501 | dependencies: 2502 | '@nodelib/fs.stat': 2.0.5 2503 | '@nodelib/fs.walk': 1.2.8 2504 | glob-parent: 5.1.2 2505 | merge2: 1.4.1 2506 | micromatch: 4.0.7 2507 | 2508 | fast-safe-stringify@2.1.1: {} 2509 | 2510 | fast-xml-parser@4.2.5: 2511 | dependencies: 2512 | strnum: 1.0.5 2513 | 2514 | fastq@1.17.1: 2515 | dependencies: 2516 | reusify: 1.0.4 2517 | 2518 | fill-range@7.1.1: 2519 | dependencies: 2520 | to-regex-range: 5.0.1 2521 | 2522 | foreground-child@3.2.1: 2523 | dependencies: 2524 | cross-spawn: 7.0.3 2525 | signal-exit: 4.1.0 2526 | 2527 | fsevents@2.3.3: 2528 | optional: true 2529 | 2530 | get-func-name@2.0.2: {} 2531 | 2532 | get-stream@8.0.1: {} 2533 | 2534 | glob-parent@5.1.2: 2535 | dependencies: 2536 | is-glob: 4.0.3 2537 | 2538 | glob@11.0.0: 2539 | dependencies: 2540 | foreground-child: 3.2.1 2541 | jackspeak: 4.0.1 2542 | minimatch: 10.0.1 2543 | minipass: 7.1.2 2544 | package-json-from-dist: 1.0.0 2545 | path-scurry: 2.0.0 2546 | 2547 | human-signals@5.0.0: {} 2548 | 2549 | is-binary-path@2.1.0: 2550 | dependencies: 2551 | binary-extensions: 2.3.0 2552 | 2553 | is-extglob@2.1.1: {} 2554 | 2555 | is-fullwidth-code-point@3.0.0: {} 2556 | 2557 | is-glob@4.0.3: 2558 | dependencies: 2559 | is-extglob: 2.1.1 2560 | 2561 | is-number@7.0.0: {} 2562 | 2563 | is-stream@3.0.0: {} 2564 | 2565 | isexe@2.0.0: {} 2566 | 2567 | iterare@1.2.1: {} 2568 | 2569 | jackspeak@4.0.1: 2570 | dependencies: 2571 | '@isaacs/cliui': 8.0.2 2572 | optionalDependencies: 2573 | '@pkgjs/parseargs': 0.11.0 2574 | 2575 | js-tokens@9.0.0: {} 2576 | 2577 | json5@2.2.3: {} 2578 | 2579 | local-pkg@0.5.0: 2580 | dependencies: 2581 | mlly: 1.7.1 2582 | pkg-types: 1.1.3 2583 | 2584 | lodash@4.17.21: {} 2585 | 2586 | loupe@3.1.1: 2587 | dependencies: 2588 | get-func-name: 2.0.2 2589 | 2590 | lru-cache@11.0.0: {} 2591 | 2592 | magic-string@0.30.10: 2593 | dependencies: 2594 | '@jridgewell/sourcemap-codec': 1.5.0 2595 | 2596 | make-error@1.3.6: {} 2597 | 2598 | merge-stream@2.0.0: {} 2599 | 2600 | merge2@1.4.1: {} 2601 | 2602 | micromatch@4.0.7: 2603 | dependencies: 2604 | braces: 3.0.3 2605 | picomatch: 2.3.1 2606 | 2607 | mimic-fn@4.0.0: {} 2608 | 2609 | minimatch@10.0.1: 2610 | dependencies: 2611 | brace-expansion: 2.0.1 2612 | 2613 | minimatch@9.0.5: 2614 | dependencies: 2615 | brace-expansion: 2.0.1 2616 | 2617 | minimist@1.2.8: {} 2618 | 2619 | minipass@7.1.2: {} 2620 | 2621 | mlly@1.7.1: 2622 | dependencies: 2623 | acorn: 8.12.1 2624 | pathe: 1.1.2 2625 | pkg-types: 1.1.3 2626 | ufo: 1.5.3 2627 | 2628 | ms@2.1.2: {} 2629 | 2630 | nanoid@3.3.7: {} 2631 | 2632 | normalize-path@3.0.0: {} 2633 | 2634 | npm-run-path@5.3.0: 2635 | dependencies: 2636 | path-key: 4.0.0 2637 | 2638 | onetime@6.0.0: 2639 | dependencies: 2640 | mimic-fn: 4.0.0 2641 | 2642 | package-json-from-dist@1.0.0: {} 2643 | 2644 | path-key@3.1.1: {} 2645 | 2646 | path-key@4.0.0: {} 2647 | 2648 | path-scurry@2.0.0: 2649 | dependencies: 2650 | lru-cache: 11.0.0 2651 | minipass: 7.1.2 2652 | 2653 | path-to-regexp@8.2.0: {} 2654 | 2655 | pathe@1.1.2: {} 2656 | 2657 | pathval@2.0.0: {} 2658 | 2659 | picocolors@1.0.1: {} 2660 | 2661 | picomatch@2.3.1: {} 2662 | 2663 | pkg-types@1.1.3: 2664 | dependencies: 2665 | confbox: 0.1.7 2666 | mlly: 1.7.1 2667 | pathe: 1.1.2 2668 | 2669 | postcss@8.4.39: 2670 | dependencies: 2671 | nanoid: 3.3.7 2672 | picocolors: 1.0.1 2673 | source-map-js: 1.2.0 2674 | 2675 | prettier@3.3.2: {} 2676 | 2677 | queue-microtask@1.2.3: {} 2678 | 2679 | readdirp@3.6.0: 2680 | dependencies: 2681 | picomatch: 2.3.1 2682 | 2683 | reflect-metadata@0.2.2: {} 2684 | 2685 | reusify@1.0.4: {} 2686 | 2687 | rimraf@6.0.1: 2688 | dependencies: 2689 | glob: 11.0.0 2690 | package-json-from-dist: 1.0.0 2691 | 2692 | rollup@4.18.1: 2693 | dependencies: 2694 | '@types/estree': 1.0.5 2695 | optionalDependencies: 2696 | '@rollup/rollup-android-arm-eabi': 4.18.1 2697 | '@rollup/rollup-android-arm64': 4.18.1 2698 | '@rollup/rollup-darwin-arm64': 4.18.1 2699 | '@rollup/rollup-darwin-x64': 4.18.1 2700 | '@rollup/rollup-linux-arm-gnueabihf': 4.18.1 2701 | '@rollup/rollup-linux-arm-musleabihf': 4.18.1 2702 | '@rollup/rollup-linux-arm64-gnu': 4.18.1 2703 | '@rollup/rollup-linux-arm64-musl': 4.18.1 2704 | '@rollup/rollup-linux-powerpc64le-gnu': 4.18.1 2705 | '@rollup/rollup-linux-riscv64-gnu': 4.18.1 2706 | '@rollup/rollup-linux-s390x-gnu': 4.18.1 2707 | '@rollup/rollup-linux-x64-gnu': 4.18.1 2708 | '@rollup/rollup-linux-x64-musl': 4.18.1 2709 | '@rollup/rollup-win32-arm64-msvc': 4.18.1 2710 | '@rollup/rollup-win32-ia32-msvc': 4.18.1 2711 | '@rollup/rollup-win32-x64-msvc': 4.18.1 2712 | fsevents: 2.3.3 2713 | 2714 | run-parallel@1.2.0: 2715 | dependencies: 2716 | queue-microtask: 1.2.3 2717 | 2718 | rxjs@7.8.1: 2719 | dependencies: 2720 | tslib: 2.1.0 2721 | 2722 | scule@1.3.0: {} 2723 | 2724 | shebang-command@2.0.0: 2725 | dependencies: 2726 | shebang-regex: 3.0.0 2727 | 2728 | shebang-regex@3.0.0: {} 2729 | 2730 | siginfo@2.0.0: {} 2731 | 2732 | signal-exit@4.1.0: {} 2733 | 2734 | source-map-js@1.2.0: {} 2735 | 2736 | sqs-consumer@11.0.1(@aws-sdk/client-sqs@3.614.0): 2737 | dependencies: 2738 | '@aws-sdk/client-sqs': 3.614.0 2739 | debug: 4.3.5 2740 | transitivePeerDependencies: 2741 | - supports-color 2742 | 2743 | sqs-producer@5.0.0(@aws-sdk/client-sqs@3.614.0): 2744 | dependencies: 2745 | '@aws-sdk/client-sqs': 3.614.0 2746 | 2747 | stackback@0.0.2: {} 2748 | 2749 | std-env@3.7.0: {} 2750 | 2751 | string-width@4.2.3: 2752 | dependencies: 2753 | emoji-regex: 8.0.0 2754 | is-fullwidth-code-point: 3.0.0 2755 | strip-ansi: 6.0.1 2756 | 2757 | string-width@5.1.2: 2758 | dependencies: 2759 | eastasianwidth: 0.2.0 2760 | emoji-regex: 9.2.2 2761 | strip-ansi: 7.1.0 2762 | 2763 | strip-ansi@6.0.1: 2764 | dependencies: 2765 | ansi-regex: 5.0.1 2766 | 2767 | strip-ansi@7.1.0: 2768 | dependencies: 2769 | ansi-regex: 6.0.1 2770 | 2771 | strip-bom@3.0.0: {} 2772 | 2773 | strip-final-newline@3.0.0: {} 2774 | 2775 | strip-literal@2.1.0: 2776 | dependencies: 2777 | js-tokens: 9.0.0 2778 | 2779 | strnum@1.0.5: {} 2780 | 2781 | tinybench@2.8.0: {} 2782 | 2783 | tinypool@1.0.0: {} 2784 | 2785 | tinyrainbow@1.2.0: {} 2786 | 2787 | tinyspy@3.0.0: {} 2788 | 2789 | to-regex-range@5.0.1: 2790 | dependencies: 2791 | is-number: 7.0.0 2792 | 2793 | ts-node@10.9.2(@types/node@20.14.10)(typescript@5.5.3): 2794 | dependencies: 2795 | '@cspotcode/source-map-support': 0.8.1 2796 | '@tsconfig/node10': 1.0.11 2797 | '@tsconfig/node12': 1.0.11 2798 | '@tsconfig/node14': 1.0.3 2799 | '@tsconfig/node16': 1.0.4 2800 | '@types/node': 20.14.10 2801 | acorn: 8.12.1 2802 | acorn-walk: 8.3.3 2803 | arg: 4.1.3 2804 | create-require: 1.1.1 2805 | diff: 4.0.2 2806 | make-error: 1.3.6 2807 | typescript: 5.5.3 2808 | v8-compile-cache-lib: 3.0.1 2809 | yn: 3.1.1 2810 | 2811 | tsconfig-paths@4.2.0: 2812 | dependencies: 2813 | json5: 2.2.3 2814 | minimist: 1.2.8 2815 | strip-bom: 3.0.0 2816 | 2817 | tslib@2.1.0: {} 2818 | 2819 | tslib@2.6.3: {} 2820 | 2821 | tslib@2.8.1: {} 2822 | 2823 | typescript@5.5.3: {} 2824 | 2825 | ufo@1.5.3: {} 2826 | 2827 | uid@2.0.2: 2828 | dependencies: 2829 | '@lukeed/csprng': 1.1.0 2830 | 2831 | undici-types@5.26.5: {} 2832 | 2833 | unimport@3.7.2(rollup@4.18.1): 2834 | dependencies: 2835 | '@rollup/pluginutils': 5.1.0(rollup@4.18.1) 2836 | acorn: 8.12.1 2837 | escape-string-regexp: 5.0.0 2838 | estree-walker: 3.0.3 2839 | fast-glob: 3.3.2 2840 | local-pkg: 0.5.0 2841 | magic-string: 0.30.10 2842 | mlly: 1.7.1 2843 | pathe: 1.1.2 2844 | pkg-types: 1.1.3 2845 | scule: 1.3.0 2846 | strip-literal: 2.1.0 2847 | unplugin: 1.11.0 2848 | transitivePeerDependencies: 2849 | - rollup 2850 | 2851 | unplugin-auto-import@0.18.0(rollup@4.18.1): 2852 | dependencies: 2853 | '@antfu/utils': 0.7.10 2854 | '@rollup/pluginutils': 5.1.0(rollup@4.18.1) 2855 | fast-glob: 3.3.2 2856 | local-pkg: 0.5.0 2857 | magic-string: 0.30.10 2858 | minimatch: 9.0.5 2859 | unimport: 3.7.2(rollup@4.18.1) 2860 | unplugin: 1.11.0 2861 | transitivePeerDependencies: 2862 | - rollup 2863 | 2864 | unplugin@1.11.0: 2865 | dependencies: 2866 | acorn: 8.12.1 2867 | chokidar: 3.6.0 2868 | webpack-sources: 3.2.3 2869 | webpack-virtual-modules: 0.6.2 2870 | 2871 | uuid@9.0.1: {} 2872 | 2873 | v8-compile-cache-lib@3.0.1: {} 2874 | 2875 | vite-node@2.0.2(@types/node@20.14.10): 2876 | dependencies: 2877 | cac: 6.7.14 2878 | debug: 4.3.5 2879 | pathe: 1.1.2 2880 | tinyrainbow: 1.2.0 2881 | vite: 5.3.3(@types/node@20.14.10) 2882 | transitivePeerDependencies: 2883 | - '@types/node' 2884 | - less 2885 | - lightningcss 2886 | - sass 2887 | - stylus 2888 | - sugarss 2889 | - supports-color 2890 | - terser 2891 | 2892 | vite@5.3.3(@types/node@20.14.10): 2893 | dependencies: 2894 | esbuild: 0.21.5 2895 | postcss: 8.4.39 2896 | rollup: 4.18.1 2897 | optionalDependencies: 2898 | '@types/node': 20.14.10 2899 | fsevents: 2.3.3 2900 | 2901 | vitest@2.0.2(@types/node@20.14.10): 2902 | dependencies: 2903 | '@ampproject/remapping': 2.3.0 2904 | '@vitest/expect': 2.0.2 2905 | '@vitest/pretty-format': 2.0.2 2906 | '@vitest/runner': 2.0.2 2907 | '@vitest/snapshot': 2.0.2 2908 | '@vitest/spy': 2.0.2 2909 | '@vitest/utils': 2.0.2 2910 | chai: 5.1.1 2911 | debug: 4.3.5 2912 | execa: 8.0.1 2913 | magic-string: 0.30.10 2914 | pathe: 1.1.2 2915 | std-env: 3.7.0 2916 | tinybench: 2.8.0 2917 | tinypool: 1.0.0 2918 | tinyrainbow: 1.2.0 2919 | vite: 5.3.3(@types/node@20.14.10) 2920 | vite-node: 2.0.2(@types/node@20.14.10) 2921 | why-is-node-running: 2.3.0 2922 | optionalDependencies: 2923 | '@types/node': 20.14.10 2924 | transitivePeerDependencies: 2925 | - less 2926 | - lightningcss 2927 | - sass 2928 | - stylus 2929 | - sugarss 2930 | - supports-color 2931 | - terser 2932 | 2933 | webpack-sources@3.2.3: {} 2934 | 2935 | webpack-virtual-modules@0.6.2: {} 2936 | 2937 | which@2.0.2: 2938 | dependencies: 2939 | isexe: 2.0.0 2940 | 2941 | why-is-node-running@2.3.0: 2942 | dependencies: 2943 | siginfo: 2.0.0 2944 | stackback: 0.0.2 2945 | 2946 | wrap-ansi@7.0.0: 2947 | dependencies: 2948 | ansi-styles: 4.3.0 2949 | string-width: 4.2.3 2950 | strip-ansi: 6.0.1 2951 | 2952 | wrap-ansi@8.1.0: 2953 | dependencies: 2954 | ansi-styles: 6.2.1 2955 | string-width: 5.1.2 2956 | strip-ansi: 7.1.0 2957 | 2958 | yn@3.1.1: {} 2959 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": ["ESNext"], 5 | "declaration": true, 6 | "noImplicitAny": false, 7 | "removeComments": true, 8 | "noLib": false, 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es6", 12 | "sourceMap": false, 13 | "outDir": "./dist", 14 | "rootDir": "./lib", 15 | "skipLibCheck": true, 16 | "baseUrl": "./", 17 | "types": ["vitest/globals"] 18 | }, 19 | "include": ["lib", "e2e"], 20 | "exclude": ["node_modules", "dist", "test", "**/*spec.ts"] 21 | } 22 | -------------------------------------------------------------------------------- /vitest.config.ts: -------------------------------------------------------------------------------- 1 | import AutoImport from 'unplugin-auto-import/vite'; 2 | import { defineConfig } from 'vitest/config'; 3 | 4 | export default defineConfig({ 5 | test: { 6 | include: ['**/*.e2e-spec.ts'], 7 | environment: 'node', 8 | globals: true, 9 | root: './', 10 | testTimeout: 20000, 11 | hookTimeout: 30000, 12 | cache: false, 13 | reporters: ['verbose'], 14 | isolate: false, 15 | maxConcurrency: 1, 16 | pool: 'forks', 17 | poolOptions: { 18 | forks: { 19 | isolate: false, 20 | singleFork: true, 21 | minForks: 1, 22 | maxForks: 1, 23 | }, 24 | }, 25 | }, 26 | plugins: [ 27 | // This is required to build the test files with SWC 28 | // swc.vite({ 29 | // // Explicitly set the module type to avoid inheriting this value from a `.swcrc` config file 30 | // module: { type: 'nodenext' }, 31 | // }), 32 | AutoImport({ 33 | imports: ['vitest'], 34 | }), 35 | ], 36 | }); 37 | --------------------------------------------------------------------------------