From 4dc1d5be3d6a44cad2635ea511690c31475bb56d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fatih=20Kadir=20Ak=C4=B1n?= Date: Wed, 7 Jan 2026 23:09:30 +0300 Subject: [PATCH] chore(raycast-extension): Add initial project files and configurations --- packages/raycast-extension/.gitignore | 21 + packages/raycast-extension/README.md | 52 + packages/raycast-extension/assets/icon.png | Bin 0 -> 52438 bytes packages/raycast-extension/eslint.config.mjs | 8 + packages/raycast-extension/package-lock.json | 3602 +++++++++++++++++ packages/raycast-extension/package.json | 78 + packages/raycast-extension/raycast-env.d.ts | 43 + packages/raycast-extension/src/api.ts | 98 + .../src/browse-categories.tsx | 264 ++ .../raycast-extension/src/browse-prompts.tsx | 212 + packages/raycast-extension/src/cache.ts | 158 + .../src/components/prompt-detail.tsx | 127 + .../src/components/run-prompt.tsx | 244 ++ .../src/download-prompts.tsx | 127 + .../raycast-extension/src/random-prompt.tsx | 65 + .../raycast-extension/src/search-prompts.tsx | 158 + packages/raycast-extension/src/types.ts | 69 + packages/raycast-extension/src/utils.ts | 320 ++ packages/raycast-extension/tsconfig.json | 17 + 19 files changed, 5663 insertions(+) create mode 100644 packages/raycast-extension/.gitignore create mode 100644 packages/raycast-extension/README.md create mode 100644 packages/raycast-extension/assets/icon.png create mode 100644 packages/raycast-extension/eslint.config.mjs create mode 100644 packages/raycast-extension/package-lock.json create mode 100644 packages/raycast-extension/package.json create mode 100644 packages/raycast-extension/raycast-env.d.ts create mode 100644 packages/raycast-extension/src/api.ts create mode 100644 packages/raycast-extension/src/browse-categories.tsx create mode 100644 packages/raycast-extension/src/browse-prompts.tsx create mode 100644 packages/raycast-extension/src/cache.ts create mode 100644 packages/raycast-extension/src/components/prompt-detail.tsx create mode 100644 packages/raycast-extension/src/components/run-prompt.tsx create mode 100644 packages/raycast-extension/src/download-prompts.tsx create mode 100644 packages/raycast-extension/src/random-prompt.tsx create mode 100644 packages/raycast-extension/src/search-prompts.tsx create mode 100644 packages/raycast-extension/src/types.ts create mode 100644 packages/raycast-extension/src/utils.ts create mode 100644 packages/raycast-extension/tsconfig.json diff --git a/packages/raycast-extension/.gitignore b/packages/raycast-extension/.gitignore new file mode 100644 index 00000000..e43bade9 --- /dev/null +++ b/packages/raycast-extension/.gitignore @@ -0,0 +1,21 @@ +# Dependencies +node_modules/ + +# Build output +dist/ + +# Raycast +.raycast/ + +# OS +.DS_Store + +# IDE +.idea/ +.vscode/ +*.swp +*.swo + +# Logs +*.log +npm-debug.log* diff --git a/packages/raycast-extension/README.md b/packages/raycast-extension/README.md new file mode 100644 index 00000000..48a64bae --- /dev/null +++ b/packages/raycast-extension/README.md @@ -0,0 +1,52 @@ +# Prompts.chat + +Search, browse, and run AI prompts from [prompts.chat](https://prompts.chat) — the open-source community platform for ChatGPT and AI prompts. + +## Features + +- **Search Prompts** — Quickly search through thousands of community AI prompts +- **Browse Prompts** — Browse latest prompts with filtering by type and sorting options +- **Random Prompt** — Get a random prompt for inspiration +- **Run Prompts** — Run prompts directly in ChatGPT, Claude, Cursor, and 25+ other AI platforms +- **Variable Support** — Fill in prompt variables before running + +## Commands + +| Command | Description | +|---------|-------------| +| Search Prompts | Search for AI prompts from the community | +| Browse Prompts | Browse and filter latest AI prompts | +| Random Prompt | Get a random AI prompt for inspiration | + +## Running Prompts + +Press **Enter** on any prompt to run it. You can choose from: + +**Chat Platforms:** ChatGPT, Claude, Microsoft Copilot, DeepSeek, Gemini, Grok, Perplexity, and more + +**Code Platforms:** Cursor, Windsurf, VS Code, GitHub Copilot, Bolt, Lovable, v0, and more + +If a prompt contains variables (e.g., `${topic}`), you'll be prompted to fill them in first. + +## Keyboard Shortcuts + +| Action | Shortcut | +|--------|----------| +| Run Prompt | ↵ Enter | +| Copy Prompt | ⌘ C | +| Open in Browser | ⌘ O | +| Copy URL | ⌘ ⇧ C | +| Refresh | ⌘ R | + +## Configuration + +| Preference | Description | Default | +|------------|-------------|---------| +| Base URL | The base URL of the prompts.chat instance | `https://prompts.chat` | + +You can use this extension with self-hosted instances of prompts.chat by changing the Base URL. + +## Links + +- [prompts.chat](https://prompts.chat) — Browse prompts on the web +- [GitHub Repository](https://github.com/f/awesome-chatgpt-prompts) — Source code and contributions diff --git a/packages/raycast-extension/assets/icon.png b/packages/raycast-extension/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4dc008fa06387cd21f06aea57dfc0d90127879 GIT binary patch literal 52438 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%0DEO%>FxA6sE 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 JPDHLkV1hPYb?g8D literal 0 HcmV?d00001 diff --git a/packages/raycast-extension/eslint.config.mjs b/packages/raycast-extension/eslint.config.mjs new file mode 100644 index 00000000..2c4d5e84 --- /dev/null +++ b/packages/raycast-extension/eslint.config.mjs @@ -0,0 +1,8 @@ +import raycastConfig from "@raycast/eslint-config"; + +export default [ + { + ignores: ["node_modules/**", "dist/**"], + }, + ...raycastConfig, +]; diff --git a/packages/raycast-extension/package-lock.json b/packages/raycast-extension/package-lock.json new file mode 100644 index 00000000..d4addf0d --- /dev/null +++ b/packages/raycast-extension/package-lock.json @@ -0,0 +1,3602 @@ +{ + "name": "prompts-chat", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "prompts-chat", + "license": "MIT", + "dependencies": { + "@raycast/api": "^1.96.1", + "@raycast/utils": "^1.19.1", + "node-fetch": "^3.3.2" + }, + "devDependencies": { + "@raycast/eslint-config": "^1.0.11", + "@types/node": "22.13.14", + "@types/react": "19.0.10", + "eslint": "^8.57.0", + "prettier": "^3.5.3", + "typescript": "^5.8.2" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", + "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", + "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", + "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", + "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", + "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", + "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", + "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", + "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", + "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", + "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", + "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", + "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", + "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", + "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", + "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", + "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", + "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", + "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", + "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", + "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", + "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", + "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", + "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", + "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", + "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", + "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "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/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/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@oclif/core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.8.0.tgz", + "integrity": "sha512-jteNUQKgJHLHFbbz806aGZqf+RJJ7t4gwF4MYa8fCwCxQ8/klJNWc0MvaJiBebk7Mc+J39mdlsB4XraaCKznFw==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.3.2", + "ansis": "^3.17.0", + "clean-stack": "^3.0.1", + "cli-spinners": "^2.9.2", + "debug": "^4.4.3", + "ejs": "^3.1.10", + "get-package-type": "^0.1.0", + "indent-string": "^4.0.0", + "is-wsl": "^2.2.0", + "lilconfig": "^3.1.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "string-width": "^4.2.3", + "supports-color": "^8", + "tinyglobby": "^0.2.14", + "widest-line": "^3.1.0", + "wordwrap": "^1.0.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@oclif/plugin-autocomplete": { + "version": "3.2.39", + "resolved": "https://registry.npmjs.org/@oclif/plugin-autocomplete/-/plugin-autocomplete-3.2.39.tgz", + "integrity": "sha512-OwAZNnSpuDjKyhAwoOJkFWxGswPFKBB4hpNIMsj6PUtbKwGBPmD+2wGGPgTsDioVwLmUELSb2bZ+1dxHfvXmvg==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^4", + "ansis": "^3.16.0", + "debug": "^4.4.1", + "ejs": "^3.1.10" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@oclif/plugin-help": { + "version": "6.2.36", + "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.36.tgz", + "integrity": "sha512-NBQIg5hEMhvdbi4mSrdqRGl5XJ0bqTAHq6vDCCCDXUcfVtdk3ZJbSxtRVWyVvo9E28vwqu6MZyHOJylevqcHbA==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@oclif/plugin-not-found": { + "version": "3.2.73", + "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.73.tgz", + "integrity": "sha512-2bQieTGI9XNFe9hKmXQjJmHV5rZw+yn7Rud1+C5uLEo8GaT89KZbiLTJgL35tGILahy/cB6+WAs812wjw7TK6w==", + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^7.10.1", + "@oclif/core": "^4.8.0", + "ansis": "^3.17.0", + "fast-levenshtein": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@raycast/api": { + "version": "1.104.1", + "resolved": "https://registry.npmjs.org/@raycast/api/-/api-1.104.1.tgz", + "integrity": "sha512-5v52JDzAAoCA6/JOoBfsgCXK4fzIY02lvMH0IA3ghuxZuk8i2ID2rtPkTuIAbebpkILADB7gP4yaBphkMLiCJA==", + "license": "MIT", + "dependencies": { + "@oclif/core": "^4.5.4", + "@oclif/plugin-autocomplete": "^3.2.35", + "@oclif/plugin-help": "^6.2.33", + "@oclif/plugin-not-found": "^3.2.68", + "@types/node": "22.13.10", + "@types/react": "19.0.10", + "esbuild": "^0.25.10", + "react": "19.0.0" + }, + "bin": { + "ray": "bin/run.js" + }, + "engines": { + "node": ">=22.14.0" + }, + "peerDependencies": { + "@types/node": "22.13.10", + "@types/react": "19.0.10", + "react-devtools": "6.1.1" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@types/react": { + "optional": true + }, + "react-devtools": { + "optional": true + } + } + }, + "node_modules/@raycast/api/node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@raycast/eslint-config": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@raycast/eslint-config/-/eslint-config-1.0.11.tgz", + "integrity": "sha512-I0Lt8bwahVGkANUBxripIxKptMBz1Ou+UXGwfqgFvKwo1gVLrnlEngxaspQJA8L5pvzQkQMwizVCSgNC3bddWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@raycast/eslint-plugin": "^1.0.11", + "@rushstack/eslint-patch": "^1.10.4", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", + "eslint-config-prettier": "^9.1.0" + }, + "peerDependencies": { + "eslint": ">=7", + "prettier": ">=2", + "typescript": ">=4" + } + }, + "node_modules/@raycast/eslint-plugin": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/@raycast/eslint-plugin/-/eslint-plugin-1.0.16.tgz", + "integrity": "sha512-OyFL/W75/4hlgdUUI80Eoes0HjpVrJ8I1kB/PBH2RLjbcK22TC6IwZPXvhBZ5jF962O1TqtOuHrTjySwDaa/cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^5.62.0" + }, + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/@raycast/utils": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@raycast/utils/-/utils-1.19.1.tgz", + "integrity": "sha512-/udUGcTZCgZZwzesmjBkqG5naQZTD/ZLHbqRwkWcF+W97vf9tr9raxKyQjKsdZ17OVllw2T3sHBQsVUdEmCm2g==", + "license": "MIT", + "dependencies": { + "cross-fetch": "^3.1.6", + "dequal": "^2.0.3", + "object-hash": "^3.0.0", + "signal-exit": "^4.0.2", + "stream-chain": "^2.2.5", + "stream-json": "^1.8.0" + }, + "peerDependencies": { + "@raycast/api": ">=1.69.0" + } + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.15.0.tgz", + "integrity": "sha512-ojSshQPKwVvSMR8yT2L/QtUkV5SXi/IfDiJ4/8d6UbTPjiHVmxZzUAzGD8Tzks1b9+qQkZa0isUOvYObedITaw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@types/react": { + "version": "19.0.10", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz", + "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==", + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "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==", + "dev": true, + "license": "ISC" + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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-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/ansis": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", + "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", + "license": "ISC", + "engines": { + "node": ">=14" + } + }, + "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==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/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/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/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/clean-stack": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-3.0.1.tgz", + "integrity": "sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==", + "license": "MIT", + "dependencies": { + "escape-string-regexp": "4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "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/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/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "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/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "license": "Apache-2.0", + "dependencies": { + "jake": "^10.8.5" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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/esbuild": { + "version": "0.25.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", + "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.12", + "@esbuild/android-arm": "0.25.12", + "@esbuild/android-arm64": "0.25.12", + "@esbuild/android-x64": "0.25.12", + "@esbuild/darwin-arm64": "0.25.12", + "@esbuild/darwin-x64": "0.25.12", + "@esbuild/freebsd-arm64": "0.25.12", + "@esbuild/freebsd-x64": "0.25.12", + "@esbuild/linux-arm": "0.25.12", + "@esbuild/linux-arm64": "0.25.12", + "@esbuild/linux-ia32": "0.25.12", + "@esbuild/linux-loong64": "0.25.12", + "@esbuild/linux-mips64el": "0.25.12", + "@esbuild/linux-ppc64": "0.25.12", + "@esbuild/linux-riscv64": "0.25.12", + "@esbuild/linux-s390x": "0.25.12", + "@esbuild/linux-x64": "0.25.12", + "@esbuild/netbsd-arm64": "0.25.12", + "@esbuild/netbsd-x64": "0.25.12", + "@esbuild/openbsd-arm64": "0.25.12", + "@esbuild/openbsd-x64": "0.25.12", + "@esbuild/openharmony-arm64": "0.25.12", + "@esbuild/sunos-x64": "0.25.12", + "@esbuild/win32-arm64": "0.25.12", + "@esbuild/win32-ia32": "0.25.12", + "@esbuild/win32-x64": "0.25.12" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.2.tgz", + "integrity": "sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", + "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", + "license": "MIT", + "dependencies": { + "fastest-levenshtein": "^1.0.7" + } + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "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-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "license": "Apache-2.0", + "dependencies": { + "minimatch": "^5.0.1" + } + }, + "node_modules/filelist/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/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/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/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true, + "license": "ISC" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "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/iconv-lite": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", + "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", + "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/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jake": { + "version": "10.9.4", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", + "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.6", + "filelist": "^1.0.4", + "picocolors": "^1.1.1" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "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/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/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "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-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/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "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==", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/optionator/node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.7.4.tgz", + "integrity": "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "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/react": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz", + "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "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": { + "queue-microtask": "^1.2.2" + } + }, + "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/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "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/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stream-chain": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", + "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", + "license": "BSD-3-Clause" + }, + "node_modules/stream-json": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", + "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", + "license": "BSD-3-Clause", + "dependencies": { + "stream-chain": "^2.2.5" + } + }, + "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/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-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "license": "MIT" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/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/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "license": "MIT", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "license": "MIT" + }, + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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" + } + } + } +} diff --git a/packages/raycast-extension/package.json b/packages/raycast-extension/package.json new file mode 100644 index 00000000..87cbe96c --- /dev/null +++ b/packages/raycast-extension/package.json @@ -0,0 +1,78 @@ +{ + "$schema": "https://www.raycast.com/schemas/extension.json", + "name": "prompts-chat", + "title": "Prompts.chat", + "description": "Search, browse, and copy AI prompts from prompts.chat - the community platform for ChatGPT and AI prompts", + "icon": "icon.png", + "author": "fka", + "categories": ["Productivity", "Developer Tools"], + "license": "MIT", + "platforms": ["macOS"], + "commands": [ + { + "name": "search-prompts", + "title": "Search Prompts", + "subtitle": "prompts.chat", + "description": "Search for AI prompts from the community", + "mode": "view" + }, + { + "name": "browse-prompts", + "title": "Browse Prompts", + "subtitle": "prompts.chat", + "description": "Browse and filter latest AI prompts", + "mode": "view" + }, + { + "name": "random-prompt", + "title": "Random Prompt", + "subtitle": "prompts.chat", + "description": "Get a random AI prompt for inspiration", + "mode": "view" + }, + { + "name": "download-prompts", + "title": "Download All Prompts", + "subtitle": "prompts.chat", + "description": "Download and cache all prompts for offline use", + "mode": "view" + }, + { + "name": "browse-categories", + "title": "Browse Categories", + "subtitle": "prompts.chat", + "description": "Browse prompts by category", + "mode": "view" + } + ], + "preferences": [ + { + "name": "baseUrl", + "title": "Base URL", + "description": "The base URL of the prompts.chat instance", + "type": "textfield", + "default": "https://prompts.chat", + "required": false + } + ], + "dependencies": { + "@raycast/api": "^1.96.1", + "@raycast/utils": "^1.19.1", + "node-fetch": "^3.3.2" + }, + "devDependencies": { + "@raycast/eslint-config": "^1.0.11", + "@types/node": "22.13.14", + "@types/react": "19.0.10", + "eslint": "^8.57.0", + "prettier": "^3.5.3", + "typescript": "^5.8.2" + }, + "scripts": { + "build": "ray build", + "dev": "ray develop", + "fix-lint": "ray lint --fix", + "lint": "ray lint", + "publish": "npx @raycast/api@latest publish" + } +} diff --git a/packages/raycast-extension/raycast-env.d.ts b/packages/raycast-extension/raycast-env.d.ts new file mode 100644 index 00000000..5c65f34c --- /dev/null +++ b/packages/raycast-extension/raycast-env.d.ts @@ -0,0 +1,43 @@ +/// + +/* 🚧 🚧 🚧 + * This file is auto-generated from the extension's manifest. + * Do not modify manually. Instead, update the `package.json` file. + * 🚧 🚧 🚧 */ + +/* eslint-disable @typescript-eslint/ban-types */ + +type ExtensionPreferences = { + /** Base URL - The base URL of the prompts.chat instance */ + "baseUrl": string +} + +/** Preferences accessible in all the extension's commands */ +declare type Preferences = ExtensionPreferences + +declare namespace Preferences { + /** Preferences accessible in the `search-prompts` command */ + export type SearchPrompts = ExtensionPreferences & {} + /** Preferences accessible in the `browse-prompts` command */ + export type BrowsePrompts = ExtensionPreferences & {} + /** Preferences accessible in the `random-prompt` command */ + export type RandomPrompt = ExtensionPreferences & {} + /** Preferences accessible in the `download-prompts` command */ + export type DownloadPrompts = ExtensionPreferences & {} + /** Preferences accessible in the `browse-categories` command */ + export type BrowseCategories = ExtensionPreferences & {} +} + +declare namespace Arguments { + /** Arguments passed to the `search-prompts` command */ + export type SearchPrompts = {} + /** Arguments passed to the `browse-prompts` command */ + export type BrowsePrompts = {} + /** Arguments passed to the `random-prompt` command */ + export type RandomPrompt = {} + /** Arguments passed to the `download-prompts` command */ + export type DownloadPrompts = {} + /** Arguments passed to the `browse-categories` command */ + export type BrowseCategories = {} +} + diff --git a/packages/raycast-extension/src/api.ts b/packages/raycast-extension/src/api.ts new file mode 100644 index 00000000..9fc9d5cf --- /dev/null +++ b/packages/raycast-extension/src/api.ts @@ -0,0 +1,98 @@ +import { getPreferenceValues } from "@raycast/api"; +import type { Preferences, Prompt, PromptsResponse } from "./types"; + +function getBaseUrl(): string { + const { baseUrl } = getPreferenceValues(); + return baseUrl?.replace(/\/$/, "") || "https://prompts.chat"; +} + +export async function fetchPrompts(options: { + page?: number; + perPage?: number; + type?: string; + category?: string; + tag?: string; + sort?: string; + q?: string; +}): Promise { + const baseUrl = getBaseUrl(); + const params = new URLSearchParams(); + + if (options.page) params.set("page", options.page.toString()); + if (options.perPage) params.set("perPage", options.perPage.toString()); + if (options.type) params.set("type", options.type); + if (options.category) params.set("category", options.category); + if (options.tag) params.set("tag", options.tag); + if (options.sort) params.set("sort", options.sort); + if (options.q) params.set("q", options.q); + + const url = `${baseUrl}/api/prompts?${params.toString()}`; + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`Failed to fetch prompts: ${response.statusText}`); + } + + return response.json() as Promise; +} + +export async function fetchPromptBySlug( + username: string, + slug: string, +): Promise { + const baseUrl = getBaseUrl(); + + const response = await fetch(`${baseUrl}/api/prompts/${slug}`); + + if (!response.ok) { + if (response.status === 404) { + return null; + } + throw new Error(`Failed to fetch prompt: ${response.statusText}`); + } + + return response.json() as Promise; +} + +export async function searchPrompts( + query: string, + limit: number = 20, +): Promise< + { id: string; title: string; slug: string; author: { username: string } }[] +> { + if (query.length < 2) { + return []; + } + + const baseUrl = getBaseUrl(); + const params = new URLSearchParams({ + q: query, + limit: limit.toString(), + }); + + const url = `${baseUrl}/api/prompts/search?${params.toString()}`; + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`Failed to search prompts: ${response.statusText}`); + } + + const data = (await response.json()) as { + prompts: { + id: string; + title: string; + slug: string; + author: { username: string }; + }[]; + }; + return data.prompts; +} + +export function getPromptUrl(username: string, slug: string): string { + const baseUrl = getBaseUrl(); + return `${baseUrl}/${username}/${slug}`; +} + +export function getWebsiteUrl(): string { + return getBaseUrl(); +} diff --git a/packages/raycast-extension/src/browse-categories.tsx b/packages/raycast-extension/src/browse-categories.tsx new file mode 100644 index 00000000..a781d9fe --- /dev/null +++ b/packages/raycast-extension/src/browse-categories.tsx @@ -0,0 +1,264 @@ +import { + Action, + ActionPanel, + Icon, + List, + showToast, + Toast, + Clipboard, + openExtensionPreferences, +} from "@raycast/api"; +import { useState, useEffect, useMemo } from "react"; +import type { Prompt } from "./types"; +import { getPromptUrl } from "./api"; +import { RunPromptForm } from "./components/run-prompt"; +import { PromptDetailView } from "./components/prompt-detail"; +import { + getCachedPrompts, + convertToPrompt, + downloadAllPrompts, + type CachedPrompt, +} from "./cache"; + +interface Category { + name: string; + slug: string; + count: number; +} + +export default function BrowseCategories() { + const [allPrompts, setAllPrompts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + const [selectedCategory, setSelectedCategory] = useState(null); + const [searchText, setSearchText] = useState(""); + + async function handleDownload() { + setIsLoading(true); + try { + await showToast({ style: Toast.Style.Animated, title: "Downloading prompts..." }); + const prompts = await downloadAllPrompts(); + setAllPrompts(prompts); + await showToast({ style: Toast.Style.Success, title: `Downloaded ${prompts.length} prompts` }); + } catch (err) { + await showToast({ style: Toast.Style.Failure, title: "Download failed", message: String(err) }); + } finally { + setIsLoading(false); + } + } + + useEffect(() => { + async function loadPrompts() { + const cached = await getCachedPrompts(); + setAllPrompts(cached); + setIsLoading(false); + } + loadPrompts(); + }, []); + + const categories = useMemo(() => { + const categoryMap = new Map(); + + for (const prompt of allPrompts) { + if (prompt.category) { + const existing = categoryMap.get(prompt.category.slug); + if (existing) { + existing.count++; + } else { + categoryMap.set(prompt.category.slug, { + name: prompt.category.name, + slug: prompt.category.slug, + count: 1, + }); + } + } + } + + return Array.from(categoryMap.values()).sort((a, b) => b.count - a.count); + }, [allPrompts]); + + const categoryPrompts = useMemo(() => { + if (!selectedCategory) return []; + + let result = allPrompts.filter((p) => p.category?.slug === selectedCategory); + + if (searchText.trim()) { + const query = searchText.toLowerCase(); + result = result.filter( + (p) => + p.title.toLowerCase().includes(query) || + (p.description && p.description.toLowerCase().includes(query)) || + p.author.username.toLowerCase().includes(query) + ); + } + + return result.sort((a, b) => b.voteCount - a.voteCount); + }, [allPrompts, selectedCategory, searchText]); + + if (allPrompts.length === 0 && !isLoading) { + return ( + + + + + } + /> + + ); + } + + if (selectedCategory) { + const categoryName = categories.find((c) => c.slug === selectedCategory)?.name || selectedCategory; + + return ( + + {categoryPrompts.length === 0 ? ( + + setSelectedCategory(null)} + /> + + } + /> + ) : ( + categoryPrompts.map((cached) => ( + setSelectedCategory(null)} + /> + )) + )} + + ); + } + + return ( + + {categories.length === 0 ? ( + + ) : ( + categories + .filter((c) => !searchText || c.name.toLowerCase().includes(searchText.toLowerCase())) + .map((category) => ( + + { + setSelectedCategory(category.slug); + setSearchText(""); + }} + /> + + } + /> + )) + )} + + ); +} + +function PromptListItem({ prompt, onBack }: { prompt: Prompt; onBack: () => void }) { + const promptUrl = getPromptUrl(prompt.author.username, prompt.slug); + + return ( + + + } + /> + + + + + { + await Clipboard.copy(promptUrl); + await showToast({ + style: Toast.Style.Success, + title: "URL copied to clipboard", + }); + }} + /> + + + } + shortcut={{ modifiers: ["cmd"], key: "d" }} + /> + + + + + + + } + /> + ); +} diff --git a/packages/raycast-extension/src/browse-prompts.tsx b/packages/raycast-extension/src/browse-prompts.tsx new file mode 100644 index 00000000..6a5f29a0 --- /dev/null +++ b/packages/raycast-extension/src/browse-prompts.tsx @@ -0,0 +1,212 @@ +import { + Action, + ActionPanel, + Icon, + List, + showToast, + Toast, + Clipboard, + openExtensionPreferences, +} from "@raycast/api"; +import { useState, useEffect, useMemo } from "react"; +import type { Prompt } from "./types"; +import { getPromptUrl } from "./api"; +import { RunPromptForm } from "./components/run-prompt"; +import { PromptDetailView } from "./components/prompt-detail"; +import { + getCachedPrompts, + convertToPrompt, + type CachedPrompt, +} from "./cache"; + +const TYPE_OPTIONS = [ + { title: "All Types", value: "" }, + { title: "Text", value: "TEXT" }, + { title: "Image", value: "IMAGE" }, + { title: "Video", value: "VIDEO" }, + { title: "Audio", value: "AUDIO" }, + { title: "Skill", value: "SKILL" }, +]; + +const SORT_OPTIONS = [ + { title: "Most Upvoted", value: "upvotes" }, + { title: "Most Recent", value: "recent" }, + { title: "By Author", value: "author" }, +]; + +export default function BrowsePrompts() { + const [searchText, setSearchText] = useState(""); + const [type, setType] = useState(""); + const [sort, setSort] = useState("upvotes"); + const [allPrompts, setAllPrompts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + + useEffect(() => { + async function loadPrompts() { + const cached = await getCachedPrompts(); + setAllPrompts(cached); + setIsLoading(false); + + if (cached.length === 0) { + showToast({ + style: Toast.Style.Animated, + title: "No prompts cached", + message: "Run 'Download All Prompts' first", + }); + } + } + loadPrompts(); + }, []); + + const filteredPrompts = useMemo(() => { + let result = [...allPrompts]; + + if (type) { + result = result.filter((p) => p.type === type); + } + + if (searchText.trim()) { + const query = searchText.toLowerCase(); + result = result.filter( + (p) => + p.title.toLowerCase().includes(query) || + (p.description && p.description.toLowerCase().includes(query)) || + p.author.username.toLowerCase().includes(query) || + (p.author.name && p.author.name.toLowerCase().includes(query)) || + p.tags.some((tag) => tag.toLowerCase().includes(query)) || + (p.category && p.category.name.toLowerCase().includes(query)) + ); + } + + // Sort + if (sort === "upvotes") { + result.sort((a, b) => b.voteCount - a.voteCount); + } else if (sort === "recent") { + // Keep original order (already sorted by newest from API) + } else if (sort === "author") { + result.sort((a, b) => a.author.username.localeCompare(b.author.username)); + } + + return result; + }, [allPrompts, type, searchText, sort]); + + return ( + { + if (value.startsWith("sort:")) { + setSort(value.replace("sort:", "")); + } else if (value.startsWith("type:")) { + setType(value.replace("type:", "")); + } + }} + > + + {SORT_OPTIONS.map((option) => ( + + ))} + + + {TYPE_OPTIONS.map((option) => ( + + ))} + + + } + > + {allPrompts.length === 0 ? ( + + ) : filteredPrompts.length === 0 ? ( + + ) : ( + filteredPrompts.map((cached) => ( + + )) + )} + + ); +} + +function PromptListItem({ prompt }: { prompt: Prompt }) { + const promptUrl = getPromptUrl(prompt.author.username, prompt.slug); + + return ( + + + } + /> + + + + + { + await Clipboard.copy(promptUrl); + await showToast({ + style: Toast.Style.Success, + title: "URL copied to clipboard", + }); + }} + /> + + + } + shortcut={{ modifiers: ["cmd"], key: "d" }} + /> + + + + + + } + /> + ); +} diff --git a/packages/raycast-extension/src/cache.ts b/packages/raycast-extension/src/cache.ts new file mode 100644 index 00000000..c197b35c --- /dev/null +++ b/packages/raycast-extension/src/cache.ts @@ -0,0 +1,158 @@ +import { LocalStorage } from "@raycast/api"; +import type { Prompt } from "./types"; +import { getWebsiteUrl } from "./api"; + +const PROMPTS_CACHE_KEY = "cached_prompts"; +const CACHE_TIMESTAMP_KEY = "cached_prompts_timestamp"; + +export interface CachedPrompt { + id: string; + title: string; + content: string; + description?: string; + type: string; + author: { + username: string; + name?: string; + }; + slug: string; + category?: { + name: string; + slug: string; + }; + tags: string[]; + voteCount: number; +} + +export async function getCachedPrompts(): Promise { + const cached = await LocalStorage.getItem(PROMPTS_CACHE_KEY); + if (!cached) return []; + try { + return JSON.parse(cached) as CachedPrompt[]; + } catch { + return []; + } +} + +export async function setCachedPrompts(prompts: CachedPrompt[]): Promise { + await LocalStorage.setItem(PROMPTS_CACHE_KEY, JSON.stringify(prompts)); + await LocalStorage.setItem(CACHE_TIMESTAMP_KEY, Date.now().toString()); +} + +export async function getCacheTimestamp(): Promise { + const timestamp = await LocalStorage.getItem(CACHE_TIMESTAMP_KEY); + return timestamp ? parseInt(timestamp, 10) : null; +} + +export async function clearCache(): Promise { + await LocalStorage.removeItem(PROMPTS_CACHE_KEY); + await LocalStorage.removeItem(CACHE_TIMESTAMP_KEY); +} + +interface PromptsJsonResponse { + count: number; + prompts: Array<{ + id: string; + title: string; + slug: string; + description: string | null; + content: string; + type: string; + voteCount: number; + category: { + id: string; + name: string; + slug: string; + } | null; + author: { + username: string; + name: string | null; + }; + tags: Array<{ + id: string; + name: string; + slug: string; + }>; + }>; +} + +export async function downloadAllPrompts(): Promise { + const url = `${getWebsiteUrl()}/prompts.json`; + const response = await fetch(url); + + if (!response.ok) { + throw new Error(`Failed to fetch prompts: ${response.statusText}`); + } + + const data = (await response.json()) as PromptsJsonResponse; + + const prompts: CachedPrompt[] = data.prompts.map((item) => ({ + id: item.id, + title: item.title, + content: item.content, + description: item.description || undefined, + type: item.type, + author: { + username: item.author.username, + name: item.author.name || undefined, + }, + slug: item.slug, + category: item.category + ? { name: item.category.name, slug: item.category.slug } + : undefined, + tags: item.tags.map((t) => t.name), + voteCount: item.voteCount, + })); + + await setCachedPrompts(prompts); + return prompts; +} + +export function searchPrompts(prompts: CachedPrompt[], query: string): CachedPrompt[] { + if (!query.trim()) return prompts; + + const lowerQuery = query.toLowerCase(); + return prompts.filter( + (p) => + p.title.toLowerCase().includes(lowerQuery) || + p.content.toLowerCase().includes(lowerQuery) || + (p.description && p.description.toLowerCase().includes(lowerQuery)) || + p.author.username.toLowerCase().includes(lowerQuery) || + (p.author.name && p.author.name.toLowerCase().includes(lowerQuery)) || + (p.category && p.category.name.toLowerCase().includes(lowerQuery)) || + p.tags.some((tag) => tag.toLowerCase().includes(lowerQuery)) + ); +} + +export function convertToPrompt(cached: CachedPrompt): Prompt { + return { + id: cached.id, + title: cached.title, + content: cached.content, + description: cached.description || null, + type: cached.type as Prompt["type"], + mediaUrl: null, + author: { + id: "local", + username: cached.author.username, + name: cached.author.name || null, + avatar: null, + verified: false, + }, + slug: cached.slug, + category: cached.category + ? { + id: "local", + name: cached.category.name, + slug: cached.category.slug, + parent: null, + } + : null, + tags: cached.tags.map((tag, i) => ({ + tag: { id: `tag-${i}`, name: tag, slug: tag.toLowerCase() }, + })), + voteCount: cached.voteCount, + createdAt: new Date().toISOString(), + updatedAt: new Date().toISOString(), + }; +} diff --git a/packages/raycast-extension/src/components/prompt-detail.tsx b/packages/raycast-extension/src/components/prompt-detail.tsx new file mode 100644 index 00000000..864c6061 --- /dev/null +++ b/packages/raycast-extension/src/components/prompt-detail.tsx @@ -0,0 +1,127 @@ +import { + Action, + ActionPanel, + Detail, + Icon, + showToast, + Toast, + Clipboard, +} from "@raycast/api"; +import type { Prompt } from "../types"; +import { getPromptUrl } from "../api"; +import { RunPromptForm } from "./run-prompt"; + +interface PromptDetailViewProps { + prompt: Prompt; + onRefresh?: () => void; +} + +export function PromptDetailView({ prompt, onRefresh }: PromptDetailViewProps) { + const promptUrl = getPromptUrl(prompt.author.username, prompt.slug); + + const markdown = `# ${prompt.title} + +${prompt.description ? `*${prompt.description}*\n\n---\n\n` : ""} + +## Prompt + +\`\`\` +${prompt.content} +\`\`\` + +--- + +**Author:** ${prompt.author.name || prompt.author.username} (@${prompt.author.username}) +**Type:** ${prompt.type} +**Votes:** ${prompt.voteCount} +${prompt.category ? `**Category:** ${prompt.category.name} \n` : ""} +${prompt.tags.length > 0 ? `**Tags:** ${prompt.tags.map((t) => t.tag.name).join(", ")}` : ""} +`; + + return ( + + + } + /> + + + + + { + await Clipboard.copy(promptUrl); + await showToast({ + style: Toast.Style.Success, + title: "URL copied to clipboard", + }); + }} + /> + + {onRefresh && ( + + + + )} + + } + metadata={ + + + + + + + + {prompt.category && ( + + )} + {prompt.tags.length > 0 && ( + + {prompt.tags.map((t) => ( + + ))} + + )} + + + + } + /> + ); +} diff --git a/packages/raycast-extension/src/components/run-prompt.tsx b/packages/raycast-extension/src/components/run-prompt.tsx new file mode 100644 index 00000000..a0eae9db --- /dev/null +++ b/packages/raycast-extension/src/components/run-prompt.tsx @@ -0,0 +1,244 @@ +import { + Action, + ActionPanel, + Form, + Icon, + List, + showToast, + Toast, + Clipboard, + open, + popToRoot, + useNavigation, +} from "@raycast/api"; +import { useState } from "react"; +import type { Prompt } from "../types"; +import { + extractVariables, + compilePrompt, + chatPlatforms, + codePlatforms, + imagePlatforms, + videoPlatforms, + buildUrl, + type Platform, +} from "../utils"; +import { getPromptUrl } from "../api"; + +interface RunPromptProps { + prompt: Prompt; +} + +export function RunPromptForm({ prompt }: RunPromptProps) { + const variables = extractVariables(prompt.content); + const [values, setValues] = useState>(() => { + const initial: Record = {}; + for (const v of variables) { + initial[v.name] = v.defaultValue; + } + return initial; + }); + const { push } = useNavigation(); + + const compiledContent = compilePrompt(prompt.content, values); + + function handleSubmit() { + push(); + } + + if (variables.length === 0) { + return ; + } + + return ( +
+ + + + } + > + + {prompt.description && ( + + )} + + {variables.map((variable) => ( + + setValues((prev) => ({ ...prev, [variable.name]: value })) + } + /> + ))} + + + + ); +} + +interface PlatformListProps { + prompt: Prompt; + content: string; +} + +function PlatformList({ prompt, content }: PlatformListProps) { + const promptUrl = getPromptUrl(prompt.author.username, prompt.slug); + + async function handleRun(platform: Platform) { + if (platform.supportsQuerystring) { + const url = buildUrl( + platform.id, + platform.baseUrl, + content, + prompt.title, + prompt.description || undefined, + ); + await open(url); + await showToast({ + style: Toast.Style.Success, + title: `Opening in ${platform.name}`, + }); + } else { + await Clipboard.copy(content); + await open(platform.baseUrl); + await showToast({ + style: Toast.Style.Success, + title: "Prompt copied!", + message: `Opening ${platform.name}... Paste with ⌘V`, + }); + } + await popToRoot(); + } + + const isImagePrompt = prompt.type === "IMAGE"; + const isVideoPrompt = prompt.type === "VIDEO"; + const mediaPlatforms = isImagePrompt + ? imagePlatforms + : isVideoPrompt + ? videoPlatforms + : []; + + return ( + + + {chatPlatforms.map((platform) => ( + + handleRun(platform)} + /> + + + + } + /> + ))} + + + {codePlatforms.map((platform) => ( + + handleRun(platform)} + /> + + + + } + /> + ))} + + {mediaPlatforms.length > 0 && ( + + {mediaPlatforms.map((platform) => ( + + handleRun(platform)} + /> + + + + } + /> + ))} + + )} + + ); +} diff --git a/packages/raycast-extension/src/download-prompts.tsx b/packages/raycast-extension/src/download-prompts.tsx new file mode 100644 index 00000000..b7a11fc2 --- /dev/null +++ b/packages/raycast-extension/src/download-prompts.tsx @@ -0,0 +1,127 @@ +import { Action, ActionPanel, Detail, Icon, showToast, Toast } from "@raycast/api"; +import { useState, useEffect } from "react"; +import { downloadAllPrompts, getCacheTimestamp, getCachedPrompts, clearCache } from "./cache"; + +export default function DownloadPrompts() { + const [isLoading, setIsLoading] = useState(false); + const [promptCount, setPromptCount] = useState(null); + const [lastUpdated, setLastUpdated] = useState(null); + const [error, setError] = useState(null); + + useEffect(() => { + loadCacheInfo(); + }, []); + + async function loadCacheInfo() { + const prompts = await getCachedPrompts(); + setPromptCount(prompts.length); + + const timestamp = await getCacheTimestamp(); + if (timestamp) { + setLastUpdated(new Date(timestamp)); + } + } + + async function handleDownload() { + setIsLoading(true); + setError(null); + + try { + await showToast({ + style: Toast.Style.Animated, + title: "Downloading prompts...", + }); + + const prompts = await downloadAllPrompts(); + + await showToast({ + style: Toast.Style.Success, + title: "Download complete!", + message: `${prompts.length} prompts cached`, + }); + + setPromptCount(prompts.length); + setLastUpdated(new Date()); + } catch (err) { + const message = err instanceof Error ? err.message : "Unknown error"; + setError(message); + await showToast({ + style: Toast.Style.Failure, + title: "Download failed", + message, + }); + } finally { + setIsLoading(false); + } + } + + async function handleClear() { + await clearCache(); + setPromptCount(0); + setLastUpdated(null); + await showToast({ + style: Toast.Style.Success, + title: "Cache cleared", + }); + } + + const markdown = `# Download Prompts + +Download all prompts from prompts.chat for offline access and faster searching. + +## Cache Status + +${promptCount !== null ? `**Cached Prompts:** ${promptCount}` : "**Cached Prompts:** Not loaded yet"} + +${lastUpdated ? `**Last Updated:** ${lastUpdated.toLocaleString()}` : "**Last Updated:** Never"} + +${error ? `\n\n## Error\n\n\`${error}\`` : ""} + +--- + +Press **Enter** to download all prompts. This will fetch the latest prompts from prompts.chat and cache them locally for offline use. +`; + + return ( + + + {promptCount && promptCount > 0 && ( + + )} + + } + metadata={ + + + + + + + } + /> + ); +} diff --git a/packages/raycast-extension/src/random-prompt.tsx b/packages/raycast-extension/src/random-prompt.tsx new file mode 100644 index 00000000..ad6bd481 --- /dev/null +++ b/packages/raycast-extension/src/random-prompt.tsx @@ -0,0 +1,65 @@ +import { Action, ActionPanel, Detail, Icon, showToast, Toast } from "@raycast/api"; +import { useState, useEffect, useCallback } from "react"; +import type { Prompt } from "./types"; +import { PromptDetailView } from "./components/prompt-detail"; +import { getCachedPrompts, convertToPrompt, type CachedPrompt } from "./cache"; + +export default function RandomPrompt() { + const [allPrompts, setAllPrompts] = useState([]); + const [randomPrompt, setRandomPrompt] = useState(null); + const [isLoading, setIsLoading] = useState(true); + + const pickRandom = useCallback((prompts: CachedPrompt[]) => { + if (prompts.length === 0) return null; + const randomIndex = Math.floor(Math.random() * prompts.length); + return convertToPrompt(prompts[randomIndex]); + }, []); + + useEffect(() => { + async function loadPrompts() { + const cached = await getCachedPrompts(); + setAllPrompts(cached); + setRandomPrompt(pickRandom(cached)); + setIsLoading(false); + + if (cached.length === 0) { + showToast({ + style: Toast.Style.Animated, + title: "No prompts cached", + message: "Run 'Download All Prompts' first", + }); + } + } + loadPrompts(); + }, [pickRandom]); + + function handleRefresh() { + setRandomPrompt(pickRandom(allPrompts)); + } + + if (isLoading) { + return ; + } + + if (allPrompts.length === 0) { + return ( + + + + } + /> + ); + } + + if (!randomPrompt) { + return ; + } + + return ; +} diff --git a/packages/raycast-extension/src/search-prompts.tsx b/packages/raycast-extension/src/search-prompts.tsx new file mode 100644 index 00000000..e70957e1 --- /dev/null +++ b/packages/raycast-extension/src/search-prompts.tsx @@ -0,0 +1,158 @@ +import { + Action, + ActionPanel, + Icon, + List, + showToast, + Toast, + Clipboard, + openExtensionPreferences, +} from "@raycast/api"; +import { useState, useEffect } from "react"; +import type { Prompt } from "./types"; +import { getPromptUrl } from "./api"; +import { RunPromptForm } from "./components/run-prompt"; +import { PromptDetailView } from "./components/prompt-detail"; +import { + getCachedPrompts, + searchPrompts, + convertToPrompt, + downloadAllPrompts, + type CachedPrompt, +} from "./cache"; + +export default function SearchPrompts() { + const [searchText, setSearchText] = useState(""); + const [allPrompts, setAllPrompts] = useState([]); + const [isLoading, setIsLoading] = useState(true); + + async function handleDownload() { + setIsLoading(true); + try { + await showToast({ style: Toast.Style.Animated, title: "Downloading prompts..." }); + const prompts = await downloadAllPrompts(); + setAllPrompts(prompts); + await showToast({ style: Toast.Style.Success, title: `Downloaded ${prompts.length} prompts` }); + } catch (err) { + await showToast({ style: Toast.Style.Failure, title: "Download failed", message: String(err) }); + } finally { + setIsLoading(false); + } + } + + useEffect(() => { + async function loadPrompts() { + const cached = await getCachedPrompts(); + setAllPrompts(cached); + setIsLoading(false); + } + loadPrompts(); + }, []); + + const filteredPrompts = searchPrompts(allPrompts, searchText); + + return ( + + {allPrompts.length === 0 ? ( + + + + } + /> + ) : searchText.length < 2 ? ( + + ) : filteredPrompts.length === 0 ? ( + + ) : ( + filteredPrompts.map((cached) => ( + + )) + )} + + ); +} + +function PromptListItem({ prompt }: { prompt: Prompt }) { + const promptUrl = getPromptUrl(prompt.author.username, prompt.slug); + + return ( + + + } + /> + + + + + { + await Clipboard.copy(promptUrl); + await showToast({ + style: Toast.Style.Success, + title: "URL copied to clipboard", + }); + }} + /> + + + } + shortcut={{ modifiers: ["cmd"], key: "d" }} + /> + + + + + + } + /> + ); +} diff --git a/packages/raycast-extension/src/types.ts b/packages/raycast-extension/src/types.ts new file mode 100644 index 00000000..3a4f9aff --- /dev/null +++ b/packages/raycast-extension/src/types.ts @@ -0,0 +1,69 @@ +export interface Author { + id: string; + name: string | null; + username: string; + avatar: string | null; + verified: boolean; +} + +export interface Category { + id: string; + name: string; + slug: string; + parent?: { + id: string; + name: string; + slug: string; + } | null; +} + +export interface Tag { + id: string; + name: string; + slug: string; +} + +export interface PromptTag { + tag: Tag; +} + +export interface Prompt { + id: string; + title: string; + slug: string; + description: string | null; + content: string; + type: "TEXT" | "IMAGE" | "VIDEO" | "AUDIO" | "SKILL"; + mediaUrl: string | null; + createdAt: string; + updatedAt: string; + author: Author; + category: Category | null; + tags: PromptTag[]; + voteCount: number; + viewCount?: number; + isFeatured?: boolean; +} + +export interface PromptsResponse { + prompts: Prompt[]; + total: number; + page: number; + perPage: number; + totalPages: number; +} + +export interface SearchPromptsResponse { + prompts: { + id: string; + title: string; + slug: string; + author: { + username: string; + }; + }[]; +} + +export interface Preferences { + baseUrl: string; +} diff --git a/packages/raycast-extension/src/utils.ts b/packages/raycast-extension/src/utils.ts new file mode 100644 index 00000000..abf1abfe --- /dev/null +++ b/packages/raycast-extension/src/utils.ts @@ -0,0 +1,320 @@ +export interface Variable { + name: string; + defaultValue: string; +} + +/** + * Extract variables from prompt content in ${variableName} or ${variableName:default} format + */ +export function extractVariables(content: string): Variable[] { + const regex = /\$\{([^}:]+)(?::([^}]*))?\}/g; + const variables: Variable[] = []; + const seen = new Set(); + + let match; + while ((match = regex.exec(content)) !== null) { + const name = match[1].trim(); + const defaultValue = match[2]?.trim() || ""; + + if (!seen.has(name)) { + seen.add(name); + variables.push({ name, defaultValue }); + } + } + + return variables; +} + +/** + * Compile a prompt template with variable values + */ +export function compilePrompt( + template: string, + values: Record, +): string { + return template.replace( + /\$\{([^}:]+)(?::([^}]*))?\}/g, + (match, name, defaultValue) => { + const trimmedName = name.trim(); + return values[trimmedName] ?? defaultValue?.trim() ?? match; + }, + ); +} + +export interface Platform { + id: string; + name: string; + baseUrl: string; + supportsQuerystring: boolean; + isDeeplink?: boolean; +} + +// Chat platforms (AI assistants) +export const chatPlatforms: Platform[] = [ + { + id: "chatgpt", + name: "ChatGPT", + baseUrl: "https://chatgpt.com", + supportsQuerystring: true, + }, + { + id: "claude", + name: "Claude", + baseUrl: "https://claude.ai/new", + supportsQuerystring: true, + }, + { + id: "copilot", + name: "Microsoft Copilot", + baseUrl: "https://copilot.microsoft.com", + supportsQuerystring: false, + }, + { + id: "deepseek", + name: "DeepSeek", + baseUrl: "https://chat.deepseek.com", + supportsQuerystring: false, + }, + { + id: "fal", + name: "fal.ai Sandbox", + baseUrl: "https://fal.ai/sandbox", + supportsQuerystring: true, + }, + { + id: "gemini", + name: "Gemini", + baseUrl: "https://gemini.google.com/app", + supportsQuerystring: false, + }, + { + id: "goose-chat", + name: "Goose", + baseUrl: "goose://recipe", + supportsQuerystring: true, + isDeeplink: true, + }, + { + id: "grok", + name: "Grok", + baseUrl: "https://grok.com/chat?reasoningMode=none", + supportsQuerystring: true, + }, + { + id: "huggingface", + name: "HuggingChat", + baseUrl: "https://huggingface.co/chat", + supportsQuerystring: true, + }, + { + id: "llama", + name: "Meta AI", + baseUrl: "https://www.meta.ai", + supportsQuerystring: false, + }, + { + id: "manus", + name: "Manus", + baseUrl: "https://manus.im/app", + supportsQuerystring: false, + }, + { + id: "mistral", + name: "Le Chat", + baseUrl: "https://chat.mistral.ai/chat", + supportsQuerystring: true, + }, + { + id: "perplexity", + name: "Perplexity", + baseUrl: "https://www.perplexity.ai", + supportsQuerystring: true, + }, + { + id: "phind", + name: "Phind", + baseUrl: "https://www.phind.com", + supportsQuerystring: true, + }, + { + id: "pi", + name: "Pi", + baseUrl: "https://pi.ai", + supportsQuerystring: false, + }, + { + id: "poe", + name: "Poe", + baseUrl: "https://poe.com", + supportsQuerystring: false, + }, + { + id: "you", + name: "You.com", + baseUrl: "https://you.com", + supportsQuerystring: true, + }, +]; + +// Code platforms (IDEs + code generation tools) +export const codePlatforms: Platform[] = [ + { + id: "windsurf", + name: "Windsurf", + baseUrl: "windsurf://", + supportsQuerystring: false, + isDeeplink: true, + }, + { + id: "cursor", + name: "Cursor", + baseUrl: "cursor://anysphere.cursor-deeplink/prompt", + supportsQuerystring: true, + isDeeplink: true, + }, + { + id: "vscode", + name: "VS Code", + baseUrl: "vscode://", + supportsQuerystring: false, + isDeeplink: true, + }, + { + id: "vscode-insiders", + name: "VS Code Insiders", + baseUrl: "vscode-insiders://", + supportsQuerystring: false, + isDeeplink: true, + }, + { + id: "goose", + name: "Goose", + baseUrl: "goose://recipe", + supportsQuerystring: true, + isDeeplink: true, + }, + { + id: "github-copilot", + name: "GitHub Copilot", + baseUrl: "https://github.com/copilot", + supportsQuerystring: true, + }, + { + id: "bolt", + name: "Bolt", + baseUrl: "https://bolt.new", + supportsQuerystring: true, + }, + { + id: "lovable", + name: "Lovable", + baseUrl: "https://lovable.dev", + supportsQuerystring: true, + }, + { + id: "v0", + name: "v0", + baseUrl: "https://v0.dev/chat", + supportsQuerystring: true, + }, + { + id: "ai2sql", + name: "AI2SQL", + baseUrl: "https://builder.ai2sql.io/dashboard/builder-all-lp?tab=generate", + supportsQuerystring: true, + }, +]; + +// Image generation platforms +export const imagePlatforms: Platform[] = [ + { + id: "mitte-image", + name: "Mitte.ai (Image)", + baseUrl: "https://mitte.ai", + supportsQuerystring: true, + }, +]; + +// Video generation platforms +export const videoPlatforms: Platform[] = [ + { + id: "mitte-video", + name: "Mitte.ai (Video)", + baseUrl: "https://mitte.ai", + supportsQuerystring: true, + }, +]; + +export function buildUrl( + platformId: string, + baseUrl: string, + promptText: string, + promptTitle?: string, + promptDescription?: string, +): string { + const encoded = encodeURIComponent(promptText); + + switch (platformId) { + // IDE deeplinks + case "cursor": + return `${baseUrl}?text=${encoded}`; + case "goose": + case "goose-chat": { + const config = JSON.stringify({ + version: "1.0.0", + title: promptTitle || "Prompt", + description: promptDescription || "", + instructions: + "This is a prompt imported from prompts.chat. Follow the instructions below to complete the task.", + prompt: promptText, + activities: [ + "message:This prompt was imported from prompts.chat. Follow the instructions below to complete the task.", + "Do it now", + "Learn more about the instructions", + ], + }); + const base64Config = Buffer.from(config).toString("base64"); + return `${baseUrl}?config=${base64Config}`; + } + // Web platforms + case "ai2sql": + return `${baseUrl}&prompt=${encoded}`; + case "bolt": + return `${baseUrl}?prompt=${encoded}`; + case "chatgpt": + return `${baseUrl}/?q=${encoded}`; + case "claude": + return `${baseUrl}?q=${encoded}`; + case "copilot": + return `${baseUrl}/?q=${encoded}`; + case "deepseek": + return `${baseUrl}/?q=${encoded}`; + case "github-copilot": + return `${baseUrl}?prompt=${encoded}`; + case "grok": + return `${baseUrl}&q=${encoded}`; + case "fal": + return `${baseUrl}?prompt=${encoded}`; + case "huggingface": + return `${baseUrl}/?prompt=${encoded}`; + case "lovable": + return `${baseUrl}/?autosubmit=true#prompt=${encoded}`; + case "mistral": + return `${baseUrl}?q=${encoded}`; + case "perplexity": + return `${baseUrl}/search?q=${encoded}`; + case "phind": + return `${baseUrl}/search?q=${encoded}`; + case "poe": + return `${baseUrl}/?q=${encoded}`; + case "v0": + return `${baseUrl}?q=${encoded}`; + case "you": + return `${baseUrl}/search?q=${encoded}`; + case "mitte-image": + case "mitte-video": + return `${baseUrl}?prompt=${encoded}`; + default: + return `${baseUrl}?q=${encoded}`; + } +} diff --git a/packages/raycast-extension/tsconfig.json b/packages/raycast-extension/tsconfig.json new file mode 100644 index 00000000..827eec95 --- /dev/null +++ b/packages/raycast-extension/tsconfig.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Raycast Extension", + "compilerOptions": { + "strict": true, + "lib": ["ES2022"], + "module": "Node16", + "target": "ES2022", + "moduleResolution": "Node16", + "resolveJsonModule": true, + "esModuleInterop": true, + "skipLibCheck": true, + "jsx": "react-jsx", + "outDir": "dist" + }, + "include": ["src/**/*"] +}