From a8d273176ac51afa4534828881547cda2ed64c76 Mon Sep 17 00:00:00 2001 From: Matt McKinney Date: Thu, 5 Feb 2026 19:01:58 -0800 Subject: [PATCH] Add MyVibe Publish skill for deploying web projects Adds a curated skill for publishing web projects (HTML, ZIP, directories, URLs) to MyVibe (myvibe.so) with automatic project type detection, build support, metadata extraction, screenshot generation, and version history. Co-Authored-By: Claude Opus 4.6 --- skills/.curated/myvibe-publish/LICENSE.txt | 191 + skills/.curated/myvibe-publish/SKILL.md | 238 + .../myvibe-publish/agents/openai.yaml | 6 + .../myvibe-publish/assets/myvibe-small.svg | 5 + .../.curated/myvibe-publish/assets/myvibe.png | Bin 0 -> 45965 bytes .../myvibe-publish/scripts/package-lock.json | 11091 ++++++++++++++++ .../myvibe-publish/scripts/package.json | 19 + .../myvibe-publish/scripts/publish.mjs | 592 + .../myvibe-publish/scripts/utils/auth.mjs | 178 + .../scripts/utils/constants.mjs | 77 + .../scripts/utils/fetch-tags.mjs | 289 + .../scripts/utils/generate-screenshot.mjs | 563 + .../myvibe-publish/scripts/utils/history.mjs | 91 + .../myvibe-publish/scripts/utils/http.mjs | 229 + .../myvibe-publish/scripts/utils/store.mjs | 74 + .../scripts/utils/upload-image.mjs | 318 + .../myvibe-publish/scripts/utils/upload.mjs | 240 + .../myvibe-publish/scripts/utils/zip.mjs | 117 + 18 files changed, 14318 insertions(+) create mode 100644 skills/.curated/myvibe-publish/LICENSE.txt create mode 100644 skills/.curated/myvibe-publish/SKILL.md create mode 100644 skills/.curated/myvibe-publish/agents/openai.yaml create mode 100644 skills/.curated/myvibe-publish/assets/myvibe-small.svg create mode 100644 skills/.curated/myvibe-publish/assets/myvibe.png create mode 100644 skills/.curated/myvibe-publish/scripts/package-lock.json create mode 100644 skills/.curated/myvibe-publish/scripts/package.json create mode 100644 skills/.curated/myvibe-publish/scripts/publish.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/auth.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/constants.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/fetch-tags.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/generate-screenshot.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/history.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/http.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/store.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/upload-image.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/upload.mjs create mode 100644 skills/.curated/myvibe-publish/scripts/utils/zip.mjs diff --git a/skills/.curated/myvibe-publish/LICENSE.txt b/skills/.curated/myvibe-publish/LICENSE.txt new file mode 100644 index 0000000..af57839 --- /dev/null +++ b/skills/.curated/myvibe-publish/LICENSE.txt @@ -0,0 +1,191 @@ + + 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 the 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 the 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 any 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 + + Copyright 2026 ArcBlock + + 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. diff --git a/skills/.curated/myvibe-publish/SKILL.md b/skills/.curated/myvibe-publish/SKILL.md new file mode 100644 index 0000000..867db77 --- /dev/null +++ b/skills/.curated/myvibe-publish/SKILL.md @@ -0,0 +1,238 @@ +--- +name: myvibe-publish +description: Deploy web projects to MyVibe. Use when the user asks to publish, deploy, or host web content (HTML, ZIP, directory, or URL) on MyVibe. +--- + +# MyVibe Publish + +Deploy any web project to [MyVibe](https://www.myvibe.so) instantly. Supports HTML files, ZIP archives, directories, and URL imports with automatic project type detection. + +## Prerequisites + +- Node.js 18 or later +- When sandboxing blocks deployment network calls, rerun with `sandbox_permissions=require_escalated`. +- The deployment and screenshot generation may take a few minutes. Use a 10-minute (600000ms) timeout for publish commands. + +## Quick Start + +**Just run this (with a 10-minute timeout):** +```bash +node scripts/publish.mjs --dir ./dist +``` + +If dependencies are missing, install them first: +```bash +cd scripts && npm install && cd .. +``` + +## Options + +| Option | Alias | Description | +|--------|-------|-------------| +| `--file ` | `-f` | Path to HTML file or ZIP archive | +| `--dir ` | `-d` | Directory to compress and publish | +| `--url ` | `-u` | URL to import and publish | +| `--hub ` | `-h` | MyVibe URL (default: https://www.myvibe.so/) | +| `--title ` | `-t` | Project title | +| `--desc <desc>` | | Project description | +| `--visibility <vis>` | `-v` | Visibility: public or private (default: public) | +| `--did <did>` | | Vibe DID for version update (overrides auto-detection) | +| `--new` | | Force create new Vibe, ignore publish history | + +## Workflow Overview + +1. **Detect Project Type** - if no build needed, start screenshot in background +2. **Build** (if needed) - then start screenshot in background +3. **Metadata Analysis** - extract title, description, tags +4. **Confirm Publish** - show metadata, get user confirmation +5. **Execute Publish** - script auto-reads screenshot result +6. **Return Result** - show publish URL + +**Before proceeding, gather the following information:** +- Read the source file or main files in the directory +- Run: `git remote get-url origin 2>/dev/null || echo "Not a git repo"` +- Run: `node scripts/utils/fetch-tags.mjs --hub {hub}` + +--- + +## Step 1: Detect Project Type + +| Check | Project Type | Next Step | +|-------|-------------|-----------| +| `--file` with HTML/ZIP | **Single File** | Start screenshot, then Step 3 | +| Has `dist/`, `build/`, or `out/` with index.html | **Pre-built** | Step 2 (confirm rebuild) | +| Has `package.json` with build script, no output | **Buildable** | Step 2 (build first) | +| Multiple `package.json` or workspace config | **Monorepo** | Step 2 (select app) | +| Has `index.html` at root, no `package.json` | **Static** | Start screenshot, then Step 3 | + +**Start screenshot for non-build projects** (run in the background): + +For directory source (`--dir`): +```bash +node scripts/utils/generate-screenshot.mjs --dir {publish_target} --hub {hub} +``` + +For single file source (`--file`): +```bash +node scripts/utils/generate-screenshot.mjs --file {publish_target} --hub {hub} +``` + +IMPORTANT: Use `--file` when the source is a single HTML file, and `--dir` when it is a directory. The flag must match the `source.type` in the publish config so that both scripts calculate the same hash for the screenshot result file. + +--- + +## Step 2: Build (if needed) + +Detect package manager from lock files, build command from package.json scripts. + +Ask the user to confirm: +- **Pre-built**: "Rebuild or use existing output?" +- **Buildable**: "Build before publishing?" +- **Monorepo**: "Which app to publish?" + +After build completes, start screenshot in the background, then proceed to Step 3. + +--- + +## Step 3: Metadata Analysis + +### Extract title +Priority: `<title>` → `og:title` → package.json name → first `<h1>` + +### Generate description (50-150 words, story-style) + +Cover: **Why** (motivation) → **What** (functionality) → **Journey** (optional) + +Sources: conversation history, README.md, source code, package.json, git log + +Guidelines: +- Natural, conversational tone +- Focus on value and story, not technical specs +- Avoid generic "A web app built with React" + +### Extract githubRepo +From git remote or package.json repository field. Convert SSH to HTTPS format. + +### Match tags + +Fetch tags: `node scripts/utils/fetch-tags.mjs --hub {hub}` + +| Tag Type | Match Method | +|----------|--------------| +| **techStackTags** | Match package.json dependencies against tag slug | +| **platformTags** | From conversation context (Codex, Claude Code, Cursor, etc.) | +| **modelTags** | From conversation context (GPT-4, Claude 3.5, etc.) | +| **categoryTags** | Infer from project (game libs → game, charts → viz) | + +--- + +## Step 4: Confirm Publish + +Display metadata and ask the user for confirmation: + +``` +Publishing to MyVibe: +────────────────────── +Title: [value] + +Description: +[50-150 word story] + +GitHub: [URL or "Not detected"] +Cover Image: [Will be included if ready] + +Tags: Tech Stack: [...] | Platform: [...] | Category: [...] | Model: [...] +``` + +Options: "Publish" / "Edit details" + +--- + +## Step 5: Execute Publish + +**Check dependencies**: If `scripts/node_modules` missing, run `npm install` first. +**No need to check screenshot background task result** - the publish script automatically waits for and reads the screenshot result. Execute publish directly: + +Pass config via stdin: + +```bash +node scripts/publish.mjs --config-stdin <<'EOF' +{ + "source": { "type": "dir", "path": "./dist", "did": "z2qaXXXX" }, + "hub": "https://www.myvibe.so", + "metadata": { + "title": "My App", + "description": "Story description here", + "visibility": "public", + "githubRepo": "https://github.com/user/repo", + "platformTags": [1, 2], + "techStackTags": [3, 4], + "categoryTags": [5], + "modelTags": [6] + } +} +EOF +``` + +- `did` optional - for explicit version updates +- `coverImage` auto-read from `/tmp/myvibe-screenshot-{hash}.json` +- Screenshot result file cleaned up after publish + +--- + +## Step 6: Return Result + +After publish script completes, **check the script output** for these messages: + +### Success Message +Always include the Vibe URL in your response: +``` +Published successfully! +[URL] +``` + +### Upgrade Prompt (Important) +The script prints an upgrade prompt when updating an existing Vibe without version history enabled: +``` +Previous version overwritten. Want to keep version history? +Upgrade to Creator at {hub}/pricing +``` + +**You MUST include this upgrade information in your response to the user if the script output contains it.** This helps free-tier users discover the version history feature. + +--- + +## Error Handling + +| Error | Action | +|-------|--------| +| Dependencies missing | Run `npm install` in scripts directory | +| 401/403 Auth error | Token auto-cleared, re-run to authorize | +| Build failed | Analyze error, offer fix, or publish source as-is | +| Screenshot failed | Skip coverImage, proceed without it | +| agent-browser missing | Run `npm install -g agent-browser && agent-browser install` | +| Private mode error | See "Private Mode Error Handling" below | + +### Private Mode Error Handling + +When publishing with `visibility: private` fails with "Private mode is only available for Creator and Studio users", ask the user how they would like to proceed: + +**Question:** "Private publishing requires a Creator or Studio subscription. How would you like to proceed?" + +| Option | Label | Description | +|--------|-------|-------------| +| 1 | Publish as Public | Your Vibe will be visible to everyone. You can change this later after upgrading. | +| 2 | View Upgrade Options | Open the pricing page to explore subscription plans with private publishing. | + +**Actions based on selection:** +- **Option 1**: Re-run publish with `visibility: "public"`, inform user the Vibe is now public +- **Option 2**: Display the pricing URL `{hub}/pricing` and stop the publish flow + +## Notes + +- Always analyze content for meaningful title/description - never use directory names +- Confirm with user before publishing +- Default hub: https://www.myvibe.so/ +- Tags cached 7 days locally +- Publish history in `~/.myvibe/published.yaml` for auto version updates +- Use `--new` to force new Vibe instead of updating diff --git a/skills/.curated/myvibe-publish/agents/openai.yaml b/skills/.curated/myvibe-publish/agents/openai.yaml new file mode 100644 index 0000000..0ac74ad --- /dev/null +++ b/skills/.curated/myvibe-publish/agents/openai.yaml @@ -0,0 +1,6 @@ +interface: + display_name: "MyVibe Publish" + short_description: "Deploy web projects to MyVibe with automatic project detection and deployment" + icon_small: "./assets/myvibe-small.svg" + icon_large: "./assets/myvibe.png" + default_prompt: "Publish this project to MyVibe and share the URL." diff --git a/skills/.curated/myvibe-publish/assets/myvibe-small.svg b/skills/.curated/myvibe-publish/assets/myvibe-small.svg new file mode 100644 index 0000000..60a3095 --- /dev/null +++ b/skills/.curated/myvibe-publish/assets/myvibe-small.svg @@ -0,0 +1,5 @@ +<svg width="200" height="200" viewBox="0 0 200 200" fill="none" xmlns="http://www.w3.org/2000/svg"> + <path d="M100.333 162.667C134.759 162.667 162.667 134.759 162.667 100.333C162.667 65.9076 134.759 38 100.333 38C65.9076 38 38 65.9076 38 100.333C38 134.759 65.9076 162.667 100.333 162.667Z" stroke="currentColor" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/> + <path d="M100.334 38C84.328 54.806 75.4004 77.125 75.4004 100.333C75.4004 123.542 84.328 145.861 100.334 162.667C116.339 145.861 125.267 123.542 125.267 100.333C125.267 77.125 116.339 54.806 100.334 38Z" stroke="currentColor" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/> + <path d="M38 100.333H162.667" stroke="currentColor" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/> +</svg> diff --git a/skills/.curated/myvibe-publish/assets/myvibe.png b/skills/.curated/myvibe-publish/assets/myvibe.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4c08ef151054edf9c485b6675826faed04e8f0 GIT binary patch literal 45965 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%0A)C9#+lzf(T_EPuH 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 njcpC(81m#z;B`Pj4AVyV^GRYs(G8}!@mezPMb zD5PZkyGOzWVP=R0C)QjA5`?H=WajZ=L+$<ss82v1$hVy~&{JyM<>Dg-+3fq)140J8 z5Cie;Y;F(cFdD;9QHvVHwY?v8m#I0a&Oh%=x#`JaIH5bq1CeU&SW<fPy@30Br)(GB zElr+q{idaPQ^yBxkplGkY`%LI9d!zaPDcz8&|KSgS<v&ZEkZoU-r@S}PmJ1suSG6A z!Dq2Fpo6{muEq-Rj(sfsI(@^ZlE+^402-KVHjXJ16+^Uxf~I{xeP^%46W>NHSggst zIkJVukLs4ZS)gJLrHvW5>2)@vIP7r$nhQ6vv#=PEr?T@rytFBaO?d6_Sng~udbvF= zj{K0!o2FT308Y?V@OJjoS`V&1D*@B%vv<4)WU@w`yf0`$!W&P1KZz<luM%!hq>CyV z$Je$(cH-?(%U+@J$6I;MA31y&ygXUL*H#TfbM@?&;6uRoru~xBvk(m~_eV48^ENPN zo%<a%Ft2w~>t2a{q~0`?*RiVVP}Z?SQqta6EuYLWJRnG3+qvJ6Jy1)*;gQ|=sL)%p z-o~ZpFQTwzI3+67ReX^_11u~VuH1Ms70fq0ckQac%ZMq3WFe`t<RH=fGxna#<aKy; zMcMo?3q~jgL$+N&k~=m1RB2N2z$RsF`A7wMs-eCYDykML0>ZCTKPgnPu7*~MgR3He zAI2`I8-Lw!g&oAQl_DyaL_j7)f!LtZ|LP(`3TI_D+NEv!wG%A+PO=ewXUYO+x3ska z{dYl%kFKu9j`Zu!T9=~{^%iSx)iagi#Kk$upH@GwK-wL8Z9WS?VGHkSnM_FYau5Is zyI}8&t(!YY;@K5%MBjZSkgPAA57<%+bl%d?pX?C?tbLacXnhiPNlr)m+kMi~P(4PS zG1+j&*P*S@t_wvhbX1KLrCJnbX6n$#wUrtsSM|F&U*;cLt-_|0hRvt4ECm)dgh~jn zo~rI*$OgPbfNy~`v=1HTEs$y;_GsDc!Iu^QKPtyMq6jFS0SP%Zb*Mu=x0pVv(U_UB z@`B>&DoU4XiAN!*Plc_Ns?dePj<~t3d;h4Mg%86Bb`in6_idXgW7MeKSs7wq=v8+p zHXC&FFkJP@oxWM9#nthw9%|3qCZ);Sc!uo+RYp!dP!Ep?e3CLh90VAFIktx|_5yiD zGxE@Np|fLd(KZhwf0X$!=bP1PAE>yT9Xd2OY(oQPqWlgG2^p2hDm}L3@hOi2`v<%^ zliT|0%3qFVXcc*_e7x_eZ~gpofTP@NS?Cv<OI|tk*ij`RgtEJRcSje4r$Bv19$md9 z#M2ih*Lk+8K|Z=s1`Gz88BX>SLS-|n$5z&HVW(t7Q9Wim1~*imG+KVHt(@{w0$Eb) zLwG5Q+!|gHz7jjiS)NB#cJN(+p#cw0QR1+MLN<`BcP0Y58#em2g4he++*MR_j?4z@ zrd-F+#~Eksy%c?_F~VFnd@L}b|G8y-F6Urc^`Mwab;jZny0}{Sw~O|?xF{_!m4;C_ zVE|4PP5R9vn5@XvX9#Pwr}hw)Rz@%wcduY;g?GWOp;6lf-5C0)tfXXGCq>lho1<rY zpe@#Jwx%O2x+!JP6`w+;K4a~~skZ^c#Rpnbk`w?1Ff^!>v-F@)<<!-aX9lekUt3Qj z>u%4UJ`&d`0YT^94Qqxw{N~5kb5V1Km{HcZ;L`8`clhoU;ozF%I|<Eo7f9c}`yCfZ zW1)@hfoWRo$EgG@CAqN9Pm?!=P2}W!)E4fKzN+GUCUn?;WoL~Qh__`!N1ZI2W2CeU zUW63^LwZhS?du8`+(Gmq1xzp6#x3$>wqcyx(%yGdku+kweL7<@g>PqKXO%+Ax^TO8 z$#Z#SQ<qing}Y@QY)#0Hn)t93(};qTD9q9Xd6=S7vN-(#1);pY<s-MscNnUpTO>3M zjCuu_blnQnY185UpIYi8CW>RacI^S~3f%1GMIX<GXp6U9K)=u?W9JGuDw#qIef1v! z5rlgva;zrZZaK93sAn-bW<Xx<k?HL%C;bA<WAR(=s_{yE7o-$D1^f_h;ckWso*|i= zv3&+Efhsj%n)aotF9$A^6V%}~`_WqMv2dCY{lbR3z|pHnx(7K7y^9AQE9x;%b?tA_ z%N{1murQZ7)G6p{y?OKN=|T%tWrK<POf8e1bE&0J^`Ov60KE|M^fjY9f@c>l8N8%Q z8jL@>kD?8$9kF-xnf3i-Wq}r;bIx4Lc0jFqSbC|JdHDG*v+FiE+n0KuJ~E?>9i7As zgST8jF(1#<l+Ssm);2q<ats~PHlit$FX7m^^V0qP*!{6PPW8oiOBgznV-egvliBi( zU)F&$?5u1jLO>-?Ct__P(3lV0;HtgbO&Ku*$?_zCcP$4aoBT+g0D!~YcRP$nGcVWD zh~GKuQp+o~6p99&ZOcDHUwYeUK6|l*j!6jGz*xh=ERF*whH+kYea9nHD}s#ImK_MC zBIIY!<t;p%en{^SA?@msxccni$-b~!dBwrj6os_W4mlLnm6y?P{H7q^O<T=y@B;C3 zsqlb#Ve_2uUZF90O<B0&Tb?<a{?+8TO61#PN9{N`otk)nes2dWd+p=z_a}Jc`WsvL z94B;6?&<bEnJTudU0u;>ZI=U2aj4VMK7_bf(iX1us-Fbkm3G#yzIw1}l`O~dVGXk2 zU#QaeI^B@gQ!hr|TxRbVKRd?BI90e%^cw!7X@NZN=Bjs--jY=e)_$t<k%;itWF$~e zPF*YZBk%a15o~$-z%iRFUN>)i->tpTmvRk5nb0p0XM0c4^B4bqlY$yPH*CIKZv?g6 zCvkYt`b7O;8{uM2oM%?e5^>{G5i9lM=l!IV>t1KY1gUcOnRvp#TJ5_!@A_KQC&*K< zp@%U~z+>WCpZn6(=|Lee9{lCumzvot-4}mIz}U>t4oTW!vn6j4&gkb{TWv)~;7dzT z(~Oh|+qu&k9qU-F*tw|{(~c7hK7NC4U?-@d64L!VnZh;%OXI@NLi0+{&)FE9NLL0J z!j(Fag7rmb_;k;}C~{iL%DLGS&dvVHlOTCW^ZnRf*_K2tdue4LsEimXVyDb1icrwF z{&_TBbhUT?gAbow8v{3FvdJnc^g+takNML#oU=r`z{5qNo$T8s+?XlgF=xHXD4^E! zdy#Lc5HarNs+G+3=1;HstF(}HT713_TqF>@WouV-ywDh#Mn|j0en02$+f>ItPw`1Y zrFs4Vpj8jo=TQSa-)|MvFK;XoE8J?jvUwVgn>V6EE1WkR2j#cK5c7V6<W-ODm1nG; zUnl`VX%-1llKJ<($333*0jO|-qho<|u(p1;Q$r=64p(ZZ2t+xpTL~SbVNoaUy^{`` zQXPN%<3KzZi!bxQ&1ifU=x5UHElcM#h~W-PRlcAiG^Sp0*;Jp;G*&5Ig}1M2NJFSk z9;-cn;yedWG5HOS_-@$W32!u*)eo9Ud0XscG3~#Voue?@HDgHt0_&WAnF3uVVlY!9 zePD&ny2lpU!RXC{qQWWeh2Q_{>nH`v`=S)OFk4Ox)3o6n&_$wL1z@TB5wA_mOIF1< zQZK9vl?R-#Q~jR>jYJ<!iO)4f-*){pOj3YH#HAyA0?w3NW{c~EQ-RpDnboz?3RE1t zwI?JiuyzP*MD;AWT>y^O$<ggvlZmRsj<&RNxxUqhcQ9SfH!ZRr4!X-o^RH=~dZb0S zo|1JnwtDs=AqfMpHq^u^%8|<2OR?}c7-#EIQxN6{F>t~}|G&oKdA+UO?PneK?ea9k z8B!LR$&WRr=F5Ll_BC3mG$uS-Tv9mqpZK|nB%IgFwB8Cndt^g6KjYEZes%xp@jYGF zbx|9LWSx@clG^0Ho+irLdXheL8#<X|sl4<eX{>(epgfEV)psy7$2eD;6sT2V&=5>8 z6~;Vd7nT|8AI6Sz-qOgwSoi0-S2sI@cWe72Bx$_VMSxs(_fL<A6&!p5ib0*An*36T zyHF{5N)^I6<9e=S$!8+wId}SseR}d~9P_0CXpG{s)olI8P7~s9fx^6R*W&YXoFA1j zq(CP>N%$9LG7Kp^dYdim>IV060Z1s6zJ7J&s$4yw1N=-CgL9aKxCUiuJBOzN*MK`Y z_qvD07U4Y~Ti4}1CSZ3H{p;3vCCE<UrOUc0C(hT(d=>OQHUzg`KeT~y(s{0%`jkU6 z;Y3sJj6zICP4#doz~N!!?`&nvo&3FP?38zo{`U%{?acIE#sg-H)rkf;fNXXA$L(^^ z#4S0Q$wzExiHQ!ioMl&?1Kt^*jejNz(Kq=kc~pkxoVsxvQuCI&D!frj77s=mW>gt6 zTu0SxA~(#~iXd}pM*NjVoI?%G8B5?3^<5XSFL{kvznWGk;HJ324!=BtZ{Wev?amT% z8e9P|2Uaa;WI^x!*;f#Iw?=+QIojKZm!Je$e1{ojJ4jV#Agp?CxJhmQtkh%hb9gle zZHlkJ&hy;Z1VUDgHrr>x9vchpu1xKO4+gGkn^65xO(j}hY!AjEc7gXQ_-inI)lKEZ z__*YHq>V}%Rgjr5vZrBi#dI2!62Rxf-utttwo<&tJ{3-EO8&sm>mOM#^6cTQ3|TiD zsrKJ6{~U45m6nYS>5w-lPk`fR+f&ve6-pK}FrwsOGcJcUQai3AJd_+1fVtNq)5s?} zcq1mW=96Dd_&*A4h5Ci6S{m*-^jV#0qrEl4im6gg3@?idTaOe6Awz;G*Khvmq{(^? zp9<zRKqj4(b?bNn^<C33wPJJNxm75(G`Y+vG%2t)+$TJIOZGHHYl{~BPsUeShB{A% zGA}h9J~J6Qn2yHng5ugCbH<8XDNt-5p0pJE5F+g>eZEzfBN}qPTP){>?6KUmSB~sn zw;=7p_?6KcsSe_==*p#E=82emj}8{~A<%}c9{qd~VO=^Zfinz%#}=R=?_9rO8$?=z z{tQQ!Yh$qb1?~?s(v`UfR;@)?G^;wx@>3F&N+&4v5aXwng_S)$Vh118-oib8SnliD zca>pKnCKprW8zms6qkk62!y@b`xcUhgm&y#u4hD?Z+X7$lyfdlxGy2J7v6?Mb~vKs zY%4n2<R5VSFuIrmxc6wNB^Icv=#q3`hHJ4|+$=Qq7LIMg2{63r9qV;xbl!S0XPZ|( zq80EU+e)boq8G8<g4{s%_A^_ojob+sy~5AtHh|5}Cv2w@CZzM3GIDmxqJ*oQF~g-= zi?R)0K!fHm-KRgu&ncyxZU~kGj;{QV7D(z*R`y=H<C>pusN09|jo2LjQTxM?*cW*v zPu`EQD>ESI4P7aB82b;;q_DcF0UqrY1-uui8S=4VT2ZlBt@2t@dJsCJH7Eb1-n`+a zP8@=TRK~q!<=v3z<a(t5a;KIV<8&&3V%1^56rgiP*L4oeEMX|-GUEp5*Tp${Tob@7 z)t=H*4n%)FKmu&-|7?(!it{PKka!*pAMvoLed&3gLDVlTOC7)YcdcE)ZgS)CafV8E zO3v;>L+;I{0!6J12i7pAOA36ypBR>>5f-7x$xV7Qv7A|YVHQ7xQzYYRb-w){7p~lT zY~e>Mc$A(mGH-iVkyLVV>lNKYhP50;j*AnKKfS6II|@RS$<P&5Qtf_2n<-M_HI5Ph zSF8Lf*{)3B^s->i9&eM|p&da@AiA_+XgT581?LY#CGtK~BRzqxf(+>l0Z!Y)cl3Yt zUU@#=fZC{&UvM`3#aSXYZ8M*)LFZa=oFd(8;+pr->I?9oL^%_FG@Bdsq43`lxrf;F z7Sx^UD_}2yOH&a3anPJC<ID`6-trIZpcPyuv%Zu_DxBW@)*5R`k%6MCMJc|%UF1ff zpF6|fBH(vwG2_7_FzI=;4RxZtQfgL_X`Pqir_jJ*0X_tUYkIrco>@oKLX%%d*U?BG zCUz@QTTkEH#BY226!M-0D|d~;pu&W6idoB+r{C_glpf#qBrGHMsHGM0BX-;Ek`(A< zB`DlOE1>yZ3<~F%S{OlW0j+$>rYu$nWwGQ64r{KOjXsS!>LmDcj<DK=AKQgKVl@0G zMMydy*sS#0*=qRxcc3zw_ei{D(rrFD>=HrzgL9A5W2f@|6X-qXkbp;P?3k)R99mRF z65`@@$t0nbt?`0@r(7FCgI9XhwRKLm@ItrZg^VWey$A1B$Q8Oph*EazhXn~?gv<Yh zn6C)MCcZgeAXx!I7TB+hYlG`5NEm`r799Ivc3#On#j|AWU3}<z7d@RBlIUGS=T~`I z*)vycCZ&Pj)zc*}w<x%)ZNE=EjQ6v)Phss)oLkCGE#{d50#J(0!%a;G5qrc7U2A!< zrzdyffi`We)Cg=AkSc`#Q_n*IM8t)D>KTNX*XJLtY$kjy+ikN4pHJ6^<+FP}Jayge zc5>kX0h%Ik8vV+m%#zHaKA}o$RbSncXXAJFomF(#_BNHs8%(hlrBmgChVLCOVOe!a z@0Yu+#RjX^b%S%U_7z%^odwdV8sLgNDOv4DU*9E|pA`$MJ)HX87Lh0FO|byZ=ez~8 zOR(kq-H5LLVF^;RY&-cG{*3_yv?K4^ISZwT#q4yaS#~37td>7uJ%9?HLWu0QJHr=5 zcl5&paUCahHYF(_UmhasoaiP-B73sl&eOb=4W~Cd<SC93=RM<D5+}dL?>{12-;w+e zwA%D338YP>Q1U$hbu$oMc=(J+b*#D^u!RnQthexQs0jdE4PCeNbxgk7=IZkifJ3HE zv6CrXd{7(O!eKtvZqX2=A7eB_!LMT4H^$u`JnzlE;@S6_^R0Q;Le2z660_i|b?4TF zQPSrO%p;gS2(3&Pywn_>M>)-;3es`hy>%v}72~9+16Wz<(o*&XFKW?1or(%#7q9jQ zmU=6Xg>+|4Pt#alqj?y|!#pKq3JYElj2=$+yf&yWFf1H{^pnFYojm7rd^7Dp+2pTE zG2!z(to+a5YZcd87#sN)89kOh<h(xUA9;PS?<E0nCHHUN3T1`o?_Uvu=ieX*jM1CO zz8Z~_hrg1n;%@I0egWPTs%yTqJ;--f5OqbS_t4~KP9MO5Ee6nyRNeUx>t9@`qvVr1 zt;~xQ*g8ipnF|}6MKVR!_Yx^gfbzdV*<g7Cp)2v<Q%XPPC50dUef-xf=g#ui9sWki z-|X-=4E}<}Uy%HZ27fuzU#|F<6#cCY{@=C15}DSCDt@K>7R@0Q<#$)l_;$rDr<eZ& DmX$@c literal 0 HcmV?d00001 diff --git a/skills/.curated/myvibe-publish/scripts/package-lock.json b/skills/.curated/myvibe-publish/scripts/package-lock.json new file mode 100644 index 0000000..3ceb744 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/package-lock.json @@ -0,0 +1,11091 @@ +{ + "name": "myvibe-publish-scripts", + "version": "0.0.18", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "myvibe-publish-scripts", + "version": "0.0.18", + "dependencies": { + "@aigne/cli": "^1.59.0", + "@aigne/secrets": "^0.1.6", + "archiver": "^7.0.1", + "chalk": "^5.4.1", + "js-yaml": "^4.1.0", + "open": "^10.1.0", + "ufo": "^1.5.4" + } + }, + "node_modules/@aigne/afs": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@aigne/afs/-/afs-1.4.0.tgz", + "integrity": "sha512-Q3syx606c4n1vmLgGgyWTXRWdvh4RVnj39st/YrSt+b9Y+NSI/oQQJzWvBamBVG+0fNhfAy2tma+yRStYEGCzA==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/platform-helpers": "^0.6.7", + "@aigne/uuid": "^13.0.1", + "strict-event-emitter": "^0.5.1", + "ufo": "^1.6.1", + "yaml": "^2.8.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/afs-explorer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@aigne/afs-explorer/-/afs-explorer-1.1.0.tgz", + "integrity": "sha512-GG4mDCI0JA2AOL2+YnHem5wFh4pWU4+XGr5CLqDkVgQiOH0GrQHGtMhcI7ay5ruM2VxBv59FioAO5lx5Q0FTAQ==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/afs": "^1.4.0", + "@aigne/core": "^1.72.0", + "cors": "^2.8.5", + "express": "^5.1.0", + "yaml": "^2.8.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/afs-history": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aigne/afs-history/-/afs-history-1.2.0.tgz", + "integrity": "sha512-ZN/JDycrYmFwX7oSbU5MZB2NHz9pLCP6vnLjPFx6bDrB0WEf1MXjnHHfKyqT94JdxJy7mOsRNUybH2iwzI/03w==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/afs": "^1.4.0", + "@aigne/sqlite": "^0.4.9", + "@aigne/uuid": "^13.0.1", + "radix3": "^1.1.2", + "ufo": "^1.6.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/afs-local-fs": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@aigne/afs-local-fs/-/afs-local-fs-1.4.0.tgz", + "integrity": "sha512-3PxOc/eEqsXsWy+wenUFhX6lcxMIYnUZxjE3zPTmoHHkr8+xSuffUiyUCZlWq+bvYuD5uRmczNyvXzUmjIGKhg==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/afs": "^1.4.0", + "@aigne/core": "^1.72.0", + "@vscode/ripgrep": "^1.15.14", + "glob": "^11.0.3", + "ignore": "^7.0.5", + "minimatch": "^10.1.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/agent-library": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/@aigne/agent-library/-/agent-library-1.24.0.tgz", + "integrity": "sha512-rh0JOL7nIGJVBZDPr7Ge1wgtfNNVM9JGAldr/lLDg9QQrHTcsbujhBg3GipMQkhCFEgavu+OTHm5xPLZAjlofw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/openai": "^0.16.16", + "@aigne/sqlite": "^0.4.9", + "@aigne/uuid": "^13.0.1", + "@anthropic-ai/sandbox-runtime": "^0.0.19", + "@vscode/ripgrep": "^1.15.14", + "drizzle-orm": "^0.44.5", + "fastq": "^1.19.1", + "jsonata": "^2.1.0", + "jsonschema": "^1.5.0", + "yaml": "^2.8.1", + "zod": "^3.25.67", + "zod-to-json-schema": "^3.24.6" + } + }, + "node_modules/@aigne/agentic-memory": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@aigne/agentic-memory/-/agentic-memory-1.1.6.tgz", + "integrity": "sha512-RBHSF39VPn8D9LCg93R76G7TbYKCXL9TWZwNRP3ZokMbbpahC7dwSEve6GugjMsWIqymkl154K2VzUhqk36evw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/default-memory": "^1.4.0", + "@aigne/openai": "^0.16.16", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/aigne-hub": { + "version": "0.10.16", + "resolved": "https://registry.npmjs.org/@aigne/aigne-hub/-/aigne-hub-0.10.16.tgz", + "integrity": "sha512-fZLgyF7e6GPHUkMNC/u6koMvtKRyMFwnNTU7ilrBFsFtd3dncZBq1HLuM2M6XInxqfbFiFn+UAZcGvgSgsfklw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/anthropic": "^0.14.16", + "@aigne/bedrock": "^0.10.21", + "@aigne/core": "^1.72.0", + "@aigne/deepseek": "^0.7.62", + "@aigne/doubao": "^1.3.0", + "@aigne/gemini": "^0.14.16", + "@aigne/ideogram": "^0.4.16", + "@aigne/ollama": "^0.7.62", + "@aigne/open-router": "^0.7.62", + "@aigne/openai": "^0.16.16", + "@aigne/platform-helpers": "^0.6.7", + "@aigne/poe": "^1.1.6", + "@aigne/transport": "^0.15.25", + "@aigne/xai": "^0.7.62", + "@smithy/node-http-handler": "^4.2.1", + "https-proxy-agent": "^7.0.6", + "ufo": "^1.6.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/anthropic": { + "version": "0.14.16", + "resolved": "https://registry.npmjs.org/@aigne/anthropic/-/anthropic-0.14.16.tgz", + "integrity": "sha512-p240UVwFRbjOn/2nIguiGP13Amr9JoIuEEEjaXRPtNCxyZx4qnHQuUjTJzUr0nb8s2Bna+UwFtTV3N4QEyunqg==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/platform-helpers": "^0.6.7", + "@anthropic-ai/sdk": "^0.63.0", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/bedrock": { + "version": "0.10.21", + "resolved": "https://registry.npmjs.org/@aigne/bedrock/-/bedrock-0.10.21.tgz", + "integrity": "sha512-MxR6dmAeXocxoWopdYvASdw7QuCFqBtTC2wln8yMw4t2VqSC5VAHBmEzypHBtg8YERbwSGLLenvYEXs924fpBg==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/uuid": "^13.0.1", + "@aws-sdk/client-bedrock-runtime": "^3.890.0", + "yaml": "^2.8.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/cli": { + "version": "1.59.0", + "resolved": "https://registry.npmjs.org/@aigne/cli/-/cli-1.59.0.tgz", + "integrity": "sha512-pWoap9Q3NTEnksojkjX2z26F8Oz3jCGL9xBrEU6FM0pRvHlnWs5fEkbJj3AaTV3lIG7vepy/F+b+gRFVwzr40w==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/afs": "^1.4.0", + "@aigne/afs-explorer": "^1.1.0", + "@aigne/afs-history": "^1.2.0", + "@aigne/afs-local-fs": "^1.4.0", + "@aigne/agent-library": "^1.24.0", + "@aigne/agentic-memory": "^1.1.6", + "@aigne/aigne-hub": "^0.10.16", + "@aigne/core": "^1.72.0", + "@aigne/default-memory": "^1.4.0", + "@aigne/json-schema-to-zod": "^1.3.3", + "@aigne/listr2": "^1.0.10", + "@aigne/marked-terminal": "^7.3.2", + "@aigne/observability-api": "^0.11.14", + "@aigne/openai": "^0.16.16", + "@aigne/secrets": "^0.1.6", + "@aigne/uuid": "^13.0.1", + "@fast-csv/format": "^5.0.5", + "@inquirer/core": "^10.2.2", + "@inquirer/figures": "^1.0.13", + "@inquirer/prompts": "^7.8.6", + "@inquirer/type": "^3.0.8", + "@listr2/prompt-adapter-inquirer": "^3.0.4", + "@modelcontextprotocol/sdk": "^1.18.0", + "@smithy/node-http-handler": "^4.2.1", + "ansi-escapes": "^7.1.0", + "ansi-regex": "^6.2.2", + "boxen": "^8.0.1", + "chalk": "^5.6.2", + "cli-table3": "^0.6.5", + "crypto-js": "^4.2.0", + "detect-port": "^2.1.0", + "dotenv-flow": "^4.1.0", + "express": "^5.1.0", + "glob": "^11.0.3", + "gradient-string": "^3.0.0", + "https-proxy-agent": "^7.0.6", + "ink": "^6.3.1", + "inquirer": "^12.9.6", + "log-update": "^7.0.0", + "marked": "^16.3.0", + "nunjucks": "^3.2.4", + "open": "^10.2.0", + "openai": "^6.14.0", + "p-wait-for": "^5.0.2", + "prettier": "^3.6.2", + "react": "^19.1.1", + "string-width": "^8.1.0", + "strip-ansi": "^7.1.2", + "tar": "^7.4.3", + "terminal-image": "^4.0.0", + "terminal-link": "^5.0.0", + "wrap-ansi": "^9.0.2", + "yaml": "^2.8.1", + "yargs": "^18.0.0", + "yoctocolors-cjs": "^2.1.3", + "zod": "^3.25.67", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "aigne": "dist/cli.js", + "bunwrapper": "dist/bunwrapper.js" + } + }, + "node_modules/@aigne/core": { + "version": "1.72.0", + "resolved": "https://registry.npmjs.org/@aigne/core/-/core-1.72.0.tgz", + "integrity": "sha512-v37OXo5yJHvcz0WX0VxcXGfrJivlv77MjIDYsq+Yb1wkLTFC4VYBXDwI36A650Aeeye9ED1uOZKkra2CbrBGSA==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/afs": "^1.4.0", + "@aigne/afs-history": "^1.2.0", + "@aigne/json-schema-to-zod": "^1.3.3", + "@aigne/observability-api": "^0.11.14", + "@aigne/platform-helpers": "^0.6.7", + "@aigne/uuid": "^13.0.1", + "@inquirer/prompts": "^7.8.6", + "@modelcontextprotocol/sdk": "^1.18.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/sdk-trace-base": "^2.1.0", + "@types/debug": "^4.1.12", + "@zenoaihq/tson": "^1.0.0", + "camelize-ts": "^3.0.0", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "eventsource-parser": "^3.0.6", + "fast-deep-equal": "^3.1.3", + "front-matter": "^4.0.2", + "immer": "^10.1.3", + "is-network-error": "^1.2.0", + "jaison": "=2.0.2", + "jsonata": "^2.1.0", + "mime": "^4.1.0", + "nunjucks": "^3.2.4", + "p-retry": "^7.0.0", + "raw-body": "^3.0.1", + "strict-event-emitter": "^0.5.1", + "ufo": "^1.6.1", + "yaml": "^2.8.1", + "zod": "^3.25.67", + "zod-from-json-schema": "^0.0.5", + "zod-to-json-schema": "^3.24.6" + } + }, + "node_modules/@aigne/deepseek": { + "version": "0.7.62", + "resolved": "https://registry.npmjs.org/@aigne/deepseek/-/deepseek-0.7.62.tgz", + "integrity": "sha512-3FOf1/hky5mSYhOEr23nvnHRgf7O5oC7e2JD9BUqFzCLgo137OTKD0/SNFZJ9q6vKKeNaLQKCtmc4jrMM1LpIw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16" + } + }, + "node_modules/@aigne/default-memory": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@aigne/default-memory/-/default-memory-1.4.0.tgz", + "integrity": "sha512-j1tAqQok7IH5z8gaB1XDPzEm43RAmc0zLlr0idLGpc9VAOBAiEYDSXSiFZQvlhdHoJ5gAMo7SQoADK4ReEKPjg==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/sqlite": "^0.4.9", + "@aigne/uuid": "^13.0.1", + "drizzle-orm": "^0.44.5", + "yaml": "^2.8.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/doubao": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@aigne/doubao/-/doubao-1.3.0.tgz", + "integrity": "sha512-cjeEHKy+322H4N0IUkSPSUhmqhcCuVQD4IlFw+1PTbLzVMA6795XOVTZbXtXhbYcnF/hPgiAvVWTuvaLal+0LQ==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16", + "ufo": "^1.6.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/gemini": { + "version": "0.14.16", + "resolved": "https://registry.npmjs.org/@aigne/gemini/-/gemini-0.14.16.tgz", + "integrity": "sha512-3V5gt7zklzBn9bNCWl3t3uMjwtpyonu2WIxnw7N4sn3hAXAALTTEGJQ+pJkE+jY1tqbrQ8LXtU9xzrfY44c7bw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/platform-helpers": "^0.6.7", + "@aigne/uuid": "^13.0.1", + "@google/genai": "^1.30.0", + "yaml": "^2.8.1", + "zod": "^3.25.67", + "zod-to-json-schema": "^3.24.6" + } + }, + "node_modules/@aigne/ideogram": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/@aigne/ideogram/-/ideogram-0.4.16.tgz", + "integrity": "sha512-tXnUEq4dMdWemUUA7u9mfZ0ad/NraPz6B62KP04WmpgXcOYLKm+wyzax0WjnZcSiKNbIi4WWxIOakXfSYX5+fg==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "1.72.0", + "ufo": "^1.6.1", + "zod": "3.25.67" + } + }, + "node_modules/@aigne/ideogram/node_modules/zod": { + "version": "3.25.67", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.67.tgz", + "integrity": "sha512-idA2YXwpCdqUSKRCACDE6ItZD9TZzy3OZMtpfLoh6oPR47lipysRrJfjzMqFxQ3uJuUPyUeWe1r9vLH33xO/Qw==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/@aigne/json-schema-to-zod": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@aigne/json-schema-to-zod/-/json-schema-to-zod-1.3.3.tgz", + "integrity": "sha512-8QsF5Vm/Znj16KAvfNIoXghSB7XzGGp+HHoI3CWyuFLX6DbI0YrzRm3EpKo87OhbpdtiWQurC0bidkH2cbsYNQ==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.0.0" + } + }, + "node_modules/@aigne/listr2": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@aigne/listr2/-/listr2-1.0.10.tgz", + "integrity": "sha512-Naihs/9vGDS/Ovu84daVEq4O+kq6q44eMikmm2DX25rv6DUNRJ6SuwqSvBmBlzYFkGgZDcmfm9n6sH2qg3+phw==", + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aigne/listr2/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aigne/listr2/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aigne/listr2/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aigne/listr2/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@aigne/listr2/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/@aigne/marked-terminal": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@aigne/marked-terminal/-/marked-terminal-7.3.2.tgz", + "integrity": "sha512-iaBdHAyHRSldQxESw/3YAuul/6NHX4anoKxo4MSFaSktZlYW6GPDbSjhUEl7cN4BJDcJIBBrIFYTOGC4BgZx7A==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "ansi-regex": "^6.1.0", + "chalk": "^5.4.1", + "cli-highlight": "^2.1.11", + "cli-table3": "^0.6.5", + "node-emoji": "^2.2.0", + "supports-hyperlinks": "^3.1.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "marked": ">=1 <17" + } + }, + "node_modules/@aigne/observability-api": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@aigne/observability-api/-/observability-api-0.11.14.tgz", + "integrity": "sha512-WGWO22RMnwuIzp2r8N7Olz3YQDwmBoL0TYraxeg4QqYy0NqmjFrjSKLKJkEU7qvw0Yx0FhRc24KevseamROe5g==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/sqlite": "^0.4.9", + "@aigne/uuid": "^13.0.1", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/core": "^2.1.0", + "@opentelemetry/sdk-node": "^0.205.0", + "@opentelemetry/sdk-trace-base": "^2.1.0", + "archiver": "^7.0.1", + "chalk": "^5.6.2", + "cookie-parser": "^1.4.7", + "cors": "^2.8.5", + "decimal.js": "^10.6.0", + "drizzle-orm": "^0.44.5", + "express": "^5.1.0", + "express-sse": "^1.0.0", + "fastq": "^1.19.1", + "mime": "^4.1.0", + "terminal-link": "^5.0.0", + "ufo": "^1.6.1", + "unzipper": "^0.12.3", + "yaml": "^2.8.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/ollama": { + "version": "0.7.62", + "resolved": "https://registry.npmjs.org/@aigne/ollama/-/ollama-0.7.62.tgz", + "integrity": "sha512-OMy0AkmyhPa7ajtzOGDqaKi6BRlWAI+dJ41U0AWIGR7HTPoU7rt2en9/5R5xaC9lfH8kG+cAPSPw9TIXzow0DQ==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16" + } + }, + "node_modules/@aigne/open-router": { + "version": "0.7.62", + "resolved": "https://registry.npmjs.org/@aigne/open-router/-/open-router-0.7.62.tgz", + "integrity": "sha512-6338wLHIHrtgNm5Pipw7ESAofw6JyNEYiNEA0CHor7VHm8Nj8r7XJkb95LNDqAo9g1bHEFuGwsCV7AF45clNeg==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16" + } + }, + "node_modules/@aigne/openai": { + "version": "0.16.16", + "resolved": "https://registry.npmjs.org/@aigne/openai/-/openai-0.16.16.tgz", + "integrity": "sha512-QF1imkQWKRKEasRQSkBg1FAVhXTiPvdOf6kBuXIlmOBMEMQ69hYIUcjcjfyTXm6thGkLfKL4m99VP3Q7wywZqw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@aigne/platform-helpers": "^0.6.7", + "@aigne/uuid": "^13.0.1", + "openai": "^6.14.0", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/platform-helpers": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@aigne/platform-helpers/-/platform-helpers-0.6.7.tgz", + "integrity": "sha512-Y7xjoLZ/KcYn86DbLSJs7CqNdFEchCg7PkpIiFu/cl1HyjiGEFjtvvD2yNcoqdazZV2vu+/d0LKEN0XKeyv3Kg==", + "license": "Elastic-2.0", + "dependencies": { + "@modelcontextprotocol/sdk": "^1.18.0" + } + }, + "node_modules/@aigne/poe": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@aigne/poe/-/poe-1.1.6.tgz", + "integrity": "sha512-n6ht7ODIpMdm4DfI4EOI7D1IY5FbxXiXswd5q+Cl9UhlyfuzkWsY6263F9vV480a4sfpbvEygccWJzfbGuHxUQ==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16" + } + }, + "node_modules/@aigne/secrets": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@aigne/secrets/-/secrets-0.1.6.tgz", + "integrity": "sha512-aSFIm/UrDHklF8Jaw+kzKLwcRO4i9w9F+SolHwsLYKwSvxmv/c1toAM7bn4Xhs+JHJHeRIemcJl61bJjef6fjw==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/core": "^1.72.0", + "@zowe/secrets-for-zowe-sdk": "^8.29.4", + "yaml": "^2.8.1" + } + }, + "node_modules/@aigne/sqlite": { + "version": "0.4.9", + "resolved": "https://registry.npmjs.org/@aigne/sqlite/-/sqlite-0.4.9.tgz", + "integrity": "sha512-1aFFbMt0qD+Rvmzc/e5lrmtLcs/iT8ncTK7jfIu/V+YfNsr5htmfDspgy9+eCy08ad/Ga+cOD+E+vWbUd+c5cQ==", + "license": "Elastic-2.0", + "dependencies": { + "@libsql/client": "^0.15.15", + "drizzle-orm": "^0.44.5", + "sqlocal": "^0.14.2" + } + }, + "node_modules/@aigne/transport": { + "version": "0.15.25", + "resolved": "https://registry.npmjs.org/@aigne/transport/-/transport-0.15.25.tgz", + "integrity": "sha512-waKDVA1cmBPzmghMSR9DN5wWuo/k1yONU4SLyXZvGhyyg4vEykal+gicHczNTPxa87Vy7Ij8lc0crswXq6lNZA==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16", + "content-type": "^1.0.5", + "p-retry": "^7.0.0", + "raw-body": "^3.0.1", + "zod": "^3.25.67" + } + }, + "node_modules/@aigne/uuid": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/@aigne/uuid/-/uuid-13.0.1.tgz", + "integrity": "sha512-28GrlAzaE1RkCQhkBn953gOd0hvCOAlZzjs4R5xPRphyNgZtDf058i2VfGDTyGvcVVkLhhoTy7s85srOM52krQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, + "node_modules/@aigne/xai": { + "version": "0.7.62", + "resolved": "https://registry.npmjs.org/@aigne/xai/-/xai-0.7.62.tgz", + "integrity": "sha512-d6xSXb3aSIdYujodH9V15SyVZscvRhSHhTbnzqpHADP5CoHgRWCyUL1D13OzNWWMbdBZIuxoDswhxtVptEESHA==", + "license": "Elastic-2.0", + "dependencies": { + "@aigne/openai": "^0.16.16" + } + }, + "node_modules/@alcalzone/ansi-tokenize": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.2.3.tgz", + "integrity": "sha512-jsElTJ0sQ4wHRz+C45tfect76BwbTbgkgKByOzpCN9xG61N5V6u/glvg1CsNJhq2xJIFpKHSwG3D2wPPuEYOrQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@anthropic-ai/sandbox-runtime": { + "version": "0.0.19", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sandbox-runtime/-/sandbox-runtime-0.0.19.tgz", + "integrity": "sha512-agNFfeFibJ4ZiWgKAfZhcosPNQtQp9srsq90tbx4VE7Fn+KtOxKsWP2mdfO+U3QxviZKC3jUNEF2/nBjYRN19Q==", + "license": "Apache-2.0", + "dependencies": { + "@pondwader/socks5-server": "^1.0.10", + "@types/lodash-es": "^4.17.12", + "commander": "^12.1.0", + "lodash-es": "^4.17.21", + "shell-quote": "^1.8.3", + "zod": "^3.24.1" + }, + "bin": { + "srt": "dist/cli.js" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@anthropic-ai/sdk": { + "version": "0.63.1", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.63.1.tgz", + "integrity": "sha512-wMA/Xx5GLO+npV992YKUfsmlI6699XG/jFjCPTf/nsMBfUh3e3KmNiOKuhqSMZibOjoLOlhYc7L4pfLPI8A+RA==", + "license": "MIT", + "dependencies": { + "json-schema-to-ts": "^3.1.1" + }, + "bin": { + "anthropic-ai-sdk": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@aws-crypto/crc32": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-sdk/client-bedrock-runtime": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-bedrock-runtime/-/client-bedrock-runtime-3.972.0.tgz", + "integrity": "sha512-rzSuqgMkL488bR9TnZEALBa+SV1FfR3B7CkYvs6R5uZm2AqBMfq7xNZR/pgMiAH/YLlI9FWAh1aPmdnG7iXxnA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.972.0", + "@aws-sdk/credential-provider-node": "3.972.0", + "@aws-sdk/eventstream-handler-node": "3.972.0", + "@aws-sdk/middleware-eventstream": "3.972.0", + "@aws-sdk/middleware-host-header": "3.972.0", + "@aws-sdk/middleware-logger": "3.972.0", + "@aws-sdk/middleware-recursion-detection": "3.972.0", + "@aws-sdk/middleware-user-agent": "3.972.0", + "@aws-sdk/middleware-websocket": "3.972.0", + "@aws-sdk/region-config-resolver": "3.972.0", + "@aws-sdk/token-providers": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@aws-sdk/util-user-agent-browser": "3.972.0", + "@aws-sdk/util-user-agent-node": "3.972.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/eventstream-serde-config-resolver": "^4.3.8", + "@smithy/eventstream-serde-node": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.10", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.972.0.tgz", + "integrity": "sha512-5qw6qLiRE4SUiz0hWy878dSR13tSVhbTWhsvFT8mGHe37NRRiaobm5MA2sWD0deRAuO98djSiV+dhWXa1xIFNw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.972.0", + "@aws-sdk/middleware-host-header": "3.972.0", + "@aws-sdk/middleware-logger": "3.972.0", + "@aws-sdk/middleware-recursion-detection": "3.972.0", + "@aws-sdk/middleware-user-agent": "3.972.0", + "@aws-sdk/region-config-resolver": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@aws-sdk/util-user-agent-browser": "3.972.0", + "@aws-sdk/util-user-agent-node": "3.972.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.972.0.tgz", + "integrity": "sha512-nEeUW2M9F+xdIaD98F5MBcQ4ITtykj3yKbgFZ6J0JtL3bq+Z90szQ6Yy8H/BLPYXTs3V4n9ifnBo8cprRDiE6A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@aws-sdk/xml-builder": "3.972.0", + "@smithy/core": "^3.20.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.0.tgz", + "integrity": "sha512-kKHoNv+maHlPQOAhYamhap0PObd16SAb3jwaY0KYgNTiSbeXlbGUZPLioo9oA3wU10zItJzx83ClU7d7h40luA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.0.tgz", + "integrity": "sha512-xzEi81L7I5jGUbpmqEHCe7zZr54hCABdj4H+3LzktHYuovV/oqnvoDdvZpGFR0e/KAw1+PL38NbGrpG30j6qlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.0.tgz", + "integrity": "sha512-ruhAMceUIq2aknFd3jhWxmO0P0Efab5efjyIXOkI9i80g+zDY5VekeSxfqRKStEEJSKSCHDLQuOu0BnAn4Rzew==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/credential-provider-env": "3.972.0", + "@aws-sdk/credential-provider-http": "3.972.0", + "@aws-sdk/credential-provider-login": "3.972.0", + "@aws-sdk/credential-provider-process": "3.972.0", + "@aws-sdk/credential-provider-sso": "3.972.0", + "@aws-sdk/credential-provider-web-identity": "3.972.0", + "@aws-sdk/nested-clients": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.0.tgz", + "integrity": "sha512-SsrsFJsEYAJHO4N/r2P0aK6o8si6f1lprR+Ej8J731XJqTckSGs/HFHcbxOyW/iKt+LNUvZa59/VlJmjhF4bEQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/nested-clients": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.0.tgz", + "integrity": "sha512-wwJDpEGl6+sOygic8QKu0OHVB8SiodqF1fr5jvUlSFfS6tJss/E9vBc2aFjl7zI6KpAIYfIzIgM006lRrZtWCQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.972.0", + "@aws-sdk/credential-provider-http": "3.972.0", + "@aws-sdk/credential-provider-ini": "3.972.0", + "@aws-sdk/credential-provider-process": "3.972.0", + "@aws-sdk/credential-provider-sso": "3.972.0", + "@aws-sdk/credential-provider-web-identity": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.0.tgz", + "integrity": "sha512-nmzYhamLDJ8K+v3zWck79IaKMc350xZnWsf/GeaXO6E3MewSzd3lYkTiMi7lEp3/UwDm9NHfPguoPm+mhlSWQQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.0.tgz", + "integrity": "sha512-6mYyfk1SrMZ15cH9T53yAF4YSnvq4yU1Xlgm3nqV1gZVQzmF5kr4t/F3BU3ygbvzi4uSwWxG3I3TYYS5eMlAyg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.972.0", + "@aws-sdk/core": "3.972.0", + "@aws-sdk/token-providers": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.0.tgz", + "integrity": "sha512-vsJXBGL8H54kz4T6do3p5elATj5d1izVGUXMluRJntm9/I0be/zUYtdd4oDTM2kSUmd4Zhyw3fMQ9lw7CVhd4A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/nested-clients": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/eventstream-handler-node": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/eventstream-handler-node/-/eventstream-handler-node-3.972.0.tgz", + "integrity": "sha512-B1AEv+TQOVxg2t60GMfrcagJvQjpx1p6UASUoFMLevV9K3WNI5qYTjtutMiifKY0HwK6g86zXgN/dpeaSi3q5Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-eventstream": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-eventstream/-/middleware-eventstream-3.972.0.tgz", + "integrity": "sha512-DAxRFg8txGGQUOCR3lPK15tjULafmoHR6Vmoi4WAm+GAnR+pHxJQfc2yN1+mfd0q6HqWfTCDJvJg8qZ4I8/I9g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.0.tgz", + "integrity": "sha512-3eztFI6F9/eHtkIaWKN3nT+PM+eQ6p1MALDuNshFk323ixuCZzOOVT8oUqtZa30Z6dycNXJwhlIq7NhUVFfimw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.0.tgz", + "integrity": "sha512-ZvdyVRwzK+ra31v1pQrgbqR/KsLD+wwJjHgko6JfoKUBIcEfAwJzQKO6HspHxdHWTVUz6MgvwskheR/TTYZl2g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.0.tgz", + "integrity": "sha512-F2SmUeO+S6l1h6dydNet3BQIk173uAkcfU1HDkw/bUdRLAnh15D3HP9vCZ7oCPBNcdEICbXYDmx0BR9rRUHGlQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.0.tgz", + "integrity": "sha512-kFHQm2OCBJCzGWRafgdWHGFjitUXY/OxXngymcX4l8CiyiNDZB27HDDBg2yLj3OUJc4z4fexLMmP8r9vgag19g==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@smithy/core": "^3.20.6", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-websocket": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-websocket/-/middleware-websocket-3.972.0.tgz", + "integrity": "sha512-3pvbb/HtE7A8U38jk24RQ9T92d40NNSzjDEVEkBYZYhxExVcJ/Lk5Z+NM283FEtoi1T++oYrLuYDr1CIQxnaXQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@aws-sdk/util-format-url": "3.972.0", + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.972.0.tgz", + "integrity": "sha512-QGlbnuGzSQJVG6bR9Qw6G0Blh6abFR4VxNa61ttMbzy9jt28xmk2iGtrYLrQPlCCPhY6enHqjTWm3n3LOb0wAw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.972.0", + "@aws-sdk/middleware-host-header": "3.972.0", + "@aws-sdk/middleware-logger": "3.972.0", + "@aws-sdk/middleware-recursion-detection": "3.972.0", + "@aws-sdk/middleware-user-agent": "3.972.0", + "@aws-sdk/region-config-resolver": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@aws-sdk/util-endpoints": "3.972.0", + "@aws-sdk/util-user-agent-browser": "3.972.0", + "@aws-sdk/util-user-agent-node": "3.972.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.20.6", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.7", + "@smithy/middleware-retry": "^4.4.23", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.10.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.22", + "@smithy/util-defaults-mode-node": "^4.2.25", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.0.tgz", + "integrity": "sha512-JyOf+R/6vJW8OEVFCAyzEOn2reri/Q+L0z9zx4JQSKWvTmJ1qeFO25sOm8VIfB8URKhfGRTQF30pfYaH2zxt/A==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.972.0.tgz", + "integrity": "sha512-kWlXG+y5nZhgXGEtb72Je+EvqepBPs8E3vZse//1PYLWs2speFqbGE/ywCXmzEJgHgVqSB/u/lqBvs5WlYmSqQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.972.0", + "@aws-sdk/nested-clients": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.972.0.tgz", + "integrity": "sha512-U7xBIbLSetONxb2bNzHyDgND3oKGoIfmknrEVnoEU4GUSs+0augUOIn9DIWGUO2ETcRFdsRUnmx9KhPT9Ojbug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.972.0.tgz", + "integrity": "sha512-6JHsl1V/a1ZW8D8AFfd4R52fwZPnZ5H4U6DS8m/bWT8qad72NvbOFAC7U2cDtFs2TShqUO3TEiX/EJibtY3ijg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-format-url": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-format-url/-/util-format-url-3.972.0.tgz", + "integrity": "sha512-o4zqsW/PxrcsTla/Yh2dkRS26kP76QQWZq/i/JgVNFBAr9x0E2oJcCeh8Daj2AA+8AZ8VWln9x706FFzWWQwvQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.965.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.3.tgz", + "integrity": "sha512-FNUqAjlKAGA7GM05kywE99q8wiPHPZqrzhq3wXRga6PRD6A0kzT85Pb0AzYBVTBRpSrKyyr6M92Y6bnSBVp2BA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.0.tgz", + "integrity": "sha512-eOLdkQyoRbDgioTS3Orr7iVsVEutJyMZxvyZ6WAF95IrF0kfWx5Rd/KXnfbnG/VKa2CvjZiitWfouLzfVEyvJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.972.0", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.0.tgz", + "integrity": "sha512-GOy+AiSrE9kGiojiwlZvVVSXwylu4+fmP0MJfvras/MwP09RB/YtQuOVR1E0fKQc6OMwaTNBjgAbOEhxuWFbAw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.972.0", + "@aws-sdk/types": "3.972.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.0.tgz", + "integrity": "sha512-POaGMcXnozzqBUyJM3HLUZ9GR6OKJWPGJEmhtTnxZXt8B6JcJ/6K3xRJ5H/j8oovVLz8Wg6vFxAHv8lvuASxMg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "fast-xml-parser": "5.2.5", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", + "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", + "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@fast-csv/format": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-5.0.5.tgz", + "integrity": "sha512-0P9SJXXnqKdmuWlLaTelqbrfdgN37Mvrb369J6eNmqL41IEIZQmV4sNM4GgAK2Dz3aH04J0HKGDMJFkYObThTw==", + "license": "MIT", + "dependencies": { + "lodash.escaperegexp": "^4.1.2", + "lodash.isboolean": "^3.0.3", + "lodash.isfunction": "^3.0.9", + "lodash.isnil": "^4.0.0" + } + }, + "node_modules/@google/genai": { + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.38.0.tgz", + "integrity": "sha512-V/4CQVQGovvGHuS73lwJwHKR9x33kCij3zz/ReEQ4A7RJaV0U7m4k1mvYhFk55cGZdF5JLKu2S9BTaFuEs5xTA==", + "license": "Apache-2.0", + "dependencies": { + "google-auth-library": "^10.3.0", + "protobufjs": "^7.5.4", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@modelcontextprotocol/sdk": "^1.25.2" + }, + "peerDependenciesMeta": { + "@modelcontextprotocol/sdk": { + "optional": true + } + } + }, + "node_modules/@grpc/grpc-js": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.14.3.tgz", + "integrity": "sha512-Iq8QQQ/7X3Sac15oB6p0FmUg/klxQvXLeileoqrTRGJYLV+/9tubbr9ipz0GKHjmXVsgFPo/+W+2cA8eNcR+XA==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/proto-loader": "^0.8.0", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" + } + }, + "node_modules/@grpc/proto-loader": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.8.0.tgz", + "integrity": "sha512-rc1hOQtjIWGxcxpb9aHAfLpIctjEnsDehj0DAiVfBlmT84uvR0uUtN2hEi/ecvWVjXUGf5qPF4qEgiLOx1YIMQ==", + "license": "Apache-2.0", + "dependencies": { + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.5.3", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@grpc/proto-loader/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@grpc/proto-loader/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==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/proto-loader/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@grpc/proto-loader/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/proto-loader/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.9", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.9.tgz", + "integrity": "sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/checkbox": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", + "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/editor": { + "version": "4.2.23", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", + "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/external-editor": "^1.0.3", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/expand": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", + "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", + "license": "MIT", + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/input": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", + "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/number": { + "version": "3.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", + "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/password": { + "version": "4.0.23", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", + "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/prompts": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", + "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", + "license": "MIT", + "dependencies": { + "@inquirer/checkbox": "^4.3.2", + "@inquirer/confirm": "^5.1.21", + "@inquirer/editor": "^4.2.23", + "@inquirer/expand": "^4.0.23", + "@inquirer/input": "^4.3.1", + "@inquirer/number": "^3.0.23", + "@inquirer/password": "^4.0.23", + "@inquirer/rawlist": "^4.1.11", + "@inquirer/search": "^3.2.2", + "@inquirer/select": "^4.4.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/rawlist": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", + "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/search": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", + "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/select": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", + "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "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==", + "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==", + "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==", + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "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==", + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jimp/core": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-1.6.0.tgz", + "integrity": "sha512-EQQlKU3s9QfdJqiSrZWNTxBs3rKXgO2W+GxNXDtwchF3a4IqxDheFX1ti+Env9hdJXDiYLp2jTRjlxhPthsk8w==", + "license": "MIT", + "dependencies": { + "@jimp/file-ops": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "await-to-js": "^3.0.0", + "exif-parser": "^0.1.12", + "file-type": "^16.0.0", + "mime": "3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/core/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@jimp/custom": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.14.0.tgz", + "integrity": "sha512-kQJMeH87+kWJdVw8F9GQhtsageqqxrvzg7yyOw3Tx/s7v5RToe8RnKyMM+kVtBJtNAG+Xyv/z01uYQ2jiZ3GwA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/core": "^0.14.0" + } + }, + "node_modules/@jimp/custom/node_modules/@jimp/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.14.0.tgz", + "integrity": "sha512-S62FcKdtLtj3yWsGfJRdFXSutjvHg7aQNiFogMbwq19RP4XJWqS2nOphu7ScB8KrSlyy5nPF2hkWNhLRLyD82w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "any-base": "^1.1.0", + "buffer": "^5.2.0", + "exif-parser": "^0.1.12", + "file-type": "^9.0.0", + "load-bmfont": "^1.3.1", + "mkdirp": "^0.5.1", + "phin": "^2.9.1", + "pixelmatch": "^4.0.2", + "tinycolor2": "^1.4.1" + } + }, + "node_modules/@jimp/custom/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/custom/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/@jimp/custom/node_modules/file-type": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-9.0.0.tgz", + "integrity": "sha512-Qe/5NJrgIOlwijpq3B7BEpzPFcgzggOTagZmkXQY4LA6bsXKTUstK7Wp12lEJ/mLKTpvIZxmIuRcLYWT6ov9lw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@jimp/custom/node_modules/pixelmatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", + "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", + "license": "ISC", + "dependencies": { + "pngjs": "^3.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/@jimp/custom/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/@jimp/diff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/diff/-/diff-1.6.0.tgz", + "integrity": "sha512-+yUAQ5gvRC5D1WHYxjBHZI7JBRusGGSLf8AmPRPCenTzh4PA+wZ1xv2+cYqQwTfQHU5tXYOhA0xDytfHUf1Zyw==", + "license": "MIT", + "dependencies": { + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "pixelmatch": "^5.3.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/file-ops": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/file-ops/-/file-ops-1.6.0.tgz", + "integrity": "sha512-Dx/bVDmgnRe1AlniRpCKrGRm5YvGmUwbDzt+MAkgmLGf+jvBT75hmMEZ003n9HQI/aPnm/YKnXjg/hOpzNCpHQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-bmp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-bmp/-/js-bmp-1.6.0.tgz", + "integrity": "sha512-FU6Q5PC/e3yzLyBDXupR3SnL3htU7S3KEs4e6rjDP6gNEOXRFsWs6YD3hXuXd50jd8ummy+q2WSwuGkr8wi+Gw==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "bmp-ts": "^1.0.9" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-gif": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-gif/-/js-gif-1.6.0.tgz", + "integrity": "sha512-N9CZPHOrJTsAUoWkWZstLPpwT5AwJ0wge+47+ix3++SdSL/H2QzyMqxbcDYNFe4MoI5MIhATfb0/dl/wmX221g==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "gifwrap": "^0.10.1", + "omggif": "^1.0.10" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-jpeg": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-jpeg/-/js-jpeg-1.6.0.tgz", + "integrity": "sha512-6vgFDqeusblf5Pok6B2DUiMXplH8RhIKAryj1yn+007SIAQ0khM1Uptxmpku/0MfbClx2r7pnJv9gWpAEJdMVA==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "jpeg-js": "^0.4.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-png": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-png/-/js-png-1.6.0.tgz", + "integrity": "sha512-AbQHScy3hDDgMRNfG0tPjL88AV6qKAILGReIa3ATpW5QFjBKpisvUaOqhzJ7Reic1oawx3Riyv152gaPfqsBVg==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "pngjs": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/js-tiff": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/js-tiff/-/js-tiff-1.6.0.tgz", + "integrity": "sha512-zhReR8/7KO+adijj3h0ZQUOiun3mXUv79zYEAKvE0O+rP7EhgtKvWJOZfRzdZSNv0Pu1rKtgM72qgtwe2tFvyw==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "utif2": "^4.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-blit": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-1.6.0.tgz", + "integrity": "sha512-M+uRWl1csi7qilnSK8uxK4RJMSuVeBiO1AY0+7APnfUbQNZm6hCe0CCFv1Iyw1D/Dhb8ph8fQgm5mwM0eSxgVA==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-blur": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-1.6.0.tgz", + "integrity": "sha512-zrM7iic1OTwUCb0g/rN5y+UnmdEsT3IfuCXCJJNs8SZzP0MkZ1eTvuwK9ZidCuMo4+J3xkzCidRwYXB5CyGZTw==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/utils": "1.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-circle": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-1.6.0.tgz", + "integrity": "sha512-xt1Gp+LtdMKAXfDp3HNaG30SPZW6AQ7dtAtTnoRKorRi+5yCJjKqXRgkewS5bvj8DEh87Ko1ydJfzqS3P2tdWw==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-color": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-1.6.0.tgz", + "integrity": "sha512-J5q8IVCpkBsxIXM+45XOXTrsyfblyMZg3a9eAo0P7VPH4+CrvyNQwaYatbAIamSIN1YzxmO3DkIZXzRjFSz1SA==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "tinycolor2": "^1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-contain": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-1.6.0.tgz", + "integrity": "sha512-oN/n+Vdq/Qg9bB4yOBOxtY9IPAtEfES8J1n9Ddx+XhGBYT1/QTU/JYkGaAkIGoPnyYvmLEDqMz2SGihqlpqfzQ==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-cover": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-1.6.0.tgz", + "integrity": "sha512-Iow0h6yqSC269YUJ8HC3Q/MpCi2V55sMlbkkTTx4zPvd8mWZlC0ykrNDeAy9IJegrQ7v5E99rJwmQu25lygKLA==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-crop": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-1.6.0.tgz", + "integrity": "sha512-KqZkEhvs+21USdySCUDI+GFa393eDIzbi1smBqkUPTE+pRwSWMAf01D5OC3ZWB+xZsNla93BDS9iCkLHA8wang==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-displace": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-1.6.0.tgz", + "integrity": "sha512-4Y10X9qwr5F+Bo5ME356XSACEF55485j5nGdiyJ9hYzjQP9nGgxNJaZ4SAOqpd+k5sFaIeD7SQ0Occ26uIng5Q==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-dither": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-1.6.0.tgz", + "integrity": "sha512-600d1RxY0pKwgyU0tgMahLNKsqEcxGdbgXadCiVCoGd6V6glyCvkNrnnwC0n5aJ56Htkj88PToSdF88tNVZEEQ==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-fisheye": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-1.6.0.tgz", + "integrity": "sha512-E5QHKWSCBFtpgZarlmN3Q6+rTQxjirFqo44ohoTjzYVrDI6B6beXNnPIThJgPr0Y9GwfzgyarKvQuQuqCnnfbA==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-flip": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-1.6.0.tgz", + "integrity": "sha512-/+rJVDuBIVOgwoyVkBjUFHtP+wmW0r+r5OQ2GpatQofToPVbJw1DdYWXlwviSx7hvixTWLKVgRWQ5Dw862emDg==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-gaussian": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.14.0.tgz", + "integrity": "sha512-uaLwQ0XAQoydDlF9tlfc7iD9drYPriFe+jgYnWm8fbw5cN+eOIcnneEX9XCOOzwgLPkNCxGox6Kxjn8zY6GxtQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-gaussian/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/plugin-hash": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-hash/-/plugin-hash-1.6.0.tgz", + "integrity": "sha512-wWzl0kTpDJgYVbZdajTf+4NBSKvmI3bRI8q6EH9CVeIHps9VWVsUvEyb7rpbcwVLWYuzDtP2R0lTT6WeBNQH9Q==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "any-base": "^1.1.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-invert": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.14.0.tgz", + "integrity": "sha512-UaQW9X9vx8orQXYSjT5VcITkJPwDaHwrBbxxPoDG+F/Zgv4oV9fP+udDD6qmkgI9taU+44Fy+zm/J/gGcMWrdg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-invert/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/plugin-mask": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-1.6.0.tgz", + "integrity": "sha512-Cwy7ExSJMZszvkad8NV8o/Z92X2kFUFM8mcDAhNVxU0Q6tA0op2UKRJY51eoK8r6eds/qak3FQkXakvNabdLnA==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-normalize": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.14.0.tgz", + "integrity": "sha512-AfY8sqlsbbdVwFGcyIPy5JH/7fnBzlmuweb+Qtx2vn29okq6+HelLjw2b+VT2btgGUmWWHGEHd86oRGSoWGyEQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-normalize/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/plugin-print": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-1.6.0.tgz", + "integrity": "sha512-zarTIJi8fjoGMSI/M3Xh5yY9T65p03XJmPsuNet19K/Q7mwRU6EV2pfj+28++2PV2NJ+htDF5uecAlnGyxFN2A==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/types": "1.6.0", + "parse-bmfont-ascii": "^1.0.6", + "parse-bmfont-binary": "^1.0.6", + "parse-bmfont-xml": "^1.1.6", + "simple-xml-to-json": "^1.2.2", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-quantize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-quantize/-/plugin-quantize-1.6.0.tgz", + "integrity": "sha512-EmzZ/s9StYQwbpG6rUGBCisc3f64JIhSH+ncTJd+iFGtGo0YvSeMdAd+zqgiHpfZoOL54dNavZNjF4otK+mvlg==", + "license": "MIT", + "dependencies": { + "image-q": "^4.0.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-resize": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-1.6.0.tgz", + "integrity": "sha512-uSUD1mqXN9i1SGSz5ov3keRZ7S9L32/mAQG08wUwZiEi5FpbV0K8A8l1zkazAIZi9IJzLlTauRNU41Mi8IF9fA==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/types": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-rotate": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-1.6.0.tgz", + "integrity": "sha512-JagdjBLnUZGSG4xjCLkIpQOZZ3Mjbg8aGCCi4G69qR+OjNpOeGI7N2EQlfK/WE8BEHOW5vdjSyglNqcYbQBWRw==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugin-scale": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.14.0.tgz", + "integrity": "sha512-ZcJk0hxY5ZKZDDwflqQNHEGRblgaR+piePZm7dPwPUOSeYEH31P0AwZ1ziceR74zd8N80M0TMft+e3Td6KGBHw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-scale/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/plugin-shadow": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.14.0.tgz", + "integrity": "sha512-p2igcEr/iGrLiTu0YePNHyby0WYAXM14c5cECZIVnq/UTOOIQ7xIcWZJ1lRbAEPxVVXPN1UibhZAbr3HAb5BjQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blur": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugin-shadow/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/plugin-threshold": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-1.6.0.tgz", + "integrity": "sha512-M59m5dzLoHOVWdM41O8z9SyySzcDn43xHseOH0HavjsfQsT56GGCC4QzU1banJidbUrePhzoEdS42uFE8Fei8w==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0", + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/plugins": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.14.0.tgz", + "integrity": "sha512-vDO3XT/YQlFlFLq5TqNjQkISqjBHT8VMhpWhAfJVwuXIpilxz5Glu4IDLK6jp4IjPR6Yg2WO8TmRY/HI8vLrOw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/plugin-blit": "^0.14.0", + "@jimp/plugin-blur": "^0.14.0", + "@jimp/plugin-circle": "^0.14.0", + "@jimp/plugin-color": "^0.14.0", + "@jimp/plugin-contain": "^0.14.0", + "@jimp/plugin-cover": "^0.14.0", + "@jimp/plugin-crop": "^0.14.0", + "@jimp/plugin-displace": "^0.14.0", + "@jimp/plugin-dither": "^0.14.0", + "@jimp/plugin-fisheye": "^0.14.0", + "@jimp/plugin-flip": "^0.14.0", + "@jimp/plugin-gaussian": "^0.14.0", + "@jimp/plugin-invert": "^0.14.0", + "@jimp/plugin-mask": "^0.14.0", + "@jimp/plugin-normalize": "^0.14.0", + "@jimp/plugin-print": "^0.14.0", + "@jimp/plugin-resize": "^0.14.0", + "@jimp/plugin-rotate": "^0.14.0", + "@jimp/plugin-scale": "^0.14.0", + "@jimp/plugin-shadow": "^0.14.0", + "@jimp/plugin-threshold": "^0.14.0", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-blit": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.14.0.tgz", + "integrity": "sha512-YoYOrnVHeX3InfgbJawAU601iTZMwEBZkyqcP1V/S33Qnz9uzH1Uj1NtC6fNgWzvX6I4XbCWwtr4RrGFb5CFrw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-blur": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.14.0.tgz", + "integrity": "sha512-9WhZcofLrT0hgI7t0chf7iBQZib//0gJh9WcQMUt5+Q1Bk04dWs8vTgLNj61GBqZXgHSPzE4OpCrrLDBG8zlhQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-circle": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.14.0.tgz", + "integrity": "sha512-o5L+wf6QA44tvTum5HeLyLSc5eVfIUd5ZDVi5iRfO4o6GT/zux9AxuTSkKwnjhsG8bn1dDmywAOQGAx7BjrQVA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-color": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.14.0.tgz", + "integrity": "sha512-JJz512SAILYV0M5LzBb9sbOm/XEj2fGElMiHAxb7aLI6jx+n0agxtHpfpV/AePTLm1vzzDxx6AJxXbKv355hBQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "tinycolor2": "^1.4.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-contain": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.14.0.tgz", + "integrity": "sha512-RX2q233lGyaxiMY6kAgnm9ScmEkNSof0hdlaJAVDS1OgXphGAYAeSIAwzESZN4x3ORaWvkFefeVH9O9/698Evg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-cover": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.14.0.tgz", + "integrity": "sha512-0P/5XhzWES4uMdvbi3beUgfvhn4YuQ/ny8ijs5kkYIw6K8mHcl820HahuGpwWMx56DJLHRl1hFhJwo9CeTRJtQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5", + "@jimp/plugin-scale": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-crop": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.14.0.tgz", + "integrity": "sha512-Ojtih+XIe6/XSGtpWtbAXBozhCdsDMmy+THUJAGu2x7ZgKrMS0JotN+vN2YC3nwDpYkM+yOJImQeptSfZb2Sug==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-displace": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.14.0.tgz", + "integrity": "sha512-c75uQUzMgrHa8vegkgUvgRL/PRvD7paFbFJvzW0Ugs8Wl+CDMGIPYQ3j7IVaQkIS+cAxv+NJ3TIRBQyBrfVEOg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-dither": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.14.0.tgz", + "integrity": "sha512-g8SJqFLyYexXQQsoh4dc1VP87TwyOgeTElBcxSXX2LaaMZezypmxQfLTzOFzZoK8m39NuaoH21Ou1Ftsq7LzVQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-fisheye": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.14.0.tgz", + "integrity": "sha512-BFfUZ64EikCaABhCA6mR3bsltWhPpS321jpeIQfJyrILdpFsZ/OccNwCgpW1XlbldDHIoNtXTDGn3E+vCE7vDg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-flip": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.14.0.tgz", + "integrity": "sha512-WtL1hj6ryqHhApih+9qZQYA6Ye8a4HAmdTzLbYdTMrrrSUgIzFdiZsD0WeDHpgS/+QMsWwF+NFmTZmxNWqKfXw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-rotate": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-mask": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.14.0.tgz", + "integrity": "sha512-tdiGM69OBaKtSPfYSQeflzFhEpoRZ+BvKfDEoivyTjauynbjpRiwB1CaiS8En1INTDwzLXTT0Be9SpI3LkJoEA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-print": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.14.0.tgz", + "integrity": "sha512-MwP3sH+VS5AhhSTXk7pui+tEJFsxnTKFY3TraFJb8WFbA2Vo2qsRCZseEGwpTLhENB7p/JSsLvWoSSbpmxhFAQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "load-bmfont": "^1.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-resize": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.14.0.tgz", + "integrity": "sha512-qFeMOyXE/Bk6QXN0GQo89+CB2dQcXqoxUcDb2Ah8wdYlKqpi53skABkgVy5pW3EpiprDnzNDboMltdvDslNgLQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-rotate": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.14.0.tgz", + "integrity": "sha512-aGaicts44bvpTcq5Dtf93/8TZFu5pMo/61lWWnYmwJJU1RqtQlxbCLEQpMyRhKDNSfPbuP8nyGmaqXlM/82J0Q==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-blit": ">=0.3.5", + "@jimp/plugin-crop": ">=0.3.5", + "@jimp/plugin-resize": ">=0.3.5" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/plugin-threshold": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.14.0.tgz", + "integrity": "sha512-N4BlDgm/FoOMV/DQM2rSpzsgqAzkP0DXkWZoqaQrlRxQBo4zizQLzhEL00T/YCCMKnddzgEhnByaocgaaa0fKw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5", + "@jimp/plugin-color": ">=0.8.0", + "@jimp/plugin-resize": ">=0.8.0" + } + }, + "node_modules/@jimp/plugins/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/@jimp/types": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-1.6.0.tgz", + "integrity": "sha512-7UfRsiKo5GZTAATxm2qQ7jqmUXP0DxTArztllTcYdyw6Xi5oT4RaoXynVtCD4UyLK5gJgkZJcwonoijrhYFKfg==", + "license": "MIT", + "dependencies": { + "zod": "^3.23.8" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@jimp/utils": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-1.6.0.tgz", + "integrity": "sha512-gqFTGEosKbOkYF/WFj26jMHOI5OH2jeP1MmC/zbK6BF6VJBf8rIC5898dPfSzZEbSA0wbbV5slbntWVc5PKLFA==", + "license": "MIT", + "dependencies": { + "@jimp/types": "1.6.0", + "tinycolor2": "^1.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/@libsql/client": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@libsql/client/-/client-0.15.15.tgz", + "integrity": "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w==", + "license": "MIT", + "dependencies": { + "@libsql/core": "^0.15.14", + "@libsql/hrana-client": "^0.7.0", + "js-base64": "^3.7.5", + "libsql": "^0.5.22", + "promise-limit": "^2.7.0" + } + }, + "node_modules/@libsql/core": { + "version": "0.15.15", + "resolved": "https://registry.npmjs.org/@libsql/core/-/core-0.15.15.tgz", + "integrity": "sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA==", + "license": "MIT", + "dependencies": { + "js-base64": "^3.7.5" + } + }, + "node_modules/@libsql/darwin-arm64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-arm64/-/darwin-arm64-0.5.22.tgz", + "integrity": "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@libsql/darwin-x64": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/darwin-x64/-/darwin-x64-0.5.22.tgz", + "integrity": "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@libsql/hrana-client": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@libsql/hrana-client/-/hrana-client-0.7.0.tgz", + "integrity": "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==", + "license": "MIT", + "dependencies": { + "@libsql/isomorphic-fetch": "^0.3.1", + "@libsql/isomorphic-ws": "^0.1.5", + "js-base64": "^3.7.5", + "node-fetch": "^3.3.2" + } + }, + "node_modules/@libsql/isomorphic-fetch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@libsql/isomorphic-fetch/-/isomorphic-fetch-0.3.1.tgz", + "integrity": "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@libsql/isomorphic-ws": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@libsql/isomorphic-ws/-/isomorphic-ws-0.1.5.tgz", + "integrity": "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==", + "license": "MIT", + "dependencies": { + "@types/ws": "^8.5.4", + "ws": "^8.13.0" + } + }, + "node_modules/@libsql/linux-arm-gnueabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-gnueabihf/-/linux-arm-gnueabihf-0.5.22.tgz", + "integrity": "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm-musleabihf": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm-musleabihf/-/linux-arm-musleabihf-0.5.22.tgz", + "integrity": "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-gnu/-/linux-arm64-gnu-0.5.22.tgz", + "integrity": "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-arm64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-arm64-musl/-/linux-arm64-musl-0.5.22.tgz", + "integrity": "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-x64-gnu": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-gnu/-/linux-x64-gnu-0.5.22.tgz", + "integrity": "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/linux-x64-musl": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/linux-x64-musl/-/linux-x64-musl-0.5.22.tgz", + "integrity": "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@libsql/win32-x64-msvc": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/@libsql/win32-x64-msvc/-/win32-x64-msvc-0.5.22.tgz", + "integrity": "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@listr2/prompt-adapter-inquirer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@listr2/prompt-adapter-inquirer/-/prompt-adapter-inquirer-3.0.5.tgz", + "integrity": "sha512-WELs+hj6xcilkloBXYf9XXK8tYEnKsgLj01Xl5ONUJpKjmT5hGVUzNUS5tooUxs7pGMrw+jFD/41WpqW4V3LDA==", + "license": "MIT", + "dependencies": { + "@inquirer/type": "^3.0.8" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@inquirer/prompts": ">= 3 < 8", + "listr2": "9.0.5" + } + }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.25.3", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.25.3.tgz", + "integrity": "sha512-vsAMBMERybvYgKbg/l4L1rhS7VXV1c0CtyJg72vwxONVX0l4ZfKVAnZEWTQixJGTzKnELjQ59e4NbdFDALRiAQ==", + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.0.1", + "express-rate-limit": "^7.5.0", + "jose": "^6.1.1", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@neon-rs/load": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@neon-rs/load/-/load-0.0.4.tgz", + "integrity": "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==", + "license": "MIT" + }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/api-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.205.0.tgz", + "integrity": "sha512-wBlPk1nFB37Hsm+3Qy73yQSobVn28F4isnWIBvKpd5IUH/eat8bwcL02H9yzmHyyPmukeccSl2mbN5sDQZYnPg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/context-async-hooks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-2.1.0.tgz", + "integrity": "sha512-zOyetmZppnwTyPrt4S7jMfXiSX9yyfF0hxlA8B5oo2TtKl+/RGCy7fi4DrBfIf3lCPrkKsRBWZZD7RFojK7FDg==", + "license": "Apache-2.0", + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.5.0.tgz", + "integrity": "sha512-ka4H8OM6+DlUhSAZpONu0cPBtPPTQKxbxVzC4CzVx5+K4JnroJVBtDzLAMx4/3CDTJXRvVFhpFjtl4SaiTNoyQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-grpc/-/exporter-logs-otlp-grpc-0.205.0.tgz", + "integrity": "sha512-jQlw7OHbqZ8zPt+pOrW2KGN7T55P50e3NXBMr4ckPOF+DWDwSy4W7mkG09GpYWlQAQ5C9BXg5gfUlv5ldTgWsw==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/sdk-logs": "0.205.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-grpc/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.205.0.tgz", + "integrity": "sha512-5JteMyVWiro4ghF0tHQjfE6OJcF7UBUcoEqX3UIQ5jutKP1H+fxFdyhqjjpmeHMFxzOHaYuLlNR1Bn7FOjGyJg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/sdk-logs": "0.205.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-proto/-/exporter-logs-otlp-proto-0.205.0.tgz", + "integrity": "sha512-q3VS9wS+lpZ01txKxiDGBtBpTNge3YhbVEFDgem9ZQR9eI3EZ68+9tVZH9zJcSxI37nZPJ6lEEZO58yEjYZsVA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.205.0", + "@opentelemetry/sdk-trace-base": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-proto/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-grpc/-/exporter-metrics-otlp-grpc-0.205.0.tgz", + "integrity": "sha512-1Vxlo4lUwqSKYX+phFkXHKYR3DolFHxCku6lVMP1H8sVE3oj4wwmwxMzDsJ7zF+sXd8M0FCr+ckK4SnNNKkV+w==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.205.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-grpc/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.205.0.tgz", + "integrity": "sha512-fFxNQ/HbbpLmh1pgU6HUVbFD1kNIjrkoluoKJkh88+gnmpFD92kMQ8WFNjPnSbjg2mNVnEkeKXgCYEowNW+p1w==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-http/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-proto": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-metrics-otlp-proto/-/exporter-metrics-otlp-proto-0.205.0.tgz", + "integrity": "sha512-qIbNnedw9QfFjwpx4NQvdgjK3j3R2kWH/2T+7WXAm1IfMFe9fwatYxE61i7li4CIJKf8HgUC3GS8Du0C3D+AuQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.205.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-metrics-otlp-proto/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-prometheus": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-prometheus/-/exporter-prometheus-0.205.0.tgz", + "integrity": "sha512-xsot/Qm9VLDTag4GEwAunD1XR1U8eBHTLAgO7IZNo2JuD/c/vL7xmDP7mQIUr6Lk3gtj/yGGIR2h3vhTeVzv4w==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-metrics": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-prometheus/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-grpc/-/exporter-trace-otlp-grpc-0.205.0.tgz", + "integrity": "sha512-ZBksUk84CcQOuDJB65yu5A4PORkC4qEsskNwCrPZxDLeWjPOFZNSWt0E0jQxKCY8PskLhjNXJYo12YaqsYvGFA==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-grpc-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-grpc/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.205.0.tgz", + "integrity": "sha512-vr2bwwPCSc9u7rbKc74jR+DXFvyMFQo9o5zs+H/fgbK672Whw/1izUKVf+xfWOdJOvuwTnfWxy+VAY+4TSo74Q==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-http/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-proto/-/exporter-trace-otlp-proto-0.205.0.tgz", + "integrity": "sha512-bGtFzqiENO2GpJk988mOBMe0MfeNpTQjbLm/LBijas6VRyEDQarUzdBHpFlu89A25k1+BCntdWGsWTa9Ai4FyA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-trace-otlp-proto/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-zipkin/-/exporter-zipkin-2.1.0.tgz", + "integrity": "sha512-0mEI0VDZrrX9t5RE1FhAyGz+jAGt96HSuXu73leswtY3L5YZD11gtcpARY2KAx/s6Z2+rj5Mhj566JsI2C7mfA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.0.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-zipkin/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.205.0.tgz", + "integrity": "sha512-cgvm7tvQdu9Qo7VurJP84wJ7ZV9F6WqDDGZpUc6rUEXwjV7/bXWs0kaYp9v+1Vh1+3TZCD3i6j/lUBcPhu8NhA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "import-in-the-middle": "^1.8.1", + "require-in-the-middle": "^7.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.205.0.tgz", + "integrity": "sha512-2MN0C1IiKyo34M6NZzD6P9Nv9Dfuz3OJ3rkZwzFmF6xzjDfqqCTatc9v1EpNfaP55iDOCLHFyYNCgs61FFgtUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-transformer": "0.205.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-exporter-base/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-grpc-exporter-base/-/otlp-grpc-exporter-base-0.205.0.tgz", + "integrity": "sha512-AeuLfrciGYffqsp4EUTdYYc6Ee2BQS+hr08mHZk1C524SFWx0WnfcTnV0NFXbVURUNU6DZu1DhS89zRRrcx/hg==", + "license": "Apache-2.0", + "dependencies": { + "@grpc/grpc-js": "^1.7.1", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/otlp-exporter-base": "0.205.0", + "@opentelemetry/otlp-transformer": "0.205.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-grpc-exporter-base/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.205.0.tgz", + "integrity": "sha512-KmObgqPtk9k/XTlWPJHdMbGCylRAmMJNXIRh6VYJmvlRDMfe+DonH41G7eenG8t4FXn3fxOGh14o/WiMRR6vPg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.205.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/otlp-transformer/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-b3": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-b3/-/propagator-b3-2.1.0.tgz", + "integrity": "sha512-yOdHmFseIChYanddMMz0mJIFQHyjwbNhoxc65fEAA8yanxcBPwoFDoh1+WBUWAO/Z0NRgk+k87d+aFIzAZhcBw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-b3/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/propagator-jaeger/-/propagator-jaeger-2.1.0.tgz", + "integrity": "sha512-QYo7vLyMjrBCUTpwQBF/e+rvP7oGskrSELGxhSvLj5gpM0az9oJnu/0O4l2Nm7LEhAff80ntRYKkAcSwVgvSVQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/propagator-jaeger/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.1.0.tgz", + "integrity": "sha512-1CJjf3LCvoefUOgegxi8h6r4B/wLSzInyhGP2UmIBYNlo4Qk5CZ73e1eEyWmfXvFtm1ybkmfb2DqWvspsYLrWw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.205.0.tgz", + "integrity": "sha512-nyqhNQ6eEzPWQU60Nc7+A5LIq8fz3UeIzdEVBQYefB4+msJZ2vuVtRuk9KxPMw1uHoHDtYEwkr2Ct0iG29jU8w==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.1.0.tgz", + "integrity": "sha512-J9QX459mzqHLL9Y6FZ4wQPRZG4TOpMCyPOh6mkr/humxE1W2S3Bvf4i75yiMW9uyed2Kf5rxmLhTm/UK8vNkAw==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-metrics/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-node": { + "version": "0.205.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-node/-/sdk-node-0.205.0.tgz", + "integrity": "sha512-Y4Wcs8scj/Wy1u61pX1ggqPXPtCsGaqx/UnFu7BtRQE1zCQR+b0h56K7I0jz7U2bRlPUZIFdnNLtoaJSMNzz2g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.205.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/exporter-logs-otlp-grpc": "0.205.0", + "@opentelemetry/exporter-logs-otlp-http": "0.205.0", + "@opentelemetry/exporter-logs-otlp-proto": "0.205.0", + "@opentelemetry/exporter-metrics-otlp-grpc": "0.205.0", + "@opentelemetry/exporter-metrics-otlp-http": "0.205.0", + "@opentelemetry/exporter-metrics-otlp-proto": "0.205.0", + "@opentelemetry/exporter-prometheus": "0.205.0", + "@opentelemetry/exporter-trace-otlp-grpc": "0.205.0", + "@opentelemetry/exporter-trace-otlp-http": "0.205.0", + "@opentelemetry/exporter-trace-otlp-proto": "0.205.0", + "@opentelemetry/exporter-zipkin": "2.1.0", + "@opentelemetry/instrumentation": "0.205.0", + "@opentelemetry/propagator-b3": "2.1.0", + "@opentelemetry/propagator-jaeger": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/sdk-logs": "0.205.0", + "@opentelemetry/sdk-metrics": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0", + "@opentelemetry/sdk-trace-node": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.5.0.tgz", + "integrity": "sha512-VzRf8LzotASEyNDUxTdaJ9IRJ1/h692WyArDBInf5puLCjxbICD6XkHgpuudis56EndyS7LYFmtTMny6UABNdQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/resources": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/resources": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.5.0.tgz", + "integrity": "sha512-F8W52ApePshpoSrfsSk1H2yJn9aKjCrbpQF1M9Qii0GHzbfVeFUB+rc3X4aggyZD8x9Gu3Slua+s6krmq6Dt8g==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.5.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.1.0.tgz", + "integrity": "sha512-SvVlBFc/jI96u/mmlKm86n9BbTCbQ35nsPoOohqJX6DXH92K0kTe73zGY5r8xoI1QkjR9PizszVJLzMC966y9Q==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/context-async-hooks": "2.1.0", + "@opentelemetry/core": "2.1.0", + "@opentelemetry/sdk-trace-base": "2.1.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/core": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.1.0.tgz", + "integrity": "sha512-RMEtHsxJs/GiHHxYT58IY57UXAQTuUnZVco6ymDEqTNlJKTimM4qPUPVe8InNFyBjhHBEAx4k3Q8LtNayBsbUQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-node/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.1.0.tgz", + "integrity": "sha512-uTX9FBlVQm4S2gVQO1sb5qyBLq/FPjbp+tmGoxu4tIgtYGmBYB44+KX/725RFDe30yBSaA9Ml9fqphe1hbUyLQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.1.0", + "@opentelemetry/resources": "2.1.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.39.0.tgz", + "integrity": "sha512-R5R9tb2AXs2IRLNKLBJDynhkfmx7mX0vi8NkhZb3gUkPWHn6HXk5J8iQ/dql0U3ApfWym4kXXmBDRGO+oeOfjg==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pondwader/socks5-server": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@pondwader/socks5-server/-/socks5-server-1.0.10.tgz", + "integrity": "sha512-bQY06wzzR8D2+vVCUoBsr5QS2U6UgPUQRmErNwtsuI6vLcyRKkafjkr3KxbtGFf9aBBIV2mcvlsKD1UYaIV+sg==", + "license": "MIT" + }, + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" + } + }, + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/core": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.21.0.tgz", + "integrity": "sha512-bg2TfzgsERyETAxc/Ims/eJX8eAnIeTi4r4LHpMpfF/2NyO6RsWis0rjKcCPaGksljmOb23BZRiCeT/3NvwkXw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.10", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", + "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", + "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", + "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", + "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", + "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.10.tgz", + "integrity": "sha512-kwWpNltpxrvPabnjEFvwSmA+66l6s2ReCvgVSzW/z92LU4T28fTdgZ18IdYRYOrisu2NMQ0jUndRScbO65A/zg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.21.0", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "4.4.26", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.26.tgz", + "integrity": "sha512-ozZMoTAr+B2aVYfLYfkssFvc8ZV3p/vLpVQ7/k277xxUOA9ykSPe5obL2j6yHfbdrM/SZV7qj0uk/hSqavHrLw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.10.11", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/node-http-handler": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.8.tgz", + "integrity": "sha512-q9u+MSbJVIJ1QmJ4+1u+cERXkrhuILCBDsJUBAW1MPE6sFonbCNaegFuwW9ll8kh5UdyY3jOkoOGlc7BesoLpg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/smithy-client": { + "version": "4.10.11", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.10.11.tgz", + "integrity": "sha512-6o804SCyHGMXAb5mFJ+iTy9kVKv7F91a9szN0J+9X6p8A0NrdpUxdaC57aye2ipQkP2C4IAqETEpGZ0Zj77Haw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.21.0", + "@smithy/middleware-endpoint": "^4.4.10", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.10", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.25", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.25.tgz", + "integrity": "sha512-8ugoNMtss2dJHsXnqsibGPqoaafvWJPACmYKxJ4E6QWaDrixsAemmiMMAVbvwYadjR0H9G2+AlzsInSzRi8PSw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.10.11", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.28", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.28.tgz", + "integrity": "sha512-mjUdcP8h3E0K/XvNMi9oBXRV3DMCzeRiYIieZ1LQ7jq5tu6GH/GTWym7a1xIIE0pKSoLcpGsaImuQhGPSIJzAA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.10.11", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-stream": { + "version": "4.5.10", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.10.tgz", + "integrity": "sha512-jbqemy51UFSZSp2y0ZmRfckmrzuKww95zT9BYMmuJ8v3altGcqjwoV1tzpOwuHaKrwQrCjIzOib499ymr2f98g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/uuid": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@sqlite.org/sqlite-wasm": { + "version": "3.50.1-build1", + "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.50.1-build1.tgz", + "integrity": "sha512-yH4M/SHN98NibniIwTVk6rwTJjy7n39l7zwWY3u+qsfZBGTi4lC1uEl2NDvIlkzsFtfCBvHBJJFJ1iuU3UzzEQ==", + "license": "Apache-2.0", + "bin": { + "sqlite-wasm": "bin/index.js" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "license": "MIT" + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-RDvF6wTulMPjrNdCoYRC8gNR880JNGT8uB+REUpC2Ns4pRqQJhGz90wh7rgdXDPpCczF3VGktDuFGVnz8zP7HA==", + "license": "MIT" + }, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", + "license": "MIT", + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "25.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.10.tgz", + "integrity": "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "node_modules/@types/tinycolor2": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.6.tgz", + "integrity": "sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", + "license": "ISC" + }, + "node_modules/@ungap/with-resolvers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@ungap/with-resolvers/-/with-resolvers-0.1.0.tgz", + "integrity": "sha512-g7f0IkJdPW2xhY7H4iE72DAsIyfuwEFc6JWc2tYFwKDMWWAF699vGjrM348cwQuOXgHpe1gWFe+Eiyjx/ewvvw==", + "license": "ISC" + }, + "node_modules/@vscode/ripgrep": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/@vscode/ripgrep/-/ripgrep-1.17.0.tgz", + "integrity": "sha512-mBRKm+ASPkUcw4o9aAgfbusIu6H4Sdhw09bjeP1YOBFTJEZAnrnk6WZwzv8NEjgC82f7ILvhmb1WIElSugea6g==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "https-proxy-agent": "^7.0.2", + "proxy-from-env": "^1.1.0", + "yauzl": "^2.9.2" + } + }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@zenoaihq/tson": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@zenoaihq/tson/-/tson-1.1.0.tgz", + "integrity": "sha512-P9AdkWd7nS4qiEEWL6T5tugSH7F9fGvkWl/lyZpLSqIPjZbH08pNj3AhXfUY8RyAw17HjB7kUllQc+/27r4ukg==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@zowe/secrets-for-zowe-sdk": { + "version": "8.29.4", + "resolved": "https://registry.npmjs.org/@zowe/secrets-for-zowe-sdk/-/secrets-for-zowe-sdk-8.29.4.tgz", + "integrity": "sha512-fiRfuEuFNapwhVbN3LJIA2ZgVajNB+QNFN7O7ES/fIYGM612PKcXuvbZUJSlU69IZ8eUF8SP+9OnveK4s+GLgw==", + "hasInstallScript": true, + "license": "EPL-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/a-sync-waterfall": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz", + "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==", + "license": "MIT" + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/address": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/address/-/address-2.0.3.tgz", + "integrity": "sha512-XNAb/a6TCqou+TufU8/u11HCu9x1gYvOoxLwtlXgIqmkrYQADVv6ljyW2zwiPhHz9R1gItAWpuDrdJMmrOBFEA==", + "license": "MIT", + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-align/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-align/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-escapes": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", + "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/any-base": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", + "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==", + "license": "MIT" + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "license": "MIT" + }, + "node_modules/app-path": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/app-path/-/app-path-4.0.0.tgz", + "integrity": "sha512-mgBO9PZJ3MpbKbwFTljTi36ZKBvG5X/fkVR1F85ANsVcVllEb+C0LGNdJfGUm84GpC4xxgN6HFkmkMU8VEO4mA==", + "license": "MIT", + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/archiver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", + "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.2", + "async": "^3.2.4", + "buffer-crc32": "^1.0.0", + "readable-stream": "^4.0.0", + "readdir-glob": "^1.1.2", + "tar-stream": "^3.0.0", + "zip-stream": "^6.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", + "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", + "license": "MIT", + "dependencies": { + "glob": "^10.0.0", + "graceful-fs": "^4.2.0", + "is-stream": "^2.0.1", + "lazystream": "^1.0.0", + "lodash": "^4.17.15", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/archiver-utils/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/archiver-utils/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/archiver-utils/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/archiver-utils/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "license": "Python-2.0" + }, + "node_modules/array-range": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-range/-/array-range-1.0.1.tgz", + "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==", + "license": "MIT" + }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "license": "MIT" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "license": "MIT" + }, + "node_modules/auto-bind": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", + "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/await-to-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/await-to-js/-/await-to-js-3.0.0.tgz", + "integrity": "sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/b4a": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.7.3.tgz", + "integrity": "sha512-5Q2mfq2WfGuFp3uS//0s6baOJLMoVduPYVeNmDYxu5OUA1/cBfvr2RIS7vi62LdNj/urk1hfmj867I3qt6uZ7Q==", + "license": "Apache-2.0", + "peerDependencies": { + "react-native-b4a": "*" + }, + "peerDependenciesMeta": { + "react-native-b4a": { + "optional": true + } + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/bare-events": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "license": "MIT" + }, + "node_modules/bmp-js": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", + "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==", + "license": "MIT" + }, + "node_modules/bmp-ts": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/bmp-ts/-/bmp-ts-1.0.9.tgz", + "integrity": "sha512-cTEHk2jLrPyi+12M3dhpEbnnPOsaZuq7C45ylbbQIiWgDFZq4UVYPEY5mlqjvsj/6gJv9qX5sa+ebDzLXT28Vw==", + "license": "MIT" + }, + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/bowser": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.13.1.tgz", + "integrity": "sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==", + "license": "MIT" + }, + "node_modules/boxen": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", + "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", + "cli-boxes": "^3.0.0", + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/boxen/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-crc32": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", + "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "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" + } + }, + "node_modules/call-bind-apply-helpers": { + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/camelize-ts": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelize-ts/-/camelize-ts-3.0.0.tgz", + "integrity": "sha512-cgRwKKavoDKLTjO4FQTs3dRBePZp/2Y9Xpud0FhuCOTE86M2cniKN4CCXgRnsyXNMmQMifVHcv6SPaMtTx6ofQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/centra": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", + "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6" + } + }, + "node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", + "license": "MIT" + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", + "license": "MIT" + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-highlight": { + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", + "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0", + "highlight.js": "^10.7.1", + "mz": "^2.4.0", + "parse5": "^5.1.1", + "parse5-htmlparser2-tree-adapter": "^6.0.0", + "yargs": "^16.0.0" + }, + "bin": { + "highlight": "bin/highlight" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/cli-highlight/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/cli-highlight/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/cli-highlight/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-highlight/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-9.0.1.tgz", + "integrity": "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==", + "license": "ISC", + "dependencies": { + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/code-excerpt": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", + "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", + "license": "MIT", + "dependencies": { + "convert-to-spaces": "^2.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/coincident": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/coincident/-/coincident-1.2.3.tgz", + "integrity": "sha512-Uxz3BMTWIslzeWjuQnizGWVg0j6khbvHUQ8+5BdM7WuJEm4ALXwq3wluYoB+uF68uPBz/oUOeJnYURKyfjexlA==", + "license": "ISC", + "dependencies": { + "@ungap/structured-clone": "^1.2.0", + "@ungap/with-resolvers": "^0.1.0", + "gc-hook": "^0.3.1", + "proxy-target": "^3.0.2" + }, + "optionalDependencies": { + "ws": "^8.16.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "license": "MIT" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/compress-commons": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", + "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "crc32-stream": "^6.0.0", + "is-stream": "^2.0.1", + "normalize-path": "^3.0.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "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" + } + }, + "node_modules/convert-to-spaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", + "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-parser": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "license": "MIT", + "dependencies": { + "cookie": "0.7.2", + "cookie-signature": "1.0.6" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc32-stream": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", + "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", + "license": "MIT", + "dependencies": { + "crc-32": "^1.2.0", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" + }, + "node_modules/cycled": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/cycled/-/cycled-1.2.0.tgz", + "integrity": "sha512-/BOOCEohSBflVHHtY/wUc1F6YDYPqyVs/A837gDoq4H1pm72nU/yChyGt91V4ML+MbbAmHs8uo2l1yJkkTIUdg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decimal.js": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz", + "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==", + "license": "MIT" + }, + "node_modules/decode-gif": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/decode-gif/-/decode-gif-1.0.1.tgz", + "integrity": "sha512-L0MT527mwlkil9TiN1xwnJXzUxCup55bUT91CPmQlc9zYejXJ8xp17d5EVnwM80JOIGImBUk1ptJQ+hDihyzwg==", + "license": "MIT", + "dependencies": { + "array-range": "^1.0.1", + "omggif": "^1.0.10" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/default-browser": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.4.0.tgz", + "integrity": "sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delay": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/delay/-/delay-4.4.1.tgz", + "integrity": "sha512-aL3AhqtfhOlT/3ai6sWXeqwnw63ATNpnUiN4HL7x9q+My5QtHlO3OIkasmug9LKzpheLdmUKGRKnYXYAS7FQkQ==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "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", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-port": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-2.1.0.tgz", + "integrity": "sha512-epZuWb/6Q62L+nDHJc/hQAqf8pylsqgk3BpZXVBx1CDnr3nkrVNn73Uu1rXcFzkNcc+hkP3whuOg7JZYaQB65Q==", + "license": "MIT", + "dependencies": { + "address": "^2.0.1" + }, + "bin": { + "detect": "dist/commonjs/bin/detect-port.js", + "detect-port": "dist/commonjs/bin/detect-port.js" + }, + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-flow": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dotenv-flow/-/dotenv-flow-4.1.0.tgz", + "integrity": "sha512-0cwP9jpQBQfyHwvE0cRhraZMkdV45TQedA8AAUZMsFzvmLcQyc1HPv+oX0OOYwLFjIlvgVepQ+WuQHbqDaHJZg==", + "license": "MIT", + "dependencies": { + "dotenv": "^16.0.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/drizzle-orm": { + "version": "0.44.7", + "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.44.7.tgz", + "integrity": "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ==", + "license": "Apache-2.0", + "peerDependencies": { + "@aws-sdk/client-rds-data": ">=3", + "@cloudflare/workers-types": ">=4", + "@electric-sql/pglite": ">=0.2.0", + "@libsql/client": ">=0.10.0", + "@libsql/client-wasm": ">=0.10.0", + "@neondatabase/serverless": ">=0.10.0", + "@op-engineering/op-sqlite": ">=2", + "@opentelemetry/api": "^1.4.1", + "@planetscale/database": ">=1.13", + "@prisma/client": "*", + "@tidbcloud/serverless": "*", + "@types/better-sqlite3": "*", + "@types/pg": "*", + "@types/sql.js": "*", + "@upstash/redis": ">=1.34.7", + "@vercel/postgres": ">=0.8.0", + "@xata.io/client": "*", + "better-sqlite3": ">=7", + "bun-types": "*", + "expo-sqlite": ">=14.0.0", + "gel": ">=2", + "knex": "*", + "kysely": "*", + "mysql2": ">=2", + "pg": ">=8", + "postgres": ">=3", + "sql.js": ">=1", + "sqlite3": ">=5" + }, + "peerDependenciesMeta": { + "@aws-sdk/client-rds-data": { + "optional": true + }, + "@cloudflare/workers-types": { + "optional": true + }, + "@electric-sql/pglite": { + "optional": true + }, + "@libsql/client": { + "optional": true + }, + "@libsql/client-wasm": { + "optional": true + }, + "@neondatabase/serverless": { + "optional": true + }, + "@op-engineering/op-sqlite": { + "optional": true + }, + "@opentelemetry/api": { + "optional": true + }, + "@planetscale/database": { + "optional": true + }, + "@prisma/client": { + "optional": true + }, + "@tidbcloud/serverless": { + "optional": true + }, + "@types/better-sqlite3": { + "optional": true + }, + "@types/pg": { + "optional": true + }, + "@types/sql.js": { + "optional": true + }, + "@upstash/redis": { + "optional": true + }, + "@vercel/postgres": { + "optional": true + }, + "@xata.io/client": { + "optional": true + }, + "better-sqlite3": { + "optional": true + }, + "bun-types": { + "optional": true + }, + "expo-sqlite": { + "optional": true + }, + "gel": { + "optional": true + }, + "knex": { + "optional": true + }, + "kysely": { + "optional": true + }, + "mysql2": { + "optional": true + }, + "pg": { + "optional": true + }, + "postgres": { + "optional": true + }, + "prisma": { + "optional": true + }, + "sql.js": { + "optional": true + }, + "sqlite3": { + "optional": true + } + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", + "license": "BSD-3-Clause", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer2/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/duplexer2/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/duplexer2/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "license": "MIT" + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "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" + }, + "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==", + "license": "MIT" + }, + "node_modules/emojilib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/emojilib/-/emojilib-2.4.0.tgz", + "integrity": "sha512-5U0rVMU5Y2n2+ykNLQqMoqklN9ICBT/KsvC1Gz6vqHbz2AXXGkG+Pm5rMWk/8Vjrr/mY9985Hi8DYzn1F09Nyw==", + "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", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-toolkit": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.44.0.tgz", + "integrity": "sha512-6penXeZalaV88MM3cGkFZZfOoLGWshWWfdy0tWw/RlVVyhvMaWSBTOvXNeiW3e5FwdS5ePW0LGEu17zT139ktg==", + "license": "MIT", + "workspaces": [ + "docs", + "benchmarks" + ] + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "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" + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", + "integrity": "sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==", + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/exif-parser": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", + "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.1.tgz", + "integrity": "sha512-7iN8iPMDzOMHPUYllBEsQdWVB6fPDMPqwjBaFrgr4Jgr/+okjvzAy+UHlYYL/Vs0OsOrMkwS6PJDkFlJwoxUnw==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express-sse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/express-sse/-/express-sse-1.0.0.tgz", + "integrity": "sha512-ny3nCXjrWwQki8edZe0DwuXjLbw0ga3pc0CZX19VOB0GKuUnlIH2fqPBwTJcGHZPtmjJ2EVNPVeCgORpX6Nsrw==", + "license": "MIT", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/express/node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "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==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-xml-parser": { + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "license": "MIT", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/file-type": { + "version": "16.5.4", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", + "license": "MIT", + "dependencies": { + "readable-web-to-node-stream": "^3.0.0", + "strtok3": "^6.2.4", + "token-types": "^4.1.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/file-type?sponsor=1" + } + }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "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" + } + }, + "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", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "license": "MIT", + "dependencies": { + "js-yaml": "^3.13.1" + } + }, + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.3.tgz", + "integrity": "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "node-fetch": "^3.3.2", + "rimraf": "^5.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/gc-hook": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/gc-hook/-/gc-hook-0.3.1.tgz", + "integrity": "sha512-E5M+O/h2o7eZzGhzRZGex6hbB3k4NWqO0eA+OzLRLXxhdbYPajZnynPwAtphnh+cRHPwsj5Z80dqZlfI4eK55A==", + "license": "ISC" + }, + "node_modules/gcp-metadata": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-8.1.2.tgz", + "integrity": "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^7.0.0", + "google-logging-utils": "^1.0.0", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gifwrap": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", + "integrity": "sha512-2760b1vpJHNmLzZ/ubTtNnEx5WApN/PYWJvXvgS+tL1egTTthayFYIQQNi136FLEDcN/IyEY2EcGpIITD6eYUw==", + "license": "MIT", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/google-auth-library": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.5.0.tgz", + "integrity": "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^7.0.0", + "gcp-metadata": "^8.0.0", + "google-logging-utils": "^1.0.0", + "gtoken": "^8.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/google-logging-utils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.3.tgz", + "integrity": "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "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==", + "license": "ISC" + }, + "node_modules/gradient-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/gradient-string/-/gradient-string-3.0.0.tgz", + "integrity": "sha512-frdKI4Qi8Ihp4C6wZNB565de/THpIaw3DjP5ku87M+N9rNSGmPTjfkq61SdRXB7eCaL8O1hkKDvf6CDMtOzIAg==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "tinygradient": "^1.1.5" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gtoken": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz", + "integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==", + "license": "MIT", + "dependencies": { + "gaxios": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/highlight.js": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/hono": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.5.tgz", + "integrity": "sha512-WemPi9/WfyMwZs+ZUXdiwcCh9Y+m7L+8vki9MzDw3jJ+W9Lc+12HGsd368Qc1vZi1xwW8BWMMsnK5efYKPdt4g==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=16.9.0" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-dimensions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/image-dimensions/-/image-dimensions-2.5.0.tgz", + "integrity": "sha512-CKZPHjAEtSg9lBV9eER0bhNn/yrY7cFEQEhkwjLhqLY+Na8lcP1pEyWsaGMGc8t2qbKWA/tuqbhFQpOKGN72Yw==", + "license": "MIT", + "bin": { + "image-dimensions": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/image-q": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", + "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", + "license": "MIT", + "dependencies": { + "@types/node": "16.9.1" + } + }, + "node_modules/image-q/node_modules/@types/node": { + "version": "16.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", + "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", + "license": "MIT" + }, + "node_modules/immer": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.2.0.tgz", + "integrity": "sha512-d/+XTN3zfODyjr89gM3mPq1WNX2B8pYsu7eORitdwyA2sBubnTl3laYlBk4sXY5FUa5qTZGBDPJICVbvqzjlbw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, + "node_modules/import-in-the-middle": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.15.0.tgz", + "integrity": "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA==", + "license": "Apache-2.0", + "dependencies": { + "acorn": "^8.14.0", + "acorn-import-attributes": "^1.9.5", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ink": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/ink/-/ink-6.6.0.tgz", + "integrity": "sha512-QDt6FgJxgmSxAelcOvOHUvFxbIUjVpCH5bx+Slvc5m7IEcpGt3dYwbz/L+oRnqEGeRvwy1tineKK4ect3nW1vQ==", + "license": "MIT", + "dependencies": { + "@alcalzone/ansi-tokenize": "^0.2.1", + "ansi-escapes": "^7.2.0", + "ansi-styles": "^6.2.1", + "auto-bind": "^5.0.1", + "chalk": "^5.6.0", + "cli-boxes": "^3.0.0", + "cli-cursor": "^4.0.0", + "cli-truncate": "^5.1.1", + "code-excerpt": "^4.0.0", + "es-toolkit": "^1.39.10", + "indent-string": "^5.0.0", + "is-in-ci": "^2.0.0", + "patch-console": "^2.0.0", + "react-reconciler": "^0.33.0", + "signal-exit": "^3.0.7", + "slice-ansi": "^7.1.0", + "stack-utils": "^2.0.6", + "string-width": "^8.1.0", + "type-fest": "^4.27.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0", + "ws": "^8.18.0", + "yoga-layout": "~3.2.1" + }, + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@types/react": ">=19.0.0", + "react": ">=19.0.0", + "react-devtools-core": "^6.1.2" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react-devtools-core": { + "optional": true + } + } + }, + "node_modules/ink/node_modules/cli-truncate": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", + "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", + "license": "MIT", + "dependencies": { + "slice-ansi": "^7.1.0", + "string-width": "^8.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ink/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/ink/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/inquirer": { + "version": "12.11.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.11.1.tgz", + "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/core": "^10.3.2", + "@inquirer/prompts": "^7.10.1", + "@inquirer/type": "^3.0.10", + "mute-stream": "^2.0.0", + "run-async": "^4.0.6", + "rxjs": "^7.8.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/ipaddr.js": { + "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" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "license": "MIT" + }, + "node_modules/is-in-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-2.0.0.tgz", + "integrity": "sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==", + "license": "MIT", + "bin": { + "is-in-ci": "cli.js" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.0.tgz", + "integrity": "sha512-6oIwpsgRfnDiyEDLMay/GqCl3HoAtH5+RUKW29gYkL0QA+ipzpDLA16yQs7/RHCSu+BwgbJaOUqa4A99qNVQVw==", + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iterm2-version": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/iterm2-version/-/iterm2-version-5.0.0.tgz", + "integrity": "sha512-WdLXcMYvN3SXT6vEtuW78vnZs4pVWm2nBnb4VKjOPPXmdlR1xTHmBgqKacOzAe4RXOiY/V+0u/0zsU3LoGQoBg==", + "license": "MIT", + "dependencies": { + "app-path": "^4.0.0", + "plist": "^3.0.2" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jackspeak": { + "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==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/jaison": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jaison/-/jaison-2.0.2.tgz", + "integrity": "sha512-aDko6D0+EXarmfVG736LP5VH7r/9gpFfWG5yA1/fBW0elrUVrS5K22zkEb2/7oopJN2JztSWx7vgbRsYIyOX2Q==", + "license": "ISC", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/querycatai" + } + }, + "node_modules/jimp": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-1.6.0.tgz", + "integrity": "sha512-YcwCHw1kiqEeI5xRpDlPPBGL2EOpBKLwO4yIBJcXWHPj5PnA5urGq0jbyhM5KoNpypQ6VboSoxc9D8HyfvngSg==", + "license": "MIT", + "dependencies": { + "@jimp/core": "1.6.0", + "@jimp/diff": "1.6.0", + "@jimp/js-bmp": "1.6.0", + "@jimp/js-gif": "1.6.0", + "@jimp/js-jpeg": "1.6.0", + "@jimp/js-png": "1.6.0", + "@jimp/js-tiff": "1.6.0", + "@jimp/plugin-blit": "1.6.0", + "@jimp/plugin-blur": "1.6.0", + "@jimp/plugin-circle": "1.6.0", + "@jimp/plugin-color": "1.6.0", + "@jimp/plugin-contain": "1.6.0", + "@jimp/plugin-cover": "1.6.0", + "@jimp/plugin-crop": "1.6.0", + "@jimp/plugin-displace": "1.6.0", + "@jimp/plugin-dither": "1.6.0", + "@jimp/plugin-fisheye": "1.6.0", + "@jimp/plugin-flip": "1.6.0", + "@jimp/plugin-hash": "1.6.0", + "@jimp/plugin-mask": "1.6.0", + "@jimp/plugin-print": "1.6.0", + "@jimp/plugin-quantize": "1.6.0", + "@jimp/plugin-resize": "1.6.0", + "@jimp/plugin-rotate": "1.6.0", + "@jimp/plugin-threshold": "1.6.0", + "@jimp/types": "1.6.0", + "@jimp/utils": "1.6.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/jose": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz", + "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/jpeg-js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", + "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==", + "license": "BSD-3-Clause" + }, + "node_modules/js-base64": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", + "integrity": "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow==", + "license": "BSD-3-Clause" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-schema-to-ts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", + "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "ts-algebra": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "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==", + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/jsonata": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-2.1.0.tgz", + "integrity": "sha512-OCzaRMK8HobtX8fp37uIVmL8CY1IGc/a6gLsDqz3quExFR09/U78HUzWYr7T31UEB6+Eu0/8dkVD5fFDOl9a8w==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonschema": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", + "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lazystream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", + "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^2.0.5" + }, + "engines": { + "node": ">= 0.6.3" + } + }, + "node_modules/lazystream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/lazystream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/lazystream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/libsql": { + "version": "0.5.22", + "resolved": "https://registry.npmjs.org/libsql/-/libsql-0.5.22.tgz", + "integrity": "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA==", + "cpu": [ + "x64", + "arm64", + "wasm32", + "arm" + ], + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "@neon-rs/load": "^0.0.4", + "detect-libc": "2.0.2" + }, + "optionalDependencies": { + "@libsql/darwin-arm64": "0.5.22", + "@libsql/darwin-x64": "0.5.22", + "@libsql/linux-arm-gnueabihf": "0.5.22", + "@libsql/linux-arm-musleabihf": "0.5.22", + "@libsql/linux-arm64-gnu": "0.5.22", + "@libsql/linux-arm64-musl": "0.5.22", + "@libsql/linux-x64-gnu": "0.5.22", + "@libsql/linux-x64-musl": "0.5.22", + "@libsql/win32-x64-msvc": "0.5.22" + } + }, + "node_modules/listr2": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", + "integrity": "sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==", + "license": "MIT", + "peer": true, + "dependencies": { + "cli-truncate": "^5.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/listr2/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "peer": true, + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/cli-truncate": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", + "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", + "license": "MIT", + "peer": true, + "dependencies": { + "slice-ansi": "^7.1.0", + "string-width": "^8.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "peer": true, + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/load-bmfont": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", + "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", + "license": "MIT", + "dependencies": { + "buffer-equal": "0.0.1", + "mime": "^1.3.4", + "parse-bmfont-ascii": "^1.0.3", + "parse-bmfont-binary": "^1.0.5", + "parse-bmfont-xml": "^1.1.4", + "phin": "^3.7.1", + "xhr": "^2.0.1", + "xtend": "^4.0.0" + } + }, + "node_modules/load-bmfont/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-bmfont/node_modules/phin": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", + "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT", + "dependencies": { + "centra": "^2.7.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/lodash": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isfunction": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz", + "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==", + "license": "MIT" + }, + "node_modules/lodash.isnil": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isnil/-/lodash.isnil-4.0.0.tgz", + "integrity": "sha512-up2Mzq3545mwVnMhTDMdfoG1OurpA/s5t88JmQX809eH3C8491iu2sfKhTfhQtKY78oPNhiaHJUpT/dUDAAtng==", + "license": "MIT" + }, + "node_modules/log-update": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-7.0.2.tgz", + "integrity": "sha512-cSSF1K5w9juI2+JeSRAdaTUZJf6cJB0aWwWO1nQQkcWw44+bIfXmhZMwK2eEsv6tXvU3UfKX/kzcX6SP+1tLAw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.1.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.2", + "strip-ansi": "^7.1.2", + "wrap-ansi": "^9.0.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.4.tgz", + "integrity": "sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/marked": { + "version": "16.4.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-16.4.2.tgz", + "integrity": "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 20" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "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.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/mime": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", + "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "funding": [ + "https://github.com/sponsors/broofa" + ], + "license": "MIT", + "bin": { + "mime": "bin/cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "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/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/min-document": { + "version": "2.19.2", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.2.tgz", + "integrity": "sha512-8S5I8db/uZN8r9HSLFVWPdJCvYOejMcEC82VIzNUc6Zkklf/d1gg2psfE79/vyhWOj4+J8MtwmoOz3TmvaGu5A==", + "license": "MIT", + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==", + "license": "MIT" + }, + "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==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-emoji": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-2.2.0.tgz", + "integrity": "sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^4.6.0", + "char-regex": "^1.0.2", + "emojilib": "^2.4.0", + "skin-tone": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "license": "MIT" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nunjucks": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.4.tgz", + "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==", + "license": "BSD-2-Clause", + "dependencies": { + "a-sync-waterfall": "^1.0.0", + "asap": "^2.0.3", + "commander": "^5.1.0" + }, + "bin": { + "nunjucks-precompile": "bin/precompile" + }, + "engines": { + "node": ">= 6.9.0" + }, + "peerDependencies": { + "chokidar": "^3.3.0" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/nunjucks/node_modules/commander": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/omggif": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", + "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==", + "license": "MIT" + }, + "node_modules/on-finished": { + "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", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openai": { + "version": "6.16.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.16.0.tgz", + "integrity": "sha512-fZ1uBqjFUjXzbGc35fFtYKEOxd20kd9fDpFeqWtsOZWiubY8CZ1NAlXHW3iathaFvqmNtCWMIsosCuyeI7Joxg==", + "license": "Apache-2.0", + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/p-retry": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-7.1.1.tgz", + "integrity": "sha512-J5ApzjyRkkf601HpEeykoiCvzHQjWxPAHhyjFcEUP2SWq0+35NKh8TLhpLw+Dkq5TZBFvUM6UigdE9hIVYTl5w==", + "license": "MIT", + "dependencies": { + "is-network-error": "^1.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-wait-for": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-5.0.2.tgz", + "integrity": "sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==", + "license": "MIT", + "dependencies": { + "p-timeout": "^6.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "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==", + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "license": "(MIT AND Zlib)" + }, + "node_modules/parse-bmfont-ascii": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", + "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==", + "license": "MIT" + }, + "node_modules/parse-bmfont-binary": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", + "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==", + "license": "MIT" + }, + "node_modules/parse-bmfont-xml": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", + "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", + "license": "MIT", + "dependencies": { + "xml-parse-from-string": "^1.0.0", + "xml2js": "^0.5.0" + } + }, + "node_modules/parse-headers": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", + "license": "MIT" + }, + "node_modules/parse5": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/patch-console": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", + "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/peek-readable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "license": "MIT" + }, + "node_modules/phin": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", + "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "license": "MIT" + }, + "node_modules/pixelmatch": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-5.3.0.tgz", + "integrity": "sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==", + "license": "ISC", + "dependencies": { + "pngjs": "^6.0.0" + }, + "bin": { + "pixelmatch": "bin/pixelmatch" + } + }, + "node_modules/pixelmatch/node_modules/pngjs": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz", + "integrity": "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==", + "license": "MIT", + "engines": { + "node": ">=12.13.0" + } + }, + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", + "license": "MIT", + "engines": { + "node": ">=16.20.0" + } + }, + "node_modules/plist": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/plist/-/plist-3.1.0.tgz", + "integrity": "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==", + "license": "MIT", + "dependencies": { + "@xmldom/xmldom": "^0.8.8", + "base64-js": "^1.5.1", + "xmlbuilder": "^15.1.1" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/pngjs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-7.0.0.tgz", + "integrity": "sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==", + "license": "MIT", + "engines": { + "node": ">=14.19.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "license": "MIT" + }, + "node_modules/promise-limit": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/promise-limit/-/promise-limit-2.7.0.tgz", + "integrity": "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==", + "license": "ISC" + }, + "node_modules/protobufjs": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", + "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/proxy-addr": { + "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" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/proxy-target": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/proxy-target/-/proxy-target-3.0.2.tgz", + "integrity": "sha512-FFE1XNwXX/FNC3/P8HiKaJSy/Qk68RitG/QEcLy/bVnTAPlgTAWPZKh0pARLAnpfXQPKyalBhk009NRTgsk8vQ==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/radix3": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==", + "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", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz", + "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-reconciler": { + "version": "0.33.0", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.33.0.tgz", + "integrity": "sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "peerDependencies": { + "react": "^19.2.0" + } + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", + "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", + "license": "MIT", + "dependencies": { + "readable-stream": "^4.7.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/readdir-glob": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", + "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.1.0" + } + }, + "node_modules/readdir-glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/render-gif": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/render-gif/-/render-gif-2.0.4.tgz", + "integrity": "sha512-l5X7EwbEvdflnvVAzjL7njizwZN8ATqJ0rdaQ5WwMJ55vyWXIXIUE9Ut7W6hm+KE+HMYn5C0a+7t0B6JjGfxQA==", + "license": "MIT", + "dependencies": { + "cycled": "^1.2.0", + "decode-gif": "^1.0.1", + "delay": "^4.3.0", + "jimp": "^0.14.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/render-gif/node_modules/@jimp/types": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.14.0.tgz", + "integrity": "sha512-hx3cXAW1KZm+b+XCrY3LXtdWy2U+hNtq0rPyJ7NuXCjU7lZR3vIkpz1DLJ3yDdS70hTi5QDXY3Cd9kd6DtloHQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/bmp": "^0.14.0", + "@jimp/gif": "^0.14.0", + "@jimp/jpeg": "^0.14.0", + "@jimp/png": "^0.14.0", + "@jimp/tiff": "^0.14.0", + "timm": "^1.6.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/render-gif/node_modules/@jimp/types/node_modules/@jimp/bmp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.14.0.tgz", + "integrity": "sha512-5RkX6tSS7K3K3xNEb2ygPuvyL9whjanhoaB/WmmXlJS6ub4DjTqrapu8j4qnIWmO4YYtFeTbDTXV6v9P1yMA5A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "bmp-js": "^0.1.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/render-gif/node_modules/@jimp/types/node_modules/@jimp/gif": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.14.0.tgz", + "integrity": "sha512-DHjoOSfCaCz72+oGGEh8qH0zE6pUBaBxPxxmpYJjkNyDZP7RkbBkZJScIYeQ7BmJxmGN4/dZn+MxamoQlr+UYg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "gifwrap": "^0.9.2", + "omggif": "^1.0.9" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/render-gif/node_modules/@jimp/types/node_modules/@jimp/jpeg": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.14.0.tgz", + "integrity": "sha512-561neGbr+87S/YVQYnZSTyjWTHBm9F6F1obYHiyU3wVmF+1CLbxY3FQzt4YolwyQHIBv36Bo0PY2KkkU8BEeeQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "jpeg-js": "^0.4.0" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/render-gif/node_modules/@jimp/types/node_modules/@jimp/png": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.14.0.tgz", + "integrity": "sha512-0RV/mEIDOrPCcNfXSPmPBqqSZYwGADNRVUTyMt47RuZh7sugbYdv/uvKmQSiqRdR0L1sfbCBMWUEa5G/8MSbdA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/utils": "^0.14.0", + "pngjs": "^3.3.3" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/render-gif/node_modules/@jimp/types/node_modules/@jimp/tiff": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.14.0.tgz", + "integrity": "sha512-zBYDTlutc7j88G/7FBCn3kmQwWr0rmm1e0FKB4C3uJ5oYfT8645lftUsvosKVUEfkdmOaMAnhrf4ekaHcb5gQw==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "utif": "^2.0.1" + }, + "peerDependencies": { + "@jimp/custom": ">=0.3.5" + } + }, + "node_modules/render-gif/node_modules/@jimp/utils": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.14.0.tgz", + "integrity": "sha512-MY5KFYUru0y74IsgM/9asDwb3ERxWxXEu3CRCZEvE7DtT86y1bR1XgtlSliMrptjz4qbivNGMQSvUBpEFJDp1A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/render-gif/node_modules/gifwrap": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", + "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", + "license": "MIT", + "dependencies": { + "image-q": "^4.0.0", + "omggif": "^1.0.10" + } + }, + "node_modules/render-gif/node_modules/jimp": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.14.0.tgz", + "integrity": "sha512-8BXU+J8+SPmwwyq9ELihpSV4dWPTiOKBWCEgtkbnxxAVMjXdf3yGmyaLSshBfXc8sP/JQ9OZj5R8nZzz2wPXgA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.7.2", + "@jimp/custom": "^0.14.0", + "@jimp/plugins": "^0.14.0", + "@jimp/types": "^0.14.0", + "regenerator-runtime": "^0.13.3" + } + }, + "node_modules/render-gif/node_modules/pngjs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", + "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "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==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "7.5.2", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.5.2.tgz", + "integrity": "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/rimraf/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/rimraf/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rimraf/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-async": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", + "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.4.tgz", + "integrity": "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=11.0.0" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-xml-to-json": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/simple-xml-to-json/-/simple-xml-to-json-1.2.3.tgz", + "integrity": "sha512-kWJDCr9EWtZ+/EYYM5MareWj2cRnZGF93YDNpH4jQiHB+hBIZnfPFSQiVMzZOdk+zXWqTZ/9fTeQNu2DqeiudA==", + "license": "MIT", + "engines": { + "node": ">=20.12.2" + } + }, + "node_modules/skin-tone": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/skin-tone/-/skin-tone-2.0.0.tgz", + "integrity": "sha512-kUMbT1oBJCpgrnKoSr0o6wPtvRWT9W9UKvGLwfJYO2WuahZRHOpEyL1ckyMGgMWh0UdpmaoFqKKD29WTomNEGA==", + "license": "MIT", + "dependencies": { + "unicode-emoji-modifier-base": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" + }, + "node_modules/sqlocal": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/sqlocal/-/sqlocal-0.14.2.tgz", + "integrity": "sha512-U2NLx7rUABfBaOc9404gljuMirpXR7Tlvza/oA2A5yFfKG1ntCNvxEe4cdNKsirjZyI8ri8uW5Ise9NJOyBrBw==", + "license": "MIT", + "dependencies": { + "@sqlite.org/sqlite-wasm": "^3.50.1-build1", + "coincident": "^1.2.3" + }, + "funding": { + "type": "paypal", + "url": "https://www.paypal.com/biz/fund?id=U3ZNM2Q26WJY8" + }, + "peerDependencies": { + "drizzle-orm": "*", + "kysely": "*" + }, + "peerDependenciesMeta": { + "drizzle-orm": { + "optional": true + }, + "kysely": { + "optional": true + } + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/statuses": { + "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/streamx": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", + "license": "MIT", + "dependencies": { + "events-universal": "^1.0.0", + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/strnum": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/strtok3": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "peek-readable": "^4.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/supports-terminal-graphics": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/supports-terminal-graphics/-/supports-terminal-graphics-0.1.0.tgz", + "integrity": "sha512-+KdfozhS0Fw8y5Sghw8kkZNGT8nWYzJ1EzcoIvVjxhl+26TJTs26y02yfBgvc1jh5AS/c8jcI3xtahhR95KRyQ==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tar": { + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.6.tgz", + "integrity": "sha512-xqUeu2JAIJpXyvskvU3uvQW8PAmHrtXp2KDuMJwQqW8Sqq0CaZBAQ+dKS3RBXVhU4wC5NjAdKrmh84241gO9cA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/term-img": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/term-img/-/term-img-7.1.0.tgz", + "integrity": "sha512-au++khgSDly2KXNhC6BOU3mLi2v+Dk5mChYKDcpB5xYwhlwqYQtj0z59dIqFEmr+w7ndZaNqurHapkGc6/hprQ==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.1.1", + "iterm2-version": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-image": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/terminal-image/-/terminal-image-4.2.0.tgz", + "integrity": "sha512-KlK1fgS2AjAg9wmC998ys1uHNXyRb61hgBrSMWK/n+uthMIPejkhYhVcZfQ1ikI99BhiqP6Exr4ISfiNStGdkg==", + "license": "MIT", + "dependencies": { + "chalk": "^5.6.2", + "image-dimensions": "^2.5.0", + "jimp": "^1.6.0", + "log-update": "^6.1.0", + "render-gif": "^2.0.4", + "supports-terminal-graphics": "^0.1.0", + "term-img": "^7.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-image/node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-image/node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-image/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-image/node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-image/node_modules/slice-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/terminal-link": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-5.0.0.tgz", + "integrity": "sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "supports-hyperlinks": "^4.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/terminal-link/node_modules/supports-hyperlinks": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.4.0.tgz", + "integrity": "sha512-UKbpT93hN5Nr9go5UY7bopIB9YQlMz9nm/ct4IXt/irb5YRkn9WaqrOBJGZ5Pwvsd5FQzSVeYlGdXoCAPQZrPg==", + "license": "MIT", + "dependencies": { + "has-flag": "^5.0.1", + "supports-color": "^10.2.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "license": "MIT", + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "license": "MIT", + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/timm": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", + "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==", + "license": "MIT" + }, + "node_modules/tinycolor2": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==", + "license": "MIT" + }, + "node_modules/tinygradient": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/tinygradient/-/tinygradient-1.1.5.tgz", + "integrity": "sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==", + "license": "MIT", + "dependencies": { + "@types/tinycolor2": "^1.4.0", + "tinycolor2": "^1.0.0" + } + }, + "node_modules/toidentifier": { + "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", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/token-types": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", + "license": "MIT", + "dependencies": { + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" + } + }, + "node_modules/ts-algebra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", + "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "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/ufo": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", + "license": "MIT" + }, + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", + "license": "MIT" + }, + "node_modules/unicode-emoji-modifier-base": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unicode-emoji-modifier-base/-/unicode-emoji-modifier-base-1.0.0.tgz", + "integrity": "sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unzipper": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/unzipper/-/unzipper-0.12.3.tgz", + "integrity": "sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA==", + "license": "MIT", + "dependencies": { + "bluebird": "~3.7.2", + "duplexer2": "~0.1.4", + "fs-extra": "^11.2.0", + "graceful-fs": "^4.2.2", + "node-int64": "^0.4.0" + } + }, + "node_modules/utif": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", + "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.5" + } + }, + "node_modules/utif2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/utif2/-/utif2-4.1.0.tgz", + "integrity": "sha512-+oknB9FHrJ7oW7A2WZYajOcv4FcDR4CfoGB0dPNfxbi4GO05RRnFmt5oa23+9w32EanrYcSJWspUiJkLMs+37w==", + "license": "MIT", + "dependencies": { + "pako": "^1.0.11" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "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", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", + "license": "MIT", + "dependencies": { + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/widest-line/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", + "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.19.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", + "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "license": "MIT", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xml-parse-from-string": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", + "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==", + "license": "MIT" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xml2js/node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlbuilder": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz", + "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==", + "license": "MIT", + "engines": { + "node": ">=8.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/yaml": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" + } + }, + "node_modules/yargs": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-18.0.0.tgz", + "integrity": "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==", + "license": "MIT", + "dependencies": { + "cliui": "^9.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "string-width": "^7.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^22.0.0" + }, + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs-parser": { + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", + "license": "ISC", + "engines": { + "node": "^20.19.0 || ^22.12.0 || >=23" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "license": "MIT", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yauzl/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoga-layout": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/yoga-layout/-/yoga-layout-3.2.1.tgz", + "integrity": "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==", + "license": "MIT" + }, + "node_modules/zip-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", + "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", + "license": "MIT", + "dependencies": { + "archiver-utils": "^5.0.0", + "compress-commons": "^6.0.2", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zod-from-json-schema": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/zod-from-json-schema/-/zod-from-json-schema-0.0.5.tgz", + "integrity": "sha512-zYEoo86M1qpA1Pq6329oSyHLS785z/mTwfr9V1Xf/ZLhuuBGaMlDGu/pDVGVUe4H4oa1EFgWZT53DP0U3oT9CQ==", + "license": "MIT", + "dependencies": { + "zod": "^3.24.2" + } + }, + "node_modules/zod-to-json-schema": { + "version": "3.25.1", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", + "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", + "license": "ISC", + "peerDependencies": { + "zod": "^3.25 || ^4" + } + } + } +} diff --git a/skills/.curated/myvibe-publish/scripts/package.json b/skills/.curated/myvibe-publish/scripts/package.json new file mode 100644 index 0000000..45b7b79 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/package.json @@ -0,0 +1,19 @@ +{ + "name": "myvibe-publish-scripts", + "version": "0.0.18", + "type": "module", + "description": "Scripts for publishing to MyVibe", + "main": "publish.mjs", + "scripts": { + "publish": "node publish.mjs" + }, + "dependencies": { + "@aigne/cli": "^1.59.0", + "@aigne/secrets": "^0.1.6", + "archiver": "^7.0.1", + "chalk": "^5.4.1", + "js-yaml": "^4.1.0", + "open": "^10.1.0", + "ufo": "^1.5.4" + } +} diff --git a/skills/.curated/myvibe-publish/scripts/publish.mjs b/skills/.curated/myvibe-publish/scripts/publish.mjs new file mode 100644 index 0000000..25d2f0b --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/publish.mjs @@ -0,0 +1,592 @@ +#!/usr/bin/env node + +import { existsSync, readFileSync, unlinkSync } from "node:fs"; +import { stat } from "node:fs/promises"; +import { resolve } from "node:path"; +import chalk from "chalk"; +import { joinURL } from "ufo"; +import yaml from "js-yaml"; + +import { VIBE_HUB_URL_DEFAULT, API_PATHS, getScreenshotResultPath, isMainModule } from "./utils/constants.mjs"; +import { getAccessToken } from "./utils/auth.mjs"; +import { apiPatch, apiGet, subscribeToSSE, pollConversionStatus } from "./utils/http.mjs"; +import { zipDirectory, getFileInfo } from "./utils/zip.mjs"; +import { uploadFile, createVibeFromUrl } from "./utils/upload.mjs"; +import { getPublishHistory, savePublishHistory } from "./utils/history.mjs"; + +/** + * Try to read screenshot result from file with retries + * @param {string} sourcePath - The source path (dir or file) for hash calculation + * @param {number} maxRetries - Maximum number of retries (default: 3) + * @param {number} retryDelay - Delay between retries in ms (default: 3000) + * @returns {Promise<{success: boolean, url?: string, resultPath?: string}>} + */ +async function readScreenshotResult(sourcePath, maxRetries = 3, retryDelay = 3000) { + const resultPath = getScreenshotResultPath(sourcePath); + + for (let attempt = 1; attempt <= maxRetries; attempt++) { + try { + if (existsSync(resultPath)) { + const content = readFileSync(resultPath, "utf-8"); + const result = JSON.parse(content); + + if (result.success && result.url) { + console.log(chalk.green(`✓ Screenshot ready: ${result.url}`)); + return { ...result, resultPath }; + } else { + // Screenshot failed, don't retry + console.log(chalk.yellow(`Screenshot generation failed: ${result.error || "Unknown error"}`)); + return { success: false, resultPath }; + } + } + } catch (error) { + // JSON parse error or other issues + console.log(chalk.yellow(`Failed to read screenshot result: ${error.message}`)); + } + + // File not found, wait and retry (except on last attempt) + if (attempt < maxRetries) { + console.log(chalk.gray(`Screenshot not ready, waiting ${retryDelay / 1000}s... (attempt ${attempt}/${maxRetries})`)); + await new Promise((resolve) => setTimeout(resolve, retryDelay)); + } + } + + console.log(chalk.yellow("Screenshot not available, proceeding without cover image")); + return { success: false, resultPath }; +} + +/** + * Main publish function + */ +async function publish(options) { + const { + file, + dir, + url, + hub = VIBE_HUB_URL_DEFAULT, + title, + desc, + visibility = "public", + // Extended metadata fields from config + coverImage, + githubRepo, + platformTags, + techStackTags, + categoryTags, + modelTags, + // Config file path (for cleanup after publish) + configPath, + // Version control options + did: explicitDid, + newVibe = false, + } = options; + + let cleanup = null; + + try { + // Validate input + const inputCount = [file, dir, url].filter(Boolean).length; + if (inputCount === 0) { + throw new Error("Please provide one of: --file, --dir, or --url"); + } + if (inputCount > 1) { + throw new Error("Please provide only one of: --file, --dir, or --url"); + } + + console.log(chalk.bold("\n🚀 MyVibe Publish\n")); + console.log(chalk.gray(`Hub: ${hub}`)); + + // Get authorization + const accessToken = await getAccessToken(hub); + + // Resolve source path for history lookup + let sourcePath = null; + if (dir) { + sourcePath = resolve(dir); + } else if (file) { + sourcePath = resolve(file); + } else if (url) { + sourcePath = url; + } + + // Determine DID for version update + let existingDid = null; + if (!newVibe) { + if (explicitDid) { + existingDid = explicitDid; + } else if (sourcePath) { + const history = await getPublishHistory(sourcePath, hub); + if (history) { + existingDid = history.did; + } + } + } + + let did; + let needsConversion = false; + let versionHistoryEnabled; + + if (url) { + // URL import mode + const result = await createVibeFromUrl(url, hub, accessToken, { + title, + description: desc, + visibility, + }); + did = result.did; + // URL imports don't need conversion + needsConversion = false; + } else { + // File or directory upload mode + let filePath; + + if (dir) { + // Compress directory first + const dirPath = resolve(dir); + if (!existsSync(dirPath)) { + throw new Error(`Directory not found: ${dirPath}`); + } + const dirStat = await stat(dirPath); + if (!dirStat.isDirectory()) { + throw new Error(`Not a directory: ${dirPath}`); + } + + const zipResult = await zipDirectory(dirPath); + filePath = zipResult.zipPath; + cleanup = zipResult.cleanup; + } else { + // Use provided file + filePath = resolve(file); + if (!existsSync(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + + const fileInfo = await getFileInfo(filePath); + if (fileInfo.type !== "application/zip" && fileInfo.type !== "text/html") { + throw new Error(`Unsupported file type: ${fileInfo.type}. Only ZIP and HTML files are supported.`); + } + } + + // Upload file with optional existing DID for version update + const uploadResult = await uploadFile(filePath, hub, accessToken, { did: existingDid }); + did = uploadResult.did; + needsConversion = uploadResult.status === "PENDING"; + versionHistoryEnabled = uploadResult.versionHistoryEnabled; + } + + // Wait for conversion if needed + if (needsConversion) { + console.log(chalk.cyan("\nWaiting for conversion...")); + + const { origin } = new URL(hub); + const streamUrl = joinURL(origin, API_PATHS.CONVERT_STREAM(did)); + const statusUrl = joinURL(origin, API_PATHS.CONVERSION_STATUS(did)); + + try { + // Try SSE stream first + await subscribeToSSE(streamUrl, accessToken, hub, { + onMessage: (message) => { + console.log(chalk.gray(` ${message}`)); + }, + onProgress: (data) => { + if (data.message) { + console.log(chalk.gray(` ${data.message}`)); + } + }, + onCompleted: (data) => { + console.log(chalk.green("\n✅ Conversion completed!")); + }, + onError: (error) => { + console.log(chalk.red(`\n❌ Conversion error: ${error}`)); + }, + }); + } catch (sseError) { + // Fallback to polling if SSE fails + console.log(chalk.yellow("SSE connection failed, using polling...")); + await pollConversionStatus(statusUrl, accessToken, hub, { + onProgress: (status) => { + console.log(chalk.gray(` Status: ${status.status}`)); + }, + onCompleted: (status) => { + console.log(chalk.green("\n✅ Conversion completed!")); + }, + onError: (error) => { + console.log(chalk.red(`\n❌ Conversion error: ${error}`)); + }, + }); + } + } + + // Try to read screenshot result from file (if not already provided) + // Only for dir/file mode, not URL import + let finalCoverImage = coverImage; + let screenshotResultPath = null; + if (!finalCoverImage && sourcePath && !url) { + console.log(chalk.cyan("\nChecking for screenshot...")); + const screenshotResult = await readScreenshotResult(sourcePath); + screenshotResultPath = screenshotResult.resultPath; + if (screenshotResult.success && screenshotResult.url) { + finalCoverImage = screenshotResult.url; + } + } + + // Execute publish action + console.log(chalk.cyan("\nPublishing...")); + + const { origin } = new URL(hub); + const actionUrl = joinURL(origin, API_PATHS.VIBE_ACTION(did)); + + const actionData = { + action: "publish", + }; + + if (title) actionData.title = title; + if (desc) actionData.description = desc; + if (visibility) actionData.visibility = visibility; + // Extended metadata fields + if (finalCoverImage) actionData.coverImage = finalCoverImage; + if (githubRepo) actionData.githubRepo = githubRepo; + if (platformTags && platformTags.length > 0) actionData.platformTags = platformTags; + if (techStackTags && techStackTags.length > 0) actionData.techStackTags = techStackTags; + if (categoryTags && categoryTags.length > 0) actionData.categoryTags = categoryTags; + if (modelTags && modelTags.length > 0) actionData.modelTags = modelTags; + + const actionResult = await apiPatch(actionUrl, actionData, accessToken, hub); + + if (actionResult.success) { + console.log(chalk.green.bold("\n✅ Published successfully!\n")); + + // Fetch vibe details to get userDid and preview URL + const vibeInfoUrl = joinURL(origin, API_PATHS.VIBE_INFO(did)); + const vibeInfo = await apiGet(vibeInfoUrl, accessToken, hub); + + // Build vibe URL: /{userDid}/{did} + const vibeUrl = joinURL(hub, vibeInfo.userDid, did); + console.log(chalk.cyan(`🔗 ${vibeUrl}\n`)); + + // Upgrade prompt: updating existing project + version history not enabled + if (existingDid && versionHistoryEnabled === false) { + const pricingUrl = joinURL(hub, "pricing"); + console.log(chalk.yellow("📦 Previous version overwritten. Want to keep version history?")); + console.log(chalk.yellow(` Upgrade to Creator → ${pricingUrl}\n`)); + } + + // Save publish history for future version updates + if (sourcePath) { + try { + await savePublishHistory(sourcePath, hub, did, title || ""); + } catch (e) { + // Ignore history save errors + } + } + + // Delete config file after successful publish + if (configPath && existsSync(configPath)) { + try { + unlinkSync(configPath); + console.log(chalk.gray(`Cleaned up config file: ${configPath}`)); + } catch (e) { + // Ignore cleanup errors + } + } + + // Delete screenshot result file after successful publish + if (screenshotResultPath && existsSync(screenshotResultPath)) { + try { + unlinkSync(screenshotResultPath); + console.log(chalk.gray(`Cleaned up screenshot result: ${screenshotResultPath}`)); + } catch (e) { + // Ignore cleanup errors + } + } + + return { + success: true, + did, + url: vibeUrl, + }; + } else { + throw new Error(actionResult.error || "Publish action failed"); + } + } catch (error) { + console.error(chalk.red(`\n❌ Error: ${error.message}\n`)); + return { + success: false, + error: error.message, + }; + } finally { + // Cleanup temp files + if (cleanup) { + await cleanup(); + } + } +} + +/** + * Parse config object (shared by file and stdin loaders) + * @param {Object} config - Parsed config object + * @returns {Object} - Options object + */ +function parseConfig(config) { + const options = {}; + + // Parse source + if (config.source) { + if (config.source.type === "dir") { + options.dir = config.source.path; + } else if (config.source.type === "file") { + options.file = config.source.path; + } else if (config.source.type === "url") { + options.url = config.source.path; + } + // Optional explicit DID for version update + if (config.source.did) { + options.did = config.source.did; + } + } + + // Parse metadata + if (config.metadata) { + if (config.metadata.title) options.title = config.metadata.title; + if (config.metadata.description) options.desc = config.metadata.description; + if (config.metadata.visibility) options.visibility = config.metadata.visibility; + if (config.metadata.coverImage) options.coverImage = config.metadata.coverImage; + if (config.metadata.githubRepo) options.githubRepo = config.metadata.githubRepo; + if (config.metadata.platformTags) options.platformTags = config.metadata.platformTags; + if (config.metadata.techStackTags) options.techStackTags = config.metadata.techStackTags; + if (config.metadata.categoryTags) options.categoryTags = config.metadata.categoryTags; + if (config.metadata.modelTags) options.modelTags = config.metadata.modelTags; + } + + // Parse hub URL (can be at root level) + if (config.hub) options.hub = config.hub; + + return options; +} + +/** + * Load options from stdin (JSON format) + * @returns {Promise<Object>} - Parsed options + */ +async function loadConfigFromStdin() { + return new Promise((resolve, reject) => { + let data = ""; + + // Set encoding + process.stdin.setEncoding("utf8"); + + // Check if stdin has data (not a TTY) + if (process.stdin.isTTY) { + reject(new Error("No data provided via stdin. Use: echo '{...}' | node publish.mjs --config-stdin")); + return; + } + + process.stdin.on("data", (chunk) => { + data += chunk; + }); + + process.stdin.on("end", () => { + try { + const config = JSON.parse(data); + resolve(parseConfig(config)); + } catch (e) { + reject(new Error(`Failed to parse JSON from stdin: ${e.message}`)); + } + }); + + process.stdin.on("error", (err) => { + reject(new Error(`Failed to read from stdin: ${err.message}`)); + }); + + // Timeout after 5 seconds if no data + setTimeout(() => { + if (!data) { + reject(new Error("Timeout waiting for stdin data")); + } + }, 5000); + }); +} + +/** + * Load options from config file (YAML format) + * @param {string} configPath - Path to config YAML file + * @returns {Object} - Parsed options + */ +function loadConfigFile(configPath) { + const absolutePath = resolve(configPath); + if (!existsSync(absolutePath)) { + throw new Error(`Config file not found: ${absolutePath}`); + } + + const content = readFileSync(absolutePath, "utf-8"); + const config = yaml.load(content); + + const options = parseConfig(config); + options.configPath = absolutePath; // Store for cleanup after publish + + return options; +} + +/** + * Parse command line arguments + */ +function parseArgs(args) { + const options = {}; + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const nextArg = args[i + 1]; + + switch (arg) { + case "--config": + case "-c": + // Load options from config file + const configOptions = loadConfigFile(nextArg); + Object.assign(options, configOptions); + i++; + break; + case "--file": + case "-f": + options.file = nextArg; + i++; + break; + case "--dir": + case "-d": + options.dir = nextArg; + i++; + break; + case "--url": + case "-u": + options.url = nextArg; + i++; + break; + case "--hub": + case "-h": + options.hub = nextArg; + i++; + break; + case "--title": + case "-t": + options.title = nextArg; + i++; + break; + case "--desc": + options.desc = nextArg; + i++; + break; + case "--visibility": + case "-v": + options.visibility = nextArg; + i++; + break; + case "--did": + options.did = nextArg; + i++; + break; + case "--new": + options.newVibe = true; + break; + case "--config-stdin": + options.configStdin = true; + break; + case "--help": + printHelp(); + process.exit(0); + break; + } + } + + return options; +} + +/** + * Print help message + */ +function printHelp() { + console.log(` +${chalk.bold("MyVibe Publish")} + +Publish web content to MyVibe. + +${chalk.bold("Usage:")} + node publish.mjs [options] + +${chalk.bold("Options:")} + --config, -c <path> Load options from YAML config file + --config-stdin Load options from stdin (JSON format) + --file, -f <path> Path to HTML file or ZIP archive + --dir, -d <path> Directory to compress and publish + --url, -u <url> URL to import and publish + --hub, -h <url> MyVibe URL (default: ${VIBE_HUB_URL_DEFAULT}) + --title, -t <title> Project title + --desc <desc> Project description + --visibility, -v <vis> Visibility: public or private (default: public) + --did <did> Vibe DID for version update (overrides auto-detection) + --new Force create new Vibe, ignore publish history + --help Show this help message + +${chalk.bold("Config File Format (YAML):")} + source: + type: dir + path: ./dist + did: z2qaXXXX # Optional: explicit DID for version update + hub: https://www.myvibe.so + metadata: + title: My App + description: A cool app + visibility: public + coverImage: https://... + githubRepo: https://github.com/... + platformTags: [1, 2] + techStackTags: [3, 4] + categoryTags: [5] + modelTags: [6] + +${chalk.bold("Examples:")} + # Publish using config file + node publish.mjs --config ./publish-config.yaml + + # Publish using stdin (no file needed) + echo '{"source":{"type":"dir","path":"./dist"},"metadata":{"title":"My App"}}' | node publish.mjs --config-stdin + + # Publish a ZIP file + node publish.mjs --file ./dist.zip --title "My App" + + # Publish a directory + node publish.mjs --dir ./dist --title "My App" --desc "A cool app" + + # Import from URL + node publish.mjs --url https://example.com/app +`); +} + +// CLI entry point +if (isMainModule(import.meta.url)) { + const args = process.argv.slice(2); + + if (args.length === 0) { + printHelp(); + process.exit(1); + } + + const options = parseArgs(args); + + // Handle --config-stdin asynchronously + (async () => { + try { + if (options.configStdin) { + const stdinOptions = await loadConfigFromStdin(); + Object.assign(options, stdinOptions); + delete options.configStdin; + } + + const result = await publish(options); + process.exit(result.success ? 0 : 1); + } catch (error) { + console.error(chalk.red(`Fatal error: ${error.message}`)); + process.exit(1); + } + })(); +} + +export default publish; diff --git a/skills/.curated/myvibe-publish/scripts/utils/auth.mjs b/skills/.curated/myvibe-publish/scripts/utils/auth.mjs new file mode 100644 index 0000000..9caf8d1 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/auth.mjs @@ -0,0 +1,178 @@ +import chalk from "chalk"; +import open from "open"; +import { joinURL } from "ufo"; +import { createConnect } from "@aigne/cli/utils/aigne-hub/credential.js"; + +import { createStore } from "./store.mjs"; +import { + WELLKNOWN_SERVICE_PATH, + AUTH_RETRY_COUNT, + AUTH_FETCH_INTERVAL, +} from "./constants.mjs"; + +const TOKEN_KEY = "VIBE_HUB_ACCESS_TOKEN"; + +/** + * Get cached access token for a given hub URL + * @param {string} hubUrl - The MyVibe URL + * @returns {Promise<string|null>} - The cached access token or null + */ +export async function getCachedAccessToken(hubUrl) { + const { hostname } = new URL(hubUrl); + const store = await createStore(); + + // Check environment variable first + let accessToken = process.env.VIBE_HUB_ACCESS_TOKEN; + + // Check stored token + if (!accessToken) { + try { + const storeItem = await store.getItem(hostname); + accessToken = storeItem?.[TOKEN_KEY]; + } catch (error) { + console.warn("Could not read stored token:", error.message); + } + } + + return accessToken || null; +} + +/** + * Save access token for a given hub URL + * @param {string} hubUrl - The MyVibe URL + * @param {string} token - The access token to save + */ +async function saveAccessToken(hubUrl, token) { + const { hostname } = new URL(hubUrl); + const store = await createStore(); + + try { + await store.setItem(hostname, { [TOKEN_KEY]: token }); + } catch (error) { + console.warn("Could not save token:", error.message); + } +} + +/** + * Clear access token for a given hub URL + * @param {string} hubUrl - The MyVibe URL + */ +export async function clearAccessToken(hubUrl) { + const { hostname } = new URL(hubUrl); + const store = await createStore(); + + try { + await store.clearHost(hostname); + console.log(chalk.yellow(`Cleared authorization for ${hostname}`)); + } catch (error) { + console.warn("Could not clear token:", error.message); + } +} + +/** + * Get access token, prompting for authorization if needed + * @param {string} hubUrl - The MyVibe URL + * @param {string} [locale='en'] - User locale + * @returns {Promise<string>} - The access token + */ +export async function getAccessToken(hubUrl, locale = "en") { + const { hostname, origin } = new URL(hubUrl); + + // Check for cached token first + let accessToken = await getCachedAccessToken(hubUrl); + if (accessToken) { + return accessToken; + } + + // Need to get new token via authorization + const connectUrl = joinURL(origin, WELLKNOWN_SERVICE_PATH); + + console.log(chalk.cyan("\nAuthorization required for MyVibe...")); + + try { + const result = await createConnect({ + connectUrl, + connectAction: "gen-simple-access-key", + source: "MyVibe Publish Skill", + closeOnSuccess: true, + appName: "MyVibe", + appLogo: + "https://www.myvibe.so/image-bin/uploads/bd15c582471327539b56896cde77ad55.svg", + retry: AUTH_RETRY_COUNT, + fetchInterval: AUTH_FETCH_INTERVAL, + openPage: async (pageUrl) => { + const url = new URL(pageUrl); + url.searchParams.set("locale", locale); + const tipsTitleApp = getAgentName(); + if (tipsTitleApp) { + url.searchParams.set("tipsTitleApp", tipsTitleApp); + } + + const connectUrl = url.toString(); + open(connectUrl); + + console.log( + chalk.cyan( + "\n🔗 Please open the following URL in your browser to authorize:", + ), + chalk.underline(connectUrl), + "\n", + ); + }, + }); + + accessToken = result.accessKeySecret; + + // Save token for future use + await saveAccessToken(hubUrl, accessToken); + + console.log(chalk.green("✅ Authorization successful!\n")); + + return accessToken; + } catch (error) { + throw new Error( + `${chalk.red("Authorization failed.")}\n\n` + + `${chalk.bold("Possible causes:")}\n` + + ` • Network issue\n` + + ` • Authorization timeout (5 minutes)\n` + + ` • User cancelled authorization\n\n` + + `${chalk.bold("Solution:")} Please try again.`, + ); + } +} + +/** + * Handle authorization error (401/403) + * Clears the token so next request will re-authorize + * @param {string} hubUrl - The MyVibe URL + * @param {number} statusCode - HTTP status code + */ +export async function handleAuthError(hubUrl, statusCode) { + if (statusCode === 401 || statusCode === 403) { + console.log( + chalk.yellow( + `\n⚠️ Authorization error (${statusCode}). Clearing saved token...`, + ), + ); + await clearAccessToken(hubUrl); + console.log( + chalk.cyan("Please run the publish command again to re-authorize.\n"), + ); + } +} + + +function getAgentName() { + if (process.env.CODEX) { + return 'Codex'; + } + if (process.env.CLAUDECODE) { + return 'Claude Code'; + } + if (process.env.GEMINI_CLI) { + return 'Gemini CLI'; + } + if (process.env.OPENCODE) { + return 'OpenCode'; + } +} \ No newline at end of file diff --git a/skills/.curated/myvibe-publish/scripts/utils/constants.mjs b/skills/.curated/myvibe-publish/scripts/utils/constants.mjs new file mode 100644 index 0000000..dbea16b --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/constants.mjs @@ -0,0 +1,77 @@ +// MyVibe publish constants + +import { createHash } from "node:crypto"; +import { realpathSync } from "node:fs"; +import { resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +// Default MyVibe URL +export const VIBE_HUB_URL_DEFAULT = "https://www.myvibe.so"; + +// API endpoints +export const API_PATHS = { + // Upload file (HTML or ZIP) + UPLOAD: "/api/uploaded-blocklets/upload", + // Convert uploaded blocklet + CONVERT: (did) => `/api/uploaded-blocklets/${did}/convert`, + // Conversion stream (SSE) + CONVERT_STREAM: (did) => `/api/uploaded-blocklets/${did}/convert/stream`, + // Conversion status + CONVERSION_STATUS: (did) => `/api/uploaded-blocklets/${did}/conversion-status`, + // Vibe action (publish/draft/abandon) + VIBE_ACTION: (did) => `/api/vibes/${did}/action`, + // Get vibe info + VIBE_INFO: (did) => `/api/vibes/${did}`, + // Create vibe from URL + VIBES_FROM_URL: "/api/vibes/from-url", +}; + +// Well-known service path for authorization +export const WELLKNOWN_SERVICE_PATH = "/.well-known/service"; + +// Authorization timeout (5 minutes) +export const AUTH_TIMEOUT_MINUTES = 5; +export const AUTH_FETCH_INTERVAL = 3000; // 3 seconds +export const AUTH_RETRY_COUNT = (AUTH_TIMEOUT_MINUTES * 60 * 1000) / AUTH_FETCH_INTERVAL; + +// Supported file types +export const SUPPORTED_ARCHIVE_TYPES = [ + "application/zip", + "application/x-zip-compressed", +]; + +export const SUPPORTED_HTML_TYPES = ["text/html"]; + +// File extensions +export const ARCHIVE_EXTENSIONS = [".zip"]; +export const HTML_EXTENSIONS = [".html", ".htm"]; + +// Screenshot result file path (shared between generate-screenshot.mjs and publish.mjs) +// Uses hash of source path to avoid conflicts in concurrent publishes + +/** + * Get screenshot result file path based on source path + * @param {string} sourcePath - The source path (dir or file) being published + * @returns {string} - Path to screenshot result file: /tmp/myvibe-screenshot-{hash}.json + */ +/** + * Check if the current module is the main entry point. + * Handles symlinks by comparing real paths. + * @param {string} metaUrl - import.meta.url of the calling module + * @returns {boolean} + */ +export function isMainModule(metaUrl) { + try { + const scriptPath = fileURLToPath(metaUrl); + const argvPath = resolve(process.argv[1]); + return realpathSync(scriptPath) === realpathSync(argvPath); + } catch { + return false; + } +} + +export function getScreenshotResultPath(sourcePath) { + const absolutePath = resolve(sourcePath); + const hash = createHash("md5").update(absolutePath).digest("hex").slice(0, 8); + return `/tmp/myvibe-screenshot-${hash}.json`; +} diff --git a/skills/.curated/myvibe-publish/scripts/utils/fetch-tags.mjs b/skills/.curated/myvibe-publish/scripts/utils/fetch-tags.mjs new file mode 100644 index 0000000..c4fe8d7 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/fetch-tags.mjs @@ -0,0 +1,289 @@ +#!/usr/bin/env node + +import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { homedir } from "node:os"; +import { join } from "node:path"; +import crypto from "node:crypto"; +import chalk from "chalk"; + +import { VIBE_HUB_URL_DEFAULT, isMainModule } from "./constants.mjs"; + +// Cache configuration +const CACHE_DIR = join(homedir(), ".myvibe", "cache"); +const CACHE_EXPIRY_DAYS = 7; + +// Tag types to fetch +const TAG_TYPES = ["platform", "tech-stack", "model", "category"]; + +/** + * Get cache file path for a hub URL + * @param {string} hubUrl - Hub URL + * @returns {string} Cache file path + */ +function getCacheFilePath(hubUrl) { + const hash = crypto.createHash("md5").update(hubUrl).digest("hex").substring(0, 8); + return join(CACHE_DIR, `tags-${hash}.json`); +} + +/** + * Ensure cache directory exists + */ +function ensureCacheDir() { + if (!existsSync(CACHE_DIR)) { + mkdirSync(CACHE_DIR, { recursive: true }); + } +} + +/** + * Check if cache is valid + * @param {Object} cache - Cache object + * @returns {boolean} True if cache is valid + */ +function isCacheValid(cache) { + if (!cache || !cache.expiresAt) { + return false; + } + return new Date(cache.expiresAt) > new Date(); +} + +/** + * Load cache from file + * @param {string} hubUrl - Hub URL + * @returns {Object|null} Cache object or null + */ +function loadCache(hubUrl) { + const cacheFile = getCacheFilePath(hubUrl); + if (!existsSync(cacheFile)) { + return null; + } + + try { + const content = readFileSync(cacheFile, "utf-8"); + return JSON.parse(content); + } catch { + return null; + } +} + +/** + * Save cache to file + * @param {string} hubUrl - Hub URL + * @param {Object} tags - Tags object + */ +function saveCache(hubUrl, tags) { + ensureCacheDir(); + const cacheFile = getCacheFilePath(hubUrl); + + const now = new Date(); + const expiresAt = new Date(now.getTime() + CACHE_EXPIRY_DAYS * 24 * 60 * 60 * 1000); + + const cache = { + hub: hubUrl, + fetchedAt: now.toISOString(), + expiresAt: expiresAt.toISOString(), + tags, + }; + + writeFileSync(cacheFile, JSON.stringify(cache, null, 2)); +} + +/** + * Fetch tags from API + * @param {string} hubUrl - Hub URL + * @param {string} type - Tag type + * @returns {Promise<Array>} Tags array + */ +async function fetchTagsByType(hubUrl, type) { + const { origin } = new URL(hubUrl); + const url = `${origin}/api/tags?type=${type}&isActive=true`; + + const response = await fetch(url, { + method: "GET", + headers: { + Accept: "application/json", + }, + }); + + if (!response.ok) { + throw new Error(`Failed to fetch ${type} tags: ${response.status} ${response.statusText}`); + } + + const result = await response.json(); + return result.data || []; +} + +/** + * Fetch all tags from API + * @param {string} hubUrl - Hub URL + * @returns {Promise<Object>} Tags object by type + */ +async function fetchAllTags(hubUrl) { + const tags = {}; + + for (const type of TAG_TYPES) { + try { + tags[type] = await fetchTagsByType(hubUrl, type); + } catch (error) { + console.error(chalk.yellow(`Warning: Failed to fetch ${type} tags: ${error.message}`)); + tags[type] = []; + } + } + + return tags; +} + +/** + * Get tags (from cache or fetch) + * @param {Object} options - Options + * @param {string} [options.hub] - Hub URL + * @param {boolean} [options.refresh] - Force refresh cache + * @param {boolean} [options.silent] - Suppress console output + * @returns {Promise<Object>} Tags result + */ +export async function getTags(options = {}) { + const { hub = VIBE_HUB_URL_DEFAULT, refresh = false, silent = false } = options; + + const log = silent ? () => {} : console.error.bind(console); + + // Try to load from cache first + if (!refresh) { + const cache = loadCache(hub); + if (cache && isCacheValid(cache)) { + log(chalk.gray(`Using cached tags (expires: ${cache.expiresAt})`)); + return { + success: true, + fromCache: true, + hub: cache.hub, + fetchedAt: cache.fetchedAt, + expiresAt: cache.expiresAt, + tags: cache.tags, + }; + } + } + + // Fetch from API + log(chalk.cyan(`Fetching tags from ${hub}...`)); + + try { + const tags = await fetchAllTags(hub); + + // Save to cache + saveCache(hub, tags); + log(chalk.green(`Tags cached for ${CACHE_EXPIRY_DAYS} days`)); + + const cache = loadCache(hub); + return { + success: true, + fromCache: false, + hub: cache.hub, + fetchedAt: cache.fetchedAt, + expiresAt: cache.expiresAt, + tags: cache.tags, + }; + } catch (error) { + // Try to use expired cache as fallback + const expiredCache = loadCache(hub); + if (expiredCache) { + log(chalk.yellow(`Failed to fetch tags, using expired cache`)); + return { + success: true, + fromCache: true, + expired: true, + hub: expiredCache.hub, + fetchedAt: expiredCache.fetchedAt, + expiresAt: expiredCache.expiresAt, + tags: expiredCache.tags, + }; + } + + return { + success: false, + error: error.message, + }; + } +} + +/** + * Parse command line arguments + */ +function parseArgs(args) { + const options = {}; + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const nextArg = args[i + 1]; + + switch (arg) { + case "--hub": + case "-h": + options.hub = nextArg; + i++; + break; + case "--refresh": + case "-r": + options.refresh = true; + break; + case "--help": + printHelp(); + process.exit(0); + break; + } + } + + return options; +} + +/** + * Print help message + */ +function printHelp() { + console.log(` +${chalk.bold("MyVibe Tags Fetcher")} + +Fetch and cache available tags from MyVibe. + +${chalk.bold("Usage:")} + node fetch-tags.mjs [options] + +${chalk.bold("Options:")} + --hub, -h <url> MyVibe URL (default: ${VIBE_HUB_URL_DEFAULT}) + --refresh, -r Force refresh cache (ignore expiry) + --help Show this help message + +${chalk.bold("Cache:")} + Location: ~/.myvibe/cache/tags-{hash}.json + Expiry: ${CACHE_EXPIRY_DAYS} days + +${chalk.bold("Output:")} + JSON object with tags grouped by type (platform, tech-stack, model, category) + +${chalk.bold("Examples:")} + # Get cached tags (or fetch if expired) + node fetch-tags.mjs + + # Force refresh cache + node fetch-tags.mjs --refresh + + # Use specific hub + node fetch-tags.mjs --hub https://myvibe.example.com +`); +} + +// CLI entry point +if (isMainModule(import.meta.url)) { + const args = process.argv.slice(2); + const options = parseArgs(args); + + getTags({ ...options, silent: false }) + .then((result) => { + // Output JSON to stdout for AI to parse + console.log(JSON.stringify(result, null, 2)); + process.exit(result.success ? 0 : 1); + }) + .catch((error) => { + console.error(chalk.red(`Fatal error: ${error.message}`)); + process.exit(1); + }); +} + +export default getTags; diff --git a/skills/.curated/myvibe-publish/scripts/utils/generate-screenshot.mjs b/skills/.curated/myvibe-publish/scripts/utils/generate-screenshot.mjs new file mode 100644 index 0000000..381a2b0 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/generate-screenshot.mjs @@ -0,0 +1,563 @@ +#!/usr/bin/env node + +import { existsSync, unlinkSync, mkdirSync, copyFileSync, rmSync, writeFileSync } from "node:fs"; +import { spawn, execSync } from "node:child_process"; +import path from "node:path"; +import chalk from "chalk"; + +import { VIBE_HUB_URL_DEFAULT, getScreenshotResultPath, isMainModule } from "./constants.mjs"; +import { uploadImage } from "./upload-image.mjs"; + +const DEFAULT_PORT = 3456; +const SERVER_STARTUP_TIMEOUT = 10000; +const SCREENSHOT_PATH = "/tmp/myvibe-screenshot.png"; + +/** + * Save screenshot result to file for publish.mjs to read + * @param {string} sourcePath - The source path (dir or file) for hash calculation + * @param {Object} result - The result object to save + */ +function saveResultToFile(sourcePath, result) { + try { + const resultPath = getScreenshotResultPath(sourcePath); + writeFileSync(resultPath, JSON.stringify(result, null, 2)); + console.log(chalk.gray(`Result saved to ${resultPath}`)); + } catch (error) { + console.error(chalk.yellow(`Warning: Failed to save result to file: ${error.message}`)); + } +} + +/** + * Clear previous screenshot result file + * @param {string} sourcePath - The source path (dir or file) for hash calculation + */ +function clearResultFile(sourcePath) { + try { + const resultPath = getScreenshotResultPath(sourcePath); + if (existsSync(resultPath)) { + unlinkSync(resultPath); + } + } catch { + // Ignore errors + } +} + +/** + * Generate screenshot of a local directory or file and upload to MyVibe + * @param {Object} options + * @param {string} [options.dir] - Directory to serve and screenshot + * @param {string} [options.file] - Single HTML file to screenshot + * @param {string} [options.hub] - MyVibe hub URL + * @param {number} [options.port] - Port for local server (default: 3456) + * @returns {Promise<{success: boolean, url?: string, error?: string, suggestion?: string}>} + */ +export async function generateScreenshot(options) { + const { + hub = VIBE_HUB_URL_DEFAULT, + port = DEFAULT_PORT, + } = options; + + // Determine source path for hash calculation (original path, not temp dir) + // Fallback to "unknown" for edge case when neither is provided (will fail validation) + const sourcePath = options.file || options.dir || "unknown"; + + let serverProcess = null; + let tempDir = null; + let dir = options.dir; + + // Clear previous result file at the start + clearResultFile(sourcePath); + + try { + // Handle --file: copy to temp directory + if (options.file) { + const filePath = path.resolve(options.file); + if (!existsSync(filePath)) { + const result = { + success: false, + error: `File not found: ${filePath}`, + suggestion: "Check that the file path is correct", + }; + saveResultToFile(sourcePath, result); + return result; + } + + // Create temp directory and copy file as index.html + tempDir = `/tmp/myvibe-screenshot-${Date.now()}`; + mkdirSync(tempDir, { recursive: true }); + copyFileSync(filePath, path.join(tempDir, "index.html")); + dir = tempDir; + } + + // Validate that we have a directory to serve + if (!dir) { + const result = { + success: false, + error: "--dir or --file is required", + suggestion: "Provide either --dir <directory> or --file <html-file>", + }; + saveResultToFile(sourcePath, result); + return result; + } + + // Step 1: Validate directory + const dirPath = path.resolve(dir); + if (!existsSync(dirPath)) { + const result = { + success: false, + error: `Directory not found: ${dirPath}`, + suggestion: "Check that the directory path is correct", + }; + saveResultToFile(sourcePath, result); + return result; + } + + console.log(chalk.cyan(`\n📸 Generating screenshot for: ${dirPath}\n`)); + + // Step 2: Check agent-browser + console.log(chalk.gray(`Checking agent-browser...`)); + const agentBrowserCheck = checkAgentBrowser(); + if (!agentBrowserCheck.installed) { + saveResultToFile(sourcePath, agentBrowserCheck); + return agentBrowserCheck; + } + console.log(chalk.green(`✓ agent-browser ready`)); + + // Step 3: Find available port and start server + let actualPort = port; + if (!(await isPortAvailable(port))) { + console.log(chalk.yellow(`Port ${port} is in use, finding available port...`)); + actualPort = await findAvailablePort(port); + } + console.log(chalk.gray(`Starting local server on port ${actualPort}...`)); + serverProcess = await startServer(dirPath, actualPort); + + // Step 4: Wait for server ready + await waitForServer(actualPort); + console.log(chalk.green(`✓ Server ready on port ${actualPort}`)); + + // Step 5: Take screenshot with agent-browser + console.log(chalk.gray(`Taking screenshot...`)); + await takeScreenshot(`http://localhost:${actualPort}`, SCREENSHOT_PATH); + console.log(chalk.green(`✓ Screenshot saved`)); + + // Step 6: Upload to MyVibe + console.log(chalk.gray(`Uploading to MyVibe...`)); + const uploadResult = await uploadImage({ file: SCREENSHOT_PATH, hub }); + + if (!uploadResult.success) { + const result = { + success: false, + error: uploadResult.error, + suggestion: "Check your network connection and MyVibe authorization", + }; + // Save error result to file for publish.mjs to read + saveResultToFile(sourcePath, result); + return result; + } + + console.log(chalk.green.bold(`\n✅ Screenshot uploaded successfully!\n`)); + console.log(chalk.cyan(`🔗 ${uploadResult.url}\n`)); + + const result = { + success: true, + url: uploadResult.url, + screenshotPath: SCREENSHOT_PATH, + }; + + // Save result to file for publish.mjs to read + saveResultToFile(sourcePath, result); + + return result; + } catch (error) { + const result = handleError(error); + // Save error result to file for publish.mjs to read + saveResultToFile(sourcePath, result); + return result; + } finally { + // Cleanup: stop server + if (serverProcess) { + serverProcess.kill(); + console.log(chalk.gray(`Server stopped`)); + } + // Cleanup: close agent-browser (in case it's still open) + try { + execSync("agent-browser close 2>/dev/null", { stdio: "ignore" }); + } catch { + // Ignore errors + } + // Cleanup: remove temp directory if created + if (tempDir && existsSync(tempDir)) { + try { + rmSync(tempDir, { recursive: true, force: true }); + } catch { + // Ignore cleanup errors + } + } + } +} + +/** + * Check if agent-browser is installed and has Chromium + * @returns {{installed: boolean, error?: string, suggestion?: string}} + */ +function checkAgentBrowser() { + // Check if agent-browser command exists + try { + execSync("which agent-browser", { stdio: "ignore" }); + } catch { + return { + installed: false, + success: false, + error: "agent-browser is not installed", + suggestion: "Run: npm install -g agent-browser && agent-browser install", + }; + } + + // Check if Chromium is installed by running a simple command + try { + execSync("agent-browser close 2>/dev/null || true", { stdio: "ignore" }); + return { installed: true }; + } catch { + return { + installed: false, + success: false, + error: "agent-browser Chromium is not installed", + suggestion: "Run: agent-browser install", + }; + } +} + +/** + * Check if a port is available + * @param {number} port + * @returns {Promise<boolean>} + */ +async function isPortAvailable(port) { + try { + await fetch(`http://localhost:${port}`, { + method: "HEAD", + signal: AbortSignal.timeout(1000), + }); + return false; // Port is in use (got response) + } catch (error) { + // ECONNREFUSED means port is available + if (error.cause?.code === "ECONNREFUSED") { + return true; + } + // Timeout or other errors - assume available + return true; + } +} + +/** + * Find an available port starting from the given port + * @param {number} startPort + * @param {number} maxAttempts + * @returns {Promise<number>} + */ +async function findAvailablePort(startPort, maxAttempts = 10) { + for (let i = 0; i < maxAttempts; i++) { + const port = startPort + i; + if (await isPortAvailable(port)) { + return port; + } + } + throw new Error(`No available port found in range ${startPort}-${startPort + maxAttempts - 1}`); +} + +/** + * Start a local HTTP server + * @param {string} dir - Directory to serve + * @param {number} port - Port number + * @returns {Promise<ChildProcess>} Server process + */ +async function startServer(dir, port) { + return new Promise((resolve, reject) => { + const serverProcess = spawn("npx", ["-y", "http-server", dir, "-p", port.toString(), "-c-1", "--silent"], { + stdio: ["ignore", "pipe", "pipe"], + detached: false, + }); + + serverProcess.on("error", (err) => { + reject(new Error(`Failed to start server: ${err.message}`)); + }); + + // Give it a moment to start + setTimeout(() => { + if (serverProcess.killed) { + reject(new Error("Server process terminated unexpectedly")); + } else { + resolve(serverProcess); + } + }, 500); + }); +} + +/** + * Wait for server to be ready + * @param {number} port - Port number + * @param {number} timeout - Timeout in milliseconds + */ +async function waitForServer(port, timeout = SERVER_STARTUP_TIMEOUT) { + const startTime = Date.now(); + const url = `http://localhost:${port}`; + + while (Date.now() - startTime < timeout) { + try { + const response = await fetch(url, { method: "HEAD" }); + if (response.ok || response.status === 404) { + // 404 is ok - server is running, just maybe no index + return; + } + } catch { + // Server not ready yet, wait and retry + } + await new Promise((resolve) => setTimeout(resolve, 200)); + } + + throw new Error(`Server did not start within ${timeout / 1000} seconds`); +} + +/** + * Take screenshot using agent-browser + * @param {string} url - URL to screenshot + * @param {string} outputPath - Path to save screenshot + */ +async function takeScreenshot(url, outputPath) { + // Remove old screenshot if exists + try { + unlinkSync(outputPath); + } catch { + // Ignore if doesn't exist + } + + // Open URL in agent-browser + try { + execSync(`agent-browser open "${url}"`, { + stdio: "inherit", + timeout: 30000, + }); + } catch (error) { + throw new Error(`Failed to open URL in agent-browser: ${error.message}`); + } + + // Wait for page to load + await new Promise((resolve) => setTimeout(resolve, 2000)); + + // Take screenshot + try { + execSync(`agent-browser screenshot "${outputPath}"`, { + stdio: "inherit", + timeout: 30000, + }); + } catch (error) { + throw new Error(`Failed to take screenshot: ${error.message}`); + } + + // Close browser + try { + execSync("agent-browser close", { + stdio: "inherit", + timeout: 10000, + }); + } catch { + // Ignore close errors + } + + // Verify screenshot was created + if (!existsSync(outputPath)) { + throw new Error("Screenshot file was not created"); + } +} + +/** + * Handle errors and return structured response with suggestions + * @param {Error} error + * @returns {{success: false, error: string, suggestion: string}} + */ +function handleError(error) { + const message = error.message || String(error); + + // agent-browser not installed + if (message.includes("agent-browser") && message.includes("not found")) { + return { + success: false, + error: "agent-browser is not installed", + suggestion: "Run: npm install -g agent-browser && agent-browser install", + }; + } + + // Chromium not installed + if (message.includes("Chromium") || message.includes("browser") && message.includes("install")) { + return { + success: false, + error: "Chromium browser not installed for agent-browser", + suggestion: "Run: agent-browser install", + }; + } + + // Port already in use + if (message.includes("EADDRINUSE") || message.includes("address already in use")) { + return { + success: false, + error: "Port is already in use", + suggestion: "Try a different port with --port <number>, or kill the process using the port", + }; + } + + // No available port + if (message.includes("No available port")) { + return { + success: false, + error: message, + suggestion: "Kill processes using ports 3456-3465, or specify a different port range", + }; + } + + // Server timeout + if (message.includes("Server did not start")) { + return { + success: false, + error: "Local server failed to start", + suggestion: "Check if npx and http-server are working correctly", + }; + } + + // Screenshot timeout or failure + if (message.includes("screenshot") || message.includes("Screenshot")) { + return { + success: false, + error: message, + suggestion: "Try running manually: agent-browser open <url> && agent-browser screenshot /tmp/test.png", + }; + } + + // Authorization errors + if (message.includes("401") || message.includes("403") || message.includes("Unauthorized")) { + return { + success: false, + error: "Authorization failed", + suggestion: "Your MyVibe token may have expired. Re-run the publish command to re-authorize", + }; + } + + // Directory not found + if (message.includes("ENOENT") || message.includes("not found") || message.includes("Directory not found")) { + return { + success: false, + error: message, + suggestion: "Check that the path exists and is accessible", + }; + } + + // Generic fallback + return { + success: false, + error: message, + suggestion: "Check the error message above. If the problem persists, try running screenshot steps manually", + }; +} + +/** + * Parse command line arguments + */ +function parseArgs(args) { + const options = {}; + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const nextArg = args[i + 1]; + + switch (arg) { + case "--dir": + case "-d": + options.dir = nextArg; + i++; + break; + case "--file": + case "-f": + options.file = nextArg; + i++; + break; + case "--hub": + case "-h": + options.hub = nextArg; + i++; + break; + case "--port": + case "-p": + options.port = parseInt(nextArg, 10); + i++; + break; + case "--help": + printHelp(); + process.exit(0); + break; + } + } + + return options; +} + +/** + * Print help message + */ +function printHelp() { + console.log(` +${chalk.bold("MyVibe Screenshot Generator")} + +Generate a screenshot of a local directory or HTML file and upload to MyVibe. + +${chalk.bold("Usage:")} + node generate-screenshot.mjs --dir <path> [options] + node generate-screenshot.mjs --file <path> [options] + +${chalk.bold("Options:")} + --dir, -d <path> Directory to serve and screenshot + --file, -f <path> Single HTML file to screenshot + --hub, -h <url> MyVibe URL (default: ${VIBE_HUB_URL_DEFAULT}) + --port, -p <port> Local server port (default: ${DEFAULT_PORT}) + --help Show this help message + +${chalk.bold("Examples:")} + # Generate screenshot from directory + node generate-screenshot.mjs --dir ./dist + + # Generate screenshot from single HTML file + node generate-screenshot.mjs --file ./index.html + + # Use specific port + node generate-screenshot.mjs --dir ./dist --port 8080 +`); +} + +// CLI entry point +if (isMainModule(import.meta.url)) { + const args = process.argv.slice(2); + + if (args.length === 0) { + printHelp(); + process.exit(1); + } + + const options = parseArgs(args); + + if (!options.dir && !options.file) { + console.error(chalk.red("Error: --dir or --file is required")); + process.exit(1); + } + + generateScreenshot(options) + .then((result) => { + // Output JSON for script consumption + console.log(JSON.stringify(result, null, 2)); + process.exit(result.success ? 0 : 1); + }) + .catch((error) => { + console.error(chalk.red(`Fatal error: ${error.message}`)); + process.exit(1); + }); +} + +export default generateScreenshot; diff --git a/skills/.curated/myvibe-publish/scripts/utils/history.mjs b/skills/.curated/myvibe-publish/scripts/utils/history.mjs new file mode 100644 index 0000000..65d6b66 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/history.mjs @@ -0,0 +1,91 @@ +import { readFile, writeFile, mkdir } from "node:fs/promises"; +import { existsSync } from "node:fs"; +import { homedir } from "node:os"; +import { join, dirname } from "node:path"; +import yaml from "js-yaml"; + +const HISTORY_DIR = join(homedir(), ".myvibe"); +const HISTORY_FILE = join(HISTORY_DIR, "published.yaml"); + +/** + * Ensure the history directory exists + */ +async function ensureHistoryDir() { + if (!existsSync(HISTORY_DIR)) { + await mkdir(HISTORY_DIR, { recursive: true }); + } +} + +/** + * Load publish history from file + * @returns {Promise<Object>} History data with mappings + */ +async function loadHistory() { + try { + if (!existsSync(HISTORY_FILE)) { + return { mappings: {} }; + } + const content = await readFile(HISTORY_FILE, "utf-8"); + const data = yaml.load(content); + return data || { mappings: {} }; + } catch { + return { mappings: {} }; + } +} + +/** + * Save publish history to file + * @param {Object} history - History data to save + */ +async function saveHistory(history) { + await ensureHistoryDir(); + const content = yaml.dump(history, { indent: 2, lineWidth: -1 }); + await writeFile(HISTORY_FILE, content, "utf-8"); +} + +/** + * Get publish history for a source path and hub + * @param {string} sourcePath - Absolute path to source (file or directory) + * @param {string} hubUrl - MyVibe hub URL + * @returns {Promise<{did: string, lastPublished: string, title: string} | null>} + */ +export async function getPublishHistory(sourcePath, hubUrl) { + const history = await loadHistory(); + const { origin } = new URL(hubUrl); + + const pathMappings = history.mappings[sourcePath]; + if (!pathMappings) { + return null; + } + + const hubMapping = pathMappings[origin]; + if (!hubMapping) { + return null; + } + + return hubMapping; +} + +/** + * Save publish history for a source path and hub + * @param {string} sourcePath - Absolute path to source (file or directory) + * @param {string} hubUrl - MyVibe hub URL + * @param {string} did - Vibe DID + * @param {string} title - Vibe title (optional) + */ +export async function savePublishHistory(sourcePath, hubUrl, did, title = "") { + const history = await loadHistory(); + const { origin } = new URL(hubUrl); + + if (!history.mappings[sourcePath]) { + history.mappings[sourcePath] = {}; + } + + history.mappings[sourcePath][origin] = { + did, + lastPublished: new Date().toISOString(), + ...(title && { title }), + }; + + await saveHistory(history); +} diff --git a/skills/.curated/myvibe-publish/scripts/utils/http.mjs b/skills/.curated/myvibe-publish/scripts/utils/http.mjs new file mode 100644 index 0000000..7965df4 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/http.mjs @@ -0,0 +1,229 @@ +import chalk from "chalk"; +import { handleAuthError } from "./auth.mjs"; + +/** + * Make an authenticated API request + * @param {string} url - Request URL + * @param {Object} options - Fetch options + * @param {string} accessToken - Access token + * @param {string} hubUrl - Hub URL (for error handling) + * @returns {Promise<Object>} - Response data + */ +export async function apiRequest(url, options, accessToken, hubUrl) { + const response = await fetch(url, { + ...options, + headers: { + ...options.headers, + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + }); + + if (!response.ok) { + let errorMessage; + let errorCode; + try { + const errorData = await response.json(); + errorMessage = errorData.error || errorData.message || response.statusText; + errorCode = errorData.code; + } catch { + errorMessage = response.statusText; + } + + // Handle auth errors specially, but not subscription-related 403s + if (response.status === 401 || response.status === 403) { + // Don't clear auth for subscription-related errors + if (errorCode !== "PRIVATE_MODE_REQUIRES_SUBSCRIPTION") { + await handleAuthError(hubUrl, response.status); + } + } + + const error = new Error(errorMessage); + error.status = response.status; + error.code = errorCode; + throw error; + } + + return response.json(); +} + +/** + * Make a GET request + */ +export async function apiGet(url, accessToken, hubUrl) { + return apiRequest(url, { method: "GET" }, accessToken, hubUrl); +} + +/** + * Make a POST request + */ +export async function apiPost(url, data, accessToken, hubUrl) { + return apiRequest( + url, + { + method: "POST", + body: JSON.stringify(data), + }, + accessToken, + hubUrl + ); +} + +/** + * Make a PATCH request + */ +export async function apiPatch(url, data, accessToken, hubUrl) { + return apiRequest( + url, + { + method: "PATCH", + body: JSON.stringify(data), + }, + accessToken, + hubUrl + ); +} + +/** + * Subscribe to SSE stream for conversion progress + * @param {string} url - SSE endpoint URL + * @param {string} accessToken - Access token + * @param {string} hubUrl - Hub URL (for error handling) + * @param {Object} callbacks - Event callbacks + * @param {Function} callbacks.onMessage - Called on message event + * @param {Function} callbacks.onProgress - Called on progress event + * @param {Function} callbacks.onCompleted - Called on completion + * @param {Function} callbacks.onError - Called on error + * @returns {Promise<void>} + */ +export async function subscribeToSSE(url, accessToken, hubUrl, callbacks) { + const { onMessage, onProgress, onCompleted, onError } = callbacks; + + try { + const response = await fetch(url, { + method: "GET", + headers: { + Authorization: `Bearer ${accessToken}`, + Accept: "text/event-stream", + "Cache-Control": "no-cache", + }, + }); + + if (!response.ok) { + if (response.status === 401 || response.status === 403) { + await handleAuthError(hubUrl, response.status); + } + throw new Error(`SSE connection failed: ${response.status} ${response.statusText}`); + } + + const reader = response.body.getReader(); + const decoder = new TextDecoder(); + let buffer = ""; + + while (true) { + const { done, value } = await reader.read(); + + if (done) { + break; + } + + buffer += decoder.decode(value, { stream: true }); + + // Process complete events in buffer + const lines = buffer.split("\n"); + buffer = lines.pop() || ""; // Keep incomplete line in buffer + + let currentEvent = null; + + for (const line of lines) { + if (line.startsWith("event: ")) { + currentEvent = line.slice(7).trim(); + } else if (line.startsWith("data: ")) { + const dataStr = line.slice(6); + try { + const data = JSON.parse(dataStr); + + switch (currentEvent) { + case "message": + onMessage?.(data.message || data); + break; + case "progress": + onProgress?.(data); + break; + case "completed": + onCompleted?.(data); + return; // End stream on completion + case "error": + onError?.(data.error || data); + return; // End stream on error + default: + // Handle data without event type + if (data.message) { + onMessage?.(data.message); + } + } + } catch { + // Non-JSON data, treat as message + onMessage?.(dataStr); + } + currentEvent = null; + } + } + } + } catch (error) { + onError?.(error.message || error); + throw error; + } +} + +/** + * Poll for conversion status (fallback if SSE doesn't work) + * @param {string} url - Status endpoint URL + * @param {string} accessToken - Access token + * @param {string} hubUrl - Hub URL + * @param {Object} callbacks - Callbacks + * @param {number} interval - Poll interval in ms + * @param {number} timeout - Timeout in ms + */ +export async function pollConversionStatus( + url, + accessToken, + hubUrl, + callbacks, + interval = 3000, + timeout = 300000 +) { + const { onProgress, onCompleted, onError } = callbacks; + const startTime = Date.now(); + + while (Date.now() - startTime < timeout) { + try { + const status = await apiGet(url, accessToken, hubUrl); + + onProgress?.(status); + + if (status.status === "COMPLETED") { + onCompleted?.(status); + return; + } + + if ( + status.status === "FAILED" || + status.status === "FAILED_VALIDATE_BUNDLE" || + status.status === "FAILED_CONVERSION" + ) { + onError?.(status.conversionError || "Conversion failed"); + return; + } + + // Wait before next poll + await new Promise((resolve) => setTimeout(resolve, interval)); + } catch (error) { + onError?.(error.message || error); + throw error; + } + } + + onError?.("Conversion timeout"); + throw new Error("Conversion timeout"); +} diff --git a/skills/.curated/myvibe-publish/scripts/utils/store.mjs b/skills/.curated/myvibe-publish/scripts/utils/store.mjs new file mode 100644 index 0000000..93eba5d --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/store.mjs @@ -0,0 +1,74 @@ +import { access, rm } from "node:fs/promises"; +import { homedir } from "node:os"; +import { join } from "node:path"; +import createSecretStore, { FileStore } from "@aigne/secrets"; + +const CONFIG_FILENAME = "myvibe-connected.yaml"; +const SERVICE_NAME = "myvibe-publish"; + +/** + * Create a secret store for storing access tokens + * Uses system keyring when available, falls back to file storage + */ +export async function createStore() { + const filepath = join(homedir(), ".aigne", CONFIG_FILENAME); + const secretStore = await createSecretStore({ + filepath, + serviceName: SERVICE_NAME, + }); + + /** + * Migrate from file store to keyring if needed + */ + async function migrate() { + // System doesn't support keyring + if (secretStore instanceof FileStore) { + return true; + } + // Check if file exists (needs migration) + try { + await access(filepath); + } catch { + // File doesn't exist, no migration needed + return true; + } + + // Migrate from file to keyring + const fileStore = new FileStore({ filepath }); + const map = await fileStore.listMap(); + for (const [key, value] of Object.entries(map)) { + await secretStore.setItem(key, value); + } + // Remove old file after migration + await rm(filepath); + } + + /** + * Clear all stored tokens + */ + async function clear() { + const map = await secretStore.listMap(); + for (const key of Object.keys(map)) { + await secretStore.deleteItem(key); + } + } + + /** + * Clear token for a specific hostname + */ + async function clearHost(hostname) { + try { + await secretStore.deleteItem(hostname); + } catch { + // Ignore if item doesn't exist + } + } + + await migrate(); + + // Add custom methods + secretStore.clear = clear; + secretStore.clearHost = clearHost; + + return secretStore; +} diff --git a/skills/.curated/myvibe-publish/scripts/utils/upload-image.mjs b/skills/.curated/myvibe-publish/scripts/utils/upload-image.mjs new file mode 100644 index 0000000..858c2f0 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/upload-image.mjs @@ -0,0 +1,318 @@ +#!/usr/bin/env node + +import crypto from "node:crypto"; +import { existsSync, readFileSync, statSync } from "node:fs"; +import path from "node:path"; +import chalk from "chalk"; +import { joinURL } from "ufo"; + +import { VIBE_HUB_URL_DEFAULT, isMainModule } from "./constants.mjs"; +import { getAccessToken } from "./auth.mjs"; + +// Media Kit component DID for image uploads +const MEDIA_KIT_DID = "z8ia1mAXo8ZE7ytGF36L5uBf9kD2kenhqFGp9"; + +/** + * Get component mount point from blocklet info + * @param {string} appUrl - Application URL + * @param {string} did - Component DID + * @returns {Promise<string>} Mount point path + */ +async function getComponentMountPoint(appUrl, did) { + const blockletJsUrl = joinURL(appUrl, "__blocklet__.js?type=json"); + + const response = await fetch(blockletJsUrl, { + method: "GET", + headers: { Accept: "application/json" }, + }); + + if (!response.ok) { + throw new Error(`Failed to fetch blocklet info: ${response.status} ${response.statusText}`); + } + + const config = await response.json(); + const component = config.componentMountPoints?.find((c) => c.did === did); + + if (!component) { + throw new Error(`Media component not found. The MyVibe instance may not support image uploads.`); + } + + return component.mountPoint; +} + +/** + * Get MIME type from file extension + * @param {string} filePath - File path + * @returns {string} MIME type + */ +function getMimeType(filePath) { + const ext = path.extname(filePath).toLowerCase(); + const mimeTypes = { + ".png": "image/png", + ".jpg": "image/jpeg", + ".jpeg": "image/jpeg", + ".gif": "image/gif", + ".webp": "image/webp", + ".svg": "image/svg+xml", + }; + return mimeTypes[ext] || "application/octet-stream"; +} + +/** + * Upload an image file using TUS protocol + * @param {string} filePath - Path to image file + * @param {string} hubUrl - MyVibe hub URL + * @param {string} accessToken - Access token + * @returns {Promise<{url: string}>} Upload result with image URL + */ +async function uploadImageFile(filePath, hubUrl, accessToken) { + const url = new URL(hubUrl); + const mountPoint = await getComponentMountPoint(hubUrl, MEDIA_KIT_DID); + const uploadEndpoint = `${url.origin}${mountPoint}/api/uploads`; + + // Read file info + const fileBuffer = readFileSync(filePath); + const stats = statSync(filePath); + const fileSize = stats.size; + const fileExt = path.extname(filePath).substring(1); + const mimeType = getMimeType(filePath); + + // Generate hash-based filename + const fileHash = crypto.createHash("sha256").update(fileBuffer).digest("hex"); + const hashBasedFilename = `${fileHash.substring(0, 16)}.${fileExt}`; + + const uploaderId = "MyVibeImageUpload"; + const fileId = `${uploaderId}-${fileHash.substring(0, 16)}`; + + // TUS metadata + const tusMetadata = { + uploaderId, + relativePath: hashBasedFilename, + name: hashBasedFilename, + type: mimeType, + filetype: mimeType, + filename: hashBasedFilename, + }; + + const encodedMetadata = Object.entries(tusMetadata) + .map(([key, value]) => `${key} ${Buffer.from(value).toString("base64")}`) + .join(","); + + const endpointPath = new URL(uploadEndpoint).pathname; + + console.log(chalk.cyan(`Uploading image: ${path.basename(filePath)} (${(fileSize / 1024).toFixed(2)} KB)`)); + + // Step 1: Create upload + const createResponse = await fetch(uploadEndpoint, { + method: "POST", + headers: { + "Tus-Resumable": "1.0.0", + "Upload-Length": fileSize.toString(), + "Upload-Metadata": encodedMetadata, + Authorization: `Bearer ${accessToken}`, + "x-uploader-file-name": hashBasedFilename, + "x-uploader-file-id": fileId, + "x-uploader-file-ext": fileExt, + "x-uploader-base-url": endpointPath, + "x-uploader-endpoint-url": uploadEndpoint, + "x-uploader-metadata": JSON.stringify({ + uploaderId, + relativePath: hashBasedFilename, + name: hashBasedFilename, + type: mimeType, + }), + "x-component-did": MEDIA_KIT_DID, + }, + }); + + if (!createResponse.ok) { + const errorText = await createResponse.text(); + throw new Error(`Failed to create upload: ${createResponse.status} ${createResponse.statusText}\n${errorText}`); + } + + const uploadUrl = createResponse.headers.get("Location"); + if (!uploadUrl) { + throw new Error("No upload URL received from server"); + } + + // Step 2: Upload file content + const uploadResponse = await fetch(`${url.origin}${uploadUrl}`, { + method: "PATCH", + headers: { + "Tus-Resumable": "1.0.0", + "Upload-Offset": "0", + "Content-Type": "application/offset+octet-stream", + Authorization: `Bearer ${accessToken}`, + "x-uploader-file-name": hashBasedFilename, + "x-uploader-file-id": fileId, + "x-uploader-file-ext": fileExt, + "x-uploader-base-url": endpointPath, + "x-uploader-endpoint-url": uploadEndpoint, + "x-uploader-metadata": JSON.stringify({ + uploaderId, + relativePath: hashBasedFilename, + name: hashBasedFilename, + type: mimeType, + }), + "x-component-did": MEDIA_KIT_DID, + "x-uploader-file-exist": "true", + }, + body: fileBuffer, + }); + + if (!uploadResponse.ok) { + const errorText = await uploadResponse.text(); + throw new Error(`Failed to upload file: ${uploadResponse.status} ${uploadResponse.statusText}\n${errorText}`); + } + + const result = await uploadResponse.json(); + + // Get the uploaded file URL + let uploadedUrl = result.url; + if (!uploadedUrl && result?.size) { + uploadedUrl = uploadResponse.url; + } + + if (!uploadedUrl) { + throw new Error("No URL found in the upload response"); + } + + console.log(chalk.green(`✅ Image uploaded: ${uploadedUrl}`)); + + return { url: uploadedUrl }; +} + +/** + * Upload image to MyVibe + * @param {Object} options - Upload options + * @param {string} options.file - Path to image file + * @param {string} [options.hub] - MyVibe hub URL + * @returns {Promise<{success: boolean, url?: string, error?: string}>} + */ +export async function uploadImage(options) { + const { file, hub = VIBE_HUB_URL_DEFAULT } = options; + + try { + if (!file) { + throw new Error("Please provide --file <path> to specify the image file"); + } + + const filePath = path.resolve(file); + if (!existsSync(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + + // Validate file type + const mimeType = getMimeType(filePath); + if (!mimeType.startsWith("image/")) { + throw new Error(`Not an image file: ${filePath}`); + } + + console.log(chalk.bold("\n📷 MyVibe Image Upload\n")); + console.log(chalk.gray(`Hub: ${hub}`)); + + // Get authorization + const accessToken = await getAccessToken(hub); + + // Upload image + const result = await uploadImageFile(filePath, hub, accessToken); + + console.log(chalk.green.bold("\n✅ Upload complete!\n")); + console.log(chalk.cyan(`🔗 ${result.url}\n`)); + + return { + success: true, + url: result.url, + }; + } catch (error) { + console.error(chalk.red(`\n❌ Error: ${error.message}\n`)); + return { + success: false, + error: error.message, + }; + } +} + +/** + * Parse command line arguments + */ +function parseArgs(args) { + const options = {}; + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + const nextArg = args[i + 1]; + + switch (arg) { + case "--file": + case "-f": + options.file = nextArg; + i++; + break; + case "--hub": + case "-h": + options.hub = nextArg; + i++; + break; + case "--help": + printHelp(); + process.exit(0); + break; + } + } + + return options; +} + +/** + * Print help message + */ +function printHelp() { + console.log(` +${chalk.bold("MyVibe Image Upload")} + +Upload an image to MyVibe and get the URL. + +${chalk.bold("Usage:")} + node upload-image.mjs --file <path> [options] + +${chalk.bold("Options:")} + --file, -f <path> Path to image file (PNG, JPG, GIF, WebP, SVG) + --hub, -h <url> MyVibe URL (default: ${VIBE_HUB_URL_DEFAULT}) + --help Show this help message + +${chalk.bold("Examples:")} + # Upload a screenshot + node upload-image.mjs --file ./screenshot.png + + # Upload to specific hub + node upload-image.mjs --file ./cover.jpg --hub https://myvibe.example.com +`); +} + +// CLI entry point +if (isMainModule(import.meta.url)) { + const args = process.argv.slice(2); + + if (args.length === 0) { + printHelp(); + process.exit(1); + } + + const options = parseArgs(args); + + uploadImage(options) + .then((result) => { + if (result.success) { + // Output just the URL for easy script consumption + console.log(result.url); + } + process.exit(result.success ? 0 : 1); + }) + .catch((error) => { + console.error(chalk.red(`Fatal error: ${error.message}`)); + process.exit(1); + }); +} + +export default uploadImage; diff --git a/skills/.curated/myvibe-publish/scripts/utils/upload.mjs b/skills/.curated/myvibe-publish/scripts/utils/upload.mjs new file mode 100644 index 0000000..6999f77 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/upload.mjs @@ -0,0 +1,240 @@ +import { createReadStream } from "node:fs"; +import { stat } from "node:fs/promises"; +import { basename, extname } from "node:path"; +import crypto from "node:crypto"; +import chalk from "chalk"; +import { joinURL } from "ufo"; + +import { API_PATHS } from "./constants.mjs"; +import { handleAuthError } from "./auth.mjs"; + +/** + * Upload a file to MyVibe using TUS protocol + * @param {string} filePath - Path to the file to upload + * @param {string} hubUrl - MyVibe URL + * @param {string} accessToken - Access token + * @param {Object} options - Upload options + * @param {string} [options.did] - Existing Vibe DID for version update + * @returns {Promise<{did: string, id: string, status: string}>} - Upload result + */ +export async function uploadFile(filePath, hubUrl, accessToken, options = {}) { + const { did } = options; + const { origin } = new URL(hubUrl); + + // Build upload endpoint with optional did query parameter + let uploadEndpoint = joinURL(origin, API_PATHS.UPLOAD); + if (did) { + uploadEndpoint = `${uploadEndpoint}?did=${encodeURIComponent(did)}`; + } + + // Get file info + const fileStat = await stat(filePath); + const fileSize = fileStat.size; + const fileName = basename(filePath); + const fileExt = extname(filePath).slice(1).toLowerCase(); + + // Determine MIME type + let mimeType = "application/octet-stream"; + if (fileExt === "zip") { + mimeType = "application/zip"; + } else if (fileExt === "html" || fileExt === "htm") { + mimeType = "text/html"; + } + + // Generate file ID + const fileHash = crypto.randomBytes(16).toString("hex"); + const uploaderId = "MyVibePublish"; + const fileId = `${uploaderId}-${fileHash}`; + + console.log(chalk.cyan(`\nUploading: ${fileName} (${(fileSize / 1024).toFixed(2)} KB)`)); + + // Use random hash prefix to avoid filename collision + const uniqueFileName = `${fileHash.slice(0, 8)}-${fileName}`; + + // TUS metadata + const tusMetadata = { + uploaderId, + relativePath: uniqueFileName, + name: uniqueFileName, + type: mimeType, + filetype: mimeType, + filename: uniqueFileName, + }; + + const encodedMetadata = Object.entries(tusMetadata) + .map(([key, value]) => `${key} ${Buffer.from(String(value)).toString("base64")}`) + .join(","); + + const endpointPath = new URL(uploadEndpoint).pathname; + + // Step 1: Create upload + const createResponse = await fetch(uploadEndpoint, { + method: "POST", + headers: { + "Tus-Resumable": "1.0.0", + "Upload-Length": fileSize.toString(), + "Upload-Metadata": encodedMetadata, + Authorization: `Bearer ${accessToken}`, + "x-uploader-file-name": uniqueFileName, + "x-uploader-file-id": fileId, + "x-uploader-file-ext": fileExt, + "x-uploader-base-url": endpointPath, + "x-uploader-endpoint-url": uploadEndpoint, + "x-uploader-metadata": JSON.stringify({ + uploaderId, + relativePath: uniqueFileName, + name: uniqueFileName, + type: mimeType, + }), + }, + }); + + if (!createResponse.ok) { + if (createResponse.status === 401 || createResponse.status === 403) { + await handleAuthError(hubUrl, createResponse.status); + } + const errorText = await createResponse.text(); + throw new Error(`Failed to create upload: ${createResponse.status} ${createResponse.statusText}\n${errorText}`); + } + + const uploadUrl = createResponse.headers.get("Location"); + if (!uploadUrl) { + throw new Error("No upload URL received from server"); + } + console.log(chalk.gray(` Upload URL: ${uploadUrl}`)); + + console.log(chalk.gray(" Upload created, sending file data...")); + + // Step 2: Read file and upload content + const fileBuffer = await readFileAsBuffer(filePath); + + const uploadResponse = await fetch(`${origin}${uploadUrl}`, { + method: "PATCH", + headers: { + "Tus-Resumable": "1.0.0", + "Upload-Offset": "0", + "Content-Type": "application/offset+octet-stream", + Authorization: `Bearer ${accessToken}`, + "x-uploader-file-name": uniqueFileName, + "x-uploader-file-id": fileId, + "x-uploader-file-ext": fileExt, + "x-uploader-base-url": endpointPath, + "x-uploader-endpoint-url": uploadEndpoint, + "x-uploader-metadata": JSON.stringify({ + uploaderId, + relativePath: uniqueFileName, + name: uniqueFileName, + type: mimeType, + }), + "x-uploader-file-exist": "true", + }, + body: fileBuffer, + }); + + if (!uploadResponse.ok) { + if (uploadResponse.status === 401 || uploadResponse.status === 403) { + await handleAuthError(hubUrl, uploadResponse.status); + } + const errorText = await uploadResponse.text(); + throw new Error(`Failed to upload file: ${uploadResponse.status} ${uploadResponse.statusText}\n${errorText}`); + } + + let result; + try { + result = await uploadResponse.json(); + } catch { + throw new Error("Invalid response from server after upload"); + } + + // Check for upload errors + if (result.error) { + throw new Error(`Upload error: ${result.error.code || result.error.message || JSON.stringify(result.error)}`); + } + + // Extract blocklet info from result + const blocklet = result.blocklet; + if (!blocklet) { + throw new Error("No blocklet info in upload response"); + } + + console.log(chalk.green(`✅ Upload complete! DID: ${blocklet.did}`)); + + return { + did: blocklet.did, + id: blocklet.id, + status: blocklet.status, + isNewUpload: blocklet.isNewUpload, + versionHistoryEnabled: blocklet.versionHistoryEnabled, + }; +} + +/** + * Read file as buffer + * @param {string} filePath - File path + * @returns {Promise<Buffer>} + */ +async function readFileAsBuffer(filePath) { + const chunks = []; + const stream = createReadStream(filePath); + + return new Promise((resolve, reject) => { + stream.on("data", (chunk) => chunks.push(chunk)); + stream.on("end", () => resolve(Buffer.concat(chunks))); + stream.on("error", reject); + }); +} + +/** + * Create a vibe from URL + * @param {string} url - URL to import + * @param {string} hubUrl - MyVibe URL + * @param {string} accessToken - Access token + * @param {Object} metadata - Vibe metadata + * @returns {Promise<{did: string, id: string}>} + */ +export async function createVibeFromUrl(url, hubUrl, accessToken, metadata = {}) { + const { origin } = new URL(hubUrl); + const apiUrl = joinURL(origin, API_PATHS.VIBES_FROM_URL); + + console.log(chalk.cyan(`\nImporting URL: ${url}`)); + + const response = await fetch(apiUrl, { + method: "POST", + headers: { + Authorization: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + url, + }), + }); + + if (!response.ok) { + if (response.status === 401 || response.status === 403) { + await handleAuthError(hubUrl, response.status); + } + let errorMessage; + try { + const errorData = await response.json(); + errorMessage = errorData.error || errorData.message || response.statusText; + } catch { + errorMessage = response.statusText; + } + throw new Error(`Failed to create vibe from URL: ${errorMessage}`); + } + + const result = await response.json(); + const blocklet = result.blocklet; + + if (!blocklet || !blocklet.did) { + throw new Error("No blocklet info in response"); + } + + console.log(chalk.green(`✅ Vibe created! DID: ${blocklet.did}`)); + + return { + did: blocklet.did, + id: blocklet.id, + status: blocklet.status, + }; +} diff --git a/skills/.curated/myvibe-publish/scripts/utils/zip.mjs b/skills/.curated/myvibe-publish/scripts/utils/zip.mjs new file mode 100644 index 0000000..fde17a8 --- /dev/null +++ b/skills/.curated/myvibe-publish/scripts/utils/zip.mjs @@ -0,0 +1,117 @@ +import { createWriteStream } from "node:fs"; +import { stat, mkdtemp, rm } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join, basename } from "node:path"; +import archiver from "archiver"; +import chalk from "chalk"; + +/** + * Compress a directory into a ZIP file + * @param {string} dirPath - Path to the directory to compress + * @param {string} [outputPath] - Optional output path for the ZIP file + * @returns {Promise<{zipPath: string, cleanup: Function}>} - Path to the created ZIP and cleanup function + */ +export async function zipDirectory(dirPath, outputPath) { + // Verify directory exists + const dirStat = await stat(dirPath); + if (!dirStat.isDirectory()) { + throw new Error(`Not a directory: ${dirPath}`); + } + + // Create temp directory if no output path specified + let tempDir = null; + let zipPath = outputPath; + + if (!zipPath) { + tempDir = await mkdtemp(join(tmpdir(), "myvibe-publish-")); + const dirName = basename(dirPath); + zipPath = join(tempDir, `${dirName}.zip`); + } + + console.log(chalk.cyan(`Compressing directory: ${dirPath}`)); + + return new Promise((resolve, reject) => { + const output = createWriteStream(zipPath); + const archive = archiver("zip", { + zlib: { level: 9 }, // Maximum compression + }); + + output.on("close", () => { + const sizeKB = (archive.pointer() / 1024).toFixed(2); + console.log(chalk.green(`✅ Created ZIP: ${zipPath} (${sizeKB} KB)`)); + + resolve({ + zipPath, + size: archive.pointer(), + cleanup: async () => { + if (tempDir) { + try { + await rm(tempDir, { recursive: true, force: true }); + } catch { + // Ignore cleanup errors + } + } + }, + }); + }); + + archive.on("error", (err) => { + reject(new Error(`Failed to create ZIP: ${err.message}`)); + }); + + archive.on("warning", (err) => { + if (err.code === "ENOENT") { + console.warn(chalk.yellow(`Warning: ${err.message}`)); + } else { + reject(err); + } + }); + + // Progress logging + let lastPercent = 0; + archive.on("progress", (progress) => { + const percent = Math.floor((progress.fs.processedBytes / progress.fs.totalBytes) * 100); + if (percent >= lastPercent + 20) { + console.log(chalk.gray(` Compressing... ${percent}%`)); + lastPercent = percent; + } + }); + + archive.pipe(output); + + // Add directory contents to ZIP (not the directory itself) + archive.directory(dirPath, false); + + archive.finalize(); + }); +} + +/** + * Get file info for upload + * @param {string} filePath - Path to the file + * @returns {Promise<{path: string, size: number, name: string, type: string}>} + */ +export async function getFileInfo(filePath) { + const fileStat = await stat(filePath); + + if (!fileStat.isFile()) { + throw new Error(`Not a file: ${filePath}`); + } + + const name = basename(filePath); + const ext = name.split(".").pop()?.toLowerCase(); + + let type = "application/octet-stream"; + if (ext === "zip") { + type = "application/zip"; + } else if (ext === "html" || ext === "htm") { + type = "text/html"; + } + + return { + path: filePath, + size: fileStat.size, + name, + type, + }; +}