diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 086d0b3..910bce7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,29 +5,43 @@ updates: directory: "/" schedule: interval: "weekly" - open-pull-requests-limit: 5 + day: "sunday" + time: "05:00" + timezone: "UTC" + open-pull-requests-limit: 1 commit-message: prefix: "chore(deps)" include: "scope" - labels: - - "dependencies" - reviewers: - - "pierrevensy" - assignees: - - "pierrevensy" + labels: ["dependencies"] + reviewers: ["pierrevensy"] + assignees: ["pierrevensy"] + groups: + minor-updates: + patterns: + - "*" + update-types: + - "minor" + - "patch" # Check for updates to GitHub Actions - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly" - open-pull-requests-limit: 5 + day: "sunday" + time: "06:00" + timezone: "UTC" + open-pull-requests-limit: 1 commit-message: prefix: "chore(actions)" include: "scope" - labels: - - "github-actions" - reviewers: - - "pierrevensy" - assignees: - - "pierrevensy" + labels: ["github-actions"] + reviewers: ["pierrevensy"] + assignees: ["pierrevensy"] + groups: + minor-updates: + patterns: + - "*" + update-types: + - "minor" + - "patch" \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index df02b95..b1b33a7 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,6 +15,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: @@ -27,6 +29,10 @@ jobs: run: npm run test:cvg - name: Build library run: npm run build + - name: SonarQube Scan + uses: SonarSource/sonarqube-scan-action@v5 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} release-please: runs-on: ubuntu-latest diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index a65123f..63d40e7 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -4,6 +4,10 @@ on: pull_request: branches: - main + types: [opened, synchronize, reopened] + +permissions: + contents: read jobs: build: @@ -11,6 +15,8 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Setup Node.js uses: actions/setup-node@v4 with: @@ -22,4 +28,9 @@ jobs: - name: Run tests run: npm run test:cvg - name: Build library - run: npm run build \ No newline at end of file + run: npm run build + - name: SonarQube Scan + if: github.actor != 'dependabot[bot]' + uses: SonarSource/sonarqube-scan-action@v5 + env: + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 074ba1d..bc7f2e5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,10 @@ on: types: - published +permissions: + contents: read + packages: write + jobs: publish: runs-on: ubuntu-latest @@ -27,4 +31,4 @@ jobs: - name: Publish to NPM run: npm publish --access public env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a66c2c..7f87867 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,4 +10,4 @@ All notable changes to the "Stone.js AWS Lambda Adapter" extension will be docum ### Features -* implement aws adapters ([8695eb2](https://github.com/stonemjs/aws-lambda-adapter/commit/8695eb2c7960769d56015943ac0839e787f176d2)) +* implement aws adapters ([8695eb2](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/commit/8695eb2c7960769d56015943ac0839e787f176d2)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fa3ae68..c5f8c2b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,7 +46,7 @@ The **Conventional Commits** format is structured as follows: ``` - **``**: Specifies the type of change. Common types are `feat`, `fix`, `docs`, `style`, `refactor`, `test`, `chore`. -- **``**: (Optional) A short, descriptive word for what part of the code is affected (e.g., `auth`, `aws-lambda-adapter`). +- **``**: (Optional) A short, descriptive word for what part of the code is affected (e.g., `auth`, `aws-lambda-http-adapter`). - **``**: A brief description of the change. - **`Body`**: (Optional) Provides more detailed information about the commit. - **`Footer`**: (Optional) Used to reference issues or indicate breaking changes. @@ -56,7 +56,7 @@ The **Conventional Commits** format is structured as follows: The **type** field in a Conventional Commit message is what allows you to derive the next semantic version: - **`feat`**: A new feature. Increments the **MINOR** version (e.g., `1.2.0`). - - Example: `feat(aws-lambda-adapter): add async pipe handling support` + - Example: `feat(aws-lambda-http-adapter): add async pipe handling support` - **`fix`**: A bug fix. Increments the **PATCH** version (e.g., `1.2.1`). - Example: `fix(api): resolve issue with null values in responses` @@ -65,13 +65,13 @@ The **type** field in a Conventional Commit message is what allows you to derive - Example: `docs(readme): update installation instructions` - **`style`**: Changes related to code style (e.g., formatting, missing semicolons). No version increment. - - Example: `style(aws-lambda-adapter): reformat code according to ESLint rules` + - Example: `style(aws-lambda-http-adapter): reformat code according to ESLint rules` - **`refactor`**: A code change that does not add a feature or fix a bug. No version increment. - Example: `refactor(auth): simplify token validation logic` - **`test`**: Changes related to testing (e.g., adding missing tests, refactoring tests). No version increment. - - Example: `test(aws-lambda-adapter): add unit tests for error handling` + - Example: `test(aws-lambda-http-adapter): add unit tests for error handling` - **`chore`**: Maintenance tasks that do not affect the functionality of the code (e.g., updating dependencies, build-related changes). No version increment. - Example: `chore(deps): update lodash to version 4.17.21` @@ -79,15 +79,15 @@ The **type** field in a Conventional Commit message is what allows you to derive - **`BREAKING CHANGE`**: Use this in the footer if the commit introduces a breaking API change, which increments the **MAJOR** version. - Example: ``` - feat(aws-lambda-adapter): change pipe API to accept configuration object + feat(aws-lambda-http-adapter): change pipe API to accept configuration object - BREAKING CHANGE: The aws-lambda-adapter now requires a configuration object instead of individual parameters. + BREAKING CHANGE: The aws-lambda-http-adapter now requires a configuration object instead of individual parameters. ``` ### Example Commit Messages 1. **New Feature**: ``` - feat(aws-lambda-adapter): add support for multiple output formats + feat(aws-lambda-http-adapter): add support for multiple output formats ``` This will trigger a **MINOR** version bump. diff --git a/LICENSE b/LICENSE index e585421..bd8b8bb 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,21 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright [2024] [Stone.js] - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +MIT License + +Copyright (c) 2025 Stone.js + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index e523fa6..1ab5712 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,187 @@ -# Stone.js: AWS Lambda Adapters +# Stone.js - AWS Lambda HTTP Adapter -[![npm](https://img.shields.io/npm/l/@stone-js/aws-lambda-adapter)](https://opensource.org/licenses/Apache-2.0) -[![npm](https://img.shields.io/npm/v/@stone-js/aws-lambda-adapter)](https://www.npmjs.com/package/@stone-js/aws-lambda-adapter) -[![npm](https://img.shields.io/npm/dm/@stone-js/aws-lambda-adapter)](https://www.npmjs.com/package/@stone-js/aws-lambda-adapter) +[![npm](https://img.shields.io/npm/l/@stone-js/aws-lambda-http-adapter)](https://opensource.org/licenses/MIT) +[![npm](https://img.shields.io/npm/v/@stone-js/aws-lambda-http-adapter)](https://www.npmjs.com/package/@stone-js/aws-lambda-http-adapter) +[![npm](https://img.shields.io/npm/dm/@stone-js/aws-lambda-http-adapter)](https://www.npmjs.com/package/@stone-js/aws-lambda-http-adapter) ![Maintenance](https://img.shields.io/maintenance/yes/2025) -[![Publish Package to npmjs](https://github.com/stonemjs/aws-lambda-adapter/actions/workflows/release.yml/badge.svg)](https://github.com/stonemjs/aws-lambda-adapter/actions/workflows/release.yml) -[![Dependabot Status](https://img.shields.io/badge/Dependabot-enabled-brightgreen.svg?logo=dependabot)](https://github.com/stonemjs/aws-lambda-adapter/network/updates) +[![Build Status](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/actions/workflows/main.yml/badge.svg)](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/actions/workflows/main.yml) +[![Publish Package to npmjs](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/actions/workflows/release.yml/badge.svg)](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/actions/workflows/release.yml) +[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=stone-foundation_stone-js-aws-lambda-http-adapter&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=stone-foundation_stone-js-aws-lambda-http-adapter) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=stone-foundation_stone-js-aws-lambda-http-adapter&metric=coverage)](https://sonarcloud.io/summary/new_code?id=stone-foundation_stone-js-aws-lambda-http-adapter) +[![Security Policy](https://img.shields.io/badge/Security-Policy-blue.svg)](./SECURITY.md) +[![CodeQL](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/security/code-scanning) +[![Dependabot Status](https://img.shields.io/badge/Dependabot-enabled-brightgreen.svg)](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/network/updates) [![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) -Stone.js AWS Lambda Adapters with typings. +The **AWS Lambda HTTP Adapter** allows your Stone.js application to run as a fully event-driven Lambda function behind API Gateway or any Lambda-compatible HTTP environment. It seamlessly transforms API Gateway events into `IncomingEvent` and returns `OutgoingResponse`, adhering to the Continuum Architecture. --- -Get started with the [documentation](https://stonejs.com/docs/http/aws-lambda-adapter). +## Introduction +In Stone.js, **adapters** serve as bridges between raw platform input and structured internal events. The AWS Lambda HTTP Adapter processes API Gateway-style HTTP events and turns them into normalized `IncomingEvent` objects. It also formats your system’s `OutgoingResponse` into a valid Lambda HTTP response payload. + +This adapter empowers you to write cloud-native functions that stay decoupled from AWS specifics while preserving the full Stone.js lifecycle, type safety, and cross-platform consistency. + +## Installation + +```bash +npm install @stone-js/aws-lambda-http-adapter +```` + +> This package is **pure ESM**. Make sure your project uses ESM (`"type": "module"` in `package.json`) or configure your tooling accordingly. + +## Usage + +You can integrate the adapter either declaratively with a decorator or imperatively using the `awsLambdaHttpAdapterBlueprint`. + +### Declarative API + +```ts +import { AwsLambdaHttp } from '@stone-js/aws-lambda-http-adapter' +import { StoneApp, IncomingEvent, IEventHandler } from '@stone-js/core' + +@StoneApp() +@AwsLambdaHttp({ default: true }) +export class Application implements IEventHandler { + handle(event: IncomingEvent) { + const name = event.get('name', 'Lambda') + return { message: `Hello ${name}` } + } +} +``` + +### Imperative API + +```ts +import { defineStoneApp, IncomingEvent, defineConfig, IBlueprint } from '@stone-js/core' +import { awsLambdaHttpAdapterBlueprint, AWS_LAMBDA_HTTP_PLATFORM } from '@stone-js/aws-lambda-http-adapter' + +const handler = (event: IncomingEvent) => { + const name = event.get('name', 'Lambda') + return { message: `Hi ${name}` } +} + +export const App = defineStoneApp(handler, {}, [awsLambdaHttpAdapterBlueprint]) + +export const AppConfig = defineConfig({ + afterConfigure(blueprint: IBlueprint) { + if (blueprint.is('stone.adapter.platform', AWS_LAMBDA_HTTP_PLATFORM)) { + blueprint.set('stone.adapter.default', true) + } + } +}) +``` + +## What It Enables + +* **Serverless by Design** + Build modern HTTP APIs or websites running entirely on AWS Lambda behind API Gateway or ALB. + +* **Clean Separation of Concerns** + Your app never sees AWS-specific payloads. All requests and responses are fully normalized by the adapter. + +* **Full Continuum Integration** + Request becomes `IncomingEvent`, response becomes `OutgoingResponse`. Lambda is just another execution environment. + +* **Small, Fast, Efficient** + No cold start bloat. No Express or frameworks. Just your logic and the lightweight Stone.js runtime. + +* **Lifecycle Support** + Includes support for `onStart`, `onStop`, error hooks, and adapter middleware. + +* **Typed Event Context** + Access query, body, headers, cookies, IPs and more with full TypeScript support. + +* **Zero Glue Code** + No need to write `handler(event, context)` boilerplate. Stone.js manages that for you. + +* **Multi-platform Ready** + The same app can run locally with Node, in the browser, or in the cloud, just change the adapter. + +## Configuration Options + +Unlike Node, this adapter inherits all standard options from the core `AdapterConfig`: + +| Option | Type | Description | +| --------------- | ----------------------------------------- | ------------------------------------------------ | +| `default` | `boolean` | Set as the default adapter for your app | +| `alias` | `string` | Optional name to reference this adapter | +| `current` | `boolean` | Marks this adapter as active at runtime | +| `middleware[]` | `AdapterMixedPipeType[]` | Middleware executed during the adapter lifecycle | +| `errorHandlers` | `Record` | Customize error response formatting or behavior | + +> Note: AWS Lambda automatically injects its execution context and raw event. This adapter handles both without manual plumbing. + +## Adapter Context Shape + +When middleware or hooks execute, the AWS Lambda adapter provides this normalized context: + +```ts +interface AwsLambdaHttpAdapterContext { + rawEvent: AwsLambdaHttpEvent; + rawResponse?: RawHttpResponseOptions; + executionContext: Record; + incomingEvent?: IncomingHttpEvent; + outgoingResponse?: OutgoingHttpResponse; + incomingEventBuilder: IAdapterEventBuilder; + rawResponseBuilder: IAdapterEventBuilder>; +} +``` + +### AWS Lambda Event + +```ts +export interface AwsLambdaHttpEvent extends Record { + path?: string + body?: unknown + rawPath?: string + encoding?: string + httpMethod?: string + isBase64Encoded?: boolean + headers: Record + queryStringParameters?: Record + requestContext?: { + identity?: { + sourceIp?: string + } + httpMethod?: string + http?: { + method?: string + sourceIp?: string + } + } +} +``` + +### AWS Lambda Response + +```ts +export interface RawHttpResponseOptions { + body?: unknown + statusCode: number + statusMessage?: string + headers?: Record + isBase64Encoded?: boolean +} +``` + +This context ensures complete control over request handling and response shaping, even in a FaaS environment. + +## Summary + +The `@stone-js/aws-lambda-http-adapter` makes your Stone.js app cloud-native, cost-efficient, and Lambda-ready. Embrace the event-driven cloud with minimal effort and maximum architectural clarity. + +## Learn More + +This package is part of the Stone.js ecosystem, a modern JavaScript framework built around the Continuum Architecture. + +Explore the full documentation: [https://stonejs.dev](https://stonejs.dev) + +## API documentation + +* [API](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/blob/main/docs) ## Contributing -See [Contributing Guide](https://github.com/stonemjs/aws-lambda-adapter/blob/main/CONTRIBUTING.md). \ No newline at end of file +See [Contributing Guide](https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/blob/main/CONTRIBUTING.md) \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..ea16c5b --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,62 @@ +# Security Policy + +Thank you for your interest in the security of Stone.js. We take the security of our framework and its users seriously. +This document outlines the process for reporting vulnerabilities and our commitment to secure development. + +## Supported Versions + +We actively maintain and patch the latest stable release of Stone.js and its core packages. + +| Version | Status | +| --------- | ---------------------------------- | +| `1.x` | ✅ Actively maintained | +| `< 1.0.0` | ⚠️ Legacy, no guaranteed patches | + +If you're using an older version and encounter a security issue, we encourage you to upgrade to the latest release. + +## Reporting a Vulnerability + +If you discover a security vulnerability in Stone.js or any of its official packages, **please report it responsibly and privately**. + +### How to report + +- Email: **security@stonejs.dev** +- Subject: `Security Issue: [Your short description]` +- Include: + - A detailed description of the vulnerability + - Steps to reproduce (if applicable) + - A suggested fix or patch (optional but appreciated) + - Affected versions and environments + +We will respond within **5 working days** and aim to provide a fix or mitigation within **30 days**, depending on severity. + +## Our Commitment + +We commit to: + +- Promptly investigate and validate reports +- Keep reporters informed of the resolution progress +- Publicly disclose confirmed vulnerabilities **after a fix is available**, with appropriate credit (unless anonymity is requested) +- Maintain secure coding standards and regular dependency audits using: + - [GitHub CodeQL](https://codeql.github.com/) + - [Dependabot](https://github.com/dependabot) + +## Disclosure Policy + +We follow a **coordinated disclosure** policy: + +- Vulnerabilities are not published until a fix is available. +- CVE identifiers will be requested when applicable. +- Security-related changes are clearly documented in release notes and changelogs. + +## Acknowledgements + +We deeply appreciate the responsible security researchers and users who help keep Stone.js secure. + +If you’d like to contribute to security audits, penetration testing, or analysis of Stone.js internals, feel free to reach out via [security@stonejs.dev](mailto:security@stonejs.dev). + +## Thank You + +Security is a shared responsibility, thank you for helping make Stone.js safer for everyone. + +— The Stone.js Team \ No newline at end of file diff --git a/docs/AWSLambdaAdapter/README.md b/docs/AWSLambdaAdapter/README.md deleted file mode 100644 index e505010..0000000 --- a/docs/AWSLambdaAdapter/README.md +++ /dev/null @@ -1,11 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / AWSLambdaAdapter - -# AWSLambdaAdapter - -## Classes - -- [AWSLambdaAdapter](classes/AWSLambdaAdapter.md) diff --git a/docs/AWSLambdaAdapter/classes/AWSLambdaAdapter.md b/docs/AWSLambdaAdapter/classes/AWSLambdaAdapter.md deleted file mode 100644 index a3fd053..0000000 --- a/docs/AWSLambdaAdapter/classes/AWSLambdaAdapter.md +++ /dev/null @@ -1,214 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [AWSLambdaAdapter](../README.md) / AWSLambdaAdapter - -# Class: AWSLambdaAdapter - -Defined in: [src/AWSLambdaAdapter.ts:40](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaAdapter.ts#L40) - -AWS Lambda Adapter for Stone.js. - -The `AWSLambdaAdapter` provides seamless integration between Stone.js applications -and the AWS Lambda environment. It processes incoming events from AWS Lambda, -transforms them into `IncomingEvent` instances, and returns a `RawResponse`. - -This adapter ensures compatibility with AWS Lambda's execution model and -abstracts the event handling process for Stone.js developers. - -## Template - -The type of the raw event received from AWS Lambda. - -## Template - -The type of the response to send back to AWS Lambda. - -## Template - -The AWS Lambda execution context type. - -## Template - -The type of the processed incoming event. - -## Template - -Options used to create an incoming event. - -## Template - -The type of the outgoing response after processing. - -## Template - -Context type specific to the adapter. - -## Example - -```typescript -import { AWSLambdaAdapter } from '@stone-js/aws-lambda-adapter'; - -const adapter = AWSLambdaAdapter.create({...}); - -const handler = await adapter.run(); - -export { handler }; -``` - -## See - - - [Stone.js Documentation](https://stone-js.com/docs) - - [AWS Lambda Documentation](https://docs.aws.amazon.com/lambda/) - -## Extends - -- `Adapter`\<[`AwsLambdaEvent`](../../declarations/type-aliases/AwsLambdaEvent.md), [`RawResponse`](../../declarations/type-aliases/RawResponse.md), [`AwsLambdaContext`](../../declarations/type-aliases/AwsLambdaContext.md), `IncomingEvent`, `IncomingEventOptions`, `OutgoingResponse`, [`AwsLambdaAdapterContext`](../../declarations/interfaces/AwsLambdaAdapterContext.md)\> - -## Constructors - -### new AWSLambdaAdapter() - -> `protected` **new AWSLambdaAdapter**(`options`): [`AWSLambdaAdapter`](AWSLambdaAdapter.md) - -Defined in: node\_modules/@stone-js/core/dist/index.d.ts:1876 - -Create an Adapter. - -#### Parameters - -##### options - -`AdapterOptions`\<`IncomingEvent`, `OutgoingResponse`\> - -Adapter options. - -#### Returns - -[`AWSLambdaAdapter`](AWSLambdaAdapter.md) - -#### Inherited from - -`Adapter< AwsLambdaEvent, RawResponse, AwsLambdaContext, IncomingEvent, IncomingEventOptions, OutgoingResponse, AwsLambdaAdapterContext >.constructor` - -## Methods - -### eventListener() - -> `protected` **eventListener**(`rawEvent`, `executionContext`): `Promise`\<[`RawResponse`](../../declarations/type-aliases/RawResponse.md)\> - -Defined in: [src/AWSLambdaAdapter.ts:113](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaAdapter.ts#L113) - -Processes an incoming AWS Lambda event. - -This method transforms the raw AWS Lambda event into a Stone.js `IncomingEvent`, -processes it through the pipeline, and generates a `RawResponse` to send back. - -#### Parameters - -##### rawEvent - -[`AwsLambdaEvent`](../../declarations/type-aliases/AwsLambdaEvent.md) - -The raw AWS Lambda event to be processed. - -##### executionContext - -[`AwsLambdaContext`](../../declarations/type-aliases/AwsLambdaContext.md) - -The AWS Lambda execution context for the event. - -#### Returns - -`Promise`\<[`RawResponse`](../../declarations/type-aliases/RawResponse.md)\> - -A promise resolving to the processed `RawResponse`. - -*** - -### onInit() - -> `protected` **onInit**(): `Promise`\<`void`\> - -Defined in: [src/AWSLambdaAdapter.ts:93](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaAdapter.ts#L93) - -Initializes the adapter and validates its execution context. - -Ensures the adapter is running in an AWS Lambda environment. If not, it -throws an error to prevent misuse. - -#### Returns - -`Promise`\<`void`\> - -#### Throws - -If executed outside an AWS Lambda context (e.g., browser). - -#### Overrides - -`Adapter.onInit` - -*** - -### run() - -> **run**\<`ExecutionResultType`\>(): `Promise`\<`ExecutionResultType`\> - -Defined in: [src/AWSLambdaAdapter.ts:75](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaAdapter.ts#L75) - -Executes the adapter and provides an AWS Lambda-compatible handler function. - -The `run` method initializes the adapter and returns a handler function -that AWS Lambda can invoke. This handler processes events, manages context, -and returns the appropriate response. - -#### Type Parameters - -• **ExecutionResultType** = [`AwsLambdaEventHandlerFunction`](../../declarations/type-aliases/AwsLambdaEventHandlerFunction.md) - -The type representing the AWS Lambda event handler function. - -#### Returns - -`Promise`\<`ExecutionResultType`\> - -A promise resolving to the AWS Lambda handler function. - -#### Throws - -If used outside the AWS Lambda environment. - -#### Overrides - -`Adapter.run` - -*** - -### create() - -> `static` **create**(`options`): [`AWSLambdaAdapter`](AWSLambdaAdapter.md) - -Defined in: [src/AWSLambdaAdapter.ts:60](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaAdapter.ts#L60) - -Creates an instance of the `AWSLambdaAdapter`. - -This factory method allows developers to instantiate the adapter with -the necessary configuration options, ensuring it is correctly set up for -AWS Lambda usage. - -#### Parameters - -##### options - -`AdapterOptions`\<`IncomingEvent`, `OutgoingResponse`\> - -The configuration options for the adapter, including - handler resolver, error handling, and other settings. - -#### Returns - -[`AWSLambdaAdapter`](AWSLambdaAdapter.md) - -A fully initialized `AWSLambdaAdapter` instance. diff --git a/docs/AWSLambdaHttpAdapter/README.md b/docs/AWSLambdaHttpAdapter/README.md index c804b49..94c3585 100644 --- a/docs/AWSLambdaHttpAdapter/README.md +++ b/docs/AWSLambdaHttpAdapter/README.md @@ -1,11 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / AWSLambdaHttpAdapter - # AWSLambdaHttpAdapter ## Classes -- [AWSLambdaHttpAdapter](classes/AWSLambdaHttpAdapter.md) +- [AwsLambdaHttpAdapter](classes/AwsLambdaHttpAdapter.md) diff --git a/docs/AWSLambdaHttpAdapter/classes/AWSLambdaHttpAdapter.md b/docs/AWSLambdaHttpAdapter/classes/AWSLambdaHttpAdapter.md index 2f40a83..12f922c 100644 --- a/docs/AWSLambdaHttpAdapter/classes/AWSLambdaHttpAdapter.md +++ b/docs/AWSLambdaHttpAdapter/classes/AWSLambdaHttpAdapter.md @@ -1,16 +1,8 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [AWSLambdaHttpAdapter](../README.md) / AWSLambdaHttpAdapter - -# Class: AWSLambdaHttpAdapter - -Defined in: [src/AWSLambdaHttpAdapter.ts:42](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaHttpAdapter.ts#L42) +# Class: AwsLambdaHttpAdapter AWS Lambda HTTP Adapter for Stone.js. -The `AWSLambdaHttpAdapter` extends the functionality of the Stone.js `Adapter` +The `AwsLambdaHttpAdapter` extends the functionality of the Stone.js `Adapter` to provide seamless integration with AWS Lambda for HTTP-based events. This adapter transforms incoming HTTP events from AWS Lambda into `IncomingHttpEvent` instances and produces a `RawHttpResponse` as output. @@ -49,9 +41,9 @@ Context type specific to the HTTP adapter. ## Example ```typescript -import { AWSLambdaHttpAdapter } from '@stone-js/aws-lambda-adapter'; +import { AwsLambdaHttpAdapter } from '@stone-js/aws-lambda-http-adapter'; -const adapter = AWSLambdaHttpAdapter.create({...}); +const adapter = AwsLambdaHttpAdapter.create({...}); const handler = await adapter.run(); @@ -69,37 +61,47 @@ export { handler }; ## Constructors -### new AWSLambdaHttpAdapter() - -> `protected` **new AWSLambdaHttpAdapter**(`options`): [`AWSLambdaHttpAdapter`](AWSLambdaHttpAdapter.md) +### Constructor -Defined in: node\_modules/@stone-js/core/dist/index.d.ts:1876 +```ts +protected new AwsLambdaHttpAdapter(blueprint): AwsLambdaHttpAdapter; +``` Create an Adapter. #### Parameters -##### options +##### blueprint -`AdapterOptions`\<`IncomingHttpEvent`, `OutgoingHttpResponse`\> +`IBlueprint` -Adapter options. +The blueprint to create the adapter. #### Returns -[`AWSLambdaHttpAdapter`](AWSLambdaHttpAdapter.md) +`AwsLambdaHttpAdapter` #### Inherited from -`Adapter< AwsLambdaHttpEvent, RawHttpResponse, AwsLambdaContext, IncomingHttpEvent, IncomingHttpEventOptions, OutgoingHttpResponse, AwsLambdaHttpAdapterContext >.constructor` +```ts +Adapter< +AwsLambdaHttpEvent, +RawHttpResponse, +AwsLambdaContext, +IncomingHttpEvent, +IncomingHttpEventOptions, +OutgoingHttpResponse, +AwsLambdaHttpAdapterContext +>.constructor +``` ## Methods ### eventListener() -> `protected` **eventListener**(`rawEvent`, `executionContext`): `Promise`\<[`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md)\> - -Defined in: [src/AWSLambdaHttpAdapter.ts:113](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaHttpAdapter.ts#L113) +```ts +protected eventListener(rawEvent, executionContext): Promise; +``` Processes an incoming AWS Lambda HTTP event. @@ -128,11 +130,11 @@ A promise resolving to the processed `RawHttpResponse`. *** -### onInit() +### onStart() -> `protected` **onInit**(): `Promise`\<`void`\> - -Defined in: [src/AWSLambdaHttpAdapter.ts:93](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaHttpAdapter.ts#L93) +```ts +protected onStart(): Promise; +``` Initializes the adapter and validates its execution context. @@ -147,17 +149,13 @@ if it detects that the adapter is being used in an unsupported environment (e.g. If executed outside an AWS Lambda environment. -#### Overrides - -`Adapter.onInit` - *** ### run() -> **run**\<`ExecutionResultType`\>(): `Promise`\<`ExecutionResultType`\> - -Defined in: [src/AWSLambdaHttpAdapter.ts:75](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaHttpAdapter.ts#L75) +```ts +run(): Promise; +``` Executes the adapter and provides an AWS Lambda-compatible HTTP handler function. @@ -167,7 +165,9 @@ instances and produces `RawHttpResponse` objects as output. #### Type Parameters -• **ExecutionResultType** = [`AwsLambdaEventHandlerFunction`](../../declarations/type-aliases/AwsLambdaEventHandlerFunction.md)\<[`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md)\> +##### ExecutionResultType + +`ExecutionResultType` = [`AwsLambdaEventHandlerFunction`](../../declarations/type-aliases/AwsLambdaEventHandlerFunction.md)\<[`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md)\> The type representing the AWS Lambda event handler function. @@ -183,31 +183,37 @@ If used outside the AWS Lambda environment. #### Overrides -`Adapter.run` +```ts +Adapter.run +``` *** ### create() -> `static` **create**(`options`): [`AWSLambdaHttpAdapter`](AWSLambdaHttpAdapter.md) - -Defined in: [src/AWSLambdaHttpAdapter.ts:60](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/AWSLambdaHttpAdapter.ts#L60) - -Creates an instance of the `AWSLambdaHttpAdapter`. +```ts +static create(blueprint): AwsLambdaHttpAdapter; +``` -This factory method initializes the adapter with the specified configuration options. +Creates an instance of the `AwsLambdaHttpAdapter`. #### Parameters -##### options +##### blueprint -`AdapterOptions`\<`IncomingHttpEvent`, `OutgoingHttpResponse`\> +`IBlueprint` -Configuration options for the adapter, including the handler resolver - and error handling mechanisms. +The application blueprint. #### Returns -[`AWSLambdaHttpAdapter`](AWSLambdaHttpAdapter.md) +`AwsLambdaHttpAdapter` + +A new instance of `AwsLambdaHttpAdapter`. -A new instance of `AWSLambdaHttpAdapter`. +#### Example + +```typescript +const adapter = AwsLambdaHttpAdapter.create(blueprint); +await adapter.run(); +``` diff --git a/docs/AwsLambdaErrorHandler/README.md b/docs/AwsLambdaErrorHandler/README.md deleted file mode 100644 index 3750a75..0000000 --- a/docs/AwsLambdaErrorHandler/README.md +++ /dev/null @@ -1,15 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / AwsLambdaErrorHandler - -# AwsLambdaErrorHandler - -## Classes - -- [AwsLambdaErrorHandler](classes/AwsLambdaErrorHandler.md) - -## Interfaces - -- [AwsLambdaErrorHandlerOptions](interfaces/AwsLambdaErrorHandlerOptions.md) diff --git a/docs/AwsLambdaErrorHandler/classes/AwsLambdaErrorHandler.md b/docs/AwsLambdaErrorHandler/classes/AwsLambdaErrorHandler.md deleted file mode 100644 index ed02cce..0000000 --- a/docs/AwsLambdaErrorHandler/classes/AwsLambdaErrorHandler.md +++ /dev/null @@ -1,71 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [AwsLambdaErrorHandler](../README.md) / AwsLambdaErrorHandler - -# Class: AwsLambdaErrorHandler - -Defined in: src/AwsLambdaErrorHandler.ts:15 - -Class representing an AwsLambdaErrorHandler. - -## Implements - -- `IAdapterErrorHandler`\<[`AwsLambdaEvent`](../../declarations/type-aliases/AwsLambdaEvent.md), [`RawResponse`](../../declarations/type-aliases/RawResponse.md), [`AwsLambdaContext`](../../declarations/type-aliases/AwsLambdaContext.md)\> - -## Constructors - -### new AwsLambdaErrorHandler() - -> **new AwsLambdaErrorHandler**(`options`): [`AwsLambdaErrorHandler`](AwsLambdaErrorHandler.md) - -Defined in: src/AwsLambdaErrorHandler.ts:23 - -Create an AwsLambdaErrorHandler. - -#### Parameters - -##### options - -[`AwsLambdaErrorHandlerOptions`](../interfaces/AwsLambdaErrorHandlerOptions.md) - -AwsLambdaErrorHandler options. - -#### Returns - -[`AwsLambdaErrorHandler`](AwsLambdaErrorHandler.md) - -## Methods - -### handle() - -> **handle**(`error`, `context`): `Promise`\<[`RawResponse`](../../declarations/type-aliases/RawResponse.md)\> - -Defined in: src/AwsLambdaErrorHandler.ts:38 - -Handle an error. - -#### Parameters - -##### error - -`Error` - -The error to handle. - -##### context - -`AdapterErrorContext`\<[`AwsLambdaEvent`](../../declarations/type-aliases/AwsLambdaEvent.md), [`RawResponse`](../../declarations/type-aliases/RawResponse.md), [`AwsLambdaContext`](../../declarations/type-aliases/AwsLambdaContext.md)\> - -The context of the adapter. - -#### Returns - -`Promise`\<[`RawResponse`](../../declarations/type-aliases/RawResponse.md)\> - -The raw response. - -#### Implementation of - -`IAdapterErrorHandler.handle` diff --git a/docs/AwsLambdaErrorHandler/interfaces/AwsLambdaErrorHandlerOptions.md b/docs/AwsLambdaErrorHandler/interfaces/AwsLambdaErrorHandlerOptions.md deleted file mode 100644 index bd97c58..0000000 --- a/docs/AwsLambdaErrorHandler/interfaces/AwsLambdaErrorHandlerOptions.md +++ /dev/null @@ -1,19 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [AwsLambdaErrorHandler](../README.md) / AwsLambdaErrorHandlerOptions - -# Interface: AwsLambdaErrorHandlerOptions - -Defined in: src/AwsLambdaErrorHandler.ts:8 - -AwsLambdaErrorHandler options. - -## Properties - -### logger - -> **logger**: `ILogger` - -Defined in: src/AwsLambdaErrorHandler.ts:9 diff --git a/docs/AwsLambdaHttpErrorHandler/README.md b/docs/AwsLambdaHttpErrorHandler/README.md index b75866e..3ec9b95 100644 --- a/docs/AwsLambdaHttpErrorHandler/README.md +++ b/docs/AwsLambdaHttpErrorHandler/README.md @@ -1,9 +1,3 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / AwsLambdaHttpErrorHandler - # AwsLambdaHttpErrorHandler ## Classes diff --git a/docs/AwsLambdaHttpErrorHandler/classes/AwsLambdaHttpErrorHandler.md b/docs/AwsLambdaHttpErrorHandler/classes/AwsLambdaHttpErrorHandler.md index a48de14..c3f6817 100644 --- a/docs/AwsLambdaHttpErrorHandler/classes/AwsLambdaHttpErrorHandler.md +++ b/docs/AwsLambdaHttpErrorHandler/classes/AwsLambdaHttpErrorHandler.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [AwsLambdaHttpErrorHandler](../README.md) / AwsLambdaHttpErrorHandler - # Class: AwsLambdaHttpErrorHandler -Defined in: src/AwsLambdaHttpErrorHandler.ts:18 - Class representing an AwsLambdaHttpErrorHandler. ## Implements @@ -16,13 +8,13 @@ Class representing an AwsLambdaHttpErrorHandler. ## Constructors -### new AwsLambdaHttpErrorHandler() - -> **new AwsLambdaHttpErrorHandler**(`options`): [`AwsLambdaHttpErrorHandler`](AwsLambdaHttpErrorHandler.md) +### Constructor -Defined in: src/AwsLambdaHttpErrorHandler.ts:26 +```ts +new AwsLambdaHttpErrorHandler(options): AwsLambdaHttpErrorHandler; +``` -Create an AwsLambdaHttpErrorHandler. +Create an NodeHttpErrorHandler. #### Parameters @@ -30,19 +22,19 @@ Create an AwsLambdaHttpErrorHandler. [`AwsLambdaHttpErrorHandlerOptions`](../interfaces/AwsLambdaHttpErrorHandlerOptions.md) -AwsLambdaHttpErrorHandler options. +NodeHttpErrorHandler options. #### Returns -[`AwsLambdaHttpErrorHandler`](AwsLambdaHttpErrorHandler.md) +`AwsLambdaHttpErrorHandler` ## Methods ### handle() -> **handle**(`error`, `context`): `Promise`\<[`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md)\> - -Defined in: src/AwsLambdaHttpErrorHandler.ts:41 +```ts +handle(error, context): AdapterEventBuilderType; +``` Handle an error. @@ -62,10 +54,12 @@ The context of the adapter. #### Returns -`Promise`\<[`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md)\> +`AdapterEventBuilderType`\<[`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md)\> -The raw response. +The raw response builder. #### Implementation of -`IAdapterErrorHandler.handle` +```ts +IAdapterErrorHandler.handle +``` diff --git a/docs/AwsLambdaHttpErrorHandler/interfaces/AwsLambdaHttpErrorHandlerOptions.md b/docs/AwsLambdaHttpErrorHandler/interfaces/AwsLambdaHttpErrorHandlerOptions.md index d37b0d6..907596b 100644 --- a/docs/AwsLambdaHttpErrorHandler/interfaces/AwsLambdaHttpErrorHandlerOptions.md +++ b/docs/AwsLambdaHttpErrorHandler/interfaces/AwsLambdaHttpErrorHandlerOptions.md @@ -1,19 +1,11 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [AwsLambdaHttpErrorHandler](../README.md) / AwsLambdaHttpErrorHandlerOptions - # Interface: AwsLambdaHttpErrorHandlerOptions -Defined in: src/AwsLambdaHttpErrorHandler.ts:11 - AwsLambdaHttpErrorHandler options. ## Properties -### logger - -> **logger**: `ILogger` +### blueprint -Defined in: src/AwsLambdaHttpErrorHandler.ts:12 +```ts +blueprint: IBlueprint; +``` diff --git a/docs/README.md b/docs/README.md index 98dca24..9a3d7a5 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,23 +1,18 @@ -**AWS Lambda Adapter Documentation v0.0.2** - -*** - -# Stone.js: AWS Lambda Adapters - -[![npm](https://img.shields.io/npm/l/@stone-js/aws-lambda-adapter)](https://opensource.org/licenses/Apache-2.0) -[![npm](https://img.shields.io/npm/v/@stone-js/aws-lambda-adapter)](https://www.npmjs.com/package/@stone-js/aws-lambda-adapter) -[![npm](https://img.shields.io/npm/dm/@stone-js/aws-lambda-adapter)](https://www.npmjs.com/package/@stone-js/aws-lambda-adapter) -![Maintenance](https://img.shields.io/maintenance/yes/2025) -[![Publish Package to npmjs](https://github.com/stonemjs/aws-lambda-adapter/actions/workflows/release.yml/badge.svg)](https://github.com/stonemjs/aws-lambda-adapter/actions/workflows/release.yml) -[![Dependabot Status](https://img.shields.io/badge/Dependabot-enabled-brightgreen.svg?logo=dependabot)](https://github.com/stonemjs/aws-lambda-adapter/network/updates) -[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org) - -Stone.js AWS Lambda Adapters with typings. - ---- - -Get started with the [documentation](https://stonejs.com/docs/http/aws-lambda-adapter). - -## Contributing - -See [Contributing Guide](https://github.com/stonemjs/aws-lambda-adapter/blob/main/CONTRIBUTING.md). +# AWS Lambda HTTP Adapter + +## Modules + +- [AWSLambdaHttpAdapter](AWSLambdaHttpAdapter/README.md) +- [AwsLambdaHttpErrorHandler](AwsLambdaHttpErrorHandler/README.md) +- [constants](constants/README.md) +- [declarations](declarations/README.md) +- [decorators/AwsLambdaHttp](decorators/AwsLambdaHttp/README.md) +- [errors/AwsLambdaHttpAdapterError](errors/AwsLambdaHttpAdapterError/README.md) +- [middleware/BlueprintMiddleware](middleware/BlueprintMiddleware/README.md) +- [middleware/BodyEventMiddleware](middleware/BodyEventMiddleware/README.md) +- [middleware/FilesEventMiddleware](middleware/FilesEventMiddleware/README.md) +- [middleware/IncomingEventMiddleware](middleware/IncomingEventMiddleware/README.md) +- [middleware/ServerResponseMiddleware](middleware/ServerResponseMiddleware/README.md) +- [options/AwsLambdaHttpAdapterBlueprint](options/AwsLambdaHttpAdapterBlueprint/README.md) +- [RawHttpResponseWrapper](RawHttpResponseWrapper/README.md) +- [resolvers](resolvers/README.md) diff --git a/docs/RawHttpResponseWrapper/README.md b/docs/RawHttpResponseWrapper/README.md index e0865a2..773bacd 100644 --- a/docs/RawHttpResponseWrapper/README.md +++ b/docs/RawHttpResponseWrapper/README.md @@ -1,9 +1,3 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / RawHttpResponseWrapper - # RawHttpResponseWrapper ## Classes diff --git a/docs/RawHttpResponseWrapper/classes/RawHttpResponseWrapper.md b/docs/RawHttpResponseWrapper/classes/RawHttpResponseWrapper.md index 9a1a020..97926af 100644 --- a/docs/RawHttpResponseWrapper/classes/RawHttpResponseWrapper.md +++ b/docs/RawHttpResponseWrapper/classes/RawHttpResponseWrapper.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [RawHttpResponseWrapper](../README.md) / RawHttpResponseWrapper - # Class: RawHttpResponseWrapper -Defined in: [src/RawHttpResponseWrapper.ts:12](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/RawHttpResponseWrapper.ts#L12) - Wrapper for HTTP raw responses in AWS Lambda. The `RawHttpResponseWrapper` is responsible for constructing and returning @@ -23,17 +15,15 @@ with the Stone.js framework. ### respond() -> **respond**(): [`RawHttpResponseOptions`](../../declarations/interfaces/RawHttpResponseOptions.md) - -Defined in: [src/RawHttpResponseWrapper.ts:66](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/RawHttpResponseWrapper.ts#L66) +```ts +respond(): RawHttpResponseOptions; +``` Constructs and returns the raw HTTP response. The `respond` method generates a `RawHttpResponse` object based on the provided options. If any required fields are missing, it assigns default values: - `statusCode`: Defaults to `500`. -- `statusMessage`: Defaults to an empty string. -- `body`: Converts non-string bodies to a JSON string. #### Returns @@ -51,15 +41,17 @@ console.log(response); // { statusCode: 500, statusMessage: '', body: 'Hello, wo #### Implementation of -`IRawResponseWrapper.respond` +```ts +IRawResponseWrapper.respond +``` *** ### create() -> `static` **create**(`options`): [`RawHttpResponseWrapper`](RawHttpResponseWrapper.md) - -Defined in: [src/RawHttpResponseWrapper.ts:34](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/RawHttpResponseWrapper.ts#L34) +```ts +static create(options): RawHttpResponseWrapper; +``` Factory method to create an instance of `RawHttpResponseWrapper`. @@ -76,7 +68,7 @@ Partial options to configure the HTTP response. #### Returns -[`RawHttpResponseWrapper`](RawHttpResponseWrapper.md) +`RawHttpResponseWrapper` A new instance of `RawHttpResponseWrapper`. diff --git a/docs/RawResponseWrapper/README.md b/docs/RawResponseWrapper/README.md deleted file mode 100644 index c2a7df2..0000000 --- a/docs/RawResponseWrapper/README.md +++ /dev/null @@ -1,11 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / RawResponseWrapper - -# RawResponseWrapper - -## Classes - -- [RawResponseWrapper](classes/RawResponseWrapper.md) diff --git a/docs/RawResponseWrapper/classes/RawResponseWrapper.md b/docs/RawResponseWrapper/classes/RawResponseWrapper.md deleted file mode 100644 index 31d7d37..0000000 --- a/docs/RawResponseWrapper/classes/RawResponseWrapper.md +++ /dev/null @@ -1,90 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [RawResponseWrapper](../README.md) / RawResponseWrapper - -# Class: RawResponseWrapper - -Defined in: [src/RawResponseWrapper.ts:11](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/RawResponseWrapper.ts#L11) - -Wrapper for generic raw responses. - -The `RawResponseWrapper` is responsible for encapsulating a raw response -and returning it in a structure that aligns with the Stone.js framework's requirements. -It implements the `IRawResponseWrapper` interface, ensuring compatibility with the framework. - -## Implements - -- `IRawResponseWrapper`\<[`RawResponse`](../../declarations/type-aliases/RawResponse.md)\> - -## Methods - -### respond() - -> **respond**(): [`RawResponse`](../../declarations/type-aliases/RawResponse.md) - -Defined in: [src/RawResponseWrapper.ts:62](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/RawResponseWrapper.ts#L62) - -Constructs and returns the raw response. - -The `respond` method generates and returns the raw response based on -the provided options. The response is returned as-is, allowing for -maximum flexibility in defining its structure. - -#### Returns - -[`RawResponse`](../../declarations/type-aliases/RawResponse.md) - -A `RawResponse` object containing the response options. - -#### Example - -```typescript -const responseWrapper = RawResponseWrapper.create({ body: 'Hello, world!' }); -const response = responseWrapper.respond(); -console.log(response); // { body: 'Hello, world!' } -``` - -#### Implementation of - -`IRawResponseWrapper.respond` - -*** - -### create() - -> `static` **create**(`options`): [`RawResponseWrapper`](RawResponseWrapper.md) - -Defined in: [src/RawResponseWrapper.ts:32](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/RawResponseWrapper.ts#L32) - -Factory method to create an instance of `RawResponseWrapper`. - -This method initializes the wrapper with a set of partial response options. - -#### Parameters - -##### options - -`Partial`\<`RawResponseOptions`\> - -Partial options to configure the raw response. - -#### Returns - -[`RawResponseWrapper`](RawResponseWrapper.md) - -A new instance of `RawResponseWrapper`. - -#### Example - -```typescript -const responseWrapper = RawResponseWrapper.create({ - headers: { 'Content-Type': 'application/json' }, - body: { message: 'Success' }, - statusCode: 200, -}); - -const response = responseWrapper.respond(); -console.log(response); // { headers: { 'Content-Type': 'application/json' }, body: { message: 'Success' }, statusCode: 200 } -``` diff --git a/docs/constants/README.md b/docs/constants/README.md index 7956d90..fb7a84b 100644 --- a/docs/constants/README.md +++ b/docs/constants/README.md @@ -1,12 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / constants - # constants ## Variables - [AWS\_LAMBDA\_HTTP\_PLATFORM](variables/AWS_LAMBDA_HTTP_PLATFORM.md) -- [AWS\_LAMBDA\_PLATFORM](variables/AWS_LAMBDA_PLATFORM.md) diff --git a/docs/constants/variables/AWS_LAMBDA_HTTP_PLATFORM.md b/docs/constants/variables/AWS_LAMBDA_HTTP_PLATFORM.md index d8fe9f2..8a26511 100644 --- a/docs/constants/variables/AWS_LAMBDA_HTTP_PLATFORM.md +++ b/docs/constants/variables/AWS_LAMBDA_HTTP_PLATFORM.md @@ -1,14 +1,8 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [constants](../README.md) / AWS\_LAMBDA\_HTTP\_PLATFORM - # Variable: AWS\_LAMBDA\_HTTP\_PLATFORM -> `const` **AWS\_LAMBDA\_HTTP\_PLATFORM**: `"aws_lambda_http"` = `'aws_lambda_http'` - -Defined in: [src/constants.ts:17](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/constants.ts#L17) +```ts +const AWS_LAMBDA_HTTP_PLATFORM: "aws_lambda_http" = 'aws_lambda_http'; +``` A constant representing the AWS Lambda HTTP platform identifier. diff --git a/docs/constants/variables/AWS_LAMBDA_PLATFORM.md b/docs/constants/variables/AWS_LAMBDA_PLATFORM.md deleted file mode 100644 index dc590e7..0000000 --- a/docs/constants/variables/AWS_LAMBDA_PLATFORM.md +++ /dev/null @@ -1,17 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [constants](../README.md) / AWS\_LAMBDA\_PLATFORM - -# Variable: AWS\_LAMBDA\_PLATFORM - -> `const` **AWS\_LAMBDA\_PLATFORM**: `"aws_lambda"` = `'aws_lambda'` - -Defined in: [src/constants.ts:8](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/constants.ts#L8) - -A constant representing the AWS Lambda platform identifier. - -This constant is used as an alias for the AWS Lambda Adapter within the Stone.js framework. -It helps in identifying and configuring platform-specific adapters or components for handling -incoming requests and responses. diff --git a/docs/declarations/README.md b/docs/declarations/README.md index 1c04153..c552699 100644 --- a/docs/declarations/README.md +++ b/docs/declarations/README.md @@ -1,24 +1,14 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / declarations - # declarations ## Interfaces -- [AwsLambdaAdapterContext](interfaces/AwsLambdaAdapterContext.md) - [AwsLambdaHttpAdapterContext](interfaces/AwsLambdaHttpAdapterContext.md) - [AwsLambdaHttpEvent](interfaces/AwsLambdaHttpEvent.md) - [RawHttpResponseOptions](interfaces/RawHttpResponseOptions.md) ## Type Aliases -- [AwsLambdaAdapterResponseBuilder](type-aliases/AwsLambdaAdapterResponseBuilder.md) - [AwsLambdaContext](type-aliases/AwsLambdaContext.md) -- [AwsLambdaEvent](type-aliases/AwsLambdaEvent.md) - [AwsLambdaEventHandlerFunction](type-aliases/AwsLambdaEventHandlerFunction.md) - [AwsLambdaHttpAdapterResponseBuilder](type-aliases/AwsLambdaHttpAdapterResponseBuilder.md) - [RawHttpResponse](type-aliases/RawHttpResponse.md) -- [RawResponse](type-aliases/RawResponse.md) diff --git a/docs/declarations/interfaces/AwsLambdaAdapterContext.md b/docs/declarations/interfaces/AwsLambdaAdapterContext.md deleted file mode 100644 index ec9368d..0000000 --- a/docs/declarations/interfaces/AwsLambdaAdapterContext.md +++ /dev/null @@ -1,32 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaAdapterContext - -# Interface: AwsLambdaAdapterContext - -Defined in: [src/declarations.ts:137](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L137) - -Represents the context for the AWS Lambda Adapter. - -This interface extends `AdapterContext` and includes additional properties -specific to generic AWS Lambda events. - -## Extends - -- `AdapterContext`\<[`AwsLambdaEvent`](../type-aliases/AwsLambdaEvent.md), [`RawResponse`](../type-aliases/RawResponse.md), [`AwsLambdaContext`](../type-aliases/AwsLambdaContext.md), `IncomingEvent`, `IncomingEventOptions`, `OutgoingResponse`\> - -## Properties - -### rawResponse - -> **rawResponse**: [`RawResponse`](../type-aliases/RawResponse.md) - -Defined in: [src/declarations.ts:148](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L148) - -The raw response associated with the current context. - -#### Overrides - -`AdapterContext.rawResponse` diff --git a/docs/declarations/interfaces/AwsLambdaHttpAdapterContext.md b/docs/declarations/interfaces/AwsLambdaHttpAdapterContext.md index 584aac0..ab62aba 100644 --- a/docs/declarations/interfaces/AwsLambdaHttpAdapterContext.md +++ b/docs/declarations/interfaces/AwsLambdaHttpAdapterContext.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaHttpAdapterContext - # Interface: AwsLambdaHttpAdapterContext -Defined in: [src/declarations.ts:117](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L117) - Represents the context for the AWS Lambda HTTP Adapter. This interface extends `AdapterContext` and includes additional properties specific @@ -21,12 +13,14 @@ to HTTP events in AWS Lambda. ### rawResponse -> **rawResponse**: [`RawHttpResponseOptions`](RawHttpResponseOptions.md) - -Defined in: [src/declarations.ts:128](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L128) +```ts +rawResponse: RawHttpResponseOptions; +``` The raw HTTP response associated with the current context. #### Overrides -`AdapterContext.rawResponse` +```ts +AdapterContext.rawResponse +``` diff --git a/docs/declarations/interfaces/AwsLambdaHttpEvent.md b/docs/declarations/interfaces/AwsLambdaHttpEvent.md index d308984..29715c8 100644 --- a/docs/declarations/interfaces/AwsLambdaHttpEvent.md +++ b/docs/declarations/interfaces/AwsLambdaHttpEvent.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaHttpEvent - # Interface: AwsLambdaHttpEvent -Defined in: [src/declarations.ts:55](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L55) - Represents the structure of an AWS Lambda HTTP event. This interface defines the standard properties of an HTTP event in AWS Lambda, @@ -19,15 +11,17 @@ including headers, query parameters, the request context, and other metadata. ## Indexable -\[`key`: `string`\]: `unknown` +```ts +[key: string]: unknown +``` ## Properties ### body? -> `optional` **body**: `unknown` - -Defined in: [src/declarations.ts:64](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L64) +```ts +optional body: unknown; +``` The body of the HTTP request. @@ -35,9 +29,9 @@ The body of the HTTP request. ### encoding? -> `optional` **encoding**: `string` - -Defined in: [src/declarations.ts:69](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L69) +```ts +optional encoding: string; +``` The encoding format of the body, such as `base64`. @@ -45,9 +39,9 @@ The encoding format of the body, such as `base64`. ### headers -> **headers**: `Record`\<`string`, `string`\> - -Defined in: [src/declarations.ts:84](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L84) +```ts +headers: Record; +``` The headers of the HTTP request as key-value pairs. @@ -55,9 +49,9 @@ The headers of the HTTP request as key-value pairs. ### httpMethod? -> `optional` **httpMethod**: `string` - -Defined in: [src/declarations.ts:89](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L89) +```ts +optional httpMethod: string; +``` The HTTP method of the request (e.g., `GET`, `POST`). @@ -65,9 +59,9 @@ The HTTP method of the request (e.g., `GET`, `POST`). ### isBase64Encoded? -> `optional` **isBase64Encoded**: `boolean` - -Defined in: [src/declarations.ts:79](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L79) +```ts +optional isBase64Encoded: boolean; +``` Indicates whether the request body is base64-encoded. @@ -75,9 +69,9 @@ Indicates whether the request body is base64-encoded. ### path? -> `optional` **path**: `string` - -Defined in: [src/declarations.ts:59](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L59) +```ts +optional path: string; +``` The path of the HTTP request. @@ -85,9 +79,9 @@ The path of the HTTP request. ### queryStringParameters? -> `optional` **queryStringParameters**: `Record`\<`string`, `string`\> - -Defined in: [src/declarations.ts:94](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L94) +```ts +optional queryStringParameters: Record; +``` The query string parameters included in the request. @@ -95,9 +89,9 @@ The query string parameters included in the request. ### rawPath? -> `optional` **rawPath**: `string` - -Defined in: [src/declarations.ts:74](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L74) +```ts +optional rawPath: string; +``` The raw path of the HTTP request, as sent by the client. @@ -105,32 +99,44 @@ The raw path of the HTTP request, as sent by the client. ### requestContext? -> `optional` **requestContext**: `object` - -Defined in: [src/declarations.ts:99](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L99) +```ts +optional requestContext: object; +``` The context of the request, including identity and HTTP metadata. #### http? -> `optional` **http**: `object` +```ts +optional http: object; +``` ##### http.method? -> `optional` **method**: `string` +```ts +optional method: string; +``` ##### http.sourceIp? -> `optional` **sourceIp**: `string` +```ts +optional sourceIp: string; +``` #### httpMethod? -> `optional` **httpMethod**: `string` +```ts +optional httpMethod: string; +``` #### identity? -> `optional` **identity**: `object` +```ts +optional identity: object; +``` ##### identity.sourceIp? -> `optional` **sourceIp**: `string` +```ts +optional sourceIp: string; +``` diff --git a/docs/declarations/interfaces/RawHttpResponseOptions.md b/docs/declarations/interfaces/RawHttpResponseOptions.md index 2d18de4..8313e11 100644 --- a/docs/declarations/interfaces/RawHttpResponseOptions.md +++ b/docs/declarations/interfaces/RawHttpResponseOptions.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / RawHttpResponseOptions - # Interface: RawHttpResponseOptions -Defined in: [src/declarations.ts:157](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L157) - Represents options for configuring a raw HTTP response. Extends the `RawResponseOptions` interface to include additional properties @@ -19,15 +11,17 @@ for managing response content, headers, status codes, and streaming files. ## Indexable -\[`k`: `string` \| `number` \| `symbol`\]: `unknown` +```ts +[k: string | number | symbol]: unknown +``` ## Properties ### body? -> `optional` **body**: `unknown` - -Defined in: [src/declarations.ts:161](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L161) +```ts +optional body: unknown; +``` The body of the HTTP response. Can be of any type, including strings, objects, or buffers. @@ -35,20 +29,30 @@ The body of the HTTP response. Can be of any type, including strings, objects, o ### headers? -> `optional` **headers**: `Record`\<`string`, `string`\> - -Defined in: [src/declarations.ts:177](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L177) +```ts +optional headers: Record; +``` Headers to include in the HTTP response. Can be provided as key-value pairs. *** -### statusCode +### isBase64Encoded? + +```ts +optional isBase64Encoded: boolean; +``` -> **statusCode**: `number` +The encoding format of the response body, such as `base64`. -Defined in: [src/declarations.ts:166](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L166) +*** + +### statusCode + +```ts +statusCode: number; +``` The HTTP status code of the response (e.g., `200`, `404`). @@ -56,8 +60,8 @@ The HTTP status code of the response (e.g., `200`, `404`). ### statusMessage? -> `optional` **statusMessage**: `string` - -Defined in: [src/declarations.ts:171](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L171) +```ts +optional statusMessage: string; +``` The status message accompanying the HTTP status code (e.g., `OK`, `Not Found`). diff --git a/docs/declarations/type-aliases/AwsLambdaAdapterResponseBuilder.md b/docs/declarations/type-aliases/AwsLambdaAdapterResponseBuilder.md deleted file mode 100644 index e20fa2e..0000000 --- a/docs/declarations/type-aliases/AwsLambdaAdapterResponseBuilder.md +++ /dev/null @@ -1,13 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaAdapterResponseBuilder - -# Type Alias: AwsLambdaAdapterResponseBuilder - -> **AwsLambdaAdapterResponseBuilder**: `IAdapterEventBuilder`\<`RawResponseOptions`, [`RawResponseWrapper`](../../RawResponseWrapper/classes/RawResponseWrapper.md)\> - -Defined in: [src/declarations.ts:42](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L42) - -Represents the response builder for the AWS Lambda Adapter. diff --git a/docs/declarations/type-aliases/AwsLambdaContext.md b/docs/declarations/type-aliases/AwsLambdaContext.md index 99131a5..633c318 100644 --- a/docs/declarations/type-aliases/AwsLambdaContext.md +++ b/docs/declarations/type-aliases/AwsLambdaContext.md @@ -1,13 +1,7 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaContext - # Type Alias: AwsLambdaContext -> **AwsLambdaContext**: `Record`\<`string`, `unknown`\> - -Defined in: [src/declarations.ts:24](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L24) +```ts +type AwsLambdaContext = Record; +``` Represents the AWS Lambda execution context as a key-value pair. diff --git a/docs/declarations/type-aliases/AwsLambdaEvent.md b/docs/declarations/type-aliases/AwsLambdaEvent.md deleted file mode 100644 index 338aae8..0000000 --- a/docs/declarations/type-aliases/AwsLambdaEvent.md +++ /dev/null @@ -1,13 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaEvent - -# Type Alias: AwsLambdaEvent - -> **AwsLambdaEvent**: `Record`\<`string`, `unknown`\> - -Defined in: [src/declarations.ts:19](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L19) - -Represents a generic AWS Lambda event as a key-value pair. diff --git a/docs/declarations/type-aliases/AwsLambdaEventHandlerFunction.md b/docs/declarations/type-aliases/AwsLambdaEventHandlerFunction.md index 19c9d0e..ac25ca4 100644 --- a/docs/declarations/type-aliases/AwsLambdaEventHandlerFunction.md +++ b/docs/declarations/type-aliases/AwsLambdaEventHandlerFunction.md @@ -1,20 +1,16 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaEventHandlerFunction - # Type Alias: AwsLambdaEventHandlerFunction()\ -> **AwsLambdaEventHandlerFunction**\<`RawResponseType`\>: (`rawEvent`, `context`) => `Promise`\<`RawResponseType`\> - -Defined in: [src/declarations.ts:34](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L34) +```ts +type AwsLambdaEventHandlerFunction = (rawEvent, context) => Promise; +``` Represents an AWS Lambda event handler function. ## Type Parameters -• **RawResponseType** = [`RawResponse`](RawResponse.md) +### RawResponseType + +`RawResponseType` = [`RawHttpResponse`](RawHttpResponse.md) The type of the response returned by the handler. @@ -22,7 +18,7 @@ The type of the response returned by the handler. ### rawEvent -[`AwsLambdaEvent`](AwsLambdaEvent.md) +[`AwsLambdaHttpEvent`](../interfaces/AwsLambdaHttpEvent.md) The raw event received by the AWS Lambda function. diff --git a/docs/declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md b/docs/declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md index f2715ae..5ed837e 100644 --- a/docs/declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md +++ b/docs/declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md @@ -1,13 +1,7 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / AwsLambdaHttpAdapterResponseBuilder - # Type Alias: AwsLambdaHttpAdapterResponseBuilder -> **AwsLambdaHttpAdapterResponseBuilder**: `IAdapterEventBuilder`\<[`RawHttpResponseOptions`](../interfaces/RawHttpResponseOptions.md), [`RawHttpResponseWrapper`](../../RawHttpResponseWrapper/classes/RawHttpResponseWrapper.md)\> - -Defined in: [src/declarations.ts:47](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L47) +```ts +type AwsLambdaHttpAdapterResponseBuilder = IAdapterEventBuilder; +``` Represents the response builder for the AWS Lambda http Adapter. diff --git a/docs/declarations/type-aliases/RawHttpResponse.md b/docs/declarations/type-aliases/RawHttpResponse.md index 57ba048..670ba71 100644 --- a/docs/declarations/type-aliases/RawHttpResponse.md +++ b/docs/declarations/type-aliases/RawHttpResponse.md @@ -1,13 +1,7 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / RawHttpResponse - # Type Alias: RawHttpResponse -> **RawHttpResponse**: [`RawHttpResponseOptions`](../interfaces/RawHttpResponseOptions.md) - -Defined in: [src/declarations.ts:14](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L14) +```ts +type RawHttpResponse = RawHttpResponseOptions; +``` Represents a raw HTTP response, extending from `RawHttpResponseOptions`. diff --git a/docs/declarations/type-aliases/RawResponse.md b/docs/declarations/type-aliases/RawResponse.md deleted file mode 100644 index 3721e6f..0000000 --- a/docs/declarations/type-aliases/RawResponse.md +++ /dev/null @@ -1,13 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [declarations](../README.md) / RawResponse - -# Type Alias: RawResponse - -> **RawResponse**: `Record`\<`string`, `unknown`\> - -Defined in: [src/declarations.ts:9](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/declarations.ts#L9) - -Represents a generic raw response as a key-value pair. diff --git a/docs/decorators/AwsLambda/README.md b/docs/decorators/AwsLambda/README.md deleted file mode 100644 index b1449a4..0000000 --- a/docs/decorators/AwsLambda/README.md +++ /dev/null @@ -1,15 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / decorators/AwsLambda - -# decorators/AwsLambda - -## Interfaces - -- [AwsLambdaOptions](interfaces/AwsLambdaOptions.md) - -## Functions - -- [AwsLambda](functions/AwsLambda.md) diff --git a/docs/decorators/AwsLambda/functions/AwsLambda.md b/docs/decorators/AwsLambda/functions/AwsLambda.md deleted file mode 100644 index 1ddf6e0..0000000 --- a/docs/decorators/AwsLambda/functions/AwsLambda.md +++ /dev/null @@ -1,64 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [decorators/AwsLambda](../README.md) / AwsLambda - -# Function: AwsLambda() - -> **AwsLambda**\<`T`\>(`options`): (`target`, `context`) => `void` - -Defined in: src/decorators/AwsLambda.ts:35 - -A Stone.js decorator that integrates the AWS Lambda Adapter with a class. - -This decorator modifies the class to seamlessly enable AWS Lambda as the -execution environment for a Stone.js application. By applying this decorator, -the class is automatically configured with the necessary blueprint for AWS Lambda. - -## Type Parameters - -• **T** *extends* `ClassType` = `ClassType` - -The type of the class being decorated. Defaults to `ClassType`. - -## Parameters - -### options - -[`AwsLambdaOptions`](../interfaces/AwsLambdaOptions.md) = `{}` - -Optional configuration to customize the AWS Lambda Adapter. - -## Returns - -`Function` - -A class decorator that applies the AWS Lambda adapter configuration. - -### Parameters - -#### target - -`T` - -#### context - -`ClassDecoratorContext`\<`T`\> - -### Returns - -`void` - -## Example - -```typescript -import { AwsLambda } from '@stone-js/aws-lambda-adapter'; - -@AwsLambda({ - alias: 'MyAWSLambda', -}) -class App { - // Your application logic here -} -``` diff --git a/docs/decorators/AwsLambda/interfaces/AwsLambdaOptions.md b/docs/decorators/AwsLambda/interfaces/AwsLambdaOptions.md deleted file mode 100644 index 86980d2..0000000 --- a/docs/decorators/AwsLambda/interfaces/AwsLambdaOptions.md +++ /dev/null @@ -1,16 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [decorators/AwsLambda](../README.md) / AwsLambdaOptions - -# Interface: AwsLambdaOptions - -Defined in: src/decorators/AwsLambda.ts:9 - -Configuration options for the `AwsLambda` decorator. -These options extend the default AWS Lambda adapter configuration. - -## Extends - -- `Partial`\<[`AwsLambdaAdapterConfig`](../../../options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterConfig.md)\> diff --git a/docs/decorators/AwsLambdaHttp/README.md b/docs/decorators/AwsLambdaHttp/README.md index 3445a8d..a716330 100644 --- a/docs/decorators/AwsLambdaHttp/README.md +++ b/docs/decorators/AwsLambdaHttp/README.md @@ -1,9 +1,3 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / decorators/AwsLambdaHttp - # decorators/AwsLambdaHttp ## Interfaces diff --git a/docs/decorators/AwsLambdaHttp/functions/AwsLambdaHttp.md b/docs/decorators/AwsLambdaHttp/functions/AwsLambdaHttp.md index a84e86f..27a4b69 100644 --- a/docs/decorators/AwsLambdaHttp/functions/AwsLambdaHttp.md +++ b/docs/decorators/AwsLambdaHttp/functions/AwsLambdaHttp.md @@ -1,14 +1,8 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [decorators/AwsLambdaHttp](../README.md) / AwsLambdaHttp - # Function: AwsLambdaHttp() -> **AwsLambdaHttp**\<`T`\>(`options`): (`target`, `context`) => `void` - -Defined in: src/decorators/AwsLambdaHttp.ts:36 +```ts +function AwsLambdaHttp(options): ClassDecorator; +``` A Stone.js decorator that integrates the AWS Lambda HTTP Adapter with a class. @@ -18,7 +12,9 @@ the class is automatically configured with the necessary blueprint for AWS Lambd ## Type Parameters -• **T** *extends* `ClassType` = `ClassType` +### T + +`T` *extends* `ClassType` = `ClassType` The type of the class being decorated. Defaults to `ClassType`. @@ -32,28 +28,14 @@ Optional configuration to customize the AWS Lambda HTTP Adapter. ## Returns -`Function` +`ClassDecorator` A class decorator that applies the AWS Lambda HTTP adapter configuration. -### Parameters - -#### target - -`T` - -#### context - -`ClassDecoratorContext`\<`T`\> - -### Returns - -`void` - ## Example ```typescript -import { AwsLambdaHttp } from '@stone-js/aws-lambda-adapter'; +import { AwsLambdaHttp } from '@stone-js/aws-lambda-http-adapter'; @AwsLambdaHttp({ alias: 'MyAwsLambdaHttpAdapter', diff --git a/docs/decorators/AwsLambdaHttp/interfaces/AwsLambdaHttpOptions.md b/docs/decorators/AwsLambdaHttp/interfaces/AwsLambdaHttpOptions.md index c55eebf..b56159d 100644 --- a/docs/decorators/AwsLambdaHttp/interfaces/AwsLambdaHttpOptions.md +++ b/docs/decorators/AwsLambdaHttp/interfaces/AwsLambdaHttpOptions.md @@ -1,16 +1,8 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [decorators/AwsLambdaHttp](../README.md) / AwsLambdaHttpOptions - # Interface: AwsLambdaHttpOptions -Defined in: src/decorators/AwsLambdaHttp.ts:9 - Configuration options for the `AwsLambdaHttp` decorator. These options extend the default AWS Lambda HTTP adapter configuration. ## Extends -- `Partial`\<[`AwsLambdaHttpAdapterConfig`](../../../options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterConfig.md)\> +- `Partial`\<[`AwsLambdaHttpAdapterAdapterConfig`](../../../options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterAdapterConfig.md)\> diff --git a/docs/errors/AwsLambdaAdapterError/README.md b/docs/errors/AwsLambdaAdapterError/README.md deleted file mode 100644 index 5bbed20..0000000 --- a/docs/errors/AwsLambdaAdapterError/README.md +++ /dev/null @@ -1,11 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / errors/AwsLambdaAdapterError - -# errors/AwsLambdaAdapterError - -## Classes - -- [AwsLambdaAdapterError](classes/AwsLambdaAdapterError.md) diff --git a/docs/errors/AwsLambdaAdapterError/classes/AwsLambdaAdapterError.md b/docs/errors/AwsLambdaAdapterError/classes/AwsLambdaAdapterError.md deleted file mode 100644 index f5e1369..0000000 --- a/docs/errors/AwsLambdaAdapterError/classes/AwsLambdaAdapterError.md +++ /dev/null @@ -1,41 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [errors/AwsLambdaAdapterError](../README.md) / AwsLambdaAdapterError - -# Class: AwsLambdaAdapterError - -Defined in: [src/errors/AwsLambdaAdapterError.ts:6](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/errors/AwsLambdaAdapterError.ts#L6) - -Custom error for AWS Lambda adapter operations. - -## Extends - -- `IntegrationError` - -## Constructors - -### new AwsLambdaAdapterError() - -> **new AwsLambdaAdapterError**(`message`, `options`?): [`AwsLambdaAdapterError`](AwsLambdaAdapterError.md) - -Defined in: [src/errors/AwsLambdaAdapterError.ts:7](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/errors/AwsLambdaAdapterError.ts#L7) - -#### Parameters - -##### message - -`string` - -##### options? - -`ErrorOptions` - -#### Returns - -[`AwsLambdaAdapterError`](AwsLambdaAdapterError.md) - -#### Overrides - -`IntegrationError.constructor` diff --git a/docs/errors/AwsLambdaHttpAdapterError/README.md b/docs/errors/AwsLambdaHttpAdapterError/README.md new file mode 100644 index 0000000..adb0995 --- /dev/null +++ b/docs/errors/AwsLambdaHttpAdapterError/README.md @@ -0,0 +1,5 @@ +# errors/AwsLambdaHttpAdapterError + +## Classes + +- [AwsLambdaHttpAdapterError](classes/AwsLambdaHttpAdapterError.md) diff --git a/docs/errors/AwsLambdaHttpAdapterError/classes/AwsLambdaHttpAdapterError.md b/docs/errors/AwsLambdaHttpAdapterError/classes/AwsLambdaHttpAdapterError.md new file mode 100644 index 0000000..56b1550 --- /dev/null +++ b/docs/errors/AwsLambdaHttpAdapterError/classes/AwsLambdaHttpAdapterError.md @@ -0,0 +1,35 @@ +# Class: AwsLambdaHttpAdapterError + +Custom error for AWS Lambda adapter operations. + +## Extends + +- `IntegrationError` + +## Constructors + +### Constructor + +```ts +new AwsLambdaHttpAdapterError(message, options?): AwsLambdaHttpAdapterError; +``` + +#### Parameters + +##### message + +`string` + +##### options? + +`ErrorOptions` + +#### Returns + +`AwsLambdaHttpAdapterError` + +#### Overrides + +```ts +IntegrationError.constructor +``` diff --git a/docs/middleware/BlueprintMiddleware/README.md b/docs/middleware/BlueprintMiddleware/README.md new file mode 100644 index 0000000..f385f2d --- /dev/null +++ b/docs/middleware/BlueprintMiddleware/README.md @@ -0,0 +1,9 @@ +# middleware/BlueprintMiddleware + +## Variables + +- [metaAdapterBlueprintMiddleware](variables/metaAdapterBlueprintMiddleware.md) + +## Functions + +- [SetAwsLambdaHttpResponseResolverMiddleware](functions/SetAwsLambdaHttpResponseResolverMiddleware.md) diff --git a/docs/middleware/BlueprintMiddleware/functions/SetAwsLambdaHttpResponseResolverMiddleware.md b/docs/middleware/BlueprintMiddleware/functions/SetAwsLambdaHttpResponseResolverMiddleware.md new file mode 100644 index 0000000..548bdbc --- /dev/null +++ b/docs/middleware/BlueprintMiddleware/functions/SetAwsLambdaHttpResponseResolverMiddleware.md @@ -0,0 +1,33 @@ +# Function: SetAwsLambdaHttpResponseResolverMiddleware() + +```ts +function SetAwsLambdaHttpResponseResolverMiddleware(context, next): Promise; +``` + +Middleware to dynamically set response resolver for adapter. + +## Parameters + +### context + +`BlueprintContext`\<`IBlueprint`, `ClassType`\> + +The configuration context containing modules and blueprint. + +### next + +`NextMiddleware`\<`BlueprintContext`\<`IBlueprint`, `ClassType`\>, `IBlueprint`\> + +The next pipeline function to continue processing. + +## Returns + +`Promise`\<`IBlueprint`\> + +The updated blueprint or a promise resolving to it. + +## Example + +```typescript +SetAwsLambdaHttpResponseResolverMiddleware(context, next) +``` diff --git a/docs/middleware/BlueprintMiddleware/variables/metaAdapterBlueprintMiddleware.md b/docs/middleware/BlueprintMiddleware/variables/metaAdapterBlueprintMiddleware.md new file mode 100644 index 0000000..913ef8c --- /dev/null +++ b/docs/middleware/BlueprintMiddleware/variables/metaAdapterBlueprintMiddleware.md @@ -0,0 +1,10 @@ +# Variable: metaAdapterBlueprintMiddleware + +```ts +const metaAdapterBlueprintMiddleware: MetaMiddleware, IBlueprint>[]; +``` + +Configuration for adapter processing middleware. + +This array defines a list of middleware pipes, each with a `pipe` function and a `priority`. +These pipes are executed in the order of their priority values, with lower values running first. diff --git a/docs/middleware/BodyEventMiddleware/README.md b/docs/middleware/BodyEventMiddleware/README.md index e0e9483..bc407ae 100644 --- a/docs/middleware/BodyEventMiddleware/README.md +++ b/docs/middleware/BodyEventMiddleware/README.md @@ -1,11 +1,9 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / middleware/BodyEventMiddleware - # middleware/BodyEventMiddleware ## Classes - [BodyEventMiddleware](classes/BodyEventMiddleware.md) + +## Variables + +- [MetaBodyEventMiddleware](variables/MetaBodyEventMiddleware.md) diff --git a/docs/middleware/BodyEventMiddleware/classes/BodyEventMiddleware.md b/docs/middleware/BodyEventMiddleware/classes/BodyEventMiddleware.md index 64653f1..e537b4c 100644 --- a/docs/middleware/BodyEventMiddleware/classes/BodyEventMiddleware.md +++ b/docs/middleware/BodyEventMiddleware/classes/BodyEventMiddleware.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [middleware/BodyEventMiddleware](../README.md) / BodyEventMiddleware - # Class: BodyEventMiddleware -Defined in: [src/middleware/BodyEventMiddleware.ts:26](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/BodyEventMiddleware.ts#L26) - Class representing a BodyEventMiddleware. This middleware handles platform-specific messages and transforms them into Stone.js IncomingEvent objects. @@ -18,11 +10,11 @@ Mr. Stone ## Constructors -### new BodyEventMiddleware() - -> **new BodyEventMiddleware**(`options`): [`BodyEventMiddleware`](BodyEventMiddleware.md) +### Constructor -Defined in: [src/middleware/BodyEventMiddleware.ts:37](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/BodyEventMiddleware.ts#L37) +```ts +new BodyEventMiddleware(options): BodyEventMiddleware; +``` Create a BodyEventMiddleware. @@ -38,15 +30,15 @@ Options for creating the BodyEventMiddleware. #### Returns -[`BodyEventMiddleware`](BodyEventMiddleware.md) +`BodyEventMiddleware` ## Methods ### handle() -> **handle**(`context`, `next`): `Promise`\<[`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> - -Defined in: [src/middleware/BodyEventMiddleware.ts:50](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/BodyEventMiddleware.ts#L50) +```ts +handle(context, next): Promise; +``` Handles the incoming event, processes it, and invokes the next middleware in the pipeline. @@ -60,7 +52,7 @@ The adapter context containing the raw event, execution context, and other data. ##### next -`NextPipe`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> +`NextMiddleware`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> The next middleware to be invoked in the pipeline. @@ -73,21 +65,3 @@ A promise that resolves to the destination type after processing. #### Throws If required components such as the rawEvent or IncomingEventBuilder are not provided. - -*** - -### toNodeMessage() - -> **toNodeMessage**(`rawEvent`): `IncomingMessage` - -Defined in: [src/middleware/BodyEventMiddleware.ts:62](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/BodyEventMiddleware.ts#L62) - -#### Parameters - -##### rawEvent - -[`AwsLambdaHttpEvent`](../../../declarations/interfaces/AwsLambdaHttpEvent.md) - -#### Returns - -`IncomingMessage` diff --git a/docs/middleware/BodyEventMiddleware/variables/MetaBodyEventMiddleware.md b/docs/middleware/BodyEventMiddleware/variables/MetaBodyEventMiddleware.md new file mode 100644 index 0000000..7d16b75 --- /dev/null +++ b/docs/middleware/BodyEventMiddleware/variables/MetaBodyEventMiddleware.md @@ -0,0 +1,21 @@ +# Variable: MetaBodyEventMiddleware + +```ts +const MetaBodyEventMiddleware: object; +``` + +Meta Middleware for processing the request body. + +## Type declaration + +### isClass + +```ts +isClass: boolean = true; +``` + +### module + +```ts +module: typeof BodyEventMiddleware = BodyEventMiddleware; +``` diff --git a/docs/middleware/FilesEventMiddleware/README.md b/docs/middleware/FilesEventMiddleware/README.md index 6208d7e..ec10bee 100644 --- a/docs/middleware/FilesEventMiddleware/README.md +++ b/docs/middleware/FilesEventMiddleware/README.md @@ -1,11 +1,9 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / middleware/FilesEventMiddleware - # middleware/FilesEventMiddleware ## Classes - [FilesEventMiddleware](classes/FilesEventMiddleware.md) + +## Variables + +- [MetaFilesEventMiddleware](variables/MetaFilesEventMiddleware.md) diff --git a/docs/middleware/FilesEventMiddleware/classes/FilesEventMiddleware.md b/docs/middleware/FilesEventMiddleware/classes/FilesEventMiddleware.md index 6703a50..dcc375d 100644 --- a/docs/middleware/FilesEventMiddleware/classes/FilesEventMiddleware.md +++ b/docs/middleware/FilesEventMiddleware/classes/FilesEventMiddleware.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [middleware/FilesEventMiddleware](../README.md) / FilesEventMiddleware - # Class: FilesEventMiddleware -Defined in: [src/middleware/FilesEventMiddleware.ts:13](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/FilesEventMiddleware.ts#L13) - Class representing a FilesEventMiddleware. ## Author @@ -16,11 +8,11 @@ Mr. Stone ## Constructors -### new FilesEventMiddleware() - -> **new FilesEventMiddleware**(`options`): [`FilesEventMiddleware`](FilesEventMiddleware.md) +### Constructor -Defined in: [src/middleware/FilesEventMiddleware.ts:24](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/FilesEventMiddleware.ts#L24) +```ts +new FilesEventMiddleware(options): FilesEventMiddleware; +``` Create a FilesEventMiddleware. @@ -36,15 +28,15 @@ Options for creating the FilesEventMiddleware. #### Returns -[`FilesEventMiddleware`](FilesEventMiddleware.md) +`FilesEventMiddleware` ## Methods ### handle() -> **handle**(`context`, `next`): `Promise`\<[`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> - -Defined in: [src/middleware/FilesEventMiddleware.ts:37](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/FilesEventMiddleware.ts#L37) +```ts +handle(context, next): Promise; +``` Handles the incoming event, processes it, and invokes the next middleware in the pipeline. @@ -58,7 +50,7 @@ The adapter context containing the raw event, execution context, and other data. ##### next -`NextPipe`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> +`NextMiddleware`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> The next middleware to be invoked in the pipeline. diff --git a/docs/middleware/FilesEventMiddleware/variables/MetaFilesEventMiddleware.md b/docs/middleware/FilesEventMiddleware/variables/MetaFilesEventMiddleware.md new file mode 100644 index 0000000..e665b4a --- /dev/null +++ b/docs/middleware/FilesEventMiddleware/variables/MetaFilesEventMiddleware.md @@ -0,0 +1,21 @@ +# Variable: MetaFilesEventMiddleware + +```ts +const MetaFilesEventMiddleware: object; +``` + +Meta Middleware for processing files uploads. + +## Type declaration + +### isClass + +```ts +isClass: boolean = true; +``` + +### module + +```ts +module: typeof FilesEventMiddleware = FilesEventMiddleware; +``` diff --git a/docs/middleware/IncomingEventMiddleware/README.md b/docs/middleware/IncomingEventMiddleware/README.md index 99ed8f5..2a8ecd7 100644 --- a/docs/middleware/IncomingEventMiddleware/README.md +++ b/docs/middleware/IncomingEventMiddleware/README.md @@ -1,11 +1,9 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / middleware/IncomingEventMiddleware - # middleware/IncomingEventMiddleware ## Classes - [IncomingEventMiddleware](classes/IncomingEventMiddleware.md) + +## Variables + +- [MetaIncomingEventMiddleware](variables/MetaIncomingEventMiddleware.md) diff --git a/docs/middleware/IncomingEventMiddleware/classes/IncomingEventMiddleware.md b/docs/middleware/IncomingEventMiddleware/classes/IncomingEventMiddleware.md index e3cab08..66d19cf 100644 --- a/docs/middleware/IncomingEventMiddleware/classes/IncomingEventMiddleware.md +++ b/docs/middleware/IncomingEventMiddleware/classes/IncomingEventMiddleware.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [middleware/IncomingEventMiddleware](../README.md) / IncomingEventMiddleware - # Class: IncomingEventMiddleware -Defined in: [src/middleware/IncomingEventMiddleware.ts:37](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/IncomingEventMiddleware.ts#L37) - Middleware for handling incoming events and transforming them into Stone.js events. This class processes incoming HTTP requests, extracting relevant data such as URL, IP addresses, @@ -15,11 +7,11 @@ headers, cookies, and more, and forwards them to the next middleware in the pipe ## Constructors -### new IncomingEventMiddleware() - -> **new IncomingEventMiddleware**(`options`): [`IncomingEventMiddleware`](IncomingEventMiddleware.md) +### Constructor -Defined in: [src/middleware/IncomingEventMiddleware.ts:48](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/IncomingEventMiddleware.ts#L48) +```ts +new IncomingEventMiddleware(options): IncomingEventMiddleware; +``` Create an IncomingEventMiddleware instance. @@ -35,15 +27,15 @@ Options containing the blueprint for resolving configuration and dependencies. #### Returns -[`IncomingEventMiddleware`](IncomingEventMiddleware.md) +`IncomingEventMiddleware` ## Methods ### handle() -> **handle**(`context`, `next`): `Promise`\<[`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> - -Defined in: [src/middleware/IncomingEventMiddleware.ts:60](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/IncomingEventMiddleware.ts#L60) +```ts +handle(context, next): Promise; +``` Handles the incoming event, processes it, and invokes the next middleware in the pipeline. @@ -57,7 +49,7 @@ The adapter context containing the raw event, execution context, and other data. ##### next -`NextPipe`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> +`NextMiddleware`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> The next middleware to be invoked in the pipeline. diff --git a/docs/middleware/IncomingEventMiddleware/variables/MetaIncomingEventMiddleware.md b/docs/middleware/IncomingEventMiddleware/variables/MetaIncomingEventMiddleware.md new file mode 100644 index 0000000..d1d24d1 --- /dev/null +++ b/docs/middleware/IncomingEventMiddleware/variables/MetaIncomingEventMiddleware.md @@ -0,0 +1,21 @@ +# Variable: MetaIncomingEventMiddleware + +```ts +const MetaIncomingEventMiddleware: object; +``` + +Meta Middleware for processing incoming events. + +## Type declaration + +### isClass + +```ts +isClass: boolean = true; +``` + +### module + +```ts +module: typeof IncomingEventMiddleware = IncomingEventMiddleware; +``` diff --git a/docs/middleware/ServerResponseMiddleware/README.md b/docs/middleware/ServerResponseMiddleware/README.md index fe0d59d..5e10c60 100644 --- a/docs/middleware/ServerResponseMiddleware/README.md +++ b/docs/middleware/ServerResponseMiddleware/README.md @@ -1,11 +1,9 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / middleware/ServerResponseMiddleware - # middleware/ServerResponseMiddleware ## Classes - [ServerResponseMiddleware](classes/ServerResponseMiddleware.md) + +## Variables + +- [MetaServerResponseMiddleware](variables/MetaServerResponseMiddleware.md) diff --git a/docs/middleware/ServerResponseMiddleware/classes/ServerResponseMiddleware.md b/docs/middleware/ServerResponseMiddleware/classes/ServerResponseMiddleware.md index 76b2d5a..350f77e 100644 --- a/docs/middleware/ServerResponseMiddleware/classes/ServerResponseMiddleware.md +++ b/docs/middleware/ServerResponseMiddleware/classes/ServerResponseMiddleware.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [middleware/ServerResponseMiddleware](../README.md) / ServerResponseMiddleware - # Class: ServerResponseMiddleware -Defined in: [src/middleware/ServerResponseMiddleware.ts:13](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/ServerResponseMiddleware.ts#L13) - Middleware for handling server responses and transforming them into the appropriate HTTP responses. This middleware processes outgoing responses and attaches the necessary headers, status codes, @@ -15,21 +7,23 @@ and body content to the HTTP response. ## Constructors -### new ServerResponseMiddleware() +### Constructor -> **new ServerResponseMiddleware**(): [`ServerResponseMiddleware`](ServerResponseMiddleware.md) +```ts +new ServerResponseMiddleware(): ServerResponseMiddleware; +``` #### Returns -[`ServerResponseMiddleware`](ServerResponseMiddleware.md) +`ServerResponseMiddleware` ## Methods ### handle() -> **handle**(`context`, `next`): `Promise`\<[`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> - -Defined in: [src/middleware/ServerResponseMiddleware.ts:22](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/middleware/ServerResponseMiddleware.ts#L22) +```ts +handle(context, next): Promise; +``` Handles the outgoing response, processes it, and invokes the next middleware in the pipeline. @@ -43,7 +37,7 @@ The adapter context containing the raw event, execution context, and other data. ##### next -`NextPipe`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> +`NextMiddleware`\<[`AwsLambdaHttpAdapterContext`](../../../declarations/interfaces/AwsLambdaHttpAdapterContext.md), [`AwsLambdaHttpAdapterResponseBuilder`](../../../declarations/type-aliases/AwsLambdaHttpAdapterResponseBuilder.md)\> The next middleware to be invoked in the pipeline. diff --git a/docs/middleware/ServerResponseMiddleware/variables/MetaServerResponseMiddleware.md b/docs/middleware/ServerResponseMiddleware/variables/MetaServerResponseMiddleware.md new file mode 100644 index 0000000..0150d77 --- /dev/null +++ b/docs/middleware/ServerResponseMiddleware/variables/MetaServerResponseMiddleware.md @@ -0,0 +1,21 @@ +# Variable: MetaServerResponseMiddleware + +```ts +const MetaServerResponseMiddleware: object; +``` + +Meta Middleware for processing server responses. + +## Type declaration + +### isClass + +```ts +isClass: boolean = true; +``` + +### module + +```ts +module: typeof ServerResponseMiddleware = ServerResponseMiddleware; +``` diff --git a/docs/modules.md b/docs/modules.md deleted file mode 100644 index 0ae1144..0000000 --- a/docs/modules.md +++ /dev/null @@ -1,26 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](README.md) - -*** - -# AWS Lambda Adapter Documentation v0.0.2 - -## Modules - -- [AWSLambdaAdapter](AWSLambdaAdapter/README.md) -- [AwsLambdaErrorHandler](AwsLambdaErrorHandler/README.md) -- [AWSLambdaHttpAdapter](AWSLambdaHttpAdapter/README.md) -- [AwsLambdaHttpErrorHandler](AwsLambdaHttpErrorHandler/README.md) -- [constants](constants/README.md) -- [declarations](declarations/README.md) -- [decorators/AwsLambda](decorators/AwsLambda/README.md) -- [decorators/AwsLambdaHttp](decorators/AwsLambdaHttp/README.md) -- [errors/AwsLambdaAdapterError](errors/AwsLambdaAdapterError/README.md) -- [middleware/BodyEventMiddleware](middleware/BodyEventMiddleware/README.md) -- [middleware/FilesEventMiddleware](middleware/FilesEventMiddleware/README.md) -- [middleware/IncomingEventMiddleware](middleware/IncomingEventMiddleware/README.md) -- [middleware/ServerResponseMiddleware](middleware/ServerResponseMiddleware/README.md) -- [options/AwsLambdaAdapterBlueprint](options/AwsLambdaAdapterBlueprint/README.md) -- [options/AwsLambdaHttpAdapterBlueprint](options/AwsLambdaHttpAdapterBlueprint/README.md) -- [RawHttpResponseWrapper](RawHttpResponseWrapper/README.md) -- [RawResponseWrapper](RawResponseWrapper/README.md) -- [resolvers](resolvers/README.md) diff --git a/docs/options/AwsLambdaAdapterBlueprint/README.md b/docs/options/AwsLambdaAdapterBlueprint/README.md deleted file mode 100644 index 6b00173..0000000 --- a/docs/options/AwsLambdaAdapterBlueprint/README.md +++ /dev/null @@ -1,16 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / options/AwsLambdaAdapterBlueprint - -# options/AwsLambdaAdapterBlueprint - -## Interfaces - -- [AwsLambdaAdapterBlueprint](interfaces/AwsLambdaAdapterBlueprint.md) -- [AwsLambdaAdapterConfig](interfaces/AwsLambdaAdapterConfig.md) - -## Variables - -- [awsLambdaAdapterBlueprint](variables/awsLambdaAdapterBlueprint.md) diff --git a/docs/options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterBlueprint.md b/docs/options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterBlueprint.md deleted file mode 100644 index cc010b8..0000000 --- a/docs/options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterBlueprint.md +++ /dev/null @@ -1,23 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [options/AwsLambdaAdapterBlueprint](../README.md) / AwsLambdaAdapterBlueprint - -# Interface: AwsLambdaAdapterBlueprint - -Defined in: [src/options/AwsLambdaAdapterBlueprint.ts:22](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/options/AwsLambdaAdapterBlueprint.ts#L22) - -Blueprint interface for the AWS Lambda Adapter. - -This interface extends `StoneBlueprint` and defines the structure of the -AWS Lambda adapter blueprint used in the Stone.js framework. It includes -a `stone` object with an array of `AwsLambdaAdapterConfig` items. - -## Extends - -- `StoneBlueprint` - -## Indexable - -\[`key`: `string`\]: `unknown` diff --git a/docs/options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterConfig.md b/docs/options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterConfig.md deleted file mode 100644 index 36192da..0000000 --- a/docs/options/AwsLambdaAdapterBlueprint/interfaces/AwsLambdaAdapterConfig.md +++ /dev/null @@ -1,19 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [options/AwsLambdaAdapterBlueprint](../README.md) / AwsLambdaAdapterConfig - -# Interface: AwsLambdaAdapterConfig - -Defined in: [src/options/AwsLambdaAdapterBlueprint.ts:13](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/options/AwsLambdaAdapterBlueprint.ts#L13) - -Configuration interface for the AWS Lambda Adapter. - -Extends the `AdapterConfig` interface from the Stone.js framework and provides -customizable options specific to the AWS Lambda platform. This includes -alias, resolver, middleware, hooks, and various adapter state flags. - -## Extends - -- `AdapterConfig` diff --git a/docs/options/AwsLambdaAdapterBlueprint/variables/awsLambdaAdapterBlueprint.md b/docs/options/AwsLambdaAdapterBlueprint/variables/awsLambdaAdapterBlueprint.md deleted file mode 100644 index 5ccff3a..0000000 --- a/docs/options/AwsLambdaAdapterBlueprint/variables/awsLambdaAdapterBlueprint.md +++ /dev/null @@ -1,19 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [options/AwsLambdaAdapterBlueprint](../README.md) / awsLambdaAdapterBlueprint - -# Variable: awsLambdaAdapterBlueprint - -> `const` **awsLambdaAdapterBlueprint**: [`AwsLambdaAdapterBlueprint`](../interfaces/AwsLambdaAdapterBlueprint.md) - -Defined in: [src/options/AwsLambdaAdapterBlueprint.ts:33](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/options/AwsLambdaAdapterBlueprint.ts#L33) - -Default blueprint configuration for the AWS Lambda Adapter. - -This blueprint defines the initial configuration for the AWS Lambda adapter -within the Stone.js framework. It includes: -- An alias for the AWS Lambda platform (`AWS_LAMBDA_PLATFORM`). -- A default resolver function (currently a placeholder). -- Middleware, hooks, and state flags (`current`, `default`, `preferred`). diff --git a/docs/options/AwsLambdaHttpAdapterBlueprint/README.md b/docs/options/AwsLambdaHttpAdapterBlueprint/README.md index ffabbdc..f11b98e 100644 --- a/docs/options/AwsLambdaHttpAdapterBlueprint/README.md +++ b/docs/options/AwsLambdaHttpAdapterBlueprint/README.md @@ -1,13 +1,8 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / options/AwsLambdaHttpAdapterBlueprint - # options/AwsLambdaHttpAdapterBlueprint ## Interfaces +- [AwsLambdaHttpAdapterAdapterConfig](interfaces/AwsLambdaHttpAdapterAdapterConfig.md) - [AwsLambdaHttpAdapterBlueprint](interfaces/AwsLambdaHttpAdapterBlueprint.md) - [AwsLambdaHttpAdapterConfig](interfaces/AwsLambdaHttpAdapterConfig.md) diff --git a/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterAdapterConfig.md b/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterAdapterConfig.md new file mode 100644 index 0000000..3bf35fa --- /dev/null +++ b/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterAdapterConfig.md @@ -0,0 +1,11 @@ +# Interface: AwsLambdaHttpAdapterAdapterConfig + +Configuration interface for the AWS Lambda Http Adapter. + +Extends the `AdapterConfig` interface from the Stone.js framework and provides +customizable options specific to the AWS Lambda platform. This includes +alias, resolver, middleware, hooks, and various adapter state flags. + +## Extends + +- `AdapterConfig`\<[`AwsLambdaHttpEvent`](../../../declarations/interfaces/AwsLambdaHttpEvent.md), [`RawHttpResponse`](../../../declarations/type-aliases/RawHttpResponse.md), [`AwsLambdaContext`](../../../declarations/type-aliases/AwsLambdaContext.md), `IncomingHttpEvent`, `IncomingHttpEventOptions`, `OutgoingHttpResponse`\> diff --git a/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterBlueprint.md b/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterBlueprint.md index 19926b5..4e568c0 100644 --- a/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterBlueprint.md +++ b/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterBlueprint.md @@ -1,13 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [options/AwsLambdaHttpAdapterBlueprint](../README.md) / AwsLambdaHttpAdapterBlueprint - # Interface: AwsLambdaHttpAdapterBlueprint -Defined in: [src/options/AwsLambdaHttpAdapterBlueprint.ts:25](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/options/AwsLambdaHttpAdapterBlueprint.ts#L25) - Blueprint interface for the AWS Lambda Http Adapter. This interface extends `StoneBlueprint` and defines the structure of the @@ -20,4 +12,25 @@ a `stone` object with an array of `AwsLambdaHttpAdapterConfig` items. ## Indexable -\[`key`: `string`\]: `unknown` +```ts +[key: string]: unknown +``` + +Allow adding any additional custom properties. +The value of the custom properties can be of any type, depending on user requirements. + +## Properties + +### stone + +```ts +stone: AwsLambdaHttpAdapterConfig; +``` + +Application-level settings, including environment, middleware, logging, and service registration. + +#### Overrides + +```ts +StoneBlueprint.stone +``` diff --git a/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterConfig.md b/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterConfig.md index 3282d04..6650b6b 100644 --- a/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterConfig.md +++ b/docs/options/AwsLambdaHttpAdapterBlueprint/interfaces/AwsLambdaHttpAdapterConfig.md @@ -1,19 +1,21 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) +# Interface: AwsLambdaHttpAdapterConfig -*** +Represents the AwsLambdaHttpAdapterConfig configuration options for the application. -[AWS Lambda Adapter Documentation](../../../modules.md) / [options/AwsLambdaHttpAdapterBlueprint](../README.md) / AwsLambdaHttpAdapterConfig +## Extends -# Interface: AwsLambdaHttpAdapterConfig +- `Partial`\<`AppConfig`\<`IncomingHttpEvent`, `OutgoingHttpResponse`\>\> -Defined in: [src/options/AwsLambdaHttpAdapterBlueprint.ts:16](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/options/AwsLambdaHttpAdapterBlueprint.ts#L16) +## Indexable -Configuration interface for the AWS Lambda Http Adapter. +```ts +[key: string]: unknown +``` -Extends the `AdapterConfig` interface from the Stone.js framework and provides -customizable options specific to the AWS Lambda platform. This includes -alias, resolver, middleware, hooks, and various adapter state flags. +## Properties -## Extends +### http -- `AdapterConfig` +```ts +http: Partial; +``` diff --git a/docs/options/AwsLambdaHttpAdapterBlueprint/variables/awsLambdaHttpAdapterBlueprint.md b/docs/options/AwsLambdaHttpAdapterBlueprint/variables/awsLambdaHttpAdapterBlueprint.md index 1b723a5..0e04d49 100644 --- a/docs/options/AwsLambdaHttpAdapterBlueprint/variables/awsLambdaHttpAdapterBlueprint.md +++ b/docs/options/AwsLambdaHttpAdapterBlueprint/variables/awsLambdaHttpAdapterBlueprint.md @@ -1,14 +1,8 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../../modules.md) / [options/AwsLambdaHttpAdapterBlueprint](../README.md) / awsLambdaHttpAdapterBlueprint - # Variable: awsLambdaHttpAdapterBlueprint -> `const` **awsLambdaHttpAdapterBlueprint**: [`AwsLambdaHttpAdapterBlueprint`](../interfaces/AwsLambdaHttpAdapterBlueprint.md) - -Defined in: [src/options/AwsLambdaHttpAdapterBlueprint.ts:36](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/options/AwsLambdaHttpAdapterBlueprint.ts#L36) +```ts +const awsLambdaHttpAdapterBlueprint: AwsLambdaHttpAdapterBlueprint; +``` Default blueprint configuration for the AWS Lambda Http Adapter. diff --git a/docs/resolvers/README.md b/docs/resolvers/README.md index 30685fa..1879722 100644 --- a/docs/resolvers/README.md +++ b/docs/resolvers/README.md @@ -1,12 +1,5 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../README.md) - -*** - -[AWS Lambda Adapter Documentation](../modules.md) / resolvers - # resolvers -## Functions +## Variables -- [awsLambdaAdapterResolver](functions/awsLambdaAdapterResolver.md) -- [awsLambdaHttpAdapterResolver](functions/awsLambdaHttpAdapterResolver.md) +- [awsLambdaHttpAdapterResolver](variables/awsLambdaHttpAdapterResolver.md) diff --git a/docs/resolvers/functions/awsLambdaAdapterResolver.md b/docs/resolvers/functions/awsLambdaAdapterResolver.md deleted file mode 100644 index c7c460e..0000000 --- a/docs/resolvers/functions/awsLambdaAdapterResolver.md +++ /dev/null @@ -1,29 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [resolvers](../README.md) / awsLambdaAdapterResolver - -# Function: awsLambdaAdapterResolver() - -> **awsLambdaAdapterResolver**(`blueprint`): `IAdapter` - -Defined in: [src/resolvers.ts:13](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/resolvers.ts#L13) - -Adapter resolver for generic AWS Lambda adapter. - -Creates and configures an `AWSLambdaAdapter` for handling generic events in AWS Lambda. - -## Parameters - -### blueprint - -`IBlueprint`\<`any`\> - -The `IBlueprint` providing configuration and dependencies. - -## Returns - -`IAdapter` - -An `AWSLambdaAdapter` instance. diff --git a/docs/resolvers/functions/awsLambdaHttpAdapterResolver.md b/docs/resolvers/functions/awsLambdaHttpAdapterResolver.md deleted file mode 100644 index 3865dac..0000000 --- a/docs/resolvers/functions/awsLambdaHttpAdapterResolver.md +++ /dev/null @@ -1,29 +0,0 @@ -[**AWS Lambda Adapter Documentation v0.0.2**](../../README.md) - -*** - -[AWS Lambda Adapter Documentation](../../modules.md) / [resolvers](../README.md) / awsLambdaHttpAdapterResolver - -# Function: awsLambdaHttpAdapterResolver() - -> **awsLambdaHttpAdapterResolver**(`blueprint`): `IAdapter` - -Defined in: [src/resolvers.ts:34](https://github.com/stonemjs/aws-lambda-adapter/blob/9de4b38bb7a5afd4d5599dae1399969698a2422d/src/resolvers.ts#L34) - -Adapter resolver for AWS Lambda HTTP adapter. - -Creates and configures an `AWSLambdaHttpAdapter` for handling HTTP events in AWS Lambda. - -## Parameters - -### blueprint - -`IBlueprint`\<`any`\> - -The `IBlueprint` providing configuration and dependencies. - -## Returns - -`IAdapter` - -An `AWSLambdaHttpAdapter` instance. diff --git a/docs/resolvers/variables/awsLambdaHttpAdapterResolver.md b/docs/resolvers/variables/awsLambdaHttpAdapterResolver.md new file mode 100644 index 0000000..e2013e2 --- /dev/null +++ b/docs/resolvers/variables/awsLambdaHttpAdapterResolver.md @@ -0,0 +1,17 @@ +# Variable: awsLambdaHttpAdapterResolver + +```ts +const awsLambdaHttpAdapterResolver: AdapterResolver; +``` + +Adapter resolver for AWS Lambda HTTP adapter. + +Creates and configures an `AWSLambdaHttpAdapter` for handling HTTP events in AWS Lambda. + +## Param + +The `IBlueprint` providing configuration and dependencies. + +## Returns + +An `AWSLambdaHttpAdapter` instance. diff --git a/package-lock.json b/package-lock.json index 6c439e1..3739a56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,21 +1,21 @@ { - "name": "@stone-js/aws-lambda-adapter", + "name": "@stone-js/aws-lambda-http-adapter", "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@stone-js/aws-lambda-adapter", + "name": "@stone-js/aws-lambda-http-adapter", "version": "0.0.2", - "license": "Apache-2.0", + "license": "MIT", "dependencies": { "accepts": "^1.3.8", "bytes": "^3.1.2", "content-type": "^1.0.5", - "mime": "^4.0.4", + "mime": "^4.0.7", "proxy-addr": "^2.0.7", "statuses": "^2.0.1", - "type-is": "^1.6.18" + "type-is": "^2.0.1" }, "devDependencies": { "@commitlint/cli": "^19.6.1", @@ -25,35 +25,34 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-typescript": "^12.1.1", "@types/accepts": "^1.3.7", - "@types/bytes": "^3.1.4", + "@types/bytes": "^3.1.5", "@types/content-type": "^1.1.8", - "@types/mime": "^3.0.4", - "@types/node": "^22.9.0", + "@types/node": "^24.0.1", "@types/proxy-addr": "^2.0.3", "@types/statuses": "^2.0.5", - "@types/type-is": "^1.6.6", - "@vitest/coverage-v8": "^2.1.4", - "husky": "^9.1.6", + "@types/type-is": "^1.6.7", + "@vitest/coverage-v8": "^3.2.3", + "husky": "^9.1.7", "rimraf": "^6.0.1", - "rollup": "^4.1.5", - "rollup-plugin-delete": "^2.1.0", - "rollup-plugin-dts": "^6.1.1", + "rollup": "^4.43.0", + "rollup-plugin-delete": "^3.0.1", + "rollup-plugin-dts": "^6.2.1", "rollup-plugin-node-externals": "^8.0.0", "ts-standard": "^12.0.2", "tslib": "^2.8.1", - "typedoc": "^0.27.6", - "typedoc-plugin-markdown": "^4.4.1", + "typedoc": "^0.28.5", + "typedoc-plugin-markdown": "^4.6.4", "typescript": "^5.6.3", - "vitest": "^2.1.4" + "vitest": "^3.2.3" }, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@stone-js/core": "^0.0.36", - "@stone-js/http-core": "^0.0.34", - "@stone-js/pipeline": "^0.0.46", - "@stone-js/service-container": "^0.0.44" + "@stone-js/core": "^0.1.1", + "@stone-js/env": "^0.1.1", + "@stone-js/filesystem": "^0.1.1", + "@stone-js/http-core": "^0.1.2" } }, "node_modules/@ampproject/remapping": { @@ -61,6 +60,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -70,44 +70,55 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.3.tgz", - "integrity": "sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==", + "version": "7.27.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", + "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.26.3" + "@babel/types": "^7.27.3" }, "bin": { "parser": "bin/babel-parser.js" @@ -117,36 +128,42 @@ } }, "node_modules/@babel/types": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.3.tgz", - "integrity": "sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", + "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } }, "node_modules/@commitlint/cli": { - "version": "19.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.6.1.tgz", - "integrity": "sha512-8hcyA6ZoHwWXC76BoC8qVOSr8xHy00LZhZpauiD0iO0VYbVhMnED0da85lTfIULxl7Lj4c6vZgF0Wu/ed1+jlQ==", - "dev": true, - "dependencies": { - "@commitlint/format": "^19.5.0", - "@commitlint/lint": "^19.6.0", - "@commitlint/load": "^19.6.1", - "@commitlint/read": "^19.5.0", - "@commitlint/types": "^19.5.0", - "tinyexec": "^0.3.0", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.1.tgz", + "integrity": "sha512-LXUdNIkspyxrlV6VDHWBmCZRtkEVRpBKxi2Gtw3J54cGWhLCTouVD/Q6ZSaSvd2YaDObWK8mDjrz3TIKtaQMAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@commitlint/format": "^19.8.1", + "@commitlint/lint": "^19.8.1", + "@commitlint/load": "^19.8.1", + "@commitlint/read": "^19.8.1", + "@commitlint/types": "^19.8.1", + "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, "bin": { @@ -157,12 +174,13 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.6.0.tgz", - "integrity": "sha512-DJT40iMnTYtBtUfw9ApbsLZFke1zKh6llITVJ+x9mtpHD08gsNXaIRqHTmwTZL3dNX5+WoyK7pCN/5zswvkBCQ==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.1.tgz", + "integrity": "sha512-/AZHJL6F6B/G959CsMAzrPKKZjeEiAVifRyEwXxcT6qtqbPwGw+iQxmNS+Bu+i09OCtdNRW6pNpBvgPrtMr9EQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.1", "conventional-changelog-conventionalcommits": "^7.0.2" }, "engines": { @@ -170,12 +188,13 @@ } }, "node_modules/@commitlint/config-validator": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.5.0.tgz", - "integrity": "sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.1.tgz", + "integrity": "sha512-0jvJ4u+eqGPBIzzSdqKNX1rvdbSU1lPNYlfQQRIFnBgLy26BtC0cFnr7c/AyuzExMxWsMOte6MkTi9I3SQ3iGQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.1", "ajv": "^8.11.0" }, "engines": { @@ -183,12 +202,13 @@ } }, "node_modules/@commitlint/ensure": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.5.0.tgz", - "integrity": "sha512-Kv0pYZeMrdg48bHFEU5KKcccRfKmISSm9MvgIgkpI6m+ohFTB55qZlBW6eYqh/XDfRuIO0x4zSmvBjmOwWTwkg==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.1.tgz", + "integrity": "sha512-mXDnlJdvDzSObafjYrOSvZBwkD01cqB4gbnnFuVyNpGUM5ijwU/r/6uqUmBXAAOKRfyEjpkGVZxaDsCVnHAgyw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.1", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", @@ -200,21 +220,23 @@ } }, "node_modules/@commitlint/execute-rule": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.5.0.tgz", - "integrity": "sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.1.tgz", + "integrity": "sha512-YfJyIqIKWI64Mgvn/sE7FXvVMQER/Cd+s3hZke6cI1xgNT/f6ZAz5heND0QtffH+KbcqAwXDEE1/5niYayYaQA==", "dev": true, + "license": "MIT", "engines": { "node": ">=v18" } }, "node_modules/@commitlint/format": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.5.0.tgz", - "integrity": "sha512-yNy088miE52stCI3dhG/vvxFo9e4jFkU1Mj3xECfzp/bIS/JUay4491huAlVcffOoMK1cd296q0W92NlER6r3A==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.1.tgz", + "integrity": "sha512-kSJj34Rp10ItP+Eh9oCItiuN/HwGQMXBnIRk69jdOwEW9llW9FlyqcWYbHPSGofmjsqeoxa38UaEA5tsbm2JWw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.1", "chalk": "^5.3.0" }, "engines": { @@ -222,12 +244,13 @@ } }, "node_modules/@commitlint/is-ignored": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.6.0.tgz", - "integrity": "sha512-Ov6iBgxJQFR9koOupDPHvcHU9keFupDgtB3lObdEZDroiG4jj1rzky60fbQozFKVYRTUdrBGICHG0YVmRuAJmw==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.1.tgz", + "integrity": "sha512-AceOhEhekBUQ5dzrVhDDsbMaY5LqtN8s1mqSnT2Kz1ERvVZkNihrs3Sfk1Je/rxRNbXYFzKZSHaPsEJJDJV8dg==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.1", "semver": "^7.6.0" }, "engines": { @@ -235,30 +258,32 @@ } }, "node_modules/@commitlint/lint": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.6.0.tgz", - "integrity": "sha512-LRo7zDkXtcIrpco9RnfhOKeg8PAnE3oDDoalnrVU/EVaKHYBWYL1DlRR7+3AWn0JiBqD8yKOfetVxJGdEtZ0tg==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.1.tgz", + "integrity": "sha512-52PFbsl+1EvMuokZXLRlOsdcLHf10isTPlWwoY1FQIidTsTvjKXVXYb7AvtpWkDzRO2ZsqIgPK7bI98x8LRUEw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/is-ignored": "^19.6.0", - "@commitlint/parse": "^19.5.0", - "@commitlint/rules": "^19.6.0", - "@commitlint/types": "^19.5.0" + "@commitlint/is-ignored": "^19.8.1", + "@commitlint/parse": "^19.8.1", + "@commitlint/rules": "^19.8.1", + "@commitlint/types": "^19.8.1" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/load": { - "version": "19.6.1", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.6.1.tgz", - "integrity": "sha512-kE4mRKWWNju2QpsCWt428XBvUH55OET2N4QKQ0bF85qS/XbsRGG1MiTByDNlEVpEPceMkDr46LNH95DtRwcsfA==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.1.tgz", + "integrity": "sha512-9V99EKG3u7z+FEoe4ikgq7YGRCSukAcvmKQuTtUyiYPnOd9a2/H9Ak1J9nJA1HChRQp9OA/sIKPugGS+FK/k1A==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^19.5.0", - "@commitlint/execute-rule": "^19.5.0", - "@commitlint/resolve-extends": "^19.5.0", - "@commitlint/types": "^19.5.0", + "@commitlint/config-validator": "^19.8.1", + "@commitlint/execute-rule": "^19.8.1", + "@commitlint/resolve-extends": "^19.8.1", + "@commitlint/types": "^19.8.1", "chalk": "^5.3.0", "cosmiconfig": "^9.0.0", "cosmiconfig-typescript-loader": "^6.1.0", @@ -271,21 +296,23 @@ } }, "node_modules/@commitlint/message": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.5.0.tgz", - "integrity": "sha512-R7AM4YnbxN1Joj1tMfCyBryOC5aNJBdxadTZkuqtWi3Xj0kMdutq16XQwuoGbIzL2Pk62TALV1fZDCv36+JhTQ==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.1.tgz", + "integrity": "sha512-+PMLQvjRXiU+Ae0Wc+p99EoGEutzSXFVwQfa3jRNUZLNW5odZAyseb92OSBTKCu+9gGZiJASt76Cj3dLTtcTdg==", "dev": true, + "license": "MIT", "engines": { "node": ">=v18" } }, "node_modules/@commitlint/parse": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.5.0.tgz", - "integrity": "sha512-cZ/IxfAlfWYhAQV0TwcbdR1Oc0/r0Ik1GEessDJ3Lbuma/MRO8FRQX76eurcXtmhJC//rj52ZSZuXUg0oIX0Fw==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.1.tgz", + "integrity": "sha512-mmAHYcMBmAgJDKWdkjIGq50X4yB0pSGpxyOODwYmoexxxiUCy5JJT99t1+PEMK7KtsCtzuWYIAXYAiKR+k+/Jw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/types": "^19.5.0", + "@commitlint/types": "^19.8.1", "conventional-changelog-angular": "^7.0.0", "conventional-commits-parser": "^5.0.0" }, @@ -294,29 +321,31 @@ } }, "node_modules/@commitlint/read": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.5.0.tgz", - "integrity": "sha512-TjS3HLPsLsxFPQj6jou8/CZFAmOP2y+6V4PGYt3ihbQKTY1Jnv0QG28WRKl/d1ha6zLODPZqsxLEov52dhR9BQ==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.1.tgz", + "integrity": "sha512-03Jbjb1MqluaVXKHKRuGhcKWtSgh3Jizqy2lJCRbRrnWpcM06MYm8th59Xcns8EqBYvo0Xqb+2DoZFlga97uXQ==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/top-level": "^19.5.0", - "@commitlint/types": "^19.5.0", + "@commitlint/top-level": "^19.8.1", + "@commitlint/types": "^19.8.1", "git-raw-commits": "^4.0.0", "minimist": "^1.2.8", - "tinyexec": "^0.3.0" + "tinyexec": "^1.0.0" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/resolve-extends": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.5.0.tgz", - "integrity": "sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.1.tgz", + "integrity": "sha512-GM0mAhFk49I+T/5UCYns5ayGStkTt4XFFrjjf0L4S26xoMTSkdCf9ZRO8en1kuopC4isDFuEm7ZOm/WRVeElVg==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/config-validator": "^19.5.0", - "@commitlint/types": "^19.5.0", + "@commitlint/config-validator": "^19.8.1", + "@commitlint/types": "^19.8.1", "global-directory": "^4.0.1", "import-meta-resolve": "^4.0.0", "lodash.mergewith": "^4.6.2", @@ -327,34 +356,37 @@ } }, "node_modules/@commitlint/rules": { - "version": "19.6.0", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.6.0.tgz", - "integrity": "sha512-1f2reW7lbrI0X0ozZMesS/WZxgPa4/wi56vFuJENBmed6mWq5KsheN/nxqnl/C23ioxpPO/PL6tXpiiFy5Bhjw==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.1.tgz", + "integrity": "sha512-Hnlhd9DyvGiGwjfjfToMi1dsnw1EXKGJNLTcsuGORHz6SS9swRgkBsou33MQ2n51/boIDrbsg4tIBbRpEWK2kw==", "dev": true, + "license": "MIT", "dependencies": { - "@commitlint/ensure": "^19.5.0", - "@commitlint/message": "^19.5.0", - "@commitlint/to-lines": "^19.5.0", - "@commitlint/types": "^19.5.0" + "@commitlint/ensure": "^19.8.1", + "@commitlint/message": "^19.8.1", + "@commitlint/to-lines": "^19.8.1", + "@commitlint/types": "^19.8.1" }, "engines": { "node": ">=v18" } }, "node_modules/@commitlint/to-lines": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.5.0.tgz", - "integrity": "sha512-R772oj3NHPkodOSRZ9bBVNq224DOxQtNef5Pl8l2M8ZnkkzQfeSTr4uxawV2Sd3ui05dUVzvLNnzenDBO1KBeQ==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.1.tgz", + "integrity": "sha512-98Mm5inzbWTKuZQr2aW4SReY6WUukdWXuZhrqf1QdKPZBCCsXuG87c+iP0bwtD6DBnmVVQjgp4whoHRVixyPBg==", "dev": true, + "license": "MIT", "engines": { "node": ">=v18" } }, "node_modules/@commitlint/top-level": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.5.0.tgz", - "integrity": "sha512-IP1YLmGAk0yWrImPRRc578I3dDUI5A2UBJx9FbSOjxe9sTlzFiwVJ+zeMLgAtHMtGZsC8LUnzmW1qRemkFU4ng==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.1.tgz", + "integrity": "sha512-Ph8IN1IOHPSDhURCSXBz44+CIu+60duFwRsg6HqaISFHQHbmBtxVw4ZrFNIYUzEP7WwrNPxa2/5qJ//NK1FGcw==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^7.0.0" }, @@ -363,10 +395,11 @@ } }, "node_modules/@commitlint/types": { - "version": "19.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.5.0.tgz", - "integrity": "sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==", + "version": "19.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.1.tgz", + "integrity": "sha512-/yCrWGCoA1SVKOks25EGadP9Pnj0oAIHGpl2wH2M2Y46dPM2ueb8wyCVOD7O3WCTkaJ0IkKvzhl1JY7+uCT2Dw==", "dev": true, + "license": "MIT", "dependencies": { "@types/conventional-commits-parser": "^5.0.0", "chalk": "^5.3.0" @@ -376,378 +409,436 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", + "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", + "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", + "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", + "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", + "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", + "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", + "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", + "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", + "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", + "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", + "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", + "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", + "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", + "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", + "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", + "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", + "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", + "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", + "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", + "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", + "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", + "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", + "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", + "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^3.4.3" }, @@ -766,6 +857,7 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -775,6 +867,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -798,6 +891,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -809,30 +903,45 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@eslint/js": { "version": "8.57.1", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@gerrit0/mini-shiki": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-1.26.1.tgz", - "integrity": "sha512-gHFUvv9f1fU2Piou/5Y7Sx5moYxcERbC7CXc6rkDLQTUBg5Dgg9L4u29/nHqfoQ3Y9R0h0BcOhd14uOEZIBP7Q==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.6.0.tgz", + "integrity": "sha512-KaeJvPNofTEZR9EzVNp/GQzbQqkGfjiu6k3CXKvhVTX+8OoAKSX/k7qxLKOX3B0yh2XqVAc93rsOu48CGt2Qug==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^1.26.1", - "@shikijs/types": "^1.26.1", - "@shikijs/vscode-textmate": "^10.0.1" + "@shikijs/engine-oniguruma": "^3.6.0", + "@shikijs/langs": "^3.6.0", + "@shikijs/themes": "^3.6.0", + "@shikijs/types": "^3.6.0", + "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@humanwhocodes/config-array": { @@ -841,6 +950,7 @@ "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", @@ -855,6 +965,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -868,13 +979,38 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "deprecated": "Use @eslint/object-schema instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -892,6 +1028,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -904,6 +1041,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -915,13 +1053,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -939,6 +1079,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -954,6 +1095,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", @@ -971,6 +1113,7 @@ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -980,6 +1123,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -994,6 +1138,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1003,6 +1148,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -1011,13 +1157,15 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1028,6 +1176,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -1041,6 +1190,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -1050,6 +1200,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -1063,16 +1214,18 @@ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" } }, "node_modules/@rollup/plugin-commonjs": { - "version": "28.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz", - "integrity": "sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==", + "version": "28.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.5.tgz", + "integrity": "sha512-lytLp2JgAMwqJY6ve3OSROXr2XuEYHjnsQN3hmnxC+w11dI91LuUw4Yc1kk2FqKXeMG8psoFejFgK+znoij0cg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", @@ -1099,6 +1252,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-multi-entry/-/plugin-multi-entry-6.0.1.tgz", "integrity": "sha512-AXm6toPyTSfbYZWghQGbom1Uh7dHXlrGa+HoiYNhQtDUE3Q7LqoUYdVQx9E1579QWS1uOiu+cZRSE4okO7ySgw==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/plugin-virtual": "^3.0.0", "matched": "^5.0.1" @@ -1120,6 +1274,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "@types/resolve": "1.20.2", @@ -1144,6 +1299,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-12.1.2.tgz", "integrity": "sha512-cdtSp154H5sv637uMr1a8OTWB0L1SWDSm1rDGiyfcGcvQ6cuTs4MDk2BVEBGysUWago4OJN4EQZqOTl/QY3Jgg==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.1.0", "resolve": "^1.22.1" @@ -1170,6 +1326,7 @@ "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" }, @@ -1187,6 +1344,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", @@ -1205,247 +1363,280 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.30.0.tgz", - "integrity": "sha512-qFcFto9figFLz2g25DxJ1WWL9+c91fTxnGuwhToCl8BaqDsDYMl/kOnBXAyAqkkzAWimYMSWNPWEjt+ADAHuoQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz", + "integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.30.0.tgz", - "integrity": "sha512-vqrQdusvVl7dthqNjWCL043qelBK+gv9v3ZiqdxgaJvmZyIAAXMjeGVSqZynKq69T7062T5VrVTuikKSAAVP6A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz", + "integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.30.0.tgz", - "integrity": "sha512-617pd92LhdA9+wpixnzsyhVft3szYiN16aNUMzVkf2N+yAk8UXY226Bfp36LvxYTUt7MO/ycqGFjQgJ0wlMaWQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz", + "integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.30.0.tgz", - "integrity": "sha512-Y3b4oDoaEhCypg8ajPqigKDcpi5ZZovemQl9Edpem0uNv6UUjXv7iySBpGIUTSs2ovWOzYpfw9EbFJXF/fJHWw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz", + "integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.30.0.tgz", - "integrity": "sha512-3REQJ4f90sFIBfa0BUokiCdrV/E4uIjhkWe1bMgCkhFXbf4D8YN6C4zwJL881GM818qVYE9BO3dGwjKhpo2ABA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz", + "integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.30.0.tgz", - "integrity": "sha512-ZtY3Y8icbe3Cc+uQicsXG5L+CRGUfLZjW6j2gn5ikpltt3Whqjfo5mkyZ86UiuHF9Q3ZsaQeW7YswlHnN+lAcg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz", + "integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.30.0.tgz", - "integrity": "sha512-bsPGGzfiHXMhQGuFGpmo2PyTwcrh2otL6ycSZAFTESviUoBOuxF7iBbAL5IJXc/69peXl5rAtbewBFeASZ9O0g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz", + "integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.30.0.tgz", - "integrity": "sha512-kvyIECEhs2DrrdfQf++maCWJIQ974EI4txlz1nNSBaCdtf7i5Xf1AQCEJWOC5rEBisdaMFFnOWNLYt7KpFqy5A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz", + "integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.30.0.tgz", - "integrity": "sha512-CFE7zDNrokaotXu+shwIrmWrFxllg79vciH4E/zeK7NitVuWEaXRzS0mFfFvyhZfn8WfVOG/1E9u8/DFEgK7WQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz", + "integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.30.0.tgz", - "integrity": "sha512-MctNTBlvMcIBP0t8lV/NXiUwFg9oK5F79CxLU+a3xgrdJjfBLVIEHSAjQ9+ipofN2GKaMLnFFXLltg1HEEPaGQ==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz", + "integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.30.0.tgz", - "integrity": "sha512-fBpoYwLEPivL3q368+gwn4qnYnr7GVwM6NnMo8rJ4wb0p/Y5lg88vQRRP077gf+tc25akuqd+1Sxbn9meODhwA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz", + "integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.30.0.tgz", - "integrity": "sha512-1hiHPV6dUaqIMXrIjN+vgJqtfkLpqHS1Xsg0oUfUVD98xGp1wX89PIXgDF2DWra1nxAd8dfE0Dk59MyeKaBVAw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz", + "integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.30.0.tgz", - "integrity": "sha512-U0xcC80SMpEbvvLw92emHrNjlS3OXjAM0aVzlWfar6PR0ODWCTQtKeeB+tlAPGfZQXicv1SpWwRz9Hyzq3Jx3g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz", + "integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz", + "integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.30.0.tgz", - "integrity": "sha512-VU/P/IODrNPasgZDLIFJmMiLGez+BN11DQWfTVlViJVabyF3JaeaJkP6teI8760f18BMGCQOW9gOmuzFaI1pUw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz", + "integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.30.0.tgz", - "integrity": "sha512-laQVRvdbKmjXuFA3ZiZj7+U24FcmoPlXEi2OyLfbpY2MW1oxLt9Au8q9eHd0x6Pw/Kw4oe9gwVXWwIf2PVqblg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz", + "integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.30.0.tgz", - "integrity": "sha512-3wzKzduS7jzxqcOvy/ocU/gMR3/QrHEFLge5CD7Si9fyHuoXcidyYZ6jyx8OPYmCcGm3uKTUl+9jUSAY74Ln5A==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz", + "integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.30.0.tgz", - "integrity": "sha512-jROwnI1+wPyuv696rAFHp5+6RFhXGGwgmgSfzE8e4xfit6oLRg7GyMArVUoM3ChS045OwWr9aTnU+2c1UdBMyw==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz", + "integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.30.0.tgz", - "integrity": "sha512-duzweyup5WELhcXx5H1jokpr13i3BV9b48FMiikYAwk/MT1LrMYYk2TzenBd0jj4ivQIt58JWSxc19y4SvLP4g==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz", + "integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.30.0.tgz", - "integrity": "sha512-DYvxS0M07PvgvavMIybCOBYheyrqlui6ZQBHJs6GqduVzHSZ06TPPvlfvnYstjODHQ8UUXFwt5YE+h0jFI8kwg==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz", + "integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -1455,38 +1646,76 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.26.1.tgz", - "integrity": "sha512-F5XuxN1HljLuvfXv7d+mlTkV7XukC1cawdtOo+7pKgPD83CAB1Sf8uHqP3PK0u7njFH0ZhoXE1r+0JzEgAQ+kg==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.6.0.tgz", + "integrity": "sha512-nmOhIZ9yT3Grd+2plmW/d8+vZ2pcQmo/UnVwXMUXAKTXdi+LK0S08Ancrz5tQQPkxvjBalpMW2aKvwXfelauvA==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/types": "1.26.1", - "@shikijs/vscode-textmate": "^10.0.1" + "@shikijs/types": "3.6.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.6.0.tgz", + "integrity": "sha512-IdZkQJaLBu1LCYCwkr30hNuSDfllOT8RWYVZK1tD2J03DkiagYKRxj/pDSl8Didml3xxuyzUjgtioInwEQM/TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.6.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.6.0.tgz", + "integrity": "sha512-Fq2j4nWr1DF4drvmhqKq8x5vVQ27VncF8XZMBuHuQMZvUSS3NBgpqfwz/FoGe36+W6PvniZ1yDlg2d4kmYDU6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.6.0" } }, "node_modules/@shikijs/types": { - "version": "1.26.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.26.1.tgz", - "integrity": "sha512-d4B00TKKAMaHuFYgRf3L0gwtvqpW4hVdVwKcZYbBfAAQXspgkbWqnFfuFl3MDH6gLbsubOcr+prcnsqah3ny7Q==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.6.0.tgz", + "integrity": "sha512-cLWFiToxYu0aAzJqhXTQsFiJRTFDAGl93IrMSBNaGSzs7ixkLfdG6pH11HipuWFGW5vyx4X47W8HDQ7eSrmBUg==", "dev": true, + "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", - "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", - "dev": true + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/@stone-js/config": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/@stone-js/config/-/config-0.0.35.tgz", - "integrity": "sha512-GeLczvBUHsZ5pt4CMThWFvsQSh5b9Y4QixvkDW0g0u59kEz7gg4XO9WZtq9dzM3+8vpZ7wfjqhHP2MqJ9C8MQQ==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stone-js/config/-/config-0.1.1.tgz", + "integrity": "sha512-HFHhcMsv2oDcL1qcFX9ylhLotC4OwF8EeEfkpkAzLxy9njefo5A5FLD1KPAHKovOOp0vJ28GiHcK3BT21Oy/vQ==", + "license": "MIT", "peer": true, "dependencies": { "deepmerge": "^4.3.1", @@ -1497,14 +1726,15 @@ } }, "node_modules/@stone-js/core": { - "version": "0.0.36", - "resolved": "https://registry.npmjs.org/@stone-js/core/-/core-0.0.36.tgz", - "integrity": "sha512-iQvI+3PYoyX9b1HJRPNupAnxr499QJs5/F3fa3+jthIfaQldXeVn0JP8uf68nbBOTVijWRnSUZBmTdxBNDgx5A==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stone-js/core/-/core-0.1.1.tgz", + "integrity": "sha512-6TJg29Ul3gyIoC9D939LcDkhMYlIxICE3sSbKyPGQzOhNJ+BMGKwLppFcLJ7aYIwirBSY7Z2w28Hr8xGUpGr5Q==", + "license": "MIT", "peer": true, "dependencies": { - "@stone-js/config": "^0.0.35", - "@stone-js/pipeline": "^0.0.46", - "@stone-js/service-container": "^0.0.44", + "@stone-js/config": "^0.1.0", + "@stone-js/pipeline": "^0.1.0", + "@stone-js/service-container": "^0.1.0", "deepmerge": "^4.3.1", "lodash-es": "^4.17.21" }, @@ -1512,10 +1742,41 @@ "node": ">=18.0.0" } }, + "node_modules/@stone-js/env": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stone-js/env/-/env-0.1.1.tgz", + "integrity": "sha512-NkaaIsybKMNDG7C2jBDBQWz6Hc+3vB2tGuuoAZFtOaCl31PLsisvMtDWVUXCOJF+nChadbDdjW+GE91ndijeRw==", + "license": "MIT", + "peer": true, + "dependencies": { + "valibot": "^1.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@stone-js/filesystem": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stone-js/filesystem/-/filesystem-0.1.1.tgz", + "integrity": "sha512-m+G0LVyCx19aVmOWmcFk4orOTatv1egRdDcrs4AYvpp+CFouxi/DaZAEp4kEOXGCWv6KPJFqEDNKrB9oJVST9Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "filesize": "^10.1.6", + "mime": "^4.0.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@stone-js/core": "^0.1.1" + } + }, "node_modules/@stone-js/http-core": { - "version": "0.0.34", - "resolved": "https://registry.npmjs.org/@stone-js/http-core/-/http-core-0.0.34.tgz", - "integrity": "sha512-g1UvK3PrSklmIui07TgQqIIskqIl2ItmgB2qClmuc5Txsm7aLIIf+1elTPRw1qb/paaYgEvZXldgbY3XJsmUJA==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@stone-js/http-core/-/http-core-0.1.3.tgz", + "integrity": "sha512-XfkOJ0K4ibmfTNiJpvJjtE8IbbDF/baO/6brPpwReh3V+4WTV/peXXaLLQqWtXBdlfQqvDaTTtoQPuNEZ/CUNg==", + "license": "MIT", "peer": true, "dependencies": { "accepts": "^1.3.8", @@ -1530,36 +1791,37 @@ "fresh": "^0.5.2", "ip-range-check": "^0.2.0", "lodash-es": "^4.17.21", - "mime": "^4.0.4", - "on-finished": "^2.4.1", + "mime": "^4.0.6", "range-parser": "^1.2.1", "safe-buffer": "^5.2.1", "send": "^1.1.0", "statuses": "^2.0.1", - "type-is": "^1.6.18", + "type-is": "^2.0.1", "vary": "^1.1.2" }, "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "@stone-js/core": "^0.0.36", - "@stone-js/pipeline": "^0.0.46" + "@stone-js/core": "^0.1.1", + "@stone-js/filesystem": "^0.1.1" } }, "node_modules/@stone-js/pipeline": { - "version": "0.0.46", - "resolved": "https://registry.npmjs.org/@stone-js/pipeline/-/pipeline-0.0.46.tgz", - "integrity": "sha512-pfkRu5YPmSbbEXoQHxziYpTvbAAjlwn/+ji9K+JuXHEZS2MS8og0hNtSonq+YDzwU+I2g1lsjtJ2N5u+nl5qlA==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stone-js/pipeline/-/pipeline-0.1.1.tgz", + "integrity": "sha512-kJhxdzZURkmg+PZSOnoK9WTTbiZzz+4NuIHPnIdnCVhDwpAwLFnRPwPvL4iC3KhVAlQD6xmeo/OZwUE2rcTsBA==", + "license": "MIT", "peer": true, "engines": { "node": ">=18.0.0" } }, "node_modules/@stone-js/service-container": { - "version": "0.0.44", - "resolved": "https://registry.npmjs.org/@stone-js/service-container/-/service-container-0.0.44.tgz", - "integrity": "sha512-/QY1yvNU/YjbQU464DYTBapPsu41qwjgjZIuy6FKnHOjobN4F+s6ybnSLnDtym+nDxPVD57PffChzvZvdCu1dA==", + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@stone-js/service-container/-/service-container-0.1.1.tgz", + "integrity": "sha512-HEwmvgGv6jrbXpNvYPvqVNVMxKpg95eWQbMOEedXFj0IDywsRwc1++AzezMheJifnAEZ3jKiX21btI7bc81+ew==", + "license": "MIT", "peer": true, "engines": { "node": ">=18.0.0" @@ -1570,6 +1832,7 @@ "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.7.tgz", "integrity": "sha512-Pay9fq2lM2wXPWbteBsRAGiWH2hig4ZE2asK+mm7kUzlxRTfL961rj89I6zV/E3PcIkDqyuBEcMxFT7rccugeQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1578,44 +1841,56 @@ "version": "3.1.5", "resolved": "https://registry.npmjs.org/@types/bytes/-/bytes-3.1.5.tgz", "integrity": "sha512-VgZkrJckypj85YxEsEavcMmmSOIzkUHqWmM4CCyia5dc54YwsXzJ5uT4fYxBQNEXx+oF1krlhgCbvfubXqZYsQ==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } }, "node_modules/@types/content-type": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@types/content-type/-/content-type-1.1.8.tgz", - "integrity": "sha512-1tBhmVUeso3+ahfyaKluXe38p+94lovUZdoVfQ3OnJo9uJC42JT7CBoN3k9HYhAae+GwiBYmHu+N9FZhOG+2Pg==", - "dev": true + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@types/content-type/-/content-type-1.1.9.tgz", + "integrity": "sha512-Hq9IMnfekuOCsEmYl4QX2HBrT+XsfXiupfrLLY8Dcf3Puf4BkBOxSbWYTITSOQAhJoYPBez+b4MJRpIYL65z8A==", + "dev": true, + "license": "MIT" }, "node_modules/@types/conventional-commits-parser": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } + "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -1624,33 +1899,24 @@ "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz", - "integrity": "sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==", - "dev": true - }, - "node_modules/@types/minimatch": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", - "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "22.10.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", - "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "version": "24.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.1.tgz", + "integrity": "sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~7.8.0" } }, "node_modules/@types/proxy-addr": { @@ -1658,6 +1924,7 @@ "resolved": "https://registry.npmjs.org/@types/proxy-addr/-/proxy-addr-2.0.3.tgz", "integrity": "sha512-TgAHHO4tNG3HgLTUhB+hM4iwW6JUNeQHCLnF1DjaDA9c69PN+IasoFu2MYDhubFc+ZIw5c5t9DMtjvrD6R3Egg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1666,25 +1933,29 @@ "version": "1.20.2", "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/statuses": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", - "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", - "dev": true + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "dev": true, + "license": "MIT" }, "node_modules/@types/type-is": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.6.tgz", - "integrity": "sha512-fs1KHv/f9OvmTMsu4sBNaUu32oyda9Y9uK25naJG8gayxNrfqGIjPQsbLIYyfe7xFkppnPlJB+BuTldOaX9bXw==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@types/type-is/-/type-is-1.6.7.tgz", + "integrity": "sha512-gEsh7n8824nusZ2Sidh6POxNsIdTSvIAl5gXbeFj+TUaD1CO2r4i7MQYNMfEQkChU42s2bVWAda6x6BzIhtFbQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } @@ -1693,13 +1964,15 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -1729,11 +2002,22 @@ } } }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/@typescript-eslint/parser": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -1761,6 +2045,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -1778,6 +2063,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -1805,6 +2091,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -1818,6 +2105,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -1845,6 +2133,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -1860,11 +2149,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -1891,6 +2201,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -1904,36 +2215,39 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", - "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", - "dev": true + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "dev": true, + "license": "ISC" }, "node_modules/@vitest/coverage-v8": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-2.1.8.tgz", - "integrity": "sha512-2Y7BPlKH18mAZYAW1tYByudlCYrQyl5RGvnnDYJKW5tCiO5qg3KSAy3XAxcxKz900a0ZXxWtKrMuZLe3lKBpJw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.3.tgz", + "integrity": "sha512-D1QKzngg8PcDoCE8FHSZhREDuEy+zcKmMiMafYse41RZpBE5EDJyKOTdqK3RQfsV2S2nyKor5KCs8PyPRFqKPg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^0.2.3", - "debug": "^4.3.7", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^5.0.6", "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.12", + "magic-string": "^0.30.17", "magicast": "^0.3.5", - "std-env": "^3.8.0", + "std-env": "^3.9.0", "test-exclude": "^7.0.1", - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "2.1.8", - "vitest": "2.1.8" + "@vitest/browser": "3.2.3", + "vitest": "3.2.3" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -1942,36 +2256,39 @@ } }, "node_modules/@vitest/expect": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.8.tgz", - "integrity": "sha512-8ytZ/fFHq2g4PJVAtDX57mayemKgDR6X3Oa2Foro+EygiOJHUXhCqBAAKQYYajZpFoIfvBCF1j6R6IYRSIUFuw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.3.tgz", + "integrity": "sha512-W2RH2TPWVHA1o7UmaFKISPvdicFJH+mjykctJFoAkUw+SPTJTGjUNdKscFBrqM7IPnCVu6zihtKYa7TkZS1dkQ==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.8", - "@vitest/utils": "2.1.8", - "chai": "^5.1.2", - "tinyrainbow": "^1.2.0" + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.3", + "@vitest/utils": "3.2.3", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/mocker": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-2.1.8.tgz", - "integrity": "sha512-7guJ/47I6uqfttp33mgo6ga5Gr1VnL58rcqYKyShoRK9ebu8T5Rs6HN3s1NABiBeVTdWNrwUMcHH54uXZBN4zA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.3.tgz", + "integrity": "sha512-cP6fIun+Zx8he4rbWvi+Oya6goKQDZK+Yq4hhlggwQBbrlOQ4qtZ+G4nxB6ZnzI9lyIb+JnvyiJnPC2AGbKSPA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "2.1.8", + "@vitest/spy": "3.2.3", "estree-walker": "^3.0.3", - "magic-string": "^0.30.12" + "magic-string": "^0.30.17" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -1987,70 +2304,77 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } }, "node_modules/@vitest/pretty-format": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-2.1.8.tgz", - "integrity": "sha512-9HiSZ9zpqNLKlbIDRWOnAWqgcA7xu+8YxXSekhr0Ykab7PAYFkhkwoqVArPOtJhPmYeE2YHgKZlj3CP36z2AJQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.3.tgz", + "integrity": "sha512-yFglXGkr9hW/yEXngO+IKMhP0jxyFw2/qys/CK4fFUZnSltD+MU7dVYGrH8rvPcK/O6feXQA+EU33gjaBBbAng==", "dev": true, + "license": "MIT", "dependencies": { - "tinyrainbow": "^1.2.0" + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-2.1.8.tgz", - "integrity": "sha512-17ub8vQstRnRlIU5k50bG+QOMLHRhYPAna5tw8tYbj+jzjcspnwnwtPtiOlkuKC4+ixDPTuLZiqiWWQ2PSXHVg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.3.tgz", + "integrity": "sha512-83HWYisT3IpMaU9LN+VN+/nLHVBCSIUKJzGxC5RWUOsK1h3USg7ojL+UXQR3b4o4UBIWCYdD2fxuzM7PQQ1u8w==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/utils": "2.1.8", - "pathe": "^1.1.2" + "@vitest/utils": "3.2.3", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-2.1.8.tgz", - "integrity": "sha512-20T7xRFbmnkfcmgVEz+z3AU/3b0cEzZOt/zmnvZEctg64/QZbSDJEVm9fLnnlSi74KibmRsO9/Qabi+t0vCRPg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.3.tgz", + "integrity": "sha512-9gIVWx2+tysDqUmmM1L0hwadyumqssOL1r8KJipwLx5JVYyxvVRfxvMq7DaWbZZsCqZnu/dZedaZQh4iYTtneA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", - "magic-string": "^0.30.12", - "pathe": "^1.1.2" + "@vitest/pretty-format": "3.2.3", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-2.1.8.tgz", - "integrity": "sha512-5swjf2q95gXeYPevtW0BLk6H8+bPlMb4Vw/9Em4hFxDcaOxS+e0LOX4yqNxoHzMR2akEB2xfpnWUzkZokmgWDg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.3.tgz", + "integrity": "sha512-JHu9Wl+7bf6FEejTCREy+DmgWe+rQKbK+y32C/k5f4TBIAlijhJbRBIRIOCEpVevgRsCQR2iHRUH2/qKVM/plw==", "dev": true, + "license": "MIT", "dependencies": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-2.1.8.tgz", - "integrity": "sha512-dwSoui6djdwbfFmIgbIjX2ZhIoG7Ex/+xpxyiEgIGzjliY8xGkcpITKTlp6B4MgtGkF2ilvm97cPM96XZaAgcA==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.3.tgz", + "integrity": "sha512-4zFBCU5Pf+4Z6v+rwnZ1HU1yzOKKvDkMXZrymE2PBlbjKJRlrOxbvpfPSvJTGRIwGoahaOGvp+kbCoxifhzJ1Q==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "2.1.8", - "loupe": "^3.1.2", - "tinyrainbow": "^1.2.0" + "@vitest/pretty-format": "3.2.3", + "loupe": "^3.1.3", + "tinyrainbow": "^2.0.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2060,6 +2384,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -2069,10 +2394,11 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -2085,28 +2411,17 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ajv": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -2123,6 +2438,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2132,6 +2448,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -2146,13 +2463,15 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" @@ -2168,20 +2487,24 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -2195,6 +2518,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2204,6 +2528,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2220,17 +2545,19 @@ } }, "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -2244,6 +2571,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -2262,6 +2590,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -2280,6 +2609,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -2296,6 +2626,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.8", @@ -2317,15 +2648,49 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -2340,13 +2705,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2357,6 +2724,7 @@ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -2369,6 +2737,7 @@ "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.0.0" } @@ -2389,6 +2758,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -2398,6 +2768,7 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2407,6 +2778,7 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -2421,10 +2793,11 @@ } }, "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" @@ -2434,13 +2807,14 @@ } }, "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -2454,15 +2828,17 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", @@ -2479,6 +2855,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -2491,24 +2868,17 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 16" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -2523,6 +2893,7 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -2534,19 +2905,22 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/commondir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compare-func": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, + "license": "MIT", "dependencies": { "array-ify": "^1.0.0", "dot-prop": "^5.1.0" @@ -2556,12 +2930,14 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", "peer": true, "dependencies": { "safe-buffer": "5.2.1" @@ -2574,6 +2950,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -2583,6 +2960,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, @@ -2595,6 +2973,7 @@ "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", "dev": true, + "license": "ISC", "dependencies": { "compare-func": "^2.0.0" }, @@ -2607,6 +2986,7 @@ "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, + "license": "MIT", "dependencies": { "is-text-path": "^2.0.0", "JSONStream": "^1.3.5", @@ -2624,6 +3004,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", "peer": true, "engines": { "node": ">=18" @@ -2633,6 +3014,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.6.0" @@ -2643,6 +3025,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -2669,6 +3052,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", "dev": true, + "license": "MIT", "dependencies": { "jiti": "^2.4.1" }, @@ -2686,6 +3070,7 @@ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -2700,6 +3085,7 @@ "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2712,6 +3098,7 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2729,6 +3116,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -2746,6 +3134,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -2759,9 +3148,10 @@ } }, "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2779,6 +3169,7 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2787,12 +3178,14 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/deepmerge": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2802,6 +3195,7 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -2819,6 +3213,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -2832,64 +3227,42 @@ } }, "node_modules/del": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/del/-/del-5.1.0.tgz", - "integrity": "sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-8.0.0.tgz", + "integrity": "sha512-R6ep6JJ+eOBZsBr9esiNN1gxFbZE4Q2cULkUSFumGYecAiS6qodDvcPx/sFuWHMNul7DWmrtoEOpYSm7o6tbSA==", "dev": true, + "license": "MIT", "dependencies": { - "globby": "^10.0.1", - "graceful-fs": "^4.2.2", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.1", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0" + "globby": "^14.0.2", + "is-glob": "^4.0.3", + "is-path-cwd": "^3.0.0", + "is-path-inside": "^4.0.0", + "p-map": "^7.0.2", + "slash": "^5.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/del/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.8" } }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "peer": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "node_modules/dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -2897,11 +3270,22 @@ "node": ">=8" } }, + "node_modules/dir-glob/node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -2914,6 +3298,7 @@ "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, + "license": "MIT", "dependencies": { "is-obj": "^2.0.0" }, @@ -2926,6 +3311,7 @@ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", @@ -2939,24 +3325,28 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT", "peer": true }, "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.8" @@ -2967,6 +3357,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -2979,6 +3370,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -2988,32 +3380,34 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -3025,21 +3419,24 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", + "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", + "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", + "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -3048,7 +3445,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "which-typed-array": "^1.1.19" }, "engines": { "node": ">= 0.4" @@ -3062,6 +3459,7 @@ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3071,6 +3469,7 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -3080,6 +3479,7 @@ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -3103,16 +3503,18 @@ } }, "node_modules/es-module-lexer": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", - "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "dev": true + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -3125,6 +3527,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -3136,12 +3539,16 @@ } }, "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/es-to-primitive": { @@ -3149,6 +3556,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", @@ -3162,41 +3570,44 @@ } }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/escalade": { @@ -3204,6 +3615,7 @@ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -3212,6 +3624,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT", "peer": true }, "node_modules/escape-string-regexp": { @@ -3219,6 +3632,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3232,6 +3646,7 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -3301,6 +3716,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "peerDependencies": { "eslint": "^8.0.1", "eslint-plugin-import": "^2.25.2", @@ -3327,6 +3743,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "peerDependencies": { "eslint": "^8.8.0", "eslint-plugin-react": "^7.28.0" @@ -3338,6 +3755,7 @@ "integrity": "sha512-iaaWifImn37Z1OXbNW1es7KI+S7D408F9ys0bpaQf2temeBWlvb0Nc5qHkOgYaRb5QxTZT32GGeN1gtswASOXA==", "deprecated": "Please use eslint-config-love, instead.", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/parser": "^5.0.0", "eslint-config-standard": "17.0.0" @@ -3356,6 +3774,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -3367,6 +3786,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -3376,6 +3796,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -3393,6 +3814,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -3402,6 +3824,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", "dev": true, + "license": "MIT", "dependencies": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" @@ -3421,6 +3844,7 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -3436,6 +3860,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } @@ -3445,6 +3870,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -3478,6 +3904,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -3487,6 +3914,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -3499,6 +3927,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -3508,6 +3937,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", "dev": true, + "license": "MIT", "dependencies": { "builtins": "^5.0.1", "eslint-plugin-es": "^4.1.0", @@ -3528,11 +3958,22 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-plugin-n/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/eslint-plugin-promise": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", "dev": true, + "license": "ISC", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3544,10 +3985,11 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.37.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", - "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", + "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", @@ -3559,7 +4001,7 @@ "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.8", + "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", @@ -3580,6 +4022,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -3592,6 +4035,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -3609,6 +4053,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -3618,6 +4063,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3631,6 +4077,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3640,6 +4087,7 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^2.0.0" }, @@ -3658,6 +4106,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } @@ -3667,6 +4116,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -3679,6 +4129,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -3695,6 +4146,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -3711,6 +4163,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -3727,6 +4180,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -3743,6 +4197,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -3750,17 +4205,39 @@ "node": ">=10.13.0" } }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/eslint/node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -3776,6 +4253,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -3791,6 +4269,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -3806,6 +4285,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -3815,6 +4295,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -3827,6 +4308,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -3844,6 +4326,7 @@ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -3856,6 +4339,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -3868,6 +4352,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3876,13 +4361,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -3891,16 +4378,18 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.6" } }, "node_modules/expect-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", - "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.0.0" } @@ -3909,13 +4398,15 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -3931,18 +4422,20 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, "funding": [ { @@ -3953,22 +4446,25 @@ "type": "opencollective", "url": "https://opencollective.com/fastify" } - ] + ], + "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/fdir": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", - "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "dev": true, + "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -3983,6 +4479,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -3994,6 +4491,7 @@ "version": "10.1.6", "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">= 10.4.0" @@ -4004,6 +4502,7 @@ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -4016,6 +4515,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.2.0", "path-exists": "^5.0.0", @@ -4033,6 +4533,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -4048,6 +4549,7 @@ "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -4059,27 +4561,36 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -4093,6 +4604,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -4101,6 +4613,7 @@ "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.6" @@ -4110,7 +4623,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", @@ -4118,6 +4632,7 @@ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -4131,6 +4646,7 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4140,6 +4656,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -4160,6 +4677,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -4169,22 +4687,24 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.1", + "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "get-proto": "^1.0.0", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", @@ -4202,6 +4722,7 @@ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" @@ -4215,6 +4736,7 @@ "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4227,6 +4749,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -4244,6 +4767,7 @@ "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", "dev": true, + "license": "MIT", "dependencies": { "dargs": "^8.0.0", "meow": "^12.0.1", @@ -4262,6 +4786,7 @@ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4282,6 +4807,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -4294,6 +4820,7 @@ "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", "dev": true, + "license": "MIT", "dependencies": { "ini": "4.1.1" }, @@ -4309,6 +4836,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -4324,6 +4852,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -4336,22 +4865,37 @@ } }, "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", "dev": true, + "license": "MIT", "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/gopd": { @@ -4359,6 +4903,7 @@ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4370,19 +4915,22 @@ "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4395,6 +4943,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4404,6 +4953,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -4416,6 +4966,7 @@ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.0" }, @@ -4431,6 +4982,7 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4443,6 +4995,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -4458,6 +5011,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -4469,12 +5023,14 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", "peer": true, "dependencies": { "depd": "2.0.0", @@ -4487,11 +5043,22 @@ "node": ">= 0.8" } }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/husky": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, + "license": "MIT", "bin": { "husky": "bin.js" }, @@ -4503,19 +5070,21 @@ } }, "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -4532,6 +5101,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -4541,6 +5111,7 @@ "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -4551,25 +5122,18 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4578,13 +5142,15 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", "dev": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -4594,6 +5160,7 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.2", @@ -4607,6 +5174,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/ip-range-check/-/ip-range-check-0.2.0.tgz", "integrity": "sha512-oaM3l/3gHbLlt/tCWLvt0mj1qUaI+STuRFnUvARGCujK9vvU61+2JsDpmkMzR4VsJhuFXWWgeKKVnwwoFfzCqw==", + "license": "MIT", "peer": true, "dependencies": { "ipaddr.js": "^1.0.1" @@ -4616,6 +5184,7 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", "engines": { "node": ">= 0.10" } @@ -4625,6 +5194,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -4641,14 +5211,17 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", - "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, + "license": "MIT", "dependencies": { + "async-function": "^1.0.0", "call-bound": "^1.0.3", "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", @@ -4666,6 +5239,7 @@ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { "has-bigints": "^1.0.2" }, @@ -4677,12 +5251,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", - "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", + "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" }, "engines": { @@ -4697,6 +5272,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4709,6 +5285,7 @@ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.2" }, @@ -4724,6 +5301,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", @@ -4741,6 +5319,7 @@ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -4757,6 +5336,7 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -4766,6 +5346,7 @@ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -4781,6 +5362,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -4790,6 +5372,7 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", @@ -4808,6 +5391,7 @@ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -4820,6 +5404,27 @@ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4827,17 +5432,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -4847,6 +5447,7 @@ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -4863,26 +5464,35 @@ "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-3.0.0.tgz", + "integrity": "sha512-kyiNFFLU0Ampr6SDZitD/DwUo4Zs1nSdnygUBqsu3LooL00Qvb5j+UnvApUn/TTj1J3OuE6BTdQ5rudKmU2ZaA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-reference": { @@ -4890,6 +5500,7 @@ "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } @@ -4899,6 +5510,7 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -4917,6 +5529,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4929,6 +5542,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3" }, @@ -4944,6 +5558,7 @@ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" @@ -4960,6 +5575,7 @@ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "has-symbols": "^1.1.0", @@ -4977,6 +5593,7 @@ "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", "dev": true, + "license": "MIT", "dependencies": { "text-extensions": "^2.0.0" }, @@ -4989,6 +5606,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.16" }, @@ -5004,6 +5622,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5012,12 +5631,13 @@ } }, "node_modules/is-weakref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", - "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, + "license": "MIT", "dependencies": { - "call-bound": "^1.0.2" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5031,6 +5651,7 @@ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "get-intrinsic": "^1.2.6" @@ -5046,19 +5667,22 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } @@ -5068,6 +5692,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -5082,6 +5707,7 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@jridgewell/trace-mapping": "^0.3.23", "debug": "^4.1.1", @@ -5096,6 +5722,7 @@ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -5109,6 +5736,7 @@ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", @@ -5122,10 +5750,11 @@ } }, "node_modules/jackspeak": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.2.tgz", - "integrity": "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -5141,21 +5770,24 @@ "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", "dev": true, + "license": "MIT", "bin": { "jiti": "lib/jiti-cli.mjs" } }, "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -5167,37 +5799,43 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -5212,13 +5850,15 @@ "dev": true, "engines": [ "node >= 0.2.0" - ] + ], + "license": "MIT" }, "node_modules/JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, + "license": "(MIT OR Apache-2.0)", "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -5235,6 +5875,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -5250,6 +5891,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -5259,6 +5901,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -5271,13 +5914,15 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, + "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } @@ -5287,6 +5932,7 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-7.0.1.tgz", "integrity": "sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -5299,6 +5945,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -5313,67 +5960,78 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT", "peer": true }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.kebabcase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.mergewith": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.snakecase": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.startcase": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.upperfirst": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -5381,17 +6039,26 @@ "loose-envify": "cli.js" } }, + "node_modules/loose-envify/node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", - "dev": true + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", "dev": true, + "license": "ISC", "engines": { "node": "20 || >=22" } @@ -5400,13 +6067,15 @@ "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -5416,6 +6085,7 @@ "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", @@ -5427,6 +6097,7 @@ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -5442,6 +6113,7 @@ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -5459,6 +6131,7 @@ "resolved": "https://registry.npmjs.org/matched/-/matched-5.0.1.tgz", "integrity": "sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw==", "dev": true, + "license": "MIT", "dependencies": { "glob": "^7.1.6", "picomatch": "^2.2.1" @@ -5475,6 +6148,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -5487,6 +6161,7 @@ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5495,14 +6170,16 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/meow": { @@ -5510,6 +6187,7 @@ "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, + "license": "MIT", "engines": { "node": ">=16.10" }, @@ -5522,6 +6200,7 @@ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -5531,6 +6210,7 @@ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -5544,6 +6224,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -5552,12 +6233,13 @@ } }, "node_modules/mime": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.6.tgz", - "integrity": "sha512-4rGt7rvQHBbaSOF9POGkk1ocRP16Md1x36Xma8sz8h8/vfCUI2OtEIeCqe4Ofes853x4xDoPiFLIT47J5fI/7A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.7.tgz", + "integrity": "sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==", "funding": [ "https://github.com/sponsors/broofa" ], + "license": "MIT", "bin": { "mime": "bin/cli.js" }, @@ -5569,6 +6251,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5577,6 +6260,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -5589,6 +6273,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -5601,6 +6286,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -5610,6 +6296,7 @@ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -5617,12 +6304,13 @@ "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -5630,6 +6318,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -5641,18 +6330,21 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -5662,15 +6354,17 @@ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -5683,6 +6377,7 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -5692,6 +6387,7 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -5708,14 +6404,16 @@ } }, "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -5726,6 +6424,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5744,6 +6443,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5758,6 +6458,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -5775,6 +6476,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", "peer": true, "dependencies": { "ee-first": "1.1.1" @@ -5788,6 +6490,7 @@ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dev": true, + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -5797,6 +6500,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -5814,6 +6518,7 @@ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", @@ -5831,6 +6536,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -5846,6 +6552,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -5857,15 +6564,16 @@ } }, "node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-try": { @@ -5873,6 +6581,7 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5881,13 +6590,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "dev": true, + "license": "BlueOak-1.0.0" }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -5900,6 +6611,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -5918,6 +6630,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -5927,6 +6640,7 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5936,6 +6650,7 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5944,13 +6659,15 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -5963,25 +6680,31 @@ } }, "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.16" } @@ -5990,13 +6713,15 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6009,6 +6734,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6018,6 +6744,7 @@ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-4.0.0.tgz", "integrity": "sha512-7dmgi4UY4qk+4mj5Cd8v/GExPo0K+SlY+hulOSdfZ/T6jVH6//y7NtzZo5WrfhDBxuQ0jCa7fLZmNaNh7EWL/w==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^6.0.0", "load-json-file": "^7.0.0" @@ -6034,6 +6761,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -6046,18 +6774,19 @@ } }, "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.5", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.5.tgz", + "integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==", "dev": true, "funding": [ { @@ -6073,8 +6802,9 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -6087,6 +6817,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -6096,6 +6827,7 @@ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -6106,6 +6838,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -6119,6 +6852,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6128,6 +6862,7 @@ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6150,12 +6885,14 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.6" @@ -6165,13 +6902,15 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -6194,6 +6933,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", @@ -6214,6 +6954,7 @@ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6226,6 +6967,7 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6235,6 +6977,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6244,6 +6987,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.16.0", "path-parse": "^1.0.7", @@ -6264,15 +7008,17 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -6283,6 +7029,7 @@ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", "dev": true, + "license": "ISC", "dependencies": { "glob": "^11.0.0", "package-json-from-dist": "^1.0.0" @@ -6297,24 +7044,16 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/rimraf/node_modules/glob": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", - "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.3.tgz", + "integrity": "sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==", "dev": true, + "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^4.0.1", - "minimatch": "^10.0.0", + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.0.3", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" @@ -6330,12 +7069,13 @@ } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.3.tgz", + "integrity": "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { "node": "20 || >=22" @@ -6345,12 +7085,13 @@ } }, "node_modules/rollup": { - "version": "4.30.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.30.0.tgz", - "integrity": "sha512-sDnr1pcjTgUT69qBksNF1N1anwfbyYG6TBQ22b03bII8EdiUQ7J0TlozVaTMjT/eEJAO49e1ndV7t+UZfL1+vA==", + "version": "4.43.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.43.0.tgz", + "integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==", "dev": true, + "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -6360,50 +7101,53 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.30.0", - "@rollup/rollup-android-arm64": "4.30.0", - "@rollup/rollup-darwin-arm64": "4.30.0", - "@rollup/rollup-darwin-x64": "4.30.0", - "@rollup/rollup-freebsd-arm64": "4.30.0", - "@rollup/rollup-freebsd-x64": "4.30.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.30.0", - "@rollup/rollup-linux-arm-musleabihf": "4.30.0", - "@rollup/rollup-linux-arm64-gnu": "4.30.0", - "@rollup/rollup-linux-arm64-musl": "4.30.0", - "@rollup/rollup-linux-loongarch64-gnu": "4.30.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.30.0", - "@rollup/rollup-linux-riscv64-gnu": "4.30.0", - "@rollup/rollup-linux-s390x-gnu": "4.30.0", - "@rollup/rollup-linux-x64-gnu": "4.30.0", - "@rollup/rollup-linux-x64-musl": "4.30.0", - "@rollup/rollup-win32-arm64-msvc": "4.30.0", - "@rollup/rollup-win32-ia32-msvc": "4.30.0", - "@rollup/rollup-win32-x64-msvc": "4.30.0", + "@rollup/rollup-android-arm-eabi": "4.43.0", + "@rollup/rollup-android-arm64": "4.43.0", + "@rollup/rollup-darwin-arm64": "4.43.0", + "@rollup/rollup-darwin-x64": "4.43.0", + "@rollup/rollup-freebsd-arm64": "4.43.0", + "@rollup/rollup-freebsd-x64": "4.43.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.43.0", + "@rollup/rollup-linux-arm-musleabihf": "4.43.0", + "@rollup/rollup-linux-arm64-gnu": "4.43.0", + "@rollup/rollup-linux-arm64-musl": "4.43.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.43.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-gnu": "4.43.0", + "@rollup/rollup-linux-riscv64-musl": "4.43.0", + "@rollup/rollup-linux-s390x-gnu": "4.43.0", + "@rollup/rollup-linux-x64-gnu": "4.43.0", + "@rollup/rollup-linux-x64-musl": "4.43.0", + "@rollup/rollup-win32-arm64-msvc": "4.43.0", + "@rollup/rollup-win32-ia32-msvc": "4.43.0", + "@rollup/rollup-win32-x64-msvc": "4.43.0", "fsevents": "~2.3.2" } }, "node_modules/rollup-plugin-delete": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-delete/-/rollup-plugin-delete-2.1.0.tgz", - "integrity": "sha512-TEbqJd7giLvzQDTu4jSPufwhTJs/iYVN2LfR/YIYkqjC/oZ0/h9Q0AeljifIhzBzJYZtHQTWKEbMms5fbh54pw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-delete/-/rollup-plugin-delete-3.0.1.tgz", + "integrity": "sha512-4tyijMQFwSDLA04DAHwbI2TrRwPiRwAqBQ17dxyr9CgHeHXLdgk8IDVWHFWPrL3UZJWrAmHohQ2MgmVghQDrlg==", "dev": true, + "license": "MIT", "dependencies": { - "del": "^5.1.0" + "del": "^8.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" }, "peerDependencies": { "rollup": "*" } }, "node_modules/rollup-plugin-dts": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.1.1.tgz", - "integrity": "sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-dts/-/rollup-plugin-dts-6.2.1.tgz", + "integrity": "sha512-sR3CxYUl7i2CHa0O7bA45mCrgADyAQ0tVtGSqi3yvH28M+eg1+g5d7kQ9hLvEz5dorK3XVsH5L2jwHLQf72DzA==", "dev": true, + "license": "LGPL-3.0-only", "dependencies": { - "magic-string": "^0.30.10" + "magic-string": "^0.30.17" }, "engines": { "node": ">=16" @@ -6412,7 +7156,7 @@ "url": "https://github.com/sponsors/Swatinem" }, "optionalDependencies": { - "@babel/code-frame": "^7.24.2" + "@babel/code-frame": "^7.26.2" }, "peerDependencies": { "rollup": "^3.29.4 || ^4", @@ -6434,6 +7178,7 @@ "url": "https://paypal.me/septh07" } ], + "license": "MIT", "engines": { "node": ">= 21 || ^20.6.0 || ^18.19.0" }, @@ -6441,6 +7186,13 @@ "rollup": "^4.0.0" } }, + "node_modules/rollup/node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "dev": true, + "license": "MIT" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6460,6 +7212,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -6469,6 +7222,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -6501,6 +7255,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "peer": true }, "node_modules/safe-push-apply": { @@ -6508,6 +7263,7 @@ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" @@ -6524,6 +7280,7 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -6537,10 +7294,11 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6549,19 +7307,19 @@ } }, "node_modules/send": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", - "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", "peer": true, "dependencies": { "debug": "^4.3.5", - "destroy": "^1.2.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", - "fresh": "^0.5.2", + "fresh": "^2.0.0", "http-errors": "^2.0.0", - "mime-types": "^2.1.35", + "mime-types": "^3.0.1", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", @@ -6571,11 +7329,45 @@ "node": ">= 18" } }, + "node_modules/send/node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "peer": true, + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -6593,6 +7385,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -6608,6 +7401,7 @@ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, + "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", @@ -6621,6 +7415,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC", "peer": true }, "node_modules/shebang-command": { @@ -6628,6 +7423,7 @@ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -6640,6 +7436,7 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -6649,6 +7446,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", @@ -6668,6 +7466,7 @@ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" @@ -6684,6 +7483,7 @@ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -6702,6 +7502,7 @@ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -6720,13 +7521,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -6735,12 +7538,16 @@ } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/source-map-js": { @@ -6748,6 +7555,7 @@ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -6757,6 +7565,7 @@ "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 10.x" } @@ -6765,7 +7574,8 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/standard-engine": { "version": "15.1.0", @@ -6786,6 +7596,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "get-stdin": "^8.0.0", "minimist": "^1.2.6", @@ -6801,6 +7612,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^3.0.0" }, @@ -6813,6 +7625,7 @@ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.15", "parse-json": "^4.0.0", @@ -6829,6 +7642,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -6842,6 +7656,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -6857,6 +7672,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.0.0" }, @@ -6869,6 +7685,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, + "license": "MIT", "dependencies": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" @@ -6882,6 +7699,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -6891,6 +7709,7 @@ "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^3.0.0", "load-json-file": "^5.2.0" @@ -6904,23 +7723,40 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=6" } }, "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", - "dev": true + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } }, "node_modules/streamsearch": { "version": "1.1.0", @@ -6936,6 +7772,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6951,6 +7788,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6965,6 +7803,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -6992,6 +7831,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3", "es-abstract": "^1.17.5" @@ -7002,6 +7842,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -7023,6 +7864,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", @@ -7041,6 +7883,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -7058,6 +7901,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7071,6 +7915,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -7083,6 +7928,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -7092,6 +7938,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7099,11 +7946,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -7116,6 +7977,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -7128,6 +7990,7 @@ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^10.4.1", @@ -7138,10 +8001,11 @@ } }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -7151,6 +8015,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -7171,6 +8036,7 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -7185,13 +8051,15 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/test-exclude/node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7207,6 +8075,7 @@ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -7223,6 +8092,7 @@ "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -7234,49 +8104,73 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinybench": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", + "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } }, "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.0.tgz", + "integrity": "sha512-7CotroY9a8DKsKprEy/a14aCCm8jYVmR7aFy4fpkZM8sdpNJbKkixuNjgM50yCmip2ezc8z4N7k3oe2+rfRJCQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" } }, "node_modules/tinyrainbow": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-1.2.0.tgz", - "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -7286,6 +8180,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -7297,6 +8192,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.6" @@ -7307,6 +8203,7 @@ "resolved": "https://registry.npmjs.org/ts-standard/-/ts-standard-12.0.2.tgz", "integrity": "sha512-XX2wrB9fKKTfBj4yD3ABm9iShzZcS2iWcPK8XzlBvuL20+wMiLgiz/k5tXgZwTaYq5wRhbks1Y9PelhujF/9ag==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/eslint-plugin": "^5.0.0", "@typescript-eslint/parser": "^5.0.0", @@ -7336,6 +8233,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -7347,13 +8245,15 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -7368,13 +8268,15 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -7387,6 +8289,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -7395,12 +8298,35 @@ } }, "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "mime-db": "^1.54.0" }, "engines": { "node": ">= 0.6" @@ -7411,6 +8337,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", @@ -7425,6 +8352,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", @@ -7444,6 +8372,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -7465,6 +8394,7 @@ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -7481,44 +8411,48 @@ } }, "node_modules/typedoc": { - "version": "0.27.6", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.27.6.tgz", - "integrity": "sha512-oBFRoh2Px6jFx366db0lLlihcalq/JzyCVp7Vaq1yphL/tbgx2e+bkpkCgJPunaPvPwoTOXSwasfklWHm7GfAw==", + "version": "0.28.5", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.5.tgz", + "integrity": "sha512-5PzUddaA9FbaarUzIsEc4wNXCiO4Ot3bJNeMF2qKpYlTmM9TTaSHQ7162w756ERCkXER/+o2purRG6YOAv6EMA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^1.24.0", + "@gerrit0/mini-shiki": "^3.2.2", "lunr": "^2.3.9", "markdown-it": "^14.1.0", "minimatch": "^9.0.5", - "yaml": "^2.6.1" + "yaml": "^2.7.1" }, "bin": { "typedoc": "bin/typedoc" }, "engines": { - "node": ">= 18" + "node": ">= 18", + "pnpm": ">= 10" }, "peerDependencies": { - "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x" } }, "node_modules/typedoc-plugin-markdown": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.4.1.tgz", - "integrity": "sha512-fx23nSCvewI9IR8lzIYtzDphETcgTDuxKcmHKGD4lo36oexC+B1k4NaCOY58Snqb4OlE8OXDAGVcQXYYuLRCNw==", + "version": "4.6.4", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.6.4.tgz", + "integrity": "sha512-AnbToFS1T1H+n40QbO2+i0wE6L+55rWnj7zxnM1r781+2gmhMF2dB6dzFpaylWLQYkbg4D1Y13sYnne/6qZwdw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" }, "peerDependencies": { - "typedoc": "0.27.x" + "typedoc": "0.28.x" } }, "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -7528,6 +8462,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -7539,10 +8474,11 @@ } }, "node_modules/typescript": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", - "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", - "dev": true, + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "devOptional": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -7555,13 +8491,15 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", @@ -7576,16 +8514,18 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", - "dev": true + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "dev": true, + "license": "MIT" }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -7598,34 +8538,55 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, + "node_modules/valibot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-1.1.0.tgz", + "integrity": "sha512-Nk8lX30Qhu+9txPYTwM0cFlWLdPFsFr6LblzqIySfbZph9+BFsAHsNvHOymEviUepeIW6KFHzpX8TKhbptBXXw==", + "license": "MIT", + "peer": true, + "peerDependencies": { + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "5.4.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", - "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "dev": true, + "license": "MIT", "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -7634,19 +8595,25 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.4.0" + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, + "jiti": { + "optional": true + }, "less": { "optional": true }, @@ -7667,72 +8634,84 @@ }, "terser": { "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true } } }, "node_modules/vite-node": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-2.1.8.tgz", - "integrity": "sha512-uPAwSr57kYjAUux+8E2j0q0Fxpn8M9VoyfGiRI8Kfktz9NcYMCenwY5RnZxnF1WTu3TGiYipirIzacLL3VVGFg==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.3.tgz", + "integrity": "sha512-gc8aAifGuDIpZHrPjuHyP4dpQmYXqWw7D1GmDnWeNWP654UEXzVfQ5IHPSK5HaHkwB/+p1atpYpSdw/2kOv8iQ==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.3.7", - "es-module-lexer": "^1.5.4", - "pathe": "^1.1.2", - "vite": "^5.0.0" + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/vitest": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-2.1.8.tgz", - "integrity": "sha512-1vBKTZskHw/aosXqQUlVWWlGUxSJR8YtiyZDJAFeW2kPAeX6S3Sool0mjspO+kXLuxVWlEDDowBAeqeAQefqLQ==", - "dev": true, - "dependencies": { - "@vitest/expect": "2.1.8", - "@vitest/mocker": "2.1.8", - "@vitest/pretty-format": "^2.1.8", - "@vitest/runner": "2.1.8", - "@vitest/snapshot": "2.1.8", - "@vitest/spy": "2.1.8", - "@vitest/utils": "2.1.8", - "chai": "^5.1.2", - "debug": "^4.3.7", - "expect-type": "^1.1.0", - "magic-string": "^0.30.12", - "pathe": "^1.1.2", - "std-env": "^3.8.0", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.3.tgz", + "integrity": "sha512-E6U2ZFXe3N/t4f5BwUaVCKRLHqUpk1CBWeMh78UT4VaTPH/2dyvH6ALl29JTovEPu9dVKr/K/J4PkXgrMbw4Ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.3", + "@vitest/mocker": "3.2.3", + "@vitest/pretty-format": "^3.2.3", + "@vitest/runner": "3.2.3", + "@vitest/snapshot": "3.2.3", + "@vitest/spy": "3.2.3", + "@vitest/utils": "3.2.3", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", "tinybench": "^2.9.0", - "tinyexec": "^0.3.1", - "tinypool": "^1.0.1", - "tinyrainbow": "^1.2.0", - "vite": "^5.0.0", - "vite-node": "2.1.8", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.0", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.3", "why-is-node-running": "^2.3.0" }, "bin": { "vitest": "vitest.mjs" }, "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { "@edge-runtime/vm": "*", - "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "2.1.8", - "@vitest/ui": "2.1.8", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.3", + "@vitest/ui": "3.2.3", "happy-dom": "*", "jsdom": "*" }, @@ -7740,6 +8719,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, @@ -7757,11 +8739,19 @@ } } }, + "node_modules/vitest/node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -7777,6 +8767,7 @@ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, + "license": "MIT", "dependencies": { "is-bigint": "^1.1.0", "is-boolean-object": "^1.2.1", @@ -7796,6 +8787,7 @@ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", @@ -7823,6 +8815,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -7837,15 +8830,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.18", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", - "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "for-each": "^0.3.3", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, @@ -7861,6 +8856,7 @@ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, + "license": "MIT", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -7877,6 +8873,7 @@ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7886,6 +8883,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7904,6 +8902,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -7920,13 +8919,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/xdg-basedir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -7936,20 +8937,22 @@ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yaml": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", - "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yargs": { @@ -7957,6 +8960,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -7975,15 +8979,17 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, diff --git a/package.json b/package.json index a93ea02..bbcb158 100644 --- a/package.json +++ b/package.json @@ -1,16 +1,16 @@ { - "name": "@stone-js/aws-lambda-adapter", + "name": "@stone-js/aws-lambda-http-adapter", "version": "0.0.2", - "description": "Stone.js AWS Lambda Adapters", + "description": "Official AWS Lambda HTTP adapter for Stone.js. Run your Stone.js apps on AWS Lambda behind API Gateway with full Continuum lifecycle support.", "author": "Mr. Stone ", - "license": "Apache-2.0", + "license": "MIT", "repository": { "type": "git", - "url": "git+ssh://git@github.com/stone-js/aws-lambda-adapter.git" + "url": "git+ssh://git@github.com/stone-foundation/stone-js-aws-lambda-http-adapter.git" }, - "homepage": "https://github.com/stone-js/aws-lambda-adapter#readme", + "homepage": "https://stonejs.dev", "bugs": { - "url": "https://github.com/stone-js/aws-lambda-adapter/issues" + "url": "https://github.com/stone-foundation/stone-js-aws-lambda-http-adapter/issues" }, "keywords": [ "aws", @@ -56,19 +56,19 @@ "prepare": "husky" }, "peerDependencies": { - "@stone-js/core": "^0.0.36", - "@stone-js/pipeline": "^0.0.46", - "@stone-js/http-core": "^0.0.34", - "@stone-js/service-container": "^0.0.44" + "@stone-js/core": "^0.1.1", + "@stone-js/env": "^0.1.1", + "@stone-js/filesystem": "^0.1.1", + "@stone-js/http-core": "^0.1.2" }, "dependencies": { "accepts": "^1.3.8", "bytes": "^3.1.2", "content-type": "^1.0.5", - "mime": "^4.0.4", + "mime": "^4.0.7", "proxy-addr": "^2.0.7", "statuses": "^2.0.1", - "type-is": "^1.6.18" + "type-is": "^2.0.1" }, "devDependencies": { "@commitlint/cli": "^19.6.1", @@ -78,30 +78,30 @@ "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-typescript": "^12.1.1", "@types/accepts": "^1.3.7", - "@types/bytes": "^3.1.4", + "@types/bytes": "^3.1.5", "@types/content-type": "^1.1.8", - "@types/mime": "^3.0.4", - "@types/node": "^22.9.0", + "@types/node": "^24.0.1", "@types/proxy-addr": "^2.0.3", "@types/statuses": "^2.0.5", - "@types/type-is": "^1.6.6", - "@vitest/coverage-v8": "^2.1.4", - "husky": "^9.1.6", + "@types/type-is": "^1.6.7", + "@vitest/coverage-v8": "^3.2.3", + "husky": "^9.1.7", "rimraf": "^6.0.1", - "rollup": "^4.1.5", - "rollup-plugin-delete": "^2.1.0", - "rollup-plugin-dts": "^6.1.1", + "rollup": "^4.43.0", + "rollup-plugin-delete": "^3.0.1", + "rollup-plugin-dts": "^6.2.1", "rollup-plugin-node-externals": "^8.0.0", "ts-standard": "^12.0.2", "tslib": "^2.8.1", - "typedoc": "^0.27.6", - "typedoc-plugin-markdown": "^4.4.1", + "typedoc": "^0.28.5", + "typedoc-plugin-markdown": "^4.6.4", "typescript": "^5.6.3", - "vitest": "^2.1.4" + "vitest": "^3.2.3" }, "ts-standard": { "globals": [ "it", + "test", "expect", "describe", "beforeEach" diff --git a/rollup.config.mjs b/rollup.config.mjs index 6a9d45f..1180f12 100644 --- a/rollup.config.mjs +++ b/rollup.config.mjs @@ -6,29 +6,26 @@ import typescript from '@rollup/plugin-typescript' import nodeResolve from '@rollup/plugin-node-resolve' import nodeExternals from 'rollup-plugin-node-externals' -const inputs = { - index: 'src/**/*.ts' -} - -export default Object.entries(inputs).map(([name, input]) => ({ - input, - output: [ - { format: 'es', file: `dist/${name}.js` } - ], - plugins: [ - multi(), - nodeExternals(), // Must always be before `nodeResolve()`. - nodeResolve({ - extensions: ['.js', '.mjs', '.ts'], - exportConditions: ['node', 'import', 'require', 'default'] - }), - typescript({ - noEmitOnError: true, - tsconfig: './tsconfig.build.json', - }), - commonjs() - ] -})).concat([ +export default [ + { + input: 'src/**/*.ts', + output: [ + { format: 'es', file: 'dist/index.js' } + ], + plugins: [ + multi(), + nodeExternals(), // Must always be before `nodeResolve()`. + nodeResolve({ + extensions: ['.js', '.mjs', '.ts'], + exportConditions: ['node', 'import', 'require', 'default'] + }), + typescript({ + noEmitOnError: true, + tsconfig: './tsconfig.build.json', + }), + commonjs() + ] + }, { input: 'dist/**/*.d.ts', output: [{ format: 'es' , file: 'dist/index.d.ts' }], @@ -46,4 +43,4 @@ export default Object.entries(inputs).map(([name, input]) => ({ }) ], }, -]) \ No newline at end of file +] \ No newline at end of file diff --git a/sonar-project.properties b/sonar-project.properties new file mode 100644 index 0000000..4054f06 --- /dev/null +++ b/sonar-project.properties @@ -0,0 +1,16 @@ +sonar.projectName=Stone.js - AWS Lambda HTTP Adapter +sonar.organization=stone-foundation +sonar.projectKey=stone-foundation_stone-js-aws-lambda-http-adapter +sonar.coverage.exclusions=**/*.spec.ts, **/*.test.ts +sonar.javascript.lcov.reportPaths=./coverage/lcov.info +sonar.projectDescription=Official AWS Lambda HTTP adapter for Stone.js. Run your Stone.js apps on AWS Lambda behind API Gateway with full Continuum lifecycle support. + +# This is the name and version displayed in the SonarCloud UI. +#sonar.projectName=http-core +#sonar.projectVersion=1.0 + +# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. +#sonar.sources=. + +# Encoding of the source code. Default is default system encoding +#sonar.sourceEncoding=UTF-8 \ No newline at end of file diff --git a/src/AWSLambdaAdapter.ts b/src/AWSLambdaAdapter.ts deleted file mode 100644 index 665f0c1..0000000 --- a/src/AWSLambdaAdapter.ts +++ /dev/null @@ -1,136 +0,0 @@ -import { RawResponseWrapper } from './RawResponseWrapper' -import { AwsLambdaAdapterError } from './errors/AwsLambdaAdapterError' -import { AwsLambdaContext, AwsLambdaEvent, AwsLambdaEventHandlerFunction, RawResponse, AwsLambdaAdapterContext } from './declarations' -import { Adapter, AdapterEventBuilder, AdapterOptions, IncomingEvent, IncomingEventOptions, LifecycleEventHandler, OutgoingResponse, RawResponseOptions } from '@stone-js/core' - -/** - * AWS Lambda Adapter for Stone.js. - * - * The `AWSLambdaAdapter` provides seamless integration between Stone.js applications - * and the AWS Lambda environment. It processes incoming events from AWS Lambda, - * transforms them into `IncomingEvent` instances, and returns a `RawResponse`. - * - * This adapter ensures compatibility with AWS Lambda's execution model and - * abstracts the event handling process for Stone.js developers. - * - * @template AwsLambdaEvent - The type of the raw event received from AWS Lambda. - * @template RawResponse - The type of the response to send back to AWS Lambda. - * @template AwsLambdaContext - The AWS Lambda execution context type. - * @template IncomingEvent - The type of the processed incoming event. - * @template IncomingEventOptions - Options used to create an incoming event. - * @template OutgoingResponse - The type of the outgoing response after processing. - * @template AwsLambdaAdapterContext - Context type specific to the adapter. - * - * @extends Adapter - * - * @example - * ```typescript - * import { AWSLambdaAdapter } from '@stone-js/aws-lambda-adapter'; - * - * const adapter = AWSLambdaAdapter.create({...}); - * - * const handler = await adapter.run(); - * - * export { handler }; - * ``` - * - * @see {@link https://stone-js.com/docs Stone.js Documentation} - * @see {@link https://docs.aws.amazon.com/lambda/ AWS Lambda Documentation} - */ -export class AWSLambdaAdapter extends Adapter< -AwsLambdaEvent, -RawResponse, -AwsLambdaContext, -IncomingEvent, -IncomingEventOptions, -OutgoingResponse, -AwsLambdaAdapterContext -> { - /** - * Creates an instance of the `AWSLambdaAdapter`. - * - * This factory method allows developers to instantiate the adapter with - * the necessary configuration options, ensuring it is correctly set up for - * AWS Lambda usage. - * - * @param options - The configuration options for the adapter, including - * handler resolver, error handling, and other settings. - * @returns A fully initialized `AWSLambdaAdapter` instance. - */ - static create (options: AdapterOptions): AWSLambdaAdapter { - return new this(options) - } - - /** - * Executes the adapter and provides an AWS Lambda-compatible handler function. - * - * The `run` method initializes the adapter and returns a handler function - * that AWS Lambda can invoke. This handler processes events, manages context, - * and returns the appropriate response. - * - * @template ExecutionResultType - The type representing the AWS Lambda event handler function. - * @returns A promise resolving to the AWS Lambda handler function. - * @throws {AwsLambdaAdapterError} If used outside the AWS Lambda environment. - */ - public async run(): Promise { - await this.onInit() - - const handler = async (rawEvent: AwsLambdaEvent, executionContext: AwsLambdaContext): Promise => { - return await this.eventListener(rawEvent, executionContext) - } - - return handler as ExecutionResultType - } - - /** - * Initializes the adapter and validates its execution context. - * - * Ensures the adapter is running in an AWS Lambda environment. If not, it - * throws an error to prevent misuse. - * - * @throws {AwsLambdaAdapterError} If executed outside an AWS Lambda context (e.g., browser). - */ - protected async onInit (): Promise { - if (typeof window === 'object') { - throw new AwsLambdaAdapterError( - 'This `AWSLambdaAdapter` must be used only in AWS Lambda context.' - ) - } - - await super.onInit() - } - - /** - * Processes an incoming AWS Lambda event. - * - * This method transforms the raw AWS Lambda event into a Stone.js `IncomingEvent`, - * processes it through the pipeline, and generates a `RawResponse` to send back. - * - * @param rawEvent - The raw AWS Lambda event to be processed. - * @param executionContext - The AWS Lambda execution context for the event. - * @returns A promise resolving to the processed `RawResponse`. - */ - protected async eventListener (rawEvent: AwsLambdaEvent, executionContext: AwsLambdaContext): Promise { - const eventHandler = this.handlerResolver(this.blueprint) as LifecycleEventHandler - - await this.onPrepare(eventHandler) - - const incomingEventBuilder = AdapterEventBuilder.create({ - resolver: (options) => IncomingEvent.create(options) - }) - - const rawResponseBuilder = AdapterEventBuilder.create({ - resolver: (options) => RawResponseWrapper.create(options) - }) - - const rawResponse: RawResponse = {} - - return await this.sendEventThroughDestination(eventHandler, { - rawEvent, - rawResponse, - executionContext, - rawResponseBuilder, - incomingEventBuilder - }) - } -} diff --git a/src/AWSLambdaHttpAdapter.ts b/src/AWSLambdaHttpAdapter.ts index 4bb2aa2..a556080 100644 --- a/src/AWSLambdaHttpAdapter.ts +++ b/src/AWSLambdaHttpAdapter.ts @@ -1,13 +1,20 @@ +import { + RawHttpResponse, + AwsLambdaContext, + AwsLambdaHttpEvent, + RawHttpResponseOptions, + AwsLambdaHttpAdapterContext, + AwsLambdaEventHandlerFunction +} from './declarations' import { RawHttpResponseWrapper } from './RawHttpResponseWrapper' -import { AwsLambdaAdapterError } from './errors/AwsLambdaAdapterError' -import { Adapter, AdapterEventBuilder, AdapterOptions, LifecycleEventHandler } from '@stone-js/core' +import { Adapter, AdapterEventBuilder, IBlueprint } from '@stone-js/core' +import { AwsLambdaHttpAdapterError } from './errors/AwsLambdaHttpAdapterError' import { IncomingHttpEvent, IncomingHttpEventOptions, OutgoingHttpResponse } from '@stone-js/http-core' -import { AwsLambdaContext, AwsLambdaHttpEvent, AwsLambdaHttpAdapterContext, AwsLambdaEventHandlerFunction, RawHttpResponse, RawHttpResponseOptions } from './declarations' /** * AWS Lambda HTTP Adapter for Stone.js. * - * The `AWSLambdaHttpAdapter` extends the functionality of the Stone.js `Adapter` + * The `AwsLambdaHttpAdapter` extends the functionality of the Stone.js `Adapter` * to provide seamless integration with AWS Lambda for HTTP-based events. This adapter * transforms incoming HTTP events from AWS Lambda into `IncomingHttpEvent` instances * and produces a `RawHttpResponse` as output. @@ -27,9 +34,9 @@ import { AwsLambdaContext, AwsLambdaHttpEvent, AwsLambdaHttpAdapterContext, AwsL * * @example * ```typescript - * import { AWSLambdaHttpAdapter } from '@stone-js/aws-lambda-adapter'; + * import { AwsLambdaHttpAdapter } from '@stone-js/aws-lambda-http-adapter'; * - * const adapter = AWSLambdaHttpAdapter.create({...}); + * const adapter = AwsLambdaHttpAdapter.create({...}); * * const handler = await adapter.run(); * @@ -39,7 +46,7 @@ import { AwsLambdaContext, AwsLambdaHttpEvent, AwsLambdaHttpAdapterContext, AwsL * @see {@link https://stone-js.com/docs Stone.js Documentation} * @see {@link https://docs.aws.amazon.com/lambda/latest/dg/ AWS Lambda Documentation} */ -export class AWSLambdaHttpAdapter extends Adapter< +export class AwsLambdaHttpAdapter extends Adapter< AwsLambdaHttpEvent, RawHttpResponse, AwsLambdaContext, @@ -49,16 +56,19 @@ OutgoingHttpResponse, AwsLambdaHttpAdapterContext > { /** - * Creates an instance of the `AWSLambdaHttpAdapter`. + * Creates an instance of the `AwsLambdaHttpAdapter`. * - * This factory method initializes the adapter with the specified configuration options. + * @param blueprint - The application blueprint. + * @returns A new instance of `AwsLambdaHttpAdapter`. * - * @param options - Configuration options for the adapter, including the handler resolver - * and error handling mechanisms. - * @returns A new instance of `AWSLambdaHttpAdapter`. + * @example + * ```typescript + * const adapter = AwsLambdaHttpAdapter.create(blueprint); + * await adapter.run(); + * ``` */ - static create (options: AdapterOptions): AWSLambdaHttpAdapter { - return new this(options) + static create (blueprint: IBlueprint): AwsLambdaHttpAdapter { + return new this(blueprint) } /** @@ -70,10 +80,10 @@ AwsLambdaHttpAdapterContext * * @template ExecutionResultType - The type representing the AWS Lambda event handler function. * @returns A promise resolving to the AWS Lambda HTTP handler function. - * @throws {AwsLambdaAdapterError} If used outside the AWS Lambda environment. + * @throws {AwsLambdaHttpAdapterError} If used outside the AWS Lambda environment. */ public async run>(): Promise { - await this.onInit() + await this.onStart() const handler = async (rawEvent: AwsLambdaHttpEvent, executionContext: AwsLambdaContext): Promise => { return await this.eventListener(rawEvent, executionContext) @@ -88,16 +98,16 @@ AwsLambdaHttpAdapterContext * Ensures that the adapter is running in an AWS Lambda environment. Throws an error * if it detects that the adapter is being used in an unsupported environment (e.g., a browser). * - * @throws {AwsLambdaAdapterError} If executed outside an AWS Lambda environment. + * @throws {AwsLambdaHttpAdapterError} If executed outside an AWS Lambda environment. */ - protected async onInit (): Promise { + protected async onStart (): Promise { if (typeof window === 'object') { - throw new AwsLambdaAdapterError( + throw new AwsLambdaHttpAdapterError( 'This `AWSLambdaAdapter` must be used only in AWS Lambda context.' ) } - await super.onInit() + await this.executeHooks('onStart') } /** @@ -111,10 +121,6 @@ AwsLambdaHttpAdapterContext * @returns A promise resolving to the processed `RawHttpResponse`. */ protected async eventListener (rawEvent: AwsLambdaHttpEvent, executionContext: AwsLambdaContext): Promise { - const eventHandler = this.handlerResolver(this.blueprint) as LifecycleEventHandler - - await this.onPrepare(eventHandler) - const incomingEventBuilder = AdapterEventBuilder.create({ resolver: (options) => IncomingHttpEvent.create(options) }) @@ -125,12 +131,21 @@ AwsLambdaHttpAdapterContext const rawResponse: RawHttpResponse = { statusCode: 500 } - return await this.sendEventThroughDestination(eventHandler, { + const context: AwsLambdaHttpAdapterContext = { rawEvent, rawResponse, executionContext, rawResponseBuilder, incomingEventBuilder - }) + } + + try { + const eventHandler = this.resolveEventHandler() + await this.executeEventHandlerHooks('onInit', eventHandler) + return await this.sendEventThroughDestination(context, eventHandler) + } catch (error: any) { + const rawResponseBuilder = await this.handleError(error, context) + return await this.buildRawResponse({ ...context, rawResponseBuilder }) + } } } diff --git a/src/AwsLambdaErrorHandler.ts b/src/AwsLambdaErrorHandler.ts deleted file mode 100644 index 0b09ff0..0000000 --- a/src/AwsLambdaErrorHandler.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { HTTP_INTERNAL_SERVER_ERROR } from '@stone-js/http-core' -import { AwsLambdaContext, AwsLambdaEvent, RawResponse } from './declarations' -import { IntegrationError, AdapterErrorContext, IAdapterErrorHandler, ILogger } from '@stone-js/core' - -/** - * AwsLambdaErrorHandler options. - */ -export interface AwsLambdaErrorHandlerOptions { - logger: ILogger -} - -/** - * Class representing an AwsLambdaErrorHandler. - */ -export class AwsLambdaErrorHandler implements IAdapterErrorHandler { - private readonly logger: ILogger - - /** - * Create an AwsLambdaErrorHandler. - * - * @param options - AwsLambdaErrorHandler options. - */ - constructor ({ logger }: AwsLambdaErrorHandlerOptions) { - if (logger === undefined) { - throw new IntegrationError('Logger is required to create an AwsLambdaErrorHandler instance.') - } - - this.logger = logger - } - - /** - * Handle an error. - * - * @param error - The error to handle. - * @param context - The context of the adapter. - * @returns The raw response. - */ - public async handle (error: Error, context: AdapterErrorContext): Promise { - context - .rawResponseBuilder - .add('statusCode', HTTP_INTERNAL_SERVER_ERROR) - - this.logger.error(error.message, { error }) - - return await context.rawResponseBuilder.build().respond() - } -} diff --git a/src/AwsLambdaHttpErrorHandler.ts b/src/AwsLambdaHttpErrorHandler.ts index 5390a4c..7871151 100644 --- a/src/AwsLambdaHttpErrorHandler.ts +++ b/src/AwsLambdaHttpErrorHandler.ts @@ -1,15 +1,23 @@ -import mime from 'mime/lite' +import { + ILogger, + IBlueprint, + LoggerResolver, + AdapterErrorContext, + IAdapterErrorHandler, + defaultLoggerResolver, + AdapterEventBuilderType +} from '@stone-js/core' +import mime from 'mime' import accepts from 'accepts' import statuses from 'statuses' import { HTTP_INTERNAL_SERVER_ERROR } from '@stone-js/http-core' import { AwsLambdaContext, AwsLambdaHttpEvent, RawHttpResponse } from './declarations' -import { IntegrationError, AdapterErrorContext, IAdapterErrorHandler, ILogger } from '@stone-js/core' /** * AwsLambdaHttpErrorHandler options. */ export interface AwsLambdaHttpErrorHandlerOptions { - logger: ILogger + blueprint: IBlueprint } /** @@ -19,16 +27,12 @@ export class AwsLambdaHttpErrorHandler implements IAdapterErrorHandler('stone.logger.resolver', defaultLoggerResolver)(blueprint) } /** @@ -36,21 +40,23 @@ export class AwsLambdaHttpErrorHandler implements IAdapterErrorHandler): Promise { + public handle ( + error: Error, + context: AdapterErrorContext + ): AdapterEventBuilderType { + this.logger.error(error.message, { error }) + + const statusCode = (error.cause as any)?.status ?? HTTP_INTERNAL_SERVER_ERROR const type = accepts(context.rawEvent as any).type(['json', 'html']) as string | false - const contentType = mime.getType(type !== false ? type : 'txt') ?? 'text/plain' + const contentType = mime.getType(type !== false ? type : 'txt') ?? context.rawEvent.headers['content-type'] ?? 'text/plain' const headers = new Headers({ 'Content-Type': contentType }) - context + return context .rawResponseBuilder .add('headers', headers) - .add('statusCode', HTTP_INTERNAL_SERVER_ERROR) - .add('statusMessage', statuses.message[HTTP_INTERNAL_SERVER_ERROR]) - - this.logger.error(error.message, { error }) - - return await context.rawResponseBuilder.build().respond() + .add('statusCode', statusCode) + .add('statusMessage', statuses.message[statusCode]) } } diff --git a/src/RawHttpResponseWrapper.ts b/src/RawHttpResponseWrapper.ts index fc30c3c..6bb21b1 100644 --- a/src/RawHttpResponseWrapper.ts +++ b/src/RawHttpResponseWrapper.ts @@ -51,8 +51,6 @@ export class RawHttpResponseWrapper implements IRawResponseWrapper { - /** - * Factory method to create an instance of `RawResponseWrapper`. - * - * This method initializes the wrapper with a set of partial response options. - * - * @param options - Partial options to configure the raw response. - * @returns A new instance of `RawResponseWrapper`. - * - * @example - * ```typescript - * const responseWrapper = RawResponseWrapper.create({ - * headers: { 'Content-Type': 'application/json' }, - * body: { message: 'Success' }, - * statusCode: 200, - * }); - * - * const response = responseWrapper.respond(); - * console.log(response); // { headers: { 'Content-Type': 'application/json' }, body: { message: 'Success' }, statusCode: 200 } - * ``` - */ - static create (options: Partial): RawResponseWrapper { - return new this(options) - } - - /** - * Constructs an instance of `RawResponseWrapper`. - * - * This constructor is private and should not be called directly. - * Use the `create` method to initialize an instance. - * - * @param options - Partial options for configuring the raw response. - */ - private constructor (private readonly options: Partial) {} - - /** - * Constructs and returns the raw response. - * - * The `respond` method generates and returns the raw response based on - * the provided options. The response is returned as-is, allowing for - * maximum flexibility in defining its structure. - * - * @returns A `RawResponse` object containing the response options. - * - * @example - * ```typescript - * const responseWrapper = RawResponseWrapper.create({ body: 'Hello, world!' }); - * const response = responseWrapper.respond(); - * console.log(response); // { body: 'Hello, world!' } - * ``` - */ - respond (): RawResponse { - return this.options - } -} diff --git a/src/constants.ts b/src/constants.ts index c2271ef..7c77e52 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -1,12 +1,3 @@ -/** - * A constant representing the AWS Lambda platform identifier. - * - * This constant is used as an alias for the AWS Lambda Adapter within the Stone.js framework. - * It helps in identifying and configuring platform-specific adapters or components for handling - * incoming requests and responses. - */ -export const AWS_LAMBDA_PLATFORM = 'aws_lambda' - /** * A constant representing the AWS Lambda HTTP platform identifier. * diff --git a/src/declarations.ts b/src/declarations.ts index e66392b..018f1d0 100644 --- a/src/declarations.ts +++ b/src/declarations.ts @@ -1,23 +1,12 @@ -import { RawResponseWrapper } from './RawResponseWrapper' import { RawHttpResponseWrapper } from './RawHttpResponseWrapper' +import { AdapterContext, IAdapterEventBuilder, RawResponseOptions } from '@stone-js/core' import { IncomingHttpEvent, IncomingHttpEventOptions, OutgoingHttpResponse } from '@stone-js/http-core' -import { AdapterContext, IAdapterEventBuilder, IncomingEvent, IncomingEventOptions, OutgoingResponse, RawResponseOptions } from '@stone-js/core' - -/** - * Represents a generic raw response as a key-value pair. - */ -export type RawResponse = Record /** * Represents a raw HTTP response, extending from `RawHttpResponseOptions`. */ export type RawHttpResponse = RawHttpResponseOptions -/** - * Represents a generic AWS Lambda event as a key-value pair. - */ -export type AwsLambdaEvent = Record - /** * Represents the AWS Lambda execution context as a key-value pair. */ @@ -31,16 +20,11 @@ export type AwsLambdaContext = Record * @param context - The AWS Lambda execution context. * @returns A promise resolving to the response of type `RawResponseType`. */ -export type AwsLambdaEventHandlerFunction = ( - rawEvent: AwsLambdaEvent, +export type AwsLambdaEventHandlerFunction = ( + rawEvent: AwsLambdaHttpEvent, context: AwsLambdaContext ) => Promise -/** - * Represents the response builder for the AWS Lambda Adapter. - */ -export type AwsLambdaAdapterResponseBuilder = IAdapterEventBuilder - /** * Represents the response builder for the AWS Lambda http Adapter. */ @@ -128,26 +112,6 @@ OutgoingHttpResponse rawResponse: RawHttpResponse } -/** - * Represents the context for the AWS Lambda Adapter. - * - * This interface extends `AdapterContext` and includes additional properties - * specific to generic AWS Lambda events. - */ -export interface AwsLambdaAdapterContext extends AdapterContext< -AwsLambdaEvent, -RawResponse, -AwsLambdaContext, -IncomingEvent, -IncomingEventOptions, -OutgoingResponse -> { - /** - * The raw response associated with the current context. - */ - rawResponse: RawResponse -} - /** * Represents options for configuring a raw HTTP response. * @@ -175,4 +139,9 @@ export interface RawHttpResponseOptions extends RawResponseOptions { * Can be provided as key-value pairs. */ headers?: Record + + /** + * The encoding format of the response body, such as `base64`. + */ + isBase64Encoded?: boolean } diff --git a/src/decorators/AwsLambda.ts b/src/decorators/AwsLambda.ts deleted file mode 100644 index 3e57b59..0000000 --- a/src/decorators/AwsLambda.ts +++ /dev/null @@ -1,47 +0,0 @@ -import deepmerge from 'deepmerge' -import { addBlueprint, ClassType } from '@stone-js/core' -import { awsLambdaAdapterBlueprint, AwsLambdaAdapterConfig } from '../options/AwsLambdaAdapterBlueprint' - -/** - * Configuration options for the `AwsLambda` decorator. - * These options extend the default AWS Lambda adapter configuration. - */ -export interface AwsLambdaOptions extends Partial {} - -/** - * A Stone.js decorator that integrates the AWS Lambda Adapter with a class. - * - * This decorator modifies the class to seamlessly enable AWS Lambda as the - * execution environment for a Stone.js application. By applying this decorator, - * the class is automatically configured with the necessary blueprint for AWS Lambda. - * - * @template T - The type of the class being decorated. Defaults to `ClassType`. - * @param options - Optional configuration to customize the AWS Lambda Adapter. - * - * @returns A class decorator that applies the AWS Lambda adapter configuration. - * - * @example - * ```typescript - * import { AwsLambda } from '@stone-js/aws-lambda-adapter'; - * - * @AwsLambda({ - * alias: 'MyAWSLambda', - * }) - * class App { - * // Your application logic here - * } - * ``` - */ -export const AwsLambda = ( - options: AwsLambdaOptions = {} -): ((target: T, context: ClassDecoratorContext) => void) => { - return (target: T, context: ClassDecoratorContext) => { - if (awsLambdaAdapterBlueprint.stone?.adapters?.[0] !== undefined) { - // Merge provided options with the default AWS Lambda adapter blueprint. - awsLambdaAdapterBlueprint.stone.adapters[0] = deepmerge(awsLambdaAdapterBlueprint.stone.adapters[0], options) - } - - // Add the modified blueprint to the target class. - addBlueprint(target, context, awsLambdaAdapterBlueprint) - } -} diff --git a/src/decorators/AwsLambdaHttp.ts b/src/decorators/AwsLambdaHttp.ts index 498b89d..d301058 100644 --- a/src/decorators/AwsLambdaHttp.ts +++ b/src/decorators/AwsLambdaHttp.ts @@ -1,12 +1,12 @@ import deepmerge from 'deepmerge' -import { addBlueprint, ClassType } from '@stone-js/core' -import { awsLambdaHttpAdapterBlueprint, AwsLambdaHttpAdapterConfig } from '../options/AwsLambdaHttpAdapterBlueprint' +import { addBlueprint, classDecoratorLegacyWrapper, ClassType } from '@stone-js/core' +import { awsLambdaHttpAdapterBlueprint, AwsLambdaHttpAdapterAdapterConfig } from '../options/AwsLambdaHttpAdapterBlueprint' /** * Configuration options for the `AwsLambdaHttp` decorator. * These options extend the default AWS Lambda HTTP adapter configuration. */ -export interface AwsLambdaHttpOptions extends Partial {} +export interface AwsLambdaHttpOptions extends Partial {} /** * A Stone.js decorator that integrates the AWS Lambda HTTP Adapter with a class. @@ -22,7 +22,7 @@ export interface AwsLambdaHttpOptions extends Partial( - options: AwsLambdaHttpOptions = {} -): ((target: T, context: ClassDecoratorContext) => void) => { - return (target: T, context: ClassDecoratorContext) => { +export const AwsLambdaHttp = (options: AwsLambdaHttpOptions = {}): ClassDecorator => { + return classDecoratorLegacyWrapper((target: T, context: ClassDecoratorContext): undefined => { if (awsLambdaHttpAdapterBlueprint.stone?.adapters?.[0] !== undefined) { // Merge provided options with the default AWS Lambda HTTP adapter blueprint. awsLambdaHttpAdapterBlueprint.stone.adapters[0] = deepmerge(awsLambdaHttpAdapterBlueprint.stone.adapters[0], options) @@ -44,5 +42,5 @@ export const AwsLambdaHttp = ( // Add the modified blueprint to the target class. addBlueprint(target, context, awsLambdaHttpAdapterBlueprint) - } + }) } diff --git a/src/errors/AwsLambdaAdapterError.ts b/src/errors/AwsLambdaHttpAdapterError.ts similarity index 66% rename from src/errors/AwsLambdaAdapterError.ts rename to src/errors/AwsLambdaHttpAdapterError.ts index 8376e41..c148253 100644 --- a/src/errors/AwsLambdaAdapterError.ts +++ b/src/errors/AwsLambdaHttpAdapterError.ts @@ -3,9 +3,9 @@ import { ErrorOptions, IntegrationError } from '@stone-js/core' /** * Custom error for AWS Lambda adapter operations. */ -export class AwsLambdaAdapterError extends IntegrationError { +export class AwsLambdaHttpAdapterError extends IntegrationError { constructor (message: string, options?: ErrorOptions) { super(message, options) - this.name = 'AwsLambdaAdapterError' + this.name = 'AwsLambdaHttpAdapterError' } } diff --git a/src/middleware/BlueprintMiddleware.ts b/src/middleware/BlueprintMiddleware.ts new file mode 100644 index 0000000..ac84f21 --- /dev/null +++ b/src/middleware/BlueprintMiddleware.ts @@ -0,0 +1,44 @@ +import { File } from '@stone-js/filesystem' +import { AWS_LAMBDA_HTTP_PLATFORM } from '../constants' +import { ClassType, BlueprintContext, IBlueprint, MetaMiddleware, NextMiddleware } from '@stone-js/core' +import { BinaryFileResponse, OutgoingHttpResponse, OutgoingHttpResponseOptions } from '@stone-js/http-core' + +/** + * Middleware to dynamically set response resolver for adapter. + * + * @param context - The configuration context containing modules and blueprint. + * @param next - The next pipeline function to continue processing. + * @returns The updated blueprint or a promise resolving to it. + * + * @example + * ```typescript + * SetAwsLambdaHttpResponseResolverMiddleware(context, next) + * ``` + */ +export const SetAwsLambdaHttpResponseResolverMiddleware = async ( + context: BlueprintContext, + next: NextMiddleware, IBlueprint> +): Promise => { + if (context.blueprint.get('stone.adapter.platform') === AWS_LAMBDA_HTTP_PLATFORM) { + context.blueprint.set( + 'stone.kernel.responseResolver', + (options: OutgoingHttpResponseOptions) => { + return options.content instanceof File + ? BinaryFileResponse.file({ ...options, content: undefined, file: options.content }) + : OutgoingHttpResponse.create(options) + } + ) + } + + return await next(context) +} + +/** + * Configuration for adapter processing middleware. + * + * This array defines a list of middleware pipes, each with a `pipe` function and a `priority`. + * These pipes are executed in the order of their priority values, with lower values running first. + */ +export const metaAdapterBlueprintMiddleware: Array, IBlueprint>> = [ + { module: SetAwsLambdaHttpResponseResolverMiddleware, priority: 6 } +] diff --git a/src/middleware/BodyEventMiddleware.ts b/src/middleware/BodyEventMiddleware.ts index e2c51cd..ba23f63 100644 --- a/src/middleware/BodyEventMiddleware.ts +++ b/src/middleware/BodyEventMiddleware.ts @@ -1,10 +1,9 @@ import bytes from 'bytes' import typeIs from 'type-is' -import { IBlueprint } from '@stone-js/core' import { IncomingMessage } from 'node:http' -import { NextPipe } from '@stone-js/pipeline' +import { IBlueprint, isNotEmpty, NextMiddleware } from '@stone-js/core' import { isMultipart, getCharset, getType } from '@stone-js/http-core' -import { AwsLambdaAdapterError } from '../errors/AwsLambdaAdapterError' +import { AwsLambdaHttpAdapterError } from '../errors/AwsLambdaHttpAdapterError' import { AwsLambdaHttpAdapterContext, AwsLambdaHttpAdapterResponseBuilder, AwsLambdaHttpEvent } from '../declarations' /** @@ -45,21 +44,35 @@ export class BodyEventMiddleware { * @param next - The next middleware to be invoked in the pipeline. * @returns A promise that resolves to the destination type after processing. * - * @throws {AwsLambdaAdapterError} If required components such as the rawEvent or IncomingEventBuilder are not provided. + * @throws {AwsLambdaHttpAdapterError} If required components such as the rawEvent or IncomingEventBuilder are not provided. */ - async handle (context: AwsLambdaHttpAdapterContext, next: NextPipe): Promise { + async handle (context: AwsLambdaHttpAdapterContext, next: NextMiddleware): Promise { if (context.rawEvent === undefined || context.incomingEventBuilder?.add === undefined) { - throw new AwsLambdaAdapterError('The context is missing required components.') + throw new AwsLambdaHttpAdapterError('The context is missing required components.') } if (!isMultipart(this.toNodeMessage(context.rawEvent))) { - context.incomingEventBuilder.add('body', this.getBody(this.toNodeMessage(context.rawEvent), context.rawEvent)) + const body = this.getBody(this.toNodeMessage(context.rawEvent), context.rawEvent) + const method = (body as any).$method$ + + context + .incomingEventBuilder + .add('body', body) + .add('metadata', body) + // In fullstack forms, the method is spoofed and sent as a hidden field + isNotEmpty(method) && context.incomingEventBuilder.add('method', method) } return await next(context) } - toNodeMessage (rawEvent: AwsLambdaHttpEvent): IncomingMessage { + /** + * Convert the raw event into a Node.js IncomingMessage. + * + * @param rawEvent - The raw event from the platform. + * @returns The converted IncomingMessage. + */ + private toNodeMessage (rawEvent: AwsLambdaHttpEvent): IncomingMessage { return { headers: { 'content-type': rawEvent.headers['content-type'] ?? rawEvent.headers['Content-Type'], @@ -74,7 +87,7 @@ export class BodyEventMiddleware { * * @param message - The incoming HTTP message. * @returns A Promise resolving to the parsed body. - * @throws {AwsLambdaAdapterError} If the body parsing fails or is invalid. + * @throws {AwsLambdaHttpAdapterError} If the body parsing fails or is invalid. */ private getBody (message: IncomingMessage, rawEvent: AwsLambdaHttpEvent): unknown { if (!typeIs.hasBody(message)) { @@ -99,9 +112,14 @@ export class BodyEventMiddleware { ) if (Buffer.byteLength(stringifiedBody, encoding as BufferEncoding) > limit) { - throw new AwsLambdaAdapterError('The context is missing required components.') + throw new AwsLambdaHttpAdapterError('The context is missing required components.') } return rawEvent.body } } + +/** + * Meta Middleware for processing the request body. + */ +export const MetaBodyEventMiddleware = { module: BodyEventMiddleware, isClass: true } diff --git a/src/middleware/FilesEventMiddleware.ts b/src/middleware/FilesEventMiddleware.ts index a636e68..348a2b2 100644 --- a/src/middleware/FilesEventMiddleware.ts +++ b/src/middleware/FilesEventMiddleware.ts @@ -1,8 +1,7 @@ -import { IBlueprint } from '@stone-js/core' -import { NextPipe } from '@stone-js/pipeline' import { IncomingHttpHeaders, IncomingMessage } from 'node:http' import { isMultipart, getFilesUploads } from '@stone-js/http-core' -import { AwsLambdaAdapterError } from '../errors/AwsLambdaAdapterError' +import { IBlueprint, isNotEmpty, NextMiddleware } from '@stone-js/core' +import { AwsLambdaHttpAdapterError } from '../errors/AwsLambdaHttpAdapterError' import { AwsLambdaHttpAdapterContext, AwsLambdaHttpAdapterResponseBuilder, AwsLambdaHttpEvent } from '../declarations' /** @@ -32,21 +31,24 @@ export class FilesEventMiddleware { * @param next - The next middleware to be invoked in the pipeline. * @returns A promise that resolves to the destination type after processing. * - * @throws {AwsLambdaAdapterError} If required components such as the rawEvent or IncomingEventBuilder are not provided. + * @throws {AwsLambdaHttpAdapterError} If required components such as the rawEvent or IncomingEventBuilder are not provided. */ - async handle (context: AwsLambdaHttpAdapterContext, next: NextPipe): Promise { + async handle (context: AwsLambdaHttpAdapterContext, next: NextMiddleware): Promise { if (context.rawEvent === undefined || context.incomingEventBuilder?.add === undefined) { - throw new AwsLambdaAdapterError('The context is missing required components.') + throw new AwsLambdaHttpAdapterError('The context is missing required components.') } if (isMultipart(this.normalizeEvent(context.rawEvent) as unknown as IncomingMessage)) { const options = this.blueprint.get>('stone.http.files.upload', {}) const response = await getFilesUploads(this.normalizeEvent(context.rawEvent), options) + const method = response.fields.$method$ context .incomingEventBuilder .add('files', response.files) .add('body', response.fields) + // In fullstack forms, the method is spoofed and sent as a hidden field + isNotEmpty(method) && context.incomingEventBuilder.add('method', method) } return await next(context) @@ -69,3 +71,8 @@ export class FilesEventMiddleware { } } } + +/** + * Meta Middleware for processing files uploads. + */ +export const MetaFilesEventMiddleware = { module: FilesEventMiddleware, isClass: true } diff --git a/src/middleware/IncomingEventMiddleware.ts b/src/middleware/IncomingEventMiddleware.ts index f978de9..e517776 100644 --- a/src/middleware/IncomingEventMiddleware.ts +++ b/src/middleware/IncomingEventMiddleware.ts @@ -1,8 +1,8 @@ import proxyAddr from 'proxy-addr' -import { IBlueprint } from '@stone-js/core' import { IncomingMessage } from 'node:http' -import { NextPipe } from '@stone-js/pipeline' -import { AwsLambdaAdapterError } from '../errors/AwsLambdaAdapterError' +import { AWS_LAMBDA_HTTP_PLATFORM } from '../constants' +import { IBlueprint, NextMiddleware } from '@stone-js/core' +import { AwsLambdaHttpAdapterError } from '../errors/AwsLambdaHttpAdapterError' import { getHostname, getProtocol, isIpTrusted, CookieSameSite, CookieCollection } from '@stone-js/http-core' import { AwsLambdaHttpEvent, AwsLambdaHttpAdapterContext, AwsLambdaHttpAdapterResponseBuilder } from '../declarations' @@ -55,11 +55,11 @@ export class IncomingEventMiddleware { * @param context - The adapter context containing the raw event, execution context, and other data. * @param next - The next middleware to be invoked in the pipeline. * @returns A promise that resolves to the processed context. - * @throws {AwsLambdaAdapterError} If required components are missing in the context. + * @throws {AwsLambdaHttpAdapterError} If required components are missing in the context. */ - async handle (context: AwsLambdaHttpAdapterContext, next: NextPipe): Promise { - if ((context.rawEvent == null) || ((context.incomingEventBuilder?.add) == null)) { - throw new AwsLambdaAdapterError('The context is missing required components.') + async handle (context: AwsLambdaHttpAdapterContext, next: NextMiddleware): Promise { + if ((context.rawEvent === undefined) || ((context.incomingEventBuilder?.add) === undefined)) { + throw new AwsLambdaHttpAdapterError('The context is missing required components.') } const proxyOptions = this.getProxyOptions() @@ -71,18 +71,33 @@ export class IncomingEventMiddleware { .incomingEventBuilder .add('url', url) .add('ips', ipAddresses) - .add('source', context.executionContext) + .add('source', this.getSource(context)) .add('headers', context.rawEvent.headers) - .add('method', this.getMethod(context.rawEvent)) + // If not defined by other middleware + // In fullstack forms, the method is spoofed and sent as a hidden field + .addIf('method', this.getMethod(context.rawEvent)) .add('queryString', context.rawEvent.queryStringParameters) .add('protocol', this.getProtocol(context.rawEvent, proxyOptions)) - .add('metadata', { lambda: { rawEvent: context.rawEvent, context: context.executionContext } }) .add('cookies', CookieCollection.create(context.rawEvent.headers.cookie, cookieOptions, this.getCookieSecret())) .add('ip', proxyAddr(this.toNodeMessage(context.rawEvent), isIpTrusted(proxyOptions.trustedIp, proxyOptions.untrustedIp))) return await next(context) } + /** + * Create the IncomingEventSource from the context. + * + * @param context - The adapter context containing the raw event, execution context, and other data. + * @returns The Incoming Event Source. + */ + private getSource (context: AwsLambdaHttpAdapterContext): unknown { + return { + rawEvent: context.rawEvent, + platform: AWS_LAMBDA_HTTP_PLATFORM, + rawContext: context.executionContext + } + } + /** * Extracts the HTTP method from the incoming rawEvent. * @@ -185,3 +200,8 @@ export class IncomingEventMiddleware { return rawEvent.requestContext?.http?.sourceIp ?? rawEvent.requestContext?.identity?.sourceIp ?? '' } } + +/** + * Meta Middleware for processing incoming events. + */ +export const MetaIncomingEventMiddleware = { module: IncomingEventMiddleware, isClass: true } diff --git a/src/middleware/ServerResponseMiddleware.ts b/src/middleware/ServerResponseMiddleware.ts index d631437..e7c941e 100644 --- a/src/middleware/ServerResponseMiddleware.ts +++ b/src/middleware/ServerResponseMiddleware.ts @@ -1,7 +1,7 @@ import statuses from 'statuses' -import { NextPipe } from '@stone-js/pipeline' +import { NextMiddleware } from '@stone-js/core' import { BinaryFileResponse } from '@stone-js/http-core' -import { AwsLambdaAdapterError } from '../errors/AwsLambdaAdapterError' +import { AwsLambdaHttpAdapterError } from '../errors/AwsLambdaHttpAdapterError' import { AwsLambdaHttpAdapterContext, AwsLambdaHttpAdapterResponseBuilder } from '../declarations' /** @@ -17,13 +17,13 @@ export class ServerResponseMiddleware { * @param context - The adapter context containing the raw event, execution context, and other data. * @param next - The next middleware to be invoked in the pipeline. * @returns A promise resolving to the rawResponseBuilder. - * @throws {AwsLambdaAdapterError} If required components are missing in the context. + * @throws {AwsLambdaHttpAdapterError} If required components are missing in the context. */ - async handle (context: AwsLambdaHttpAdapterContext, next: NextPipe): Promise { + async handle (context: AwsLambdaHttpAdapterContext, next: NextMiddleware): Promise { const rawResponseBuilder = await next(context) if (context.rawEvent === undefined || context.incomingEvent === undefined || context.outgoingResponse === undefined || rawResponseBuilder?.add === undefined) { - throw new AwsLambdaAdapterError('The context is missing required components.') + throw new AwsLambdaHttpAdapterError('The context is missing required components.') } rawResponseBuilder @@ -34,10 +34,17 @@ export class ServerResponseMiddleware { if (!context.incomingEvent.isMethod('HEAD')) { if (context.outgoingResponse instanceof BinaryFileResponse) { rawResponseBuilder - .add('body', context.outgoingResponse.file.getContent()) + .add('isBase64Encoded', true) + .add('body', context.outgoingResponse.file.getContent('base64')) } else { + const isBuffer = Buffer.isBuffer(context.outgoingResponse.content) + const content = isBuffer + ? (context.outgoingResponse.content as Buffer).toString('base64') + : context.outgoingResponse.content + rawResponseBuilder - .add('body', context.outgoingResponse.content) + .add('body', content) + .add('isBase64Encoded', isBuffer) .add('charset', context.outgoingResponse.charset) } } @@ -45,3 +52,8 @@ export class ServerResponseMiddleware { return rawResponseBuilder } } + +/** + * Meta Middleware for processing server responses. + */ +export const MetaServerResponseMiddleware = { module: ServerResponseMiddleware, isClass: true } diff --git a/src/options/AwsLambdaAdapterBlueprint.ts b/src/options/AwsLambdaAdapterBlueprint.ts deleted file mode 100644 index 18aa123..0000000 --- a/src/options/AwsLambdaAdapterBlueprint.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { AWS_LAMBDA_PLATFORM } from '../constants' -import { awsLambdaAdapterResolver } from '../resolvers' -import { AdapterConfig, StoneBlueprint } from '@stone-js/core' -import { AwsLambdaErrorHandler } from '../AwsLambdaErrorHandler' - -/** - * Configuration interface for the AWS Lambda Adapter. - * - * Extends the `AdapterConfig` interface from the Stone.js framework and provides - * customizable options specific to the AWS Lambda platform. This includes - * alias, resolver, middleware, hooks, and various adapter state flags. - */ -export interface AwsLambdaAdapterConfig extends AdapterConfig {} - -/** - * Blueprint interface for the AWS Lambda Adapter. - * - * This interface extends `StoneBlueprint` and defines the structure of the - * AWS Lambda adapter blueprint used in the Stone.js framework. It includes - * a `stone` object with an array of `AwsLambdaAdapterConfig` items. - */ -export interface AwsLambdaAdapterBlueprint extends StoneBlueprint {} - -/** - * Default blueprint configuration for the AWS Lambda Adapter. - * - * This blueprint defines the initial configuration for the AWS Lambda adapter - * within the Stone.js framework. It includes: - * - An alias for the AWS Lambda platform (`AWS_LAMBDA_PLATFORM`). - * - A default resolver function (currently a placeholder). - * - Middleware, hooks, and state flags (`current`, `default`, `preferred`). - */ -export const awsLambdaAdapterBlueprint: AwsLambdaAdapterBlueprint = { - stone: { - adapters: [ - { - platform: AWS_LAMBDA_PLATFORM, - resolver: awsLambdaAdapterResolver, - middleware: [], - hooks: {}, - errorHandlers: { - default: AwsLambdaErrorHandler - }, - current: false, - default: false - } - ] - } -} diff --git a/src/options/AwsLambdaHttpAdapterBlueprint.ts b/src/options/AwsLambdaHttpAdapterBlueprint.ts index b299568..c431c9c 100644 --- a/src/options/AwsLambdaHttpAdapterBlueprint.ts +++ b/src/options/AwsLambdaHttpAdapterBlueprint.ts @@ -1,10 +1,13 @@ +import { getString } from '@stone-js/env' import { AWS_LAMBDA_HTTP_PLATFORM } from '../constants' import { awsLambdaHttpAdapterResolver } from '../resolvers' -import { AdapterConfig, StoneBlueprint } from '@stone-js/core' import { AwsLambdaHttpErrorHandler } from '../AwsLambdaHttpErrorHandler' -import { IncomingHttpEvent, OutgoingHttpResponse } from '@stone-js/http-core' -import { IncomingEventMiddleware } from '../middleware/IncomingEventMiddleware' -import { ServerResponseMiddleware } from '../middleware/ServerResponseMiddleware' +import { metaAdapterBlueprintMiddleware } from '../middleware/BlueprintMiddleware' +import { MetaIncomingEventMiddleware } from '../middleware/IncomingEventMiddleware' +import { MetaServerResponseMiddleware } from '../middleware/ServerResponseMiddleware' +import { AwsLambdaContext, AwsLambdaHttpEvent, RawHttpResponse } from '../declarations' +import { AdapterConfig, AppConfig, defaultKernelResolver, isNotEmpty, StoneBlueprint } from '@stone-js/core' +import { HttpConfig, IncomingHttpEvent, IncomingHttpEventOptions, OutgoingHttpResponse, httpCoreBlueprint } from '@stone-js/http-core' /** * Configuration interface for the AWS Lambda Http Adapter. @@ -13,7 +16,21 @@ import { ServerResponseMiddleware } from '../middleware/ServerResponseMiddleware * customizable options specific to the AWS Lambda platform. This includes * alias, resolver, middleware, hooks, and various adapter state flags. */ -export interface AwsLambdaHttpAdapterConfig extends AdapterConfig {} +export interface AwsLambdaHttpAdapterAdapterConfig extends AdapterConfig< +AwsLambdaHttpEvent, +RawHttpResponse, +AwsLambdaContext, +IncomingHttpEvent, +IncomingHttpEventOptions, +OutgoingHttpResponse +> {} + +/** + * Represents the AwsLambdaHttpAdapterConfig configuration options for the application. + */ +export interface AwsLambdaHttpAdapterConfig extends Partial> { + http: Partial +} /** * Blueprint interface for the AWS Lambda Http Adapter. @@ -22,7 +39,12 @@ export interface AwsLambdaHttpAdapterConfig extends AdapterConfig {} * AWS Lambda Http adapter blueprint used in the Stone.js framework. It includes * a `stone` object with an array of `AwsLambdaHttpAdapterConfig` items. */ -export interface AwsLambdaHttpAdapterBlueprint extends StoneBlueprint {} +export interface AwsLambdaHttpAdapterBlueprint extends StoneBlueprint { + /** + * Application-level settings, including environment, middleware, logging, and service registration. + */ + stone: AwsLambdaHttpAdapterConfig +} /** * Default blueprint configuration for the AWS Lambda Http Adapter. @@ -35,20 +57,25 @@ export interface AwsLambdaHttpAdapterBlueprint extends StoneBlueprint { - const hooks = blueprint.get('stone.adapter.hooks', {}) - const loggerResolver = blueprint.get('stone.logger.resolver', defaultLoggerResolver) - const handlerResolver = blueprint.get('stone.kernel.resolver', defaultKernelResolver) - - return AWSLambdaAdapter.create({ - hooks, - blueprint, - handlerResolver, - logger: loggerResolver(blueprint) - }) -} +import { AdapterResolver, IBlueprint } from '@stone-js/core' +import { AwsLambdaHttpAdapter } from './AWSLambdaHttpAdapter' /** * Adapter resolver for AWS Lambda HTTP adapter. @@ -32,14 +10,5 @@ export const awsLambdaAdapterResolver: AdapterResolver = (blueprint: IBlueprint) * @returns An `AWSLambdaHttpAdapter` instance. */ export const awsLambdaHttpAdapterResolver: AdapterResolver = (blueprint: IBlueprint) => { - const hooks = blueprint.get('stone.adapter.hooks', {}) - const loggerResolver = blueprint.get('stone.logger.resolver', defaultLoggerResolver) - const handlerResolver = blueprint.get('stone.kernel.resolver', defaultKernelResolver) - - return AWSLambdaHttpAdapter.create({ - hooks, - blueprint, - handlerResolver, - logger: loggerResolver(blueprint) - }) + return AwsLambdaHttpAdapter.create(blueprint) } diff --git a/tests/AWSLambdaAdapter.spec.ts b/tests/AWSLambdaAdapter.spec.ts deleted file mode 100644 index 30b90a3..0000000 --- a/tests/AWSLambdaAdapter.spec.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { - AdapterEventBuilder, - AdapterOptions, - IncomingEvent, - OutgoingResponse -} from '@stone-js/core' -import { AWSLambdaAdapter } from '../src/AWSLambdaAdapter' -import { RawResponseWrapper } from '../src/RawResponseWrapper' -import { AwsLambdaAdapterError } from '../src/errors/AwsLambdaAdapterError' - -vi.mock('../src/RawResponseWrapper', () => ({ - RawResponseWrapper: { - create: vi.fn() - } -})) - -describe('AWSLambdaAdapter', () => { - let adapterOptions: AdapterOptions - - beforeEach(() => { - adapterOptions = { - hooks: {}, - blueprint: { - get: vi.fn() - }, - handlerResolver: vi.fn(), - logger: { - error: vi.fn() - }, - errorHandler: { - render: vi.fn(), - report: vi.fn() - } - } as any - }) - - it('should create an instance with correct https configuration', () => { - const adapter = AWSLambdaAdapter.create(adapterOptions) - expect(adapter).toBeInstanceOf(AWSLambdaAdapter) - }) - - it('should throw error when used outside AWS Lambda context', async () => { - const adapter = AWSLambdaAdapter.create(adapterOptions) - - global.window = {} as any // Simulate browser context - - await expect(adapter.run()).rejects.toThrow(AwsLambdaAdapterError) - - delete (global as any).window // Cleanup - }) - - it('should call the appropriate event listener on request', async () => { - const adapter = AWSLambdaAdapter.create(adapterOptions) - const mockEvent = {} as any - - IncomingEvent.create = vi.fn() - RawResponseWrapper.create = vi.fn() - AdapterEventBuilder.create = vi.fn((options) => options.resolver({})) - // @ts-expect-error - adapter.sendEventThroughDestination = vi.fn() - - const handler = await adapter.run() - - const rawResponse = await handler(mockEvent, {}) - - expect(rawResponse).toBeUndefined() - expect(AdapterEventBuilder.create).toHaveBeenCalled() - // @ts-expect-error - expect(adapter.sendEventThroughDestination).toHaveBeenCalled() - expect(RawResponseWrapper.create).toHaveBeenCalledWith(expect.anything()) - }) -}) diff --git a/tests/AWSLambdaHttpAdapter.spec.ts b/tests/AWSLambdaHttpAdapter.spec.ts index f5ade4f..4a57af9 100644 --- a/tests/AWSLambdaHttpAdapter.spec.ts +++ b/tests/AWSLambdaHttpAdapter.spec.ts @@ -1,74 +1,88 @@ -import { - AdapterEventBuilder, - AdapterOptions -} from '@stone-js/core' -import { - IncomingHttpEvent, - OutgoingHttpResponse -} from '@stone-js/http-core' -import { AWSLambdaHttpAdapter } from '../src/AWSLambdaHttpAdapter' -import { RawHttpResponseWrapper } from '../src/RawHttpResponseWrapper' -import { AwsLambdaAdapterError } from '../src/errors/AwsLambdaAdapterError' - -vi.mock('../src/RawHttpResponseWrapper', () => ({ - RawHttpResponseWrapper: { - create: vi.fn() +import { AdapterEventBuilder, IBlueprint } from '@stone-js/core' +import { AwsLambdaHttpAdapterError } from '../src/errors/AwsLambdaHttpAdapterError' +import { AwsLambdaHttpAdapter } from '../src/AWSLambdaHttpAdapter' + +vi.mock('@stone-js/core', async () => { + const actual = await vi.importActual('@stone-js/core') + return { + ...actual, + AdapterEventBuilder: { + create: vi.fn().mockImplementation(({ resolver }) => ({ resolver })) + } + } +}) + +vi.mock('@stone-js/http-core', async () => { + const actual = await vi.importActual('@stone-js/http-core') + return { + ...actual, + IncomingHttpEvent: { + create: vi.fn().mockImplementation((options) => ({ ...options, __event: true })) + } + } +}) + +vi.mock('../RawHttpResponseWrapper', () => { + return { + RawHttpResponseWrapper: { + create: vi.fn().mockImplementation((options) => ({ ...options, __response: true })) + } } -})) +}) -describe('AWSLambdaHttpAdapter', () => { - let adapterOptions: AdapterOptions +describe('AwsLambdaHttpAdapter', () => { + let blueprint: IBlueprint + let adapter: AwsLambdaHttpAdapter beforeEach(() => { - adapterOptions = { - hooks: {}, - blueprint: { - get: vi.fn() - }, - handlerResolver: vi.fn(), - logger: { - error: vi.fn() - }, - errorHandler: { - render: vi.fn(), - report: vi.fn() - } - } as any - }) + blueprint = { + get: vi.fn(), + set: vi.fn() + } as unknown as IBlueprint - it('should create an instance with correct https configuration', () => { - const adapter = AWSLambdaHttpAdapter.create(adapterOptions) - expect(adapter).toBeInstanceOf(AWSLambdaHttpAdapter) + adapter = AwsLambdaHttpAdapter.create(blueprint) }) - it('should throw error when used outside AWS Lambda context', async () => { - const adapter = AWSLambdaHttpAdapter.create(adapterOptions) + it('should create an instance via static method', () => { + expect(adapter).toBeInstanceOf(AwsLambdaHttpAdapter) + }) - global.window = {} as any // Simulate browser context + it('should throw in browser environment when run is called', async () => { + // simulate browser env + vi.stubGlobal('window', {}) - await expect(adapter.run()).rejects.toThrow(AwsLambdaAdapterError) + await expect(adapter.run()).rejects.toThrow(AwsLambdaHttpAdapterError) - delete (global as any).window // Cleanup + // cleanup + vi.unstubAllGlobals() }) - it('should call the appropriate event listener on request', async () => { - const adapter = AWSLambdaHttpAdapter.create(adapterOptions) - const mockEvent = {} as any + it('should process lambda event and return a raw response', async () => { + AdapterEventBuilder.create = vi.fn(({ resolver }) => resolver({})) + const executeHooks = vi.spyOn(adapter as any, 'executeHooks').mockResolvedValue(undefined) - IncomingHttpEvent.create = vi.fn() - RawHttpResponseWrapper.create = vi.fn() - AdapterEventBuilder.create = vi.fn((options) => options.resolver({})) - // @ts-expect-error - adapter.sendEventThroughDestination = vi.fn() + vi.spyOn(adapter as any, 'resolveEventHandler').mockReturnValue(vi.fn()) + vi.spyOn(adapter as any, 'sendEventThroughDestination').mockResolvedValue({ statusCode: 200 }) + vi.spyOn(adapter as any, 'executeEventHandlerHooks').mockResolvedValue(undefined) const handler = await adapter.run() - const rawResponse = await handler(mockEvent, {}) + expect(executeHooks).toHaveBeenCalledWith('onStart') + expect(await handler({} as any, {})).toEqual({ statusCode: 200 }) + }) + + it('should handle errors and build raw response', async () => { + const error = new Error('boom') + const mockBuilder = vi.fn().mockResolvedValue({ statusCode: 500 }) + + vi.spyOn(adapter as any, 'resolveEventHandler').mockImplementation(() => { + throw error + }) + vi.spyOn(adapter as any, 'handleError').mockResolvedValue(mockBuilder) + vi.spyOn(adapter as any, 'buildRawResponse').mockResolvedValue({ statusCode: 500 }) + + const response = await (adapter as any).eventListener({ test: true }, {}) - expect(rawResponse).toBeUndefined() - expect(AdapterEventBuilder.create).toHaveBeenCalled() - // @ts-expect-error - expect(adapter.sendEventThroughDestination).toHaveBeenCalled() - expect(RawHttpResponseWrapper.create).toHaveBeenCalledWith(expect.anything()) + expect(response).toEqual({ statusCode: 500 }) }) }) diff --git a/tests/AwsLambdaErrorHandler.spec.ts b/tests/AwsLambdaErrorHandler.spec.ts deleted file mode 100644 index a857cb2..0000000 --- a/tests/AwsLambdaErrorHandler.spec.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { HTTP_INTERNAL_SERVER_ERROR } from '@stone-js/http-core' -import { AwsLambdaErrorHandler } from '../src/AwsLambdaErrorHandler' -import { IntegrationError, AdapterErrorContext, ILogger } from '@stone-js/core' - -describe('AwsLambdaErrorHandler', () => { - let mockLogger: ILogger - let handler: AwsLambdaErrorHandler - let mockContext: AdapterErrorContext - - beforeEach(() => { - mockLogger = { - error: vi.fn() - } as unknown as ILogger - - mockContext = { - rawEvent: {}, - rawResponseBuilder: { - add: vi.fn().mockReturnThis(), - build: vi.fn().mockReturnValue({ - respond: vi.fn().mockResolvedValue('response') - }) - } - } as unknown as AdapterErrorContext - - handler = new AwsLambdaErrorHandler({ logger: mockLogger }) - }) - - test('should throw an IntegrationError if logger is not provided', () => { - expect(() => new AwsLambdaErrorHandler({ logger: undefined as any })).toThrowError(IntegrationError) - }) - - test('should handle an error and return a response with correct headers', async () => { - const error = new Error('Something went wrong') - - const response = await handler.handle(error, mockContext) - - expect(mockContext.rawResponseBuilder.add).toHaveBeenCalledWith( - 'statusCode', - HTTP_INTERNAL_SERVER_ERROR - ) - expect(mockLogger.error).toHaveBeenCalledWith('Something went wrong', { error }) - expect(response).toBe('response') - }) -}) diff --git a/tests/AwsLambdaHttpErrorHandler.spec.ts b/tests/AwsLambdaHttpErrorHandler.spec.ts index 4df0e7b..347c83a 100644 --- a/tests/AwsLambdaHttpErrorHandler.spec.ts +++ b/tests/AwsLambdaHttpErrorHandler.spec.ts @@ -1,8 +1,8 @@ -import mime from 'mime/lite' +import mime from 'mime' import { Mock } from 'vitest' import { HTTP_INTERNAL_SERVER_ERROR } from '@stone-js/http-core' +import { AdapterErrorContext, ILogger, IBlueprint } from '@stone-js/core' import { AwsLambdaHttpErrorHandler } from '../src/AwsLambdaHttpErrorHandler' -import { IntegrationError, AdapterErrorContext, ILogger } from '@stone-js/core' const MockAcceptsType: any = vi.fn(() => 'json') @@ -11,7 +11,7 @@ vi.mock('accepts', () => ({ default: () => ({ type: MockAcceptsType }) })) -vi.mock('mime/lite', () => ({ +vi.mock('mime', () => ({ getType: vi.fn(() => 'application/json'), default: { getType: vi.fn(() => 'application/json') } })) @@ -22,6 +22,7 @@ vi.mock('statuses', () => ({ describe('AwsLambdaHttpErrorHandler', () => { let mockLogger: ILogger + let mockBlueprint: IBlueprint let handler: AwsLambdaHttpErrorHandler let mockContext: AdapterErrorContext @@ -30,27 +31,31 @@ describe('AwsLambdaHttpErrorHandler', () => { error: vi.fn() } as unknown as ILogger + mockBlueprint = { + get: () => () => mockLogger + } as unknown as IBlueprint + mockContext = { - rawEvent: {}, + rawEvent: { + headers: { + 'content-type': 'application/json' + } + } as any, rawResponseBuilder: { add: vi.fn().mockReturnThis(), build: vi.fn().mockReturnValue({ - respond: vi.fn().mockResolvedValue('response') + respond: vi.fn().mockReturnValue('response') }) } } as unknown as AdapterErrorContext - handler = new AwsLambdaHttpErrorHandler({ logger: mockLogger }) - }) - - test('should throw an IntegrationError if logger is not provided', () => { - expect(() => new AwsLambdaHttpErrorHandler({ logger: undefined as any })).toThrowError(IntegrationError) + handler = new AwsLambdaHttpErrorHandler({ blueprint: mockBlueprint }) }) test('should handle an error and return a response with correct headers', async () => { const error = new Error('Something went wrong') - const response = await handler.handle(error, mockContext) + const response = handler.handle(error, mockContext) expect(mockContext.rawResponseBuilder.add).toHaveBeenCalledWith( 'headers', @@ -65,22 +70,24 @@ describe('AwsLambdaHttpErrorHandler', () => { 'Internal Server Error' ) expect(mockLogger.error).toHaveBeenCalledWith('Something went wrong', { error }) - expect(response).toBe('response') + expect(response.build().respond()).toBe('response') }) test('should default to text/plain if mime.getType returns undefined', async () => { (mime.getType as unknown as Mock).mockReturnValueOnce(undefined) const error = new Error('Fallback mime type') + error.cause = { status: HTTP_INTERNAL_SERVER_ERROR } + mockContext.rawEvent.headers['content-type'] = undefined - const response = await handler.handle(error, mockContext) + const response = handler.handle(error, mockContext) expect(mockContext.rawResponseBuilder.add).toHaveBeenCalledWith( 'headers', expect.any(Headers) ) expect(mockLogger.error).toHaveBeenCalledWith('Fallback mime type', { error }) - expect(response).toBe('response') + expect(response.build().respond()).toBe('response') }) test('should handle false return from accepts.type', async () => { @@ -88,13 +95,13 @@ describe('AwsLambdaHttpErrorHandler', () => { const error = new Error('Accepts returned false') - const response = await handler.handle(error, mockContext) + const response = handler.handle(error, mockContext) expect(mockContext.rawResponseBuilder.add).toHaveBeenCalledWith( 'headers', expect.any(Headers) ) expect(mockLogger.error).toHaveBeenCalledWith('Accepts returned false', { error }) - expect(response).toBe('response') + expect(response.build().respond()).toBe('response') }) }) diff --git a/tests/RawHttpResponseWrapper.spec.ts b/tests/RawHttpResponseWrapper.spec.ts index 5be84d2..022e1bd 100644 --- a/tests/RawHttpResponseWrapper.spec.ts +++ b/tests/RawHttpResponseWrapper.spec.ts @@ -32,7 +32,7 @@ describe('RawHttpResponseWrapper', () => { expect(rawResponse).not.toEqual(mockResponse) expect(rawResponse.statusCode).toBe(500) expect(rawResponse.body).toBeUndefined() - expect(rawResponse.statusMessage).toBe('') expect(rawResponse.headers).toBeUndefined() + expect(rawResponse.statusMessage).toBeUndefined() }) }) diff --git a/tests/RawResponseWrapper.spec.ts b/tests/RawResponseWrapper.spec.ts deleted file mode 100644 index 275e001..0000000 --- a/tests/RawResponseWrapper.spec.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { RawResponse } from '../src/declarations' -import { RawResponseWrapper } from '../src/RawResponseWrapper' - -describe('RawResponseWrapper', () => { - let mockResponse: RawResponse - - beforeEach(() => { - // Mock the ServerResponse object - mockResponse = { - statusCode: 404, - statusMessage: 'Not Found', - body: 'Hello, world!', - headers: { 'Content-Type': 'application/json' } - } - }) - - it('should set status code and message when options are provided', () => { - const wrapper = RawResponseWrapper.create(mockResponse) - - const rawResponse = wrapper.respond() - - expect(rawResponse).toEqual(mockResponse) - expect(rawResponse.statusCode).toBe(404) - expect(rawResponse.statusMessage).toBe('Not Found') - }) - - it('should handle missing options gracefully', () => { - const wrapper = RawResponseWrapper.create({}) - - const rawResponse = wrapper.respond() - - expect(rawResponse).not.toEqual(mockResponse) - expect(rawResponse).toEqual({}) - }) -}) diff --git a/tests/decorators/AwsLambda.spec.ts b/tests/decorators/AwsLambda.spec.ts deleted file mode 100644 index 372a1d2..0000000 --- a/tests/decorators/AwsLambda.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Mock } from 'vitest' -import { addBlueprint } from '@stone-js/core' -import { AwsLambda, AwsLambdaOptions } from '../../src/decorators/AwsLambda' -import { awsLambdaAdapterBlueprint } from '../../src/options/AwsLambdaAdapterBlueprint' - -/* eslint-disable @typescript-eslint/no-extraneous-class */ - -// Mock setClassMetadata -vi.mock('@stone-js/core') - -describe('AwsLambda', () => { - it('should call setClassMetadata with correct parameters', () => { - (addBlueprint as Mock).mockReturnValueOnce(() => {}) - const options: AwsLambdaOptions = awsLambdaAdapterBlueprint.stone.adapters?.[0] ?? {} - AwsLambda(options)(class {}, {} as any) - expect(addBlueprint).toHaveBeenCalled() - }) - - it('should call setClassMetadata with default options if none are provided', () => { - vi.mocked(addBlueprint).mockImplementation(() => {}) - AwsLambda()(class {}, {} as any) - expect(addBlueprint).toHaveBeenCalled() - }) -}) diff --git a/tests/decorators/AwsLambdaHttp.spec.ts b/tests/decorators/AwsLambdaHttp.spec.ts index 4617a40..84f55dc 100644 --- a/tests/decorators/AwsLambdaHttp.spec.ts +++ b/tests/decorators/AwsLambdaHttp.spec.ts @@ -5,20 +5,30 @@ import { awsLambdaHttpAdapterBlueprint } from '../../src/options/AwsLambdaHttpAd /* eslint-disable @typescript-eslint/no-extraneous-class */ -// Mock setClassMetadata -vi.mock('@stone-js/core') +// Mock @stone-js/core +vi.mock('@stone-js/core', async (importOriginal) => { + const actual: any = await importOriginal() + return { + ...actual, + addBlueprint: vi.fn(() => {}), + classDecoratorLegacyWrapper: (fn: Function) => { + fn() + return fn + } + } +}) describe('AwsLambdaHttp', () => { - it('should call setClassMetadata with correct parameters', () => { + it('should call addBlueprint with correct parameters', () => { (addBlueprint as Mock).mockReturnValueOnce(() => {}) const options: AwsLambdaHttpOptions = awsLambdaHttpAdapterBlueprint.stone.adapters?.[0] ?? {} - AwsLambdaHttp(options)(class {}, {} as any) + AwsLambdaHttp(options)(class {}) expect(addBlueprint).toHaveBeenCalled() }) - it('should call setClassMetadata with default options if none are provided', () => { + it('should call addBlueprint with default options if none are provided', () => { vi.mocked(addBlueprint).mockImplementation(() => {}) - AwsLambdaHttp()(class {}, {} as any) + AwsLambdaHttp()(class {}) expect(addBlueprint).toHaveBeenCalled() }) }) diff --git a/tests/middleware/BlueprintMiddleware.spec.ts b/tests/middleware/BlueprintMiddleware.spec.ts new file mode 100644 index 0000000..03ca280 --- /dev/null +++ b/tests/middleware/BlueprintMiddleware.spec.ts @@ -0,0 +1,62 @@ +import { + metaAdapterBlueprintMiddleware, + SetAwsLambdaHttpResponseResolverMiddleware +} from '../../src/middleware/BlueprintMiddleware' +import { File } from '@stone-js/filesystem' +import { AWS_LAMBDA_HTTP_PLATFORM } from '../../src/constants' +import { OutgoingHttpResponse, BinaryFileResponse } from '@stone-js/http-core' + +describe('SetAwsLambdaHttpResponseResolverMiddleware', () => { + let mockBlueprint: any + let next: any + + beforeEach(() => { + next = vi.fn().mockResolvedValue('blueprint-updated') + mockBlueprint = { + get: vi.fn().mockReturnValue(AWS_LAMBDA_HTTP_PLATFORM), + set: vi.fn() + } + }) + + it('should set responseResolver when platform is aws-lambda-http', async () => { + const context = { blueprint: mockBlueprint } + + const result = await SetAwsLambdaHttpResponseResolverMiddleware(context as any, next) + + expect(result).toBe('blueprint-updated') + expect(mockBlueprint.set).toHaveBeenCalledWith( + 'stone.kernel.responseResolver', + expect.any(Function) + ) + + // Test resolver behavior + const resolver = mockBlueprint.set.mock.calls[0][1] + + const file = File.create('/path/to/file.txt', false) + file.isReadable = vi.fn().mockReturnValue(true) + const response1 = resolver({ content: file }) + expect(response1).toBeInstanceOf(BinaryFileResponse) + + const response2 = resolver({ content: 'hello', statusCode: 200 }) + expect(response2).toBeInstanceOf(OutgoingHttpResponse) + }) + + it('should not set resolver if platform is not aws-lambda-http', async () => { + mockBlueprint.get = vi.fn().mockReturnValue('other-platform') + + const context = { blueprint: mockBlueprint } + + const result = await SetAwsLambdaHttpResponseResolverMiddleware(context as any, next) + + expect(result).toBe('blueprint-updated') + expect(mockBlueprint.set).not.toHaveBeenCalled() + }) +}) + +describe('metaAdapterBlueprintMiddleware', () => { + it('should export correct middleware list', () => { + expect(metaAdapterBlueprintMiddleware).toEqual([ + { module: SetAwsLambdaHttpResponseResolverMiddleware, priority: 6 } + ]) + }) +}) diff --git a/tests/middleware/BodyEventMiddleware.spec.ts b/tests/middleware/BodyEventMiddleware.spec.ts index 878b40d..c29707e 100644 --- a/tests/middleware/BodyEventMiddleware.spec.ts +++ b/tests/middleware/BodyEventMiddleware.spec.ts @@ -4,7 +4,7 @@ import { Mock } from 'vitest' import { isMultipart, getCharset } from '@stone-js/http-core' import { AwsLambdaHttpAdapterContext } from '../../src/declarations' import { BodyEventMiddleware } from '../../src/middleware/BodyEventMiddleware' -import { AwsLambdaAdapterError } from '../../src/errors/AwsLambdaAdapterError' +import { AwsLambdaHttpAdapterError } from '../../src/errors/AwsLambdaHttpAdapterError' vi.mock('bytes') vi.mock('type-is') @@ -40,7 +40,7 @@ describe('BodyEventMiddleware', () => { headers: { 'content-type': 'application/json', 'content-length': '123' } }, incomingEventBuilder: { - add: vi.fn() + add: vi.fn().mockReturnThis() } } as unknown as AwsLambdaHttpAdapterContext @@ -51,14 +51,14 @@ describe('BodyEventMiddleware', () => { // @ts-expect-error mockContext.rawEvent = undefined - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) // @ts-expect-error mockContext.rawEvent = {} // @ts-expect-error mockContext.incomingEventBuilder = null - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) }) it('should skip body parsing if the request is multipart', async () => { @@ -98,12 +98,13 @@ describe('BodyEventMiddleware', () => { vi.mocked(getCharset).mockReturnValue('utf-8') vi.mocked(typeIs.is).mockReturnValue('json') - mockContext.rawEvent.body = { key: 'value' } + mockContext.rawEvent.body = { key: 'value', $method$: 'POST' } await middleware.handle(mockContext, next) expect(mockBlueprint.get).toHaveBeenCalledWith('stone.http.body', expect.any(Object)) - expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('body', { key: 'value' }) + expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('body', { key: 'value', $method$: 'POST' }) + expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('method', 'POST') expect(next).toHaveBeenCalledWith(mockContext) }) @@ -130,7 +131,7 @@ describe('BodyEventMiddleware', () => { mockContext.rawEvent.headers = { 'Content-Type': 'multipart/form-data', 'Content-Length': '999999999' } - await expect(async () => await middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(async () => await middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) expect(next).not.toHaveBeenCalledWith(mockContext) // @ts-expect-error Buffer.byteLength.mockRestore() diff --git a/tests/middleware/FilesEventMiddleware.spec.ts b/tests/middleware/FilesEventMiddleware.spec.ts index d8c4882..0a5deda 100644 --- a/tests/middleware/FilesEventMiddleware.spec.ts +++ b/tests/middleware/FilesEventMiddleware.spec.ts @@ -1,7 +1,7 @@ import { Mock } from 'vitest' import { AwsLambdaHttpAdapterContext } from '../../src/declarations' import { isMultipart, getFilesUploads } from '@stone-js/http-core' -import { AwsLambdaAdapterError } from '../../src/errors/AwsLambdaAdapterError' +import { AwsLambdaHttpAdapterError } from '../../src/errors/AwsLambdaHttpAdapterError' import { FilesEventMiddleware } from '../../src/middleware/FilesEventMiddleware' vi.mock('@stone-js/http-core') @@ -35,14 +35,14 @@ describe('FilesEventMiddleware', () => { // @ts-expect-error mockContext.rawEvent = undefined - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) // @ts-expect-error mockContext.rawEvent = {} // @ts-expect-error mockContext.incomingEventBuilder = null - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) }) it('should skip file upload handling if the request is not multipart', async () => { @@ -62,7 +62,7 @@ describe('FilesEventMiddleware', () => { vi.mocked(isMultipart).mockReturnValue(true) vi.mocked(getFilesUploads).mockResolvedValue({ files: { filename: [{ name: 'file1.txt', size: 123 }] } as any, - fields: { key: 'value' } + fields: { key: 'value', $method$: 'POST' } as any }) await middleware.handle(mockContext, next) @@ -71,7 +71,8 @@ describe('FilesEventMiddleware', () => { expect(mockBlueprint.get).toHaveBeenCalledWith('stone.http.files.upload', {}) expect(getFilesUploads).toHaveBeenCalledWith(mockContext.rawEvent, {}) expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('files', { filename: [{ name: 'file1.txt', size: 123 }] }) - expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('body', { key: 'value' }) + expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('body', { key: 'value', $method$: 'POST' }) + expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('method', 'POST') expect(next).toHaveBeenCalledWith(mockContext) }) diff --git a/tests/middleware/IncomingEventMiddleware.spec.ts b/tests/middleware/IncomingEventMiddleware.spec.ts index 7bfde85..f4b0dde 100644 --- a/tests/middleware/IncomingEventMiddleware.spec.ts +++ b/tests/middleware/IncomingEventMiddleware.spec.ts @@ -1,6 +1,6 @@ import proxyAddr from 'proxy-addr' -import { NextPipe } from '@stone-js/pipeline' -import { AwsLambdaAdapterError } from '../../src/errors/AwsLambdaAdapterError' +import { NextMiddleware } from '@stone-js/core' +import { AwsLambdaHttpAdapterError } from '../../src/errors/AwsLambdaHttpAdapterError' import { IncomingEventMiddleware } from '../../src/middleware/IncomingEventMiddleware' import { getProtocol, CookieCollection, getHostname, isIpTrusted } from '@stone-js/http-core' import { AwsLambdaHttpAdapterContext, AwsLambdaHttpAdapterResponseBuilder } from '../../src/declarations' @@ -20,7 +20,7 @@ describe('IncomingEventMiddleware', () => { let mockBlueprint: any let middleware: IncomingEventMiddleware let mockContext: AwsLambdaHttpAdapterContext - let next: NextPipe + let next: NextMiddleware beforeEach(() => { mockBlueprint = { @@ -46,7 +46,8 @@ describe('IncomingEventMiddleware', () => { }, rawResponse: {}, incomingEventBuilder: { - add: vi.fn().mockReturnThis() + add: vi.fn().mockReturnThis(), + addIf: vi.fn().mockReturnThis() } } as unknown as AwsLambdaHttpAdapterContext @@ -58,16 +59,16 @@ describe('IncomingEventMiddleware', () => { it('should throw error if context is missing rawEvent or incomingEventBuilder', async () => { // @ts-expect-error - mockContext.rawEvent = null + mockContext.rawEvent = undefined - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) // @ts-expect-error mockContext.rawEvent = { foo: 'bar' } as any // @ts-expect-error - mockContext.incomingEventBuilder = null + mockContext.incomingEventBuilder = undefined - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) }) it('should call next with the modified context', async () => { @@ -82,7 +83,7 @@ describe('IncomingEventMiddleware', () => { expect(next).toHaveBeenCalledWith(mockContext) expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('ips', []) - expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('method', 'GET') + expect(mockContext.incomingEventBuilder?.addIf).toHaveBeenCalledWith('method', 'GET') expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('url', expect.any(URL)) expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('cookies', { testCookie: 'value' }) expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('headers', mockContext.rawEvent?.headers) @@ -93,7 +94,7 @@ describe('IncomingEventMiddleware', () => { mockContext.rawEvent.requestContext.httpMethod = 'GET' await middleware.handle(mockContext, next) - expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('method', 'GET') + expect(mockContext.incomingEventBuilder?.addIf).toHaveBeenCalledWith('method', 'GET') // Handle http method from requestContext.http.method mockContext.rawEvent.httpMethod = undefined @@ -103,7 +104,7 @@ describe('IncomingEventMiddleware', () => { mockContext.rawEvent.requestContext.http.method = 'GET' await middleware.handle(mockContext, next) - expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('method', 'GET') + expect(mockContext.incomingEventBuilder?.addIf).toHaveBeenCalledWith('method', 'GET') // Return default http method mockContext.rawEvent.httpMethod = undefined @@ -113,7 +114,7 @@ describe('IncomingEventMiddleware', () => { mockContext.rawEvent.requestContext.http.method = undefined await middleware.handle(mockContext, next) - expect(mockContext.incomingEventBuilder?.add).toHaveBeenCalledWith('method', 'GET') + expect(mockContext.incomingEventBuilder?.addIf).toHaveBeenCalledWith('method', 'GET') }) it('should extract URL correctly', () => { diff --git a/tests/middleware/ServerResponseMiddleware.spec.ts b/tests/middleware/ServerResponseMiddleware.spec.ts index 78fa1ac..a3af2f3 100644 --- a/tests/middleware/ServerResponseMiddleware.spec.ts +++ b/tests/middleware/ServerResponseMiddleware.spec.ts @@ -2,7 +2,7 @@ import { Mock } from 'vitest' import statuses from 'statuses' import { BinaryFileResponse } from '@stone-js/http-core' import { AwsLambdaHttpAdapterContext } from '../../src/declarations' -import { AwsLambdaAdapterError } from '../../src/errors/AwsLambdaAdapterError' +import { AwsLambdaHttpAdapterError } from '../../src/errors/AwsLambdaHttpAdapterError' import { ServerResponseMiddleware } from '../../src/middleware/ServerResponseMiddleware' /* eslint-disable @typescript-eslint/no-extraneous-class */ @@ -48,14 +48,14 @@ describe('ServerResponseMiddleware', () => { // @ts-expect-error mockContext.rawEvent = undefined - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) // @ts-expect-error mockContext.rawEvent = {} // @ts-expect-error mockContext.rawResponseBuilder = null - await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaAdapterError) + await expect(middleware.handle(mockContext, next)).rejects.toThrow(AwsLambdaHttpAdapterError) }) it('should add headers, status code, and status message to the response builder', async () => { @@ -82,11 +82,15 @@ describe('ServerResponseMiddleware', () => { it('should add body and charset if the response is not a BinaryFileResponse', async () => { // @ts-expect-error vi.mocked(mockContext.incomingEvent.isMethod).mockReturnValue(false) + const content = Buffer.from('{"success": true}') + // @ts-expect-error + mockContext.outgoingResponse.content = content await middleware.handle(mockContext, next) - expect(mockContext.rawResponseBuilder?.add).toHaveBeenCalledWith('body', '{"success": true}') expect(mockContext.rawResponseBuilder?.add).toHaveBeenCalledWith('charset', 'utf-8') + expect(mockContext.rawResponseBuilder?.add).toHaveBeenCalledWith('isBase64Encoded', true) + expect(mockContext.rawResponseBuilder?.add).toHaveBeenCalledWith('body', content.toString('base64')) }) it('should stream file if the response is a BinaryFileResponse', async () => { diff --git a/tests/resolvers.spec.ts b/tests/resolvers.spec.ts index 47c1078..ba4fe9f 100644 --- a/tests/resolvers.spec.ts +++ b/tests/resolvers.spec.ts @@ -1,24 +1,16 @@ import { IBlueprint } from '@stone-js/core' -import { AWSLambdaAdapter } from '../src/AWSLambdaAdapter' -import { AWSLambdaHttpAdapter } from '../src/AWSLambdaHttpAdapter' -import { awsLambdaAdapterResolver, awsLambdaHttpAdapterResolver } from '../src/resolvers' +import { awsLambdaHttpAdapterResolver } from '../src/resolvers' +import { AwsLambdaHttpAdapter } from '../src/AWSLambdaHttpAdapter' const mockBlueprint = { get: vi.fn().mockReturnValue(() => ({})) } as unknown as IBlueprint describe('AwsLambdaAdapter Resolvers', () => { - describe('awsLambdaAdapterResolver', () => { - it('should create a Kernel instance with the correct configuration', () => { - const adapter = awsLambdaAdapterResolver(mockBlueprint) - expect(adapter).toBeInstanceOf(AWSLambdaAdapter) - }) - }) - describe('awsLambdaHttpAdapterResolver', () => { it('should create a Kernel instance with the correct configuration', () => { const adapter = awsLambdaHttpAdapterResolver(mockBlueprint) - expect(adapter).toBeInstanceOf(AWSLambdaHttpAdapter) + expect(adapter).toBeInstanceOf(AwsLambdaHttpAdapter) }) }) }) diff --git a/typedoc.json b/typedoc.json index 039a59f..98fd033 100644 --- a/typedoc.json +++ b/typedoc.json @@ -1,8 +1,8 @@ { "entryPoints": ["src/**/*.ts"], // Entry point for your project, change accordingly "out": "docs", // Output directory for the generated documentation - "name": "AWS Lambda Adapter Documentation", // Project name used in the docs - "includeVersion": true, // Optional: Include project version in the output + "name": "AWS Lambda HTTP Adapter", // Project name used in the docs + "includeVersion": false, // Optional: Include project version in the output "tsconfig": "./tsconfig.json", // Path to your TypeScript configuration "theme": "default", // Use default or custom theme (custom themes can be pointed to by path) "plugin": ["typedoc-plugin-markdown"], // Load plugins like Markdown support @@ -10,5 +10,10 @@ "excludePrivate": true, // Exclude private members from the docs "excludeProtected": false, // Optionally include or exclude protected members "excludeExternals": true, // Exclude external modules - "disableSources": false // Show source links in the documentation + "disableSources": true, // Hide source links in the documentation + "readme": "none", // Don't generate README.md + "hidePageHeader": true, // Hide the page header + "hideGroupHeadings": true, // Hide the project name link in the header + "hideBreadcrumbs": true, // Hide breadcrumbs + "useCodeBlocks": true, // Use code blocks for code examples } diff --git a/vitest.config.ts b/vitest.config.ts index d080e8e..1dcf1dc 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ coverage: { provider: 'v8', include: ['src/**/*.ts'], - reporter: ['text', 'html'], + reporter: ['text', 'html', 'lcov'], reportsDirectory: './coverage', thresholds: { 100: true