mirror of
https://github.com/aljazceru/goose.git
synced 2025-12-17 14:14:26 +01:00
Update Recipe Cookbook Submission Flow (#3064)
Co-authored-by: angiejones <jones.angie@gmail.com>
This commit is contained in:
114
.github/ISSUE_TEMPLATE/submit-recipe.yml
vendored
114
.github/ISSUE_TEMPLATE/submit-recipe.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
name: 🧑🍳 Submit a Recipe to the Goose Cookbook
|
name: 🧑🍳 Submit a Recipe to the Goose Cookbook
|
||||||
description: Share a reusable Goose session (aka a recipe) to help the community!
|
description: Share a reusable Goose recipe with the community!
|
||||||
title: "[Recipe] <your recipe title here>"
|
title: "[Recipe] <your recipe title here>"
|
||||||
labels: ["recipe submission"]
|
labels: ["recipe submission"]
|
||||||
body:
|
body:
|
||||||
@@ -7,52 +7,104 @@ body:
|
|||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
Thanks for contributing to the Goose Cookbook! 🍳
|
Thanks for contributing to the Goose Cookbook! 🍳
|
||||||
Recipes are reusable sessions created in Goose Desktop or CLI and shared with the community to help others vibe-code faster.
|
Recipes are reusable sessions created in Goose Desktop or CLI and shared with the community to help others vibe code faster.
|
||||||
|
|
||||||
📌 **How to Submit**
|
📌 **How to Submit**
|
||||||
- Create your recipe using Goose ("Make Agent from this session")
|
- Create your recipe using Goose ("Make Agent from this session")
|
||||||
- Fill out the JSON below using the format provided
|
- Fill out the YAML below using the format provided
|
||||||
- Paste it into the field and submit the issue — we'll review and add it to the Cookbook!
|
- Paste it into the field and submit the issue — we'll review and add it to the Cookbook!
|
||||||
|
|
||||||
🪄 **What Happens After?**
|
🪄 **What Happens After?**
|
||||||
- If accepted, we'll publish your recipe to the [Goose Recipes Cookbook](https://block.github.io/goose/recipes)
|
- If accepted, we'll publish your recipe to the [Goose Recipes Cookbook](https://block.github.io/goose/recipes)
|
||||||
- You'll receive LLM credits as a thank-you!
|
- You'll receive OpenRouter **LLM API credits** as a thank you!
|
||||||
- Your GitHub handle will be displayed and linked on the recipe card
|
- Your GitHub handle will be displayed and linked on the recipe card
|
||||||
|
- If you provide an email below, we'll email you your credits when your recipe is approved and merged.
|
||||||
|
- If the YAML has any issues, Goose will comment with validation errors so you can fix and resubmit.
|
||||||
|
|
||||||
|
🧪 **Pro Tip:** You can test your recipe locally in your terminal with:
|
||||||
|
`goose recipe validate your-recipe.yaml`
|
||||||
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
id: recipe-json
|
id: recipe-yaml
|
||||||
attributes:
|
attributes:
|
||||||
label: Paste Your Recipe JSON Below
|
label: Paste Your Full Recipe YAML Below
|
||||||
description: Use the structure below and be sure to include your GitHub handle.
|
description: Use the structure below and we’ll auto-fill your GitHub handle for `author.contact` after submission.
|
||||||
placeholder: |
|
placeholder: |
|
||||||
{
|
version: "1.0.0"
|
||||||
"id": "joke-of-the-day",
|
id: clean-up-feature-flag
|
||||||
"title": "Joke of the day",
|
title: Clean Up Feature Flag
|
||||||
"description": "Will tell you a joke of the day based on the current day",
|
description: Automatically clean up all references of a fully rolled out feature flag from a codebase and make the new behavior the default.
|
||||||
"instructions": "Your job is to tell a joke of the day",
|
instructions: |
|
||||||
"prompt": "Based on what day it is today, generate a joke. Mention the day on the first line then an empty line and then the joke. Don't just say the date, but figure out if there's any cultural significance, like national shelves day",
|
Your job is to systematically remove a fully rolled out feature flag and ensure the new behavior is now the default. Use code search tools like ripgrep to identify all references to the flag, clean up definition files, usage sites, tests, and configuration files. Then create a commit and push changes with clear commit messages documenting the flag removal.
|
||||||
"action": "Generate Joke",
|
prompt: |
|
||||||
"category": "Entertainment",
|
Task: Remove a feature flag that has been fully rolled out, where the feature flag's functionality should become the default behavior.
|
||||||
"extensions": ["Developer"],
|
|
||||||
"activities": ["Tell a joke", "Daily humor"],
|
Context:
|
||||||
"recipeUrl": "goose://recipe?config=...",
|
Feature flag key: {{ feature_flag_key }}
|
||||||
"author": "your-github-handle"
|
Project: {{ repo_dir }}
|
||||||
}
|
|
||||||
|
Steps to follow:
|
||||||
|
1. Check out a *new* branch from main or master named using the feature flag key.
|
||||||
|
2. Find the feature flag constant/object that wraps the key.
|
||||||
|
3. Search for all references to the constant/object using ripgrep or equivalent tools.
|
||||||
|
4. Remove all conditional logic and make the new behavior default.
|
||||||
|
5. Remove unused imports, mocks, config, and tests.
|
||||||
|
6. Commit your changes and push the branch.
|
||||||
|
7. Open a GitHub PR.
|
||||||
|
|
||||||
|
Use commit messages like:
|
||||||
|
chore(flag-cleanup): remove <feature_flag_key> flag from codebase
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
- key: feature_flag_key
|
||||||
|
input_type: string
|
||||||
|
requirement: required
|
||||||
|
description: Key of the feature flag
|
||||||
|
|
||||||
|
- key: repo_dir
|
||||||
|
input_type: string
|
||||||
|
requirement: optional
|
||||||
|
default: ./
|
||||||
|
description: Directory of the codebase
|
||||||
|
|
||||||
|
extensions:
|
||||||
|
- type: stdio
|
||||||
|
name: developer
|
||||||
|
cmd: uvx
|
||||||
|
args:
|
||||||
|
- developer-mcp@latest
|
||||||
|
timeout: 300
|
||||||
|
bundled: true
|
||||||
|
description: Access developer tools
|
||||||
|
|
||||||
|
activities:
|
||||||
|
- Remove feature flag definitions
|
||||||
|
- Clean up feature flag usage sites
|
||||||
|
- Update affected tests
|
||||||
|
- Remove flag configurations
|
||||||
|
- Document flag removal
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
|
|
||||||
|
- type: input
|
||||||
|
id: email
|
||||||
|
attributes:
|
||||||
|
label: Your Email (optional)
|
||||||
|
description: If your recipe is approved, we'll email your LLM API credits here.
|
||||||
|
placeholder: yourname@example.com
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: |
|
||||||
🛠 **Recipe Field Tips**
|
🛠 **Recipe Field Tips**
|
||||||
- `"id"` should be lowercase, hyphenated, and unique (e.g. `my-awesome-recipe`)
|
- `version` must be "1.0.0" for now
|
||||||
- `"title"` is the display name of your recipe
|
- `id` should be lowercase, hyphenated, and unique (e.g. `my-awesome-recipe`)
|
||||||
- `"description"` should clearly explain what the recipe does
|
- `title` is the display name of your recipe
|
||||||
- `"instructions"` are the specific instructions for the Goose agent
|
- `description` should clearly explain what the recipe does
|
||||||
- `"prompt"` is the initial prompt that starts the recipe when launched
|
- `instructions` are specific steps Goose should follow — supports template variables like `{{ variable_name }}`
|
||||||
- `"action"` describes the core purpose of the recipe (e.g., `Generate Docs`)
|
- `prompt` is the first thing Goose sees when the recipe is launched
|
||||||
- `"category"` is the type of user this recipe is for (e.g., `Developer`, `Entertainment`)
|
- `parameters` should include required or optional inputs — optional ones must have `default`
|
||||||
- `"extensions"` are the Goose tools this recipe uses
|
- `extensions` must follow the full format with `type`, `cmd`, `args`, `timeout`, etc.
|
||||||
- `"activities"` are the main steps or capabilities of your recipe
|
- `activities` describe the main actions the recipe performs
|
||||||
- `"recipeUrl"` is from Goose Desktop/CLI
|
|
||||||
- `"author"` is your GitHub handle — we'll link to your profile in the Cookbook
|
|
||||||
|
|||||||
136
.github/workflows/create-recipe-pr.yml
vendored
Normal file
136
.github/workflows/create-recipe-pr.yml
vendored
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
name: Handle Recipe Submissions
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened, labeled]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-recipe-pr:
|
||||||
|
if: github.event.label.name == 'recipe submission' || github.event.issue.labels.*.name contains 'recipe submission'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
env:
|
||||||
|
PROVIDER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repo
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set up Node.js
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: '20'
|
||||||
|
|
||||||
|
- name: Install and Configure Goose
|
||||||
|
run: |
|
||||||
|
mkdir -p /home/runner/.local/bin
|
||||||
|
curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh \
|
||||||
|
| CONFIGURE=false INSTALL_PATH=/home/runner/.local/bin bash
|
||||||
|
echo "/home/runner/.local/bin" >> $GITHUB_PATH
|
||||||
|
|
||||||
|
mkdir -p ~/.config/goose
|
||||||
|
cat <<EOF > ~/.config/goose/config.yaml
|
||||||
|
GOOSE_PROVIDER: openrouter
|
||||||
|
GOOSE_MODEL: "anthropic/claude-3.5-sonnet"
|
||||||
|
keyring: false
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: Extract recipe YAML from issue
|
||||||
|
id: parse
|
||||||
|
run: |
|
||||||
|
ISSUE_BODY=$(jq -r .issue.body "$GITHUB_EVENT_PATH")
|
||||||
|
RECIPE_YAML=$(echo "$ISSUE_BODY" | awk '/```/,/```/' | sed '1d;$d')
|
||||||
|
echo "$RECIPE_YAML" > recipe.yaml
|
||||||
|
|
||||||
|
AUTHOR="${{ github.event.issue.user.login }}"
|
||||||
|
if ! grep -q "^author:" recipe.yaml; then
|
||||||
|
echo -e "\nauthor:\n contact: $AUTHOR" >> recipe.yaml
|
||||||
|
fi
|
||||||
|
|
||||||
|
TITLE=$(yq '.title' recipe.yaml | tr '[:upper:]' '[:lower:]' | tr -cs 'a-z0-9' '-')
|
||||||
|
echo "branch_name=add-recipe-${TITLE}" >> $GITHUB_OUTPUT
|
||||||
|
echo "recipe_title=${TITLE}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Validate recipe.yaml with Goose
|
||||||
|
id: validate
|
||||||
|
continue-on-error: true
|
||||||
|
run: |
|
||||||
|
OUTPUT=$(goose recipe validate recipe.yaml 2>&1)
|
||||||
|
echo "$OUTPUT"
|
||||||
|
{
|
||||||
|
echo "validation_output<<EOF"
|
||||||
|
echo "$OUTPUT"
|
||||||
|
echo "EOF"
|
||||||
|
} >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
|
- name: Post validation result to issue
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
|
VALIDATION_B64: ${{ steps.validate.outputs.validation_output }}
|
||||||
|
run: |
|
||||||
|
if [ "${{ steps.validate.outcome }}" == "failure" ]; then
|
||||||
|
OUTPUT=$(echo "$VALIDATION_B64" | base64 --decode)
|
||||||
|
COMMENT="❌ Recipe validation failed:\n\n\`\`\`\n$OUTPUT\n\`\`\`\nPlease fix the above issues and resubmit."
|
||||||
|
echo -e "$COMMENT" | gh issue comment "$ISSUE_NUMBER"
|
||||||
|
gh issue close "$ISSUE_NUMBER"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
gh issue comment "$ISSUE_NUMBER" --body "✅ Recipe validated successfully!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
- name: Generate recipeUrl and save updated recipe
|
||||||
|
run: |
|
||||||
|
BASE64_ENCODED=$(cat recipe.yaml | base64 | tr -d '\n')
|
||||||
|
echo "" >> recipe.yaml
|
||||||
|
echo "recipeUrl: goose://recipe?config=${BASE64_ENCODED}" >> recipe.yaml
|
||||||
|
|
||||||
|
- name: Create branch and add file
|
||||||
|
env:
|
||||||
|
BRANCH_NAME: ${{ steps.parse.outputs.branch_name }}
|
||||||
|
run: |
|
||||||
|
git checkout -b "$BRANCH_NAME"
|
||||||
|
DEST_DIR="documentation/src/pages/recipes/data/recipes"
|
||||||
|
mkdir -p "$DEST_DIR"
|
||||||
|
ID=$(yq '.id' recipe.yaml)
|
||||||
|
|
||||||
|
if [ -f "$DEST_DIR/${ID}.yaml" ]; then
|
||||||
|
echo "❌ Recipe with ID '$ID' already exists. Aborting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
cp recipe.yaml "$DEST_DIR/${ID}.yaml"
|
||||||
|
|
||||||
|
git config user.name "github-actions[bot]"
|
||||||
|
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||||||
|
git add "$DEST_DIR/${ID}.yaml"
|
||||||
|
git commit -m "Add recipe: ${ID}"
|
||||||
|
git push origin "$BRANCH_NAME"
|
||||||
|
|
||||||
|
- name: Create pull request
|
||||||
|
id: cpr
|
||||||
|
uses: peter-evans/create-pull-request@5e5b2916f4b4c9420e5e9b0dc4a6d292d30165d7
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
branch: ${{ steps.parse.outputs.branch_name }}
|
||||||
|
title: "Add recipe: ${{ steps.parse.outputs.recipe_title }}"
|
||||||
|
body: "This PR adds a new Goose recipe submitted via issue #${{ github.event.issue.number }}."
|
||||||
|
reviewers: |
|
||||||
|
EbonyLouis
|
||||||
|
angiejones
|
||||||
|
blackgirlbytes
|
||||||
|
|
||||||
|
- name: Comment and close issue
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
ISSUE_NUMBER: ${{ github.event.issue.number }}
|
||||||
|
PR_URL: ${{ steps.cpr.outputs.pull-request-url }}
|
||||||
|
run: |
|
||||||
|
gh issue comment "$ISSUE_NUMBER" --body "🎉 Thanks for submitting your recipe! We've created a [PR]($PR_URL) to add it to the Cookbook."
|
||||||
|
gh issue close "$ISSUE_NUMBER"
|
||||||
@@ -69,6 +69,7 @@ const config: Config = {
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
plugins: [
|
plugins: [
|
||||||
|
require.resolve("./plugins/custom-webpack.cjs"),
|
||||||
[
|
[
|
||||||
"@docusaurus/plugin-client-redirects",
|
"@docusaurus/plugin-client-redirects",
|
||||||
{
|
{
|
||||||
@@ -422,4 +423,5 @@ const config: Config = {
|
|||||||
} satisfies Preset.ThemeConfig,
|
} satisfies Preset.ThemeConfig,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
53
documentation/package-lock.json
generated
53
documentation/package-lock.json
generated
@@ -23,6 +23,7 @@
|
|||||||
"prism-react-renderer": "^2.3.0",
|
"prism-react-renderer": "^2.3.0",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "^19.0.0",
|
||||||
|
"react-hot-toast": "^2.5.2",
|
||||||
"react-markdown": "^10.1.0",
|
"react-markdown": "^10.1.0",
|
||||||
"swiper": "^11.2.6",
|
"swiper": "^11.2.6",
|
||||||
"tailwind-merge": "^3.0.2",
|
"tailwind-merge": "^3.0.2",
|
||||||
@@ -32,7 +33,9 @@
|
|||||||
"@docusaurus/module-type-aliases": "3.7.0",
|
"@docusaurus/module-type-aliases": "3.7.0",
|
||||||
"@docusaurus/tsconfig": "3.7.0",
|
"@docusaurus/tsconfig": "3.7.0",
|
||||||
"@docusaurus/types": "3.7.0",
|
"@docusaurus/types": "3.7.0",
|
||||||
"typescript": "~5.6.2"
|
"js-yaml": "^4.1.0",
|
||||||
|
"typescript": "~5.6.2",
|
||||||
|
"yaml-loader": "^0.8.1"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0"
|
"node": ">=18.0"
|
||||||
@@ -8677,6 +8680,15 @@
|
|||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/goober": {
|
||||||
|
"version": "2.1.16",
|
||||||
|
"resolved": "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz",
|
||||||
|
"integrity": "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"csstype": "^3.0.10"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/gopd": {
|
"node_modules/gopd": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
||||||
@@ -9850,6 +9862,13 @@
|
|||||||
"@pkgjs/parseargs": "^0.11.0"
|
"@pkgjs/parseargs": "^0.11.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/javascript-stringify": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/jest-util": {
|
"node_modules/jest-util": {
|
||||||
"version": "29.7.0",
|
"version": "29.7.0",
|
||||||
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz",
|
||||||
@@ -15388,6 +15407,23 @@
|
|||||||
"react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
"react-dom": "^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/react-hot-toast": {
|
||||||
|
"version": "2.5.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.5.2.tgz",
|
||||||
|
"integrity": "sha512-Tun3BbCxzmXXM7C+NI4qiv6lT0uwGh4oAfeJyNOjYUejTsm35mK9iCaYLGv8cBz9L5YxZLx/2ii7zsIwPtPUdw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"csstype": "^3.1.3",
|
||||||
|
"goober": "^2.1.16"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"react": ">=16",
|
||||||
|
"react-dom": ">=16"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/react-is": {
|
"node_modules/react-is": {
|
||||||
"version": "16.13.1",
|
"version": "16.13.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||||
@@ -18683,6 +18719,21 @@
|
|||||||
"node": ">= 14"
|
"node": ">= 14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/yaml-loader": {
|
||||||
|
"version": "0.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.8.1.tgz",
|
||||||
|
"integrity": "sha512-BCEndnUoi3BaZmePkwGGe93txRxLgMhBa/gE725v1/GHnura8QvNs7c4+4C1yyhhKoj3Dg63M7IqhA++15j6ww==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"javascript-stringify": "^2.0.1",
|
||||||
|
"loader-utils": "^2.0.0",
|
||||||
|
"yaml": "^2.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/yocto-queue": {
|
"node_modules/yocto-queue": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
|
||||||
|
|||||||
@@ -31,16 +31,19 @@
|
|||||||
"prism-react-renderer": "^2.3.0",
|
"prism-react-renderer": "^2.3.0",
|
||||||
"react": "^19.0.0",
|
"react": "^19.0.0",
|
||||||
"react-dom": "^19.0.0",
|
"react-dom": "^19.0.0",
|
||||||
|
"react-hot-toast": "^2.5.2",
|
||||||
"react-markdown": "^10.1.0",
|
"react-markdown": "^10.1.0",
|
||||||
|
"swiper": "^11.2.6",
|
||||||
"tailwind-merge": "^3.0.2",
|
"tailwind-merge": "^3.0.2",
|
||||||
"tailwindcss": "^3.4.1",
|
"tailwindcss": "^3.4.1"
|
||||||
"swiper": "^11.2.6"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@docusaurus/module-type-aliases": "3.7.0",
|
"@docusaurus/module-type-aliases": "3.7.0",
|
||||||
"@docusaurus/tsconfig": "3.7.0",
|
"@docusaurus/tsconfig": "3.7.0",
|
||||||
"@docusaurus/types": "3.7.0",
|
"@docusaurus/types": "3.7.0",
|
||||||
"typescript": "~5.6.2"
|
"js-yaml": "^4.1.0",
|
||||||
|
"typescript": "~5.6.2",
|
||||||
|
"yaml-loader": "^0.8.1"
|
||||||
},
|
},
|
||||||
"browserslist": {
|
"browserslist": {
|
||||||
"production": [
|
"production": [
|
||||||
|
|||||||
18
documentation/plugins/custom-webpack.cjs
Normal file
18
documentation/plugins/custom-webpack.cjs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
module.exports = function () {
|
||||||
|
return {
|
||||||
|
name: 'custom-yaml-loader',
|
||||||
|
configureWebpack() {
|
||||||
|
return {
|
||||||
|
module: {
|
||||||
|
rules: [
|
||||||
|
{
|
||||||
|
test: /\.ya?ml$/,
|
||||||
|
use: 'yaml-loader',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
import React from "react";
|
// Full updated RecipeCard.tsx
|
||||||
|
import React, { useState } from "react";
|
||||||
|
import toast from "react-hot-toast";
|
||||||
import Link from "@docusaurus/Link";
|
import Link from "@docusaurus/Link";
|
||||||
|
|
||||||
export type Recipe = {
|
export type Recipe = {
|
||||||
@@ -9,24 +11,53 @@ export type Recipe = {
|
|||||||
activities: string[];
|
activities: string[];
|
||||||
recipeUrl: string;
|
recipeUrl: string;
|
||||||
action?: string;
|
action?: string;
|
||||||
author?: string;
|
author?: {
|
||||||
|
contact?: string;
|
||||||
|
};
|
||||||
persona?: string;
|
persona?: string;
|
||||||
|
parameters?: { key: string; requirement: string; value?: string }[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export function RecipeCard({ recipe }: { recipe: Recipe }) {
|
export function RecipeCard({ recipe }: { recipe: Recipe }) {
|
||||||
|
const authorHandle = recipe.author?.contact || null;
|
||||||
|
const [showParamPrompt, setShowParamPrompt] = useState(false);
|
||||||
|
const [paramValues, setParamValues] = useState<Record<string, string>>({});
|
||||||
|
|
||||||
|
const requiredParams = recipe.parameters?.filter((p) => p.requirement === "required") || [];
|
||||||
|
const optionalParams = recipe.parameters?.filter((p) => p.requirement !== "required") || [];
|
||||||
|
const hasRequiredParams = requiredParams.length > 0;
|
||||||
|
|
||||||
|
const handleCopyCLI = () => {
|
||||||
|
if (hasRequiredParams) {
|
||||||
|
setParamValues({});
|
||||||
|
setShowParamPrompt(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const command = `goose run --recipe documentation/src/pages/recipes/data/recipes/${recipe.id}.yaml`;
|
||||||
|
navigator.clipboard.writeText(command);
|
||||||
|
toast.success("CLI command copied!");
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmitParams = () => {
|
||||||
|
const filledParams = Object.entries(paramValues)
|
||||||
|
.map(([key, val]) => `${key}=${val}`)
|
||||||
|
.join(" ");
|
||||||
|
const command = `goose run --recipe documentation/src/pages/recipes/data/recipes/${recipe.id}.yaml --params ${filledParams}`;
|
||||||
|
navigator.clipboard.writeText(command);
|
||||||
|
setShowParamPrompt(false);
|
||||||
|
toast.success("CLI command copied with params!");
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Link
|
<div className="relative w-full h-full">
|
||||||
to={`/recipes/detail?id=${recipe.id}`}
|
<Link
|
||||||
className="block no-underline hover:no-underline h-full"
|
to={`/recipes/detail?id=${recipe.id}`}
|
||||||
>
|
className="block no-underline hover:no-underline h-full"
|
||||||
<div className="relative w-full h-full">
|
>
|
||||||
{/* Optional Glow */}
|
|
||||||
<div className="absolute inset-0 rounded-2xl bg-purple-500 opacity-10 blur-2xl" />
|
<div className="absolute inset-0 rounded-2xl bg-purple-500 opacity-10 blur-2xl" />
|
||||||
|
|
||||||
{/* Card Container */}
|
|
||||||
<div className="relative z-10 w-full h-full rounded-2xl border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-[#1A1A1A] flex flex-col justify-between p-6 transition-shadow duration-200 ease-in-out hover:shadow-[0_0_0_2px_rgba(99,102,241,0.4),_0_4px_20px_rgba(99,102,241,0.1)]">
|
<div className="relative z-10 w-full h-full rounded-2xl border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-[#1A1A1A] flex flex-col justify-between p-6 transition-shadow duration-200 ease-in-out hover:shadow-[0_0_0_2px_rgba(99,102,241,0.4),_0_4px_20px_rgba(99,102,241,0.1)]">
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
{/* Title & Description */}
|
|
||||||
<div>
|
<div>
|
||||||
<h3 className="font-semibold text-base text-zinc-900 dark:text-white leading-snug">
|
<h3 className="font-semibold text-base text-zinc-900 dark:text-white leading-snug">
|
||||||
{recipe.title}
|
{recipe.title}
|
||||||
@@ -36,36 +67,26 @@ export function RecipeCard({ recipe }: { recipe: Recipe }) {
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Extensions */}
|
{recipe.extensions.map((extObj, index) => {
|
||||||
{recipe.extensions.length > 0 && (
|
const name = typeof extObj === 'string' ? extObj : extObj.name;
|
||||||
<div className="flex flex-wrap gap-2 mt-2">
|
const cleanedLabel = name?.replace(/MCP/i, "").trim();
|
||||||
{recipe.extensions.map((ext, index) => {
|
|
||||||
const cleanedLabel = ext.replace(/MCP/i, "").trim();
|
return (
|
||||||
return (
|
<span
|
||||||
<span
|
key={index}
|
||||||
key={index}
|
className="inline-flex items-center h-7 px-3 rounded-full border border-zinc-300 bg-zinc-100 text-zinc-700 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 text-xs font-medium"
|
||||||
className="inline-flex items-center h-7 px-3 rounded-full
|
>
|
||||||
border border-zinc-300 bg-zinc-100 text-zinc-700
|
{cleanedLabel}
|
||||||
dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300
|
</span>
|
||||||
text-xs font-medium"
|
);
|
||||||
>
|
})}
|
||||||
{cleanedLabel}
|
|
||||||
</span>
|
|
||||||
);
|
|
||||||
})}
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Activities */}
|
|
||||||
{recipe.activities?.length > 0 && (
|
{recipe.activities?.length > 0 && (
|
||||||
<div className="border-t border-zinc-200 dark:border-zinc-700 pt-2 mt-2 flex flex-wrap gap-2">
|
<div className="border-t border-zinc-200 dark:border-zinc-700 pt-2 mt-2 flex flex-wrap gap-2">
|
||||||
{recipe.activities.map((activity, index) => (
|
{recipe.activities.map((activity, index) => (
|
||||||
<span
|
<span
|
||||||
key={index}
|
key={index}
|
||||||
className="inline-flex items-center h-7 px-3 rounded-full
|
className="inline-flex items-center h-7 px-3 rounded-full border border-zinc-300 bg-zinc-100 text-zinc-700 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300 text-xs font-medium"
|
||||||
border border-zinc-300 bg-zinc-100 text-zinc-700
|
|
||||||
dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-300
|
|
||||||
text-xs font-medium"
|
|
||||||
>
|
>
|
||||||
{activity}
|
{activity}
|
||||||
</span>
|
</span>
|
||||||
@@ -74,19 +95,38 @@ export function RecipeCard({ recipe }: { recipe: Recipe }) {
|
|||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Footer */}
|
|
||||||
<div className="flex justify-between items-center pt-6 mt-2">
|
<div className="flex justify-between items-center pt-6 mt-2">
|
||||||
<a
|
<a
|
||||||
href={recipe.recipeUrl}
|
href={recipe.recipeUrl}
|
||||||
className="text-sm font-medium text-purple-600 hover:underline dark:text-purple-400"
|
className="text-sm font-medium text-purple-600 hover:underline dark:text-purple-400"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
rel="noopener noreferrer"
|
||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
>
|
>
|
||||||
Launch Recipe →
|
Launch in Goose Desktop →
|
||||||
</a>
|
</a>
|
||||||
{recipe.author && (
|
|
||||||
|
<div className="relative group">
|
||||||
|
<button
|
||||||
|
onClick={(e) => {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
handleCopyCLI();
|
||||||
|
}}
|
||||||
|
className="text-sm font-medium text-zinc-700 bg-zinc-200 dark:bg-zinc-700 dark:text-white dark:hover:bg-zinc-600 px-3 py-1 rounded hover:bg-zinc-300 cursor-pointer"
|
||||||
|
>
|
||||||
|
Copy CLI Command
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div className="absolute bottom-full mb-2 left-1/2 -translate-x-1/2 hidden group-hover:block bg-zinc-800 text-white text-xs px-2 py-1 rounded shadow-lg whitespace-nowrap z-50">
|
||||||
|
Copies the CLI command to run this recipe
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
{authorHandle && (
|
||||||
<a
|
<a
|
||||||
href={`https://github.com/${recipe.author}`}
|
href={`https://github.com/${authorHandle}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex items-center gap-2 text-sm text-zinc-500 hover:underline dark:text-zinc-300"
|
className="flex items-center gap-2 text-sm text-zinc-500 hover:underline dark:text-zinc-300"
|
||||||
@@ -94,16 +134,55 @@ export function RecipeCard({ recipe }: { recipe: Recipe }) {
|
|||||||
onClick={(e) => e.stopPropagation()}
|
onClick={(e) => e.stopPropagation()}
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src={`https://github.com/${recipe.author}.png`}
|
src={`https://github.com/${authorHandle}.png`}
|
||||||
alt={recipe.author}
|
alt={authorHandle}
|
||||||
className="w-5 h-5 rounded-full"
|
className="w-5 h-5 rounded-full"
|
||||||
/>
|
/>
|
||||||
@{recipe.author}
|
@{authorHandle}
|
||||||
</a>
|
</a>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</Link>
|
||||||
</Link>
|
|
||||||
|
{showParamPrompt && (
|
||||||
|
<div className="absolute top-0 left-0 w-full h-full bg-black bg-opacity-70 flex justify-center items-center z-50">
|
||||||
|
<div className="bg-white dark:bg-zinc-800 p-6 rounded-lg w-full max-w-md">
|
||||||
|
<h3 className="text-lg font-semibold mb-4 text-zinc-900 dark:text-white">Fill in parameters</h3>
|
||||||
|
|
||||||
|
{[...requiredParams, ...optionalParams].map((param) => (
|
||||||
|
<div key={param.key} className="mb-3">
|
||||||
|
<label className="block text-sm text-zinc-700 dark:text-zinc-200 mb-1">
|
||||||
|
{param.key} {param.requirement !== "required" && <span className="text-zinc-400">(optional)</span>}
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={paramValues[param.key] || ""}
|
||||||
|
onChange={(e) =>
|
||||||
|
setParamValues((prev) => ({ ...prev, [param.key]: e.target.value }))
|
||||||
|
}
|
||||||
|
className="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded bg-white dark:bg-zinc-700 text-zinc-900 dark:text-white"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
|
||||||
|
<div className="flex justify-end gap-3">
|
||||||
|
<button
|
||||||
|
onClick={() => setShowParamPrompt(false)}
|
||||||
|
className="text-sm text-zinc-500 hover:underline dark:text-zinc-300"
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
onClick={handleSubmitParams}
|
||||||
|
className="bg-purple-600 text-white px-4 py-2 rounded text-sm hover:bg-purple-700"
|
||||||
|
>
|
||||||
|
Copy Goose CLI Command
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
id: clean-up-feature-flag
|
||||||
|
title: Clean Up Feature Flag
|
||||||
|
description: Automatically clean up all references of a fully rolled out feature flag from a codebase and make the new behavior the default.
|
||||||
|
instructions: >
|
||||||
|
Your job is to systematically remove a fully rolled out feature flag and ensure the new behavior is now the default. Use code search tools like ripgrep to identify all references to the flag, clean up definition files, usage sites, tests, and configuration files. Then create a commit and push changes with clear commit messages documenting the flag removal.
|
||||||
|
author:
|
||||||
|
contact: amitdev
|
||||||
|
extensions:
|
||||||
|
- type: builtin
|
||||||
|
name: developer
|
||||||
|
activities:
|
||||||
|
- Remove feature flag definitions
|
||||||
|
- Clean up feature flag usage sites
|
||||||
|
- Update affected tests
|
||||||
|
- Remove flag configurations
|
||||||
|
- Document flag removal
|
||||||
|
parameters:
|
||||||
|
- key: feature_flag_key
|
||||||
|
input_type: string
|
||||||
|
requirement: required
|
||||||
|
description: Key of the feature flag
|
||||||
|
value: MY_FLAG
|
||||||
|
- key: repo_dir
|
||||||
|
input_type: string
|
||||||
|
requirement: optional
|
||||||
|
default: ./
|
||||||
|
description: Directory of the codebase
|
||||||
|
value: ./
|
||||||
|
prompt: |
|
||||||
|
Task: Remove a feature flag that has been fully rolled out, where the feature flag's functionality should become the default behavior.
|
||||||
|
|
||||||
|
Context:
|
||||||
|
|
||||||
|
Feature flag key: {{feature_flag_key}}
|
||||||
|
Project: {{repo_dir}}
|
||||||
|
Feature is fully rolled out and stable, meaning the feature flag is always evaluated to true or Treatment, etc.
|
||||||
|
|
||||||
|
Steps to follow:
|
||||||
|
|
||||||
|
1. Check out a *new* branch from main or master named using the feature flag key.
|
||||||
|
2. Find the feature flag constant/object that wraps the key.
|
||||||
|
3. Search for all references to the constant/object using ripgrep or equivalent tools.
|
||||||
|
4. For each file that contains references:
|
||||||
|
- **Definition files**: Remove the flag definition and related imports.
|
||||||
|
- **Usage sites**: Remove conditional logic and default to the new behavior. Clean up related imports.
|
||||||
|
- **Test files**: Remove tests that cover the 'disabled' state of the flag and update remaining ones. Clean up mocks and imports.
|
||||||
|
- **Configuration files**: Remove entries related to the feature flag.
|
||||||
|
5. Re-run a full-text search to ensure all references (and imports) are removed.
|
||||||
|
6. Clean up now-unused variables or functions introduced solely for the flag.
|
||||||
|
7. Double-check for and remove any leftover imports or dead code.
|
||||||
|
8. Create a commit with **only the files affected by this cleanup** (don’t use `git add .`).
|
||||||
|
9. Push the branch to origin.
|
||||||
|
10. Open a GitHub PR using: `https://github.com/squareup/<repo-name>/compare/<branch-name>` and replace the repo and branch placeholders.
|
||||||
|
|
||||||
|
Use clear commit messages like:
|
||||||
|
|
||||||
|
chore(flag-cleanup): remove <feature_flag_key> flag from codebase
|
||||||
|
|
||||||
|
Explain the flag was fully rolled out and the new behavior is now default.
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "joke-of-the-day",
|
|
||||||
"title": "Joke of the day",
|
|
||||||
"description": "Will tell you a joke of the day based on the current day",
|
|
||||||
"instructions": "Your job is to tell a joke of the day",
|
|
||||||
"author": "DOsinga",
|
|
||||||
"extensions": ["Developer"],
|
|
||||||
"activities": ["Tell a joke", "Daily humor"],
|
|
||||||
"category": "Entertainment",
|
|
||||||
"recipeUrl": "goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6Ikpva2Ugb2YgdGhlIGRheSIsImRlc2NyaXB0aW9uIjoiV2lsbCB0ZWxsIHlvdSBhIGpva2Ugb2YgdGhlIGRheSBiYXNlZCBvbiB0aGUgY3VycmVudCBkYXkiLCJpbnN0cnVjdGlvbnMiOiJCYXNlZCBvbiB3aGF0IGRheSBpdCBpcyB0b2RheSwgZ2VuZXJhdGUgYSBqb2tlLiBNZW50aW9uIHRoZSBkYXkgb24gdGhlIGZpcnN0IGxpbmUgdGhlbiBhbiBlbXB0eSBsaW5lIGFuZCB0aGVuIHRoZSBqb2tlLiBEb24ndCBqdXN0IHNheSB0aGUgZGF0ZSwgYnV0IGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnkgY3VsdHVyYWwgc2lnbmlmaWNhbmNlLCBsaWtlIG5hdGlvbmFsIHNoZWx2ZXMgZGF5IiwiZXh0ZW5zaW9ucyI6W10sImFjdGl2aXRpZXMiOlsiR2VuZXJhdGUgaG9saWRheS10aGVtZWQgam9rZSIsIklkZW50aWZ5IHNwZWNpYWwgb2JzZXJ2YW5jZSBmb3IgZGF0ZSIsIkNyZWF0ZSB0aGVtZWQgd29yZHBsYXkiLCJNYXRjaCBodW1vciB0byBjdWx0dXJhbCBldmVudCIsIlRlbGwgYSBqb2tlIl0sImF1dGhvciI6eyJjb250YWN0IjoiZWJvbnlsIn19",
|
|
||||||
"prompt": "Based on what day it is today, generate a joke. Mention the day on the first line then an empty line and then the joke. Don't just say the date, but figure out if there's any cultural significance, like national shelves day"
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
{
|
|
||||||
"id": "pr-generator",
|
|
||||||
"title": "PR Generator",
|
|
||||||
"description": "Automatically generate pull request descriptions based on changes in a local git repo.",
|
|
||||||
"instructions": "Your job is to generate descriptive and helpful pull request descriptions without asking for additional information. Generate commit messages and branch names based on the actual code changes.",
|
|
||||||
"prompt": "Analyze the staged changes and any unpushed commits in the git repository {{git_repo_path}} to generate a comprehensive pull request description. Work autonomously without requesting additional information.\n\nAnalysis steps:\n1. Get current branch name using `git branch --show-current`\n2. If not on main/master/develop:\n - Check for unpushed commits: `git log @{u}..HEAD` (if upstream exists)\n - Include these commits in the analysis\n3. Check staged changes: `git diff --staged`\n4. Save the staged changes diff for the PR description\n5. Determine the type of change (feature, fix, enhancement, etc.) from the code\n\nGenerate the PR description with:\n1. A clear summary of the changes, including:\n - New staged changes\n - Any unpushed commits (if on a feature branch)\n2. Technical implementation details based on both the diff and unpushed commits\n3. List of modified files and their purpose\n4. Impact analysis (what areas of the codebase are affected)\n5. Testing approach and considerations\n6. Any migration steps or breaking changes\n7. Related issues or dependencies\n\nUse git commands:\n- `git diff --staged` for staged changes\n- `git log @{u}..HEAD` for unpushed commits\n- `git branch --show-current` for current branch\n- `git status` for staged files\n- `git show` for specific commit details\n- `git rev-parse --abbrev-ref --symbolic-full-name @{u}` to check if branch has upstream\n\nFormat the description in markdown with appropriate sections and code blocks where relevant.\n\n{% if push_pr %}\nExecute the following steps for pushing:\n1. Determine branch handling:\n - If current branch is main/master/develop or unrelated:\n - Generate branch name from staged changes (e.g., 'feature-add-user-auth')\n - Create and switch to new branch: `git checkout -b [branch-name]`\n - If current branch matches changes:\n - Continue using current branch\n - Note any unpushed commits\n\n2. Handle commits and push:\n a. If staged changes exist:\n - Create commit using generated message: `git commit -m \"[type]: [summary]\"`\n - Message should be concise and descriptive of actual changes\n b. Push changes:\n - For existing branches: `git push origin HEAD`\n - For new branches: `git push -u origin HEAD`\n\n3. Create PR:\n - Use git/gh commands to create PR with generated description\n - Set base branch appropriately\n - Print PR URL after creation\n\nBranch naming convention:\n- Use kebab-case\n- Prefix with type: feature-, fix-, enhance-, refactor-\n- Keep names concise but descriptive\n- Base on actual code changes\n\nCommit message format:\n- Start with type: feat, fix, enhance, refactor\n- Followed by concise description\n- Based on actual code changes\n- No body text needed for straightforward changes\n\nDo not:\n- Ask for confirmation or additional input\n- Create placeholder content\n- Include TODO items\n- Add WIP markers\n{% endif %}",
|
|
||||||
"extensions": ["Developer", "Memory"],
|
|
||||||
"activities": ["Generate PR", "Analyze staged git changes", "Create PR description"],
|
|
||||||
"action": "Generate PR",
|
|
||||||
"category": "Developer",
|
|
||||||
"recipeUrl": "goose://recipe?config=eyJ2ZXJzaW9uIjoiMS4wLjAiLCJ0aXRsZSI6IlB1bGwgUmVxdWVzdCBHZW5lcmF0b3IiLCJkZXNjcmlwdGlvbiI6IkF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgcHVsbCByZXF1ZXN0IGRlc2NyaXB0aW9ucyBiYXNlZCBvbiBjaGFuZ2VzIGluIGEgbG9jYWwgZ2l0IHJlcG8uIiwiaW5zdHJ1Y3Rpb25zIjoiWW91ciBqb2IgaXMgdG8gZ2VuZXJhdGUgZGVzY3JpcHRpdmUgYW5kIGhlbHBmdWwgcHVsbCByZXF1ZXN0IGRlc2NyaXB0aW9ucyB3aXRob3V0IGFza2luZyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gR2VuZXJhdGUgY29tbWl0IG1lc3NhZ2VzIGFuZCBicmFuY2ggbmFtZXMgYmFzZWQgb24gdGhlIGFjdHVhbCBjb2RlIGNoYW5nZXMuIiwiZXh0ZW5zaW9ucyI6W10sImFjdGl2aXRpZXMiOlsiR2VuZXJhdGUgUFIgZGVzY3JpcHRpb24gZnJvbSBjaGFuZ2VzIiwiQW5hbHl6ZSBnaXQgZGlmZiBvdXRwdXQiLCJDcmVhdGUgZmVhdHVyZSBicmFuY2ggYW5kIHB1c2giLCJGb3JtYXQgY29tbWl0IG1lc3NhZ2VzIiwiUmV2aWV3IHVucHVzaGVkIGNvbW1pdHMiXSwiYXV0aG9yIjp7ImNvbnRhY3QiOiJlYm9ueWwifX0=",
|
|
||||||
"author": "lifeizhou-ap"
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
id: pr-generator
|
||||||
|
title: PR Generator
|
||||||
|
description: Automatically generate pull request descriptions based on changes in a local git repo.
|
||||||
|
instructions: >
|
||||||
|
Your job is to generate descriptive and helpful pull request descriptions without asking for additional information. Generate commit messages and branch names based on the actual code changes.
|
||||||
|
author:
|
||||||
|
contact: lifeizhou-ap
|
||||||
|
extensions:
|
||||||
|
- type: builtin
|
||||||
|
name: developer
|
||||||
|
- type: builtin
|
||||||
|
name: memory
|
||||||
|
parameters:
|
||||||
|
- key: git_repo_path
|
||||||
|
input_type: string
|
||||||
|
requirement: required
|
||||||
|
description: Path to the local git repository
|
||||||
|
value: "{{git_repo_path}}"
|
||||||
|
- key: push_pr
|
||||||
|
input_type: boolean
|
||||||
|
requirement: optional
|
||||||
|
description: Whether to push changes and create a PR
|
||||||
|
value: false
|
||||||
|
activities:
|
||||||
|
- Generate PR
|
||||||
|
- Analyze staged git changes
|
||||||
|
- Create PR description
|
||||||
|
action: Generate PR
|
||||||
|
prompt: |
|
||||||
|
Analyze the staged changes and any unpushed commits in the git repository {{git_repo_path}} to generate a comprehensive pull request description. Work autonomously without requesting additional information.
|
||||||
|
|
||||||
|
Analysis steps:
|
||||||
|
1. Get current branch name using `git branch --show-current`
|
||||||
|
2. If not on main/master/develop:
|
||||||
|
- Check for unpushed commits: `git log @{u}..HEAD` (if upstream exists)
|
||||||
|
- Include these commits in the analysis
|
||||||
|
3. Check staged changes: `git diff --staged`
|
||||||
|
4. Save the staged changes diff for the PR description
|
||||||
|
5. Determine the type of change (feature, fix, enhancement, etc.) from the code
|
||||||
|
|
||||||
|
Generate the PR description with:
|
||||||
|
1. A clear summary of the changes, including:
|
||||||
|
- New staged changes
|
||||||
|
- Any unpushed commits (if on a feature branch)
|
||||||
|
2. Technical implementation details based on both the diff and unpushed commits
|
||||||
|
3. List of modified files and their purpose
|
||||||
|
4. Impact analysis (what areas of the codebase are affected)
|
||||||
|
5. Testing approach and considerations
|
||||||
|
6. Any migration steps or breaking changes
|
||||||
|
7. Related issues or dependencies
|
||||||
|
|
||||||
|
Use git commands:
|
||||||
|
- `git diff --staged` for staged changes
|
||||||
|
- `git log @{u}..HEAD` for unpushed commits
|
||||||
|
- `git branch --show-current` for current branch
|
||||||
|
- `git status` for staged files
|
||||||
|
- `git show` for specific commit details
|
||||||
|
- `git rev-parse --abbrev-ref --symbolic-full-name @{u}` to check if branch has upstream
|
||||||
|
|
||||||
|
Format the description in markdown with appropriate sections and code blocks where relevant.
|
||||||
|
|
||||||
|
{% if push_pr %}
|
||||||
|
Execute the following steps for pushing:
|
||||||
|
1. Determine branch handling:
|
||||||
|
- If current branch is main/master/develop or unrelated:
|
||||||
|
- Generate branch name from staged changes (e.g., 'feature-add-user-auth')
|
||||||
|
- Create and switch to new branch: `git checkout -b [branch-name]`
|
||||||
|
- If current branch matches changes:
|
||||||
|
- Continue using current branch
|
||||||
|
- Note any unpushed commits
|
||||||
|
|
||||||
|
2. Handle commits and push:
|
||||||
|
a. If staged changes exist:
|
||||||
|
- Create commit using generated message: `git commit -m "[type]: [summary]"`
|
||||||
|
- Message should be concise and descriptive of actual changes
|
||||||
|
b. Push changes:
|
||||||
|
- For existing branches: `git push origin HEAD`
|
||||||
|
- For new branches: `git push -u origin HEAD`
|
||||||
|
|
||||||
|
3. Create PR:
|
||||||
|
- Use git/gh commands to create PR with generated description
|
||||||
|
- Set base branch appropriately
|
||||||
|
- Print PR URL after creation
|
||||||
|
|
||||||
|
Branch naming convention:
|
||||||
|
- Use kebab-case
|
||||||
|
- Prefix with type: feature-, fix-, enhance-, refactor-
|
||||||
|
- Keep names concise but descriptive
|
||||||
|
- Base on actual code changes
|
||||||
|
|
||||||
|
Commit message format:
|
||||||
|
- Start with type: feat, fix, enhance, refactor
|
||||||
|
- Followed by concise description
|
||||||
|
- Based on actual code changes
|
||||||
|
- No body text needed for straightforward changes
|
||||||
|
|
||||||
|
Do not:
|
||||||
|
- Ask for confirmation or additional input
|
||||||
|
- Create placeholder content
|
||||||
|
- Include TODO items
|
||||||
|
- Add WIP markers
|
||||||
|
{% endif %}
|
||||||
@@ -8,6 +8,7 @@ import CodeBlock from "@theme/CodeBlock";
|
|||||||
import { Button } from "@site/src/components/ui/button";
|
import { Button } from "@site/src/components/ui/button";
|
||||||
import { getRecipeById } from "@site/src/utils/recipes";
|
import { getRecipeById } from "@site/src/utils/recipes";
|
||||||
import type { Recipe } from "@site/src/components/recipe-card";
|
import type { Recipe } from "@site/src/components/recipe-card";
|
||||||
|
import toast from "react-hot-toast";
|
||||||
|
|
||||||
const colorMap: { [key: string]: string } = {
|
const colorMap: { [key: string]: string } = {
|
||||||
"GitHub MCP": "bg-yellow-100 text-yellow-800 border-yellow-200",
|
"GitHub MCP": "bg-yellow-100 text-yellow-800 border-yellow-200",
|
||||||
@@ -20,12 +21,16 @@ export default function RecipeDetailPage(): JSX.Element {
|
|||||||
const [recipe, setRecipe] = useState<Recipe | null>(null);
|
const [recipe, setRecipe] = useState<Recipe | null>(null);
|
||||||
const [loading, setLoading] = useState(true);
|
const [loading, setLoading] = useState(true);
|
||||||
const [error, setError] = useState<string | null>(null);
|
const [error, setError] = useState<string | null>(null);
|
||||||
|
const [showParamsPrompt, setShowParamsPrompt] = useState(false);
|
||||||
|
const [paramValues, setParamValues] = useState<Record<string, string>>({});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const loadRecipe = async () => {
|
const loadRecipe = async () => {
|
||||||
try {
|
try {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
setError(null);
|
setError(null);
|
||||||
|
setParamValues({});
|
||||||
|
setShowParamsPrompt(false);
|
||||||
|
|
||||||
const params = new URLSearchParams(location.search);
|
const params = new URLSearchParams(location.search);
|
||||||
const id = params.get("id");
|
const id = params.get("id");
|
||||||
@@ -51,6 +56,36 @@ export default function RecipeDetailPage(): JSX.Element {
|
|||||||
loadRecipe();
|
loadRecipe();
|
||||||
}, [location]);
|
}, [location]);
|
||||||
|
|
||||||
|
const allParams = recipe?.parameters || [];
|
||||||
|
const requiredParams = allParams.filter((p) => p.requirement === "required");
|
||||||
|
|
||||||
|
const handleCopyCLI = () => {
|
||||||
|
if (allParams.length > 0) {
|
||||||
|
setParamValues({});
|
||||||
|
setShowParamsPrompt(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const command = `goose run --recipe ${recipe?.localPath}`;
|
||||||
|
navigator.clipboard.writeText(command);
|
||||||
|
toast.success("CLI command copied!");
|
||||||
|
};
|
||||||
|
|
||||||
|
const handleSubmitParams = () => {
|
||||||
|
const filledParams = Object.entries(paramValues)
|
||||||
|
.filter(([, val]) => val !== "")
|
||||||
|
.map(([key, val]) => `${key}=${val}`)
|
||||||
|
.join(" ");
|
||||||
|
|
||||||
|
const command = `goose run --recipe ${recipe?.localPath}${
|
||||||
|
filledParams ? ` --params ${filledParams}` : ""
|
||||||
|
}`;
|
||||||
|
|
||||||
|
navigator.clipboard.writeText(command);
|
||||||
|
toast.success("CLI command copied with params!");
|
||||||
|
setShowParamsPrompt(false);
|
||||||
|
};
|
||||||
|
|
||||||
if (loading) {
|
if (loading) {
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
@@ -77,6 +112,8 @@ export default function RecipeDetailPage(): JSX.Element {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const authorUsername = typeof recipe.author === "string" ? recipe.author : recipe.author?.contact;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Layout>
|
<Layout>
|
||||||
<div className="min-h-screen py-12">
|
<div className="min-h-screen py-12">
|
||||||
@@ -88,19 +125,19 @@ export default function RecipeDetailPage(): JSX.Element {
|
|||||||
Back
|
Back
|
||||||
</Button>
|
</Button>
|
||||||
</Link>
|
</Link>
|
||||||
{recipe.author && (
|
{authorUsername && (
|
||||||
<a
|
<a
|
||||||
href={`https://github.com/${recipe.author}`}
|
href={`https://github.com/${authorUsername}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
className="flex items-center gap-2 text-sm text-textSubtle hover:underline"
|
className="flex items-center gap-2 text-sm text-textSubtle hover:underline"
|
||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
src={`https://github.com/${recipe.author}.png`}
|
src={`https://github.com/${authorUsername}.png`}
|
||||||
alt={recipe.author}
|
alt={authorUsername}
|
||||||
className="w-6 h-6 rounded-full"
|
className="w-6 h-6 rounded-full"
|
||||||
/>
|
/>
|
||||||
@{recipe.author}
|
@{authorUsername}
|
||||||
</a>
|
</a>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
@@ -133,31 +170,24 @@ export default function RecipeDetailPage(): JSX.Element {
|
|||||||
<div className="mb-6 border-t border-borderSubtle dark:border-zinc-700 pt-6">
|
<div className="mb-6 border-t border-borderSubtle dark:border-zinc-700 pt-6">
|
||||||
<h2 className="text-2xl font-medium mb-2 text-textProminent dark:text-white">Extensions</h2>
|
<h2 className="text-2xl font-medium mb-2 text-textProminent dark:text-white">Extensions</h2>
|
||||||
<div className="flex flex-wrap gap-2">
|
<div className="flex flex-wrap gap-2">
|
||||||
{recipe.extensions.map((ext, index) => (
|
{recipe.extensions.map((ext, index) => {
|
||||||
<span
|
const name = typeof ext === "string" ? ext : ext.name;
|
||||||
key={index}
|
return (
|
||||||
className={`border rounded-full px-3 py-1 text-sm ${
|
<span
|
||||||
colorMap[ext] ||
|
key={index}
|
||||||
"bg-gray-100 text-gray-800 border-gray-200 dark:bg-zinc-900 dark:text-zinc-300 dark:border-zinc-700"
|
className={`border rounded-full px-3 py-1 text-sm ${
|
||||||
}`}
|
colorMap[name] ||
|
||||||
>
|
"bg-gray-100 text-gray-800 border-gray-200 dark:bg-zinc-900 dark:text-zinc-300 dark:border-zinc-700"
|
||||||
{ext}
|
}`}
|
||||||
</span>
|
>
|
||||||
))}
|
{name}
|
||||||
|
</span>
|
||||||
|
);
|
||||||
|
})}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Instructions */}
|
|
||||||
{recipe.instructions && (
|
|
||||||
<div className="mb-6 border-t border-borderSubtle dark:border-zinc-700 pt-6">
|
|
||||||
<h2 className="text-2xl font-medium mb-2 text-textProminent dark:text-white">Instructions</h2>
|
|
||||||
<p className="text-textSubtle dark:text-zinc-400 whitespace-pre-line">
|
|
||||||
{recipe.instructions}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Prompt */}
|
{/* Prompt */}
|
||||||
{recipe.prompt && (
|
{recipe.prompt && (
|
||||||
<div className="mb-6 border-t border-borderSubtle dark:border-zinc-700 pt-6">
|
<div className="mb-6 border-t border-borderSubtle dark:border-zinc-700 pt-6">
|
||||||
@@ -169,21 +199,77 @@ export default function RecipeDetailPage(): JSX.Element {
|
|||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{/* Launch Button */}
|
{/* Instructions */}
|
||||||
{recipe.recipeUrl && (
|
{recipe.instructions && (
|
||||||
<div className="pt-8 border-t border-borderSubtle dark:border-zinc-700 mt-6">
|
<div className="mb-6 border-t border-borderSubtle dark:border-zinc-700 pt-6">
|
||||||
<Link
|
<h2 className="text-2xl font-medium mb-4 text-textProminent dark:text-white">Instructions</h2>
|
||||||
to={recipe.recipeUrl}
|
<CodeBlock language="markdown">{recipe.instructions}</CodeBlock>
|
||||||
target="_blank"
|
|
||||||
className="inline-block text-white bg-black dark:bg-white dark:text-black px-6 py-2 rounded-full text-sm font-medium hover:bg-gray-900 dark:hover:bg-gray-100 transition-colors"
|
|
||||||
>
|
|
||||||
Launch Recipe →
|
|
||||||
</Link>
|
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
|
{/* Launch */}
|
||||||
|
<div className="pt-8 border-t border-borderSubtle dark:border-zinc-700 mt-6 flex gap-4">
|
||||||
|
<Link
|
||||||
|
to={recipe.recipeUrl}
|
||||||
|
target="_blank"
|
||||||
|
className="inline-block text-white bg-black dark:bg-white dark:text-black px-6 py-2 rounded-full text-sm font-medium hover:bg-gray-900 dark:hover:bg-gray-100 transition-colors"
|
||||||
|
>
|
||||||
|
Launch in Goose Desktop →
|
||||||
|
</Link>
|
||||||
|
<div className="relative group inline-block">
|
||||||
|
<button
|
||||||
|
onClick={handleCopyCLI}
|
||||||
|
className="text-sm font-medium px-6 py-2 rounded-full bg-zinc-200 dark:bg-zinc-800 text-zinc-700 dark:text-white hover:bg-zinc-300 dark:hover:bg-zinc-700 transition-colors cursor-pointer"
|
||||||
|
>
|
||||||
|
Copy Goose CLI Command
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<div className="absolute bottom-full mb-2 left-1/2 -translate-x-1/2 hidden group-hover:block bg-zinc-800 text-white text-xs px-2 py-1 rounded shadow-lg whitespace-nowrap z-50">
|
||||||
|
Copies the CLI command to run this recipe
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
{showParamsPrompt && (
|
||||||
|
<div className="fixed inset-0 bg-black bg-opacity-60 z-50 flex items-center justify-center">
|
||||||
|
<div className="bg-white dark:bg-zinc-800 p-6 rounded-lg w-full max-w-md">
|
||||||
|
<h3 className="text-lg font-semibold mb-4 text-zinc-900 dark:text-white">Fill in parameters</h3>
|
||||||
|
{allParams.map((param) => (
|
||||||
|
<div key={param.key} className="mb-3">
|
||||||
|
<label className="block text-sm text-zinc-700 dark:text-zinc-200 mb-1">
|
||||||
|
{param.key} {param.requirement === "optional" && <span className="text-zinc-400">(optional)</span>}
|
||||||
|
</label>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
value={paramValues[param.key] || ""}
|
||||||
|
onChange={(e) =>
|
||||||
|
setParamValues((prev) => ({ ...prev, [param.key]: e.target.value }))
|
||||||
|
}
|
||||||
|
className="w-full px-3 py-2 border border-zinc-300 dark:border-zinc-600 rounded bg-white dark:bg-zinc-700 text-zinc-900 dark:text-white"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))}
|
||||||
|
<div className="flex justify-end gap-3">
|
||||||
|
<button
|
||||||
|
onClick={() => setShowParamsPrompt(false)}
|
||||||
|
className="text-sm text-zinc-600 dark:text-zinc-300 hover:underline"
|
||||||
|
>
|
||||||
|
Cancel
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
onClick={handleSubmitParams}
|
||||||
|
className="bg-purple-600 text-white px-4 py-2 rounded text-sm hover:bg-purple-700"
|
||||||
|
>
|
||||||
|
Copy Command
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
</Layout>
|
</Layout>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,17 +19,16 @@ export default function RecipePage() {
|
|||||||
const [currentPage, setCurrentPage] = useState(1);
|
const [currentPage, setCurrentPage] = useState(1);
|
||||||
const recipesPerPage = 20;
|
const recipesPerPage = 20;
|
||||||
|
|
||||||
const uniqueCategories = Array.from(
|
|
||||||
new Set(recipes.map((r) => r.category?.toLowerCase()).filter(Boolean))
|
|
||||||
).map((category) => ({
|
|
||||||
label: category.replace(/\b\w/g, (l) => l.toUpperCase()),
|
|
||||||
value: category
|
|
||||||
}));
|
|
||||||
|
|
||||||
const uniqueExtensions = Array.from(
|
const uniqueExtensions = Array.from(
|
||||||
new Set(recipes.flatMap((r) =>
|
new Set(
|
||||||
r.extensions.map((ext) => ext.toLowerCase().replace(/\s+/g, "-"))
|
recipes.flatMap((r) =>
|
||||||
))
|
r.extensions?.length
|
||||||
|
? r.extensions.map((ext) =>
|
||||||
|
(typeof ext === "string" ? ext : ext.name).toLowerCase().replace(/\s+/g, "-")
|
||||||
|
)
|
||||||
|
: []
|
||||||
|
)
|
||||||
|
)
|
||||||
).map((ext) => {
|
).map((ext) => {
|
||||||
const cleanValue = ext.replace(/-mcp$/, "");
|
const cleanValue = ext.replace(/-mcp$/, "");
|
||||||
let label = cleanValue.replace(/-/g, " ");
|
let label = cleanValue.replace(/-/g, " ");
|
||||||
@@ -45,10 +44,6 @@ export default function RecipePage() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const sidebarFilterGroups: SidebarFilterGroup[] = [
|
const sidebarFilterGroups: SidebarFilterGroup[] = [
|
||||||
{
|
|
||||||
title: "Category",
|
|
||||||
options: uniqueCategories
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
title: "Extensions Used",
|
title: "Extensions Used",
|
||||||
options: uniqueExtensions
|
options: uniqueExtensions
|
||||||
@@ -63,8 +58,7 @@ export default function RecipePage() {
|
|||||||
const results = await searchRecipes(searchQuery);
|
const results = await searchRecipes(searchQuery);
|
||||||
setRecipes(results);
|
setRecipes(results);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
const errorMessage =
|
const errorMessage = err instanceof Error ? err.message : "Unknown error";
|
||||||
err instanceof Error ? err.message : "Unknown error";
|
|
||||||
setError(`Failed to load recipes: ${errorMessage}`);
|
setError(`Failed to load recipes: ${errorMessage}`);
|
||||||
console.error("Error loading recipes:", err);
|
console.error("Error loading recipes:", err);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -81,13 +75,11 @@ export default function RecipePage() {
|
|||||||
Object.entries(selectedFilters).forEach(([group, values]) => {
|
Object.entries(selectedFilters).forEach(([group, values]) => {
|
||||||
if (values.length > 0) {
|
if (values.length > 0) {
|
||||||
filteredRecipes = filteredRecipes.filter((r) => {
|
filteredRecipes = filteredRecipes.filter((r) => {
|
||||||
if (group === "Category") {
|
|
||||||
return values.includes(r.category?.toLowerCase());
|
|
||||||
}
|
|
||||||
if (group === "Extensions Used") {
|
if (group === "Extensions Used") {
|
||||||
return r.extensions?.some((ext) =>
|
return r.extensions?.some((ext) => {
|
||||||
values.includes(ext.toLowerCase().replace(/\s+/g, "-"))
|
const extName = typeof ext === "string" ? ext : ext.name;
|
||||||
);
|
return values.includes(extName.toLowerCase().replace(/\s+/g, "-"));
|
||||||
|
}) ?? false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,47 +1,93 @@
|
|||||||
import type { Recipe } from "@site/src/components/recipe-card";
|
import type { Recipe } from "@site/src/components/recipe-card";
|
||||||
|
|
||||||
// Webpack context loader for all JSON files in the recipes folder
|
// Load all YAML files from your recipes folder
|
||||||
const recipeFiles = require.context(
|
const recipeFiles = require.context(
|
||||||
'../pages/recipes/data/recipes',
|
"@site/src/pages/recipes/data/recipes",
|
||||||
false,
|
false,
|
||||||
/\.json$/
|
/\.ya?ml$/
|
||||||
);
|
);
|
||||||
|
|
||||||
export function getRecipeById(id: string): Recipe | null {
|
export function getRecipeById(id: string): Recipe | null {
|
||||||
const allRecipes: Recipe[] = recipeFiles
|
const allRecipes = loadAllRecipes();
|
||||||
.keys()
|
return allRecipes.find((recipe) => recipe.id === id) || null;
|
||||||
.map((key: string) => recipeFiles(key))
|
|
||||||
.map((module: any) => module.default || module);
|
|
||||||
|
|
||||||
return allRecipes.find((recipe) => recipe.id === id) || null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function searchRecipes(query: string): Promise<Recipe[]> {
|
export async function searchRecipes(query: string): Promise<Recipe[]> {
|
||||||
const allRecipes: Recipe[] = recipeFiles
|
const allRecipes = loadAllRecipes();
|
||||||
.keys()
|
|
||||||
.map((key: string) => recipeFiles(key))
|
|
||||||
.map((module: any) => {
|
|
||||||
const recipe = module.default || module;
|
|
||||||
|
|
||||||
// Normalize fields for filters
|
if (!query) return allRecipes;
|
||||||
return {
|
|
||||||
...recipe,
|
|
||||||
persona: recipe.persona || null,
|
|
||||||
action: recipe.action || null,
|
|
||||||
extensions: Array.isArray(recipe.extensions) ? recipe.extensions : [],
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
if (query) {
|
return allRecipes.filter((r) =>
|
||||||
return allRecipes.filter((r) =>
|
r.title?.toLowerCase().includes(query.toLowerCase()) ||
|
||||||
r.title.toLowerCase().includes(query.toLowerCase()) ||
|
r.description?.toLowerCase().includes(query.toLowerCase()) ||
|
||||||
r.description.toLowerCase().includes(query.toLowerCase()) ||
|
r.action?.toLowerCase().includes(query.toLowerCase()) ||
|
||||||
r.action?.toLowerCase().includes(query.toLowerCase()) ||
|
r.activities?.some((a) => a.toLowerCase().includes(query.toLowerCase()))
|
||||||
r.activities?.some((activity) =>
|
);
|
||||||
activity.toLowerCase().includes(query.toLowerCase())
|
}
|
||||||
|
|
||||||
|
function loadAllRecipes(): Recipe[] {
|
||||||
|
return recipeFiles.keys().map((key: string) => {
|
||||||
|
const parsed = recipeFiles(key).default || recipeFiles(key);
|
||||||
|
const id = key.replace(/^.*[\\/]/, "").replace(/\.(yaml|yml)$/, "");
|
||||||
|
return normalizeRecipe({ ...parsed, id });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function normalizeRecipe(recipe: any): Recipe {
|
||||||
|
const cleaned: Recipe = {
|
||||||
|
id: recipe.id || recipe.title?.toLowerCase().replace(/\s+/g, "-") || "untitled-recipe",
|
||||||
|
title: recipe.title || "Untitled Recipe",
|
||||||
|
description: recipe.description || "No description provided.",
|
||||||
|
instructions: recipe.instructions,
|
||||||
|
prompt: recipe.prompt,
|
||||||
|
extensions: Array.isArray(recipe.extensions)
|
||||||
|
? recipe.extensions.map((ext: any) =>
|
||||||
|
typeof ext === "string" ? { type: "builtin", name: ext } : ext
|
||||||
)
|
)
|
||||||
);
|
: [],
|
||||||
|
activities: Array.isArray(recipe.activities) ? recipe.activities : [],
|
||||||
|
version: recipe.version || "1.0.0",
|
||||||
|
author:
|
||||||
|
typeof recipe.author === "string"
|
||||||
|
? { contact: recipe.author }
|
||||||
|
: recipe.author || undefined,
|
||||||
|
action: recipe.action || undefined,
|
||||||
|
persona: recipe.persona || undefined,
|
||||||
|
tags: recipe.tags || [],
|
||||||
|
recipeUrl: "",
|
||||||
|
localPath: `documentation/src/pages/recipes/data/recipes/${recipe.id}.yaml`,
|
||||||
|
};
|
||||||
|
|
||||||
|
// Add parameters and populate missing required values
|
||||||
|
if (Array.isArray(recipe.parameters)) {
|
||||||
|
for (const param of recipe.parameters) {
|
||||||
|
if (param.requirement === "required" && !param.value) {
|
||||||
|
param.value = `{{${param.key}}}`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(cleaned as any).parameters = recipe.parameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
return allRecipes;
|
const configForGoose = {
|
||||||
|
title: cleaned.title,
|
||||||
|
description: cleaned.description,
|
||||||
|
instructions: cleaned.instructions,
|
||||||
|
prompt: cleaned.prompt,
|
||||||
|
activities: cleaned.activities,
|
||||||
|
extensions: cleaned.extensions,
|
||||||
|
parameters: (cleaned as any).parameters || []
|
||||||
|
};
|
||||||
|
|
||||||
|
const encoded = toBase64(JSON.stringify(configForGoose));
|
||||||
|
cleaned.recipeUrl = `goose://recipe?config=${encoded}`;
|
||||||
|
|
||||||
|
return cleaned;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function toBase64(str: string): string {
|
||||||
|
if (typeof window !== "undefined" && window.btoa) {
|
||||||
|
return window.btoa(unescape(encodeURIComponent(str)));
|
||||||
|
}
|
||||||
|
return Buffer.from(str).toString("base64");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
"@algolia/requester-fetch" "5.20.0"
|
"@algolia/requester-fetch" "5.20.0"
|
||||||
"@algolia/requester-node-http" "5.20.0"
|
"@algolia/requester-node-http" "5.20.0"
|
||||||
|
|
||||||
"@algolia/client-search@5.20.0":
|
"@algolia/client-search@>= 4.9.1 < 6", "@algolia/client-search@5.20.0":
|
||||||
version "5.20.0"
|
version "5.20.0"
|
||||||
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.0.tgz"
|
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.20.0.tgz"
|
||||||
integrity sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ==
|
integrity sha512-KL1zWTzrlN4MSiaK1ea560iCA/UewMbS4ZsLQRPoDTWyrbDKVbztkPwwv764LAqgXk0fvkNZvJ3IelcK7DqhjQ==
|
||||||
@@ -177,7 +177,7 @@
|
|||||||
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz"
|
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz"
|
||||||
integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==
|
integrity sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==
|
||||||
|
|
||||||
"@babel/core@^7.21.3", "@babel/core@^7.25.9":
|
"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.12.0", "@babel/core@^7.13.0", "@babel/core@^7.21.3", "@babel/core@^7.25.9", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0":
|
||||||
version "7.26.0"
|
version "7.26.0"
|
||||||
resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
|
resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
|
||||||
integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
|
integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
|
||||||
@@ -1598,7 +1598,7 @@
|
|||||||
utility-types "^3.10.0"
|
utility-types "^3.10.0"
|
||||||
webpack "^5.88.1"
|
webpack "^5.88.1"
|
||||||
|
|
||||||
"@docusaurus/plugin-content-docs@3.7.0":
|
"@docusaurus/plugin-content-docs@*", "@docusaurus/plugin-content-docs@3.7.0":
|
||||||
version "3.7.0"
|
version "3.7.0"
|
||||||
resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz"
|
resolved "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.7.0.tgz"
|
||||||
integrity sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==
|
integrity sha512-GXg5V7kC9FZE4FkUZA8oo/NrlRb06UwuICzI6tcbzj0+TVgjq/mpUXXzSgKzMS82YByi4dY2Q808njcBCyy6tQ==
|
||||||
@@ -2013,7 +2013,7 @@
|
|||||||
"@nodelib/fs.stat" "2.0.5"
|
"@nodelib/fs.stat" "2.0.5"
|
||||||
run-parallel "^1.1.9"
|
run-parallel "^1.1.9"
|
||||||
|
|
||||||
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
|
"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
|
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
|
||||||
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
||||||
@@ -2152,7 +2152,7 @@
|
|||||||
"@svgr/babel-plugin-transform-react-native-svg" "8.1.0"
|
"@svgr/babel-plugin-transform-react-native-svg" "8.1.0"
|
||||||
"@svgr/babel-plugin-transform-svg-component" "8.0.0"
|
"@svgr/babel-plugin-transform-svg-component" "8.0.0"
|
||||||
|
|
||||||
"@svgr/core@8.1.0":
|
"@svgr/core@*", "@svgr/core@8.1.0":
|
||||||
version "8.1.0"
|
version "8.1.0"
|
||||||
resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz"
|
resolved "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz"
|
||||||
integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
|
integrity sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==
|
||||||
@@ -2473,7 +2473,7 @@
|
|||||||
"@types/history" "^4.7.11"
|
"@types/history" "^4.7.11"
|
||||||
"@types/react" "*"
|
"@types/react" "*"
|
||||||
|
|
||||||
"@types/react@*":
|
"@types/react@*", "@types/react@>= 16.8.0 < 19.0.0", "@types/react@>=16", "@types/react@>=18":
|
||||||
version "18.3.18"
|
version "18.3.18"
|
||||||
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz"
|
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz"
|
||||||
integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==
|
integrity sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==
|
||||||
@@ -2558,7 +2558,7 @@
|
|||||||
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
|
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz"
|
||||||
integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
|
integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==
|
||||||
|
|
||||||
"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1":
|
"@webassemblyjs/ast@^1.14.1", "@webassemblyjs/ast@1.14.1":
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz"
|
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz"
|
||||||
integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==
|
integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==
|
||||||
@@ -2659,7 +2659,7 @@
|
|||||||
"@webassemblyjs/wasm-gen" "1.14.1"
|
"@webassemblyjs/wasm-gen" "1.14.1"
|
||||||
"@webassemblyjs/wasm-parser" "1.14.1"
|
"@webassemblyjs/wasm-parser" "1.14.1"
|
||||||
|
|
||||||
"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1":
|
"@webassemblyjs/wasm-parser@^1.14.1", "@webassemblyjs/wasm-parser@1.14.1":
|
||||||
version "1.14.1"
|
version "1.14.1"
|
||||||
resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz"
|
resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz"
|
||||||
integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==
|
integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==
|
||||||
@@ -2709,7 +2709,7 @@ acorn-walk@^8.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
acorn "^8.11.0"
|
acorn "^8.11.0"
|
||||||
|
|
||||||
acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2:
|
"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.0.0, acorn@^8.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.8.2:
|
||||||
version "8.14.0"
|
version "8.14.0"
|
||||||
resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz"
|
resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz"
|
||||||
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
|
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
|
||||||
@@ -2734,7 +2734,12 @@ ajv-formats@^2.1.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
ajv "^8.0.0"
|
ajv "^8.0.0"
|
||||||
|
|
||||||
ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
|
ajv-keywords@^3.4.1:
|
||||||
|
version "3.5.2"
|
||||||
|
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
|
||||||
|
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
|
||||||
|
|
||||||
|
ajv-keywords@^3.5.2:
|
||||||
version "3.5.2"
|
version "3.5.2"
|
||||||
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
|
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
|
||||||
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
|
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
|
||||||
@@ -2746,7 +2751,7 @@ ajv-keywords@^5.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fast-deep-equal "^3.1.3"
|
fast-deep-equal "^3.1.3"
|
||||||
|
|
||||||
ajv@^6.12.2, ajv@^6.12.5:
|
ajv@^6.12.2, ajv@^6.12.5, ajv@^6.9.1:
|
||||||
version "6.12.6"
|
version "6.12.6"
|
||||||
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
|
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
|
||||||
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
|
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
|
||||||
@@ -2756,7 +2761,7 @@ ajv@^6.12.2, ajv@^6.12.5:
|
|||||||
json-schema-traverse "^0.4.1"
|
json-schema-traverse "^0.4.1"
|
||||||
uri-js "^4.2.2"
|
uri-js "^4.2.2"
|
||||||
|
|
||||||
ajv@^8.0.0, ajv@^8.9.0:
|
ajv@^8.0.0, ajv@^8.8.2, ajv@^8.9.0:
|
||||||
version "8.17.1"
|
version "8.17.1"
|
||||||
resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
|
resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
|
||||||
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
|
integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
|
||||||
@@ -2773,7 +2778,7 @@ algoliasearch-helper@^3.22.6:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@algolia/events" "^4.0.1"
|
"@algolia/events" "^4.0.1"
|
||||||
|
|
||||||
algoliasearch@^5.14.2, algoliasearch@^5.17.1:
|
algoliasearch@^5.14.2, algoliasearch@^5.17.1, "algoliasearch@>= 3.1 < 6", "algoliasearch@>= 4.9.1 < 6":
|
||||||
version "5.20.0"
|
version "5.20.0"
|
||||||
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.0.tgz"
|
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.20.0.tgz"
|
||||||
integrity sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ==
|
integrity sha512-groO71Fvi5SWpxjI9Ia+chy0QBwT61mg6yxJV27f5YFf+Mw+STT75K6SHySpP8Co5LsCrtsbCH5dJZSRtkSKaQ==
|
||||||
@@ -3040,7 +3045,7 @@ braces@^3.0.3, braces@~3.0.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
fill-range "^7.1.1"
|
fill-range "^7.1.1"
|
||||||
|
|
||||||
browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.3:
|
browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0, browserslist@^4.24.3, "browserslist@>= 4.21.0":
|
||||||
version "4.24.4"
|
version "4.24.4"
|
||||||
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
|
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
|
||||||
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
|
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
|
||||||
@@ -3693,7 +3698,7 @@ csso@^5.0.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
css-tree "~2.2.0"
|
css-tree "~2.2.0"
|
||||||
|
|
||||||
csstype@^3.0.2:
|
csstype@^3.0.10, csstype@^3.0.2, csstype@^3.1.3:
|
||||||
version "3.1.3"
|
version "3.1.3"
|
||||||
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
|
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
|
||||||
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
|
integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
|
||||||
@@ -3703,20 +3708,27 @@ debounce@^1.2.1:
|
|||||||
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
|
resolved "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz"
|
||||||
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
|
integrity sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==
|
||||||
|
|
||||||
debug@2.6.9, debug@^2.6.0:
|
debug@^2.6.0:
|
||||||
version "2.6.9"
|
version "2.6.9"
|
||||||
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
|
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
|
||||||
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "2.0.0"
|
ms "2.0.0"
|
||||||
|
|
||||||
debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1:
|
debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@4:
|
||||||
version "4.4.0"
|
version "4.4.0"
|
||||||
resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz"
|
resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz"
|
||||||
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
||||||
dependencies:
|
dependencies:
|
||||||
ms "^2.1.3"
|
ms "^2.1.3"
|
||||||
|
|
||||||
|
debug@2.6.9:
|
||||||
|
version "2.6.9"
|
||||||
|
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
|
||||||
|
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
|
||||||
|
dependencies:
|
||||||
|
ms "2.0.0"
|
||||||
|
|
||||||
decode-named-character-reference@^1.0.0:
|
decode-named-character-reference@^1.0.0:
|
||||||
version "1.0.2"
|
version "1.0.2"
|
||||||
resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
|
resolved "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz"
|
||||||
@@ -3790,16 +3802,16 @@ del@^6.1.1:
|
|||||||
rimraf "^3.0.2"
|
rimraf "^3.0.2"
|
||||||
slash "^3.0.0"
|
slash "^3.0.0"
|
||||||
|
|
||||||
depd@2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
|
|
||||||
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
|
||||||
|
|
||||||
depd@~1.1.2:
|
depd@~1.1.2:
|
||||||
version "1.1.2"
|
version "1.1.2"
|
||||||
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
|
resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
|
||||||
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
|
integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
|
||||||
|
|
||||||
|
depd@2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
|
||||||
|
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
||||||
|
|
||||||
dequal@^2.0.0:
|
dequal@^2.0.0:
|
||||||
version "2.0.3"
|
version "2.0.3"
|
||||||
resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
|
resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz"
|
||||||
@@ -4354,7 +4366,7 @@ figures@^3.2.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
escape-string-regexp "^1.0.5"
|
escape-string-regexp "^1.0.5"
|
||||||
|
|
||||||
file-loader@^6.2.0:
|
file-loader@*, file-loader@^6.2.0:
|
||||||
version "6.2.0"
|
version "6.2.0"
|
||||||
resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
|
resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
|
||||||
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
|
integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
|
||||||
@@ -4579,7 +4591,14 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-glob "^4.0.1"
|
is-glob "^4.0.1"
|
||||||
|
|
||||||
glob-parent@^6.0.1, glob-parent@^6.0.2:
|
glob-parent@^6.0.1:
|
||||||
|
version "6.0.2"
|
||||||
|
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
|
||||||
|
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
||||||
|
dependencies:
|
||||||
|
is-glob "^4.0.3"
|
||||||
|
|
||||||
|
glob-parent@^6.0.2:
|
||||||
version "6.0.2"
|
version "6.0.2"
|
||||||
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
|
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
|
||||||
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
||||||
@@ -4666,6 +4685,11 @@ globby@^13.1.1:
|
|||||||
merge2 "^1.4.1"
|
merge2 "^1.4.1"
|
||||||
slash "^4.0.0"
|
slash "^4.0.0"
|
||||||
|
|
||||||
|
goober@^2.1.16:
|
||||||
|
version "2.1.16"
|
||||||
|
resolved "https://registry.npmjs.org/goober/-/goober-2.1.16.tgz"
|
||||||
|
integrity sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==
|
||||||
|
|
||||||
gopd@^1.0.1, gopd@^1.2.0:
|
gopd@^1.0.1, gopd@^1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
|
resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
|
||||||
@@ -4688,16 +4712,16 @@ got@^12.1.0:
|
|||||||
p-cancelable "^3.0.0"
|
p-cancelable "^3.0.0"
|
||||||
responselike "^3.0.0"
|
responselike "^3.0.0"
|
||||||
|
|
||||||
graceful-fs@4.2.10:
|
|
||||||
version "4.2.10"
|
|
||||||
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
|
|
||||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
|
||||||
|
|
||||||
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
|
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
|
||||||
version "4.2.11"
|
version "4.2.11"
|
||||||
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
|
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
|
||||||
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
||||||
|
|
||||||
|
graceful-fs@4.2.10:
|
||||||
|
version "4.2.10"
|
||||||
|
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
|
||||||
|
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||||
|
|
||||||
gray-matter@^4.0.3:
|
gray-matter@^4.0.3:
|
||||||
version "4.0.3"
|
version "4.0.3"
|
||||||
resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz"
|
resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz"
|
||||||
@@ -4989,6 +5013,16 @@ http-deceiver@^1.2.7:
|
|||||||
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
|
resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
|
||||||
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
|
integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
|
||||||
|
|
||||||
|
http-errors@~1.6.2:
|
||||||
|
version "1.6.3"
|
||||||
|
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
|
||||||
|
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
|
||||||
|
dependencies:
|
||||||
|
depd "~1.1.2"
|
||||||
|
inherits "2.0.3"
|
||||||
|
setprototypeof "1.1.0"
|
||||||
|
statuses ">= 1.4.0 < 2"
|
||||||
|
|
||||||
http-errors@2.0.0:
|
http-errors@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
|
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
|
||||||
@@ -5000,16 +5034,6 @@ http-errors@2.0.0:
|
|||||||
statuses "2.0.1"
|
statuses "2.0.1"
|
||||||
toidentifier "1.0.1"
|
toidentifier "1.0.1"
|
||||||
|
|
||||||
http-errors@~1.6.2:
|
|
||||||
version "1.6.3"
|
|
||||||
resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
|
|
||||||
integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
|
|
||||||
dependencies:
|
|
||||||
depd "~1.1.2"
|
|
||||||
inherits "2.0.3"
|
|
||||||
setprototypeof "1.1.0"
|
|
||||||
statuses ">= 1.4.0 < 2"
|
|
||||||
|
|
||||||
http-parser-js@>=0.5.1:
|
http-parser-js@>=0.5.1:
|
||||||
version "0.5.9"
|
version "0.5.9"
|
||||||
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz"
|
resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz"
|
||||||
@@ -5113,7 +5137,7 @@ inflight@^1.0.4:
|
|||||||
once "^1.3.0"
|
once "^1.3.0"
|
||||||
wrappy "1"
|
wrappy "1"
|
||||||
|
|
||||||
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
|
inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3, inherits@2, inherits@2.0.4:
|
||||||
version "2.0.4"
|
version "2.0.4"
|
||||||
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
|
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
|
||||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||||
@@ -5123,16 +5147,16 @@ inherits@2.0.3:
|
|||||||
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
|
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
|
||||||
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
|
integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
|
||||||
|
|
||||||
ini@2.0.0:
|
|
||||||
version "2.0.0"
|
|
||||||
resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
|
|
||||||
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
|
|
||||||
|
|
||||||
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
|
ini@^1.3.4, ini@^1.3.5, ini@~1.3.0:
|
||||||
version "1.3.8"
|
version "1.3.8"
|
||||||
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
|
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
|
||||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||||
|
|
||||||
|
ini@2.0.0:
|
||||||
|
version "2.0.0"
|
||||||
|
resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz"
|
||||||
|
integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
|
||||||
|
|
||||||
inline-style-parser@0.2.4:
|
inline-style-parser@0.2.4:
|
||||||
version "0.2.4"
|
version "0.2.4"
|
||||||
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz"
|
resolved "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz"
|
||||||
@@ -5150,16 +5174,16 @@ invariant@^2.2.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.0.0"
|
loose-envify "^1.0.0"
|
||||||
|
|
||||||
ipaddr.js@1.9.1:
|
|
||||||
version "1.9.1"
|
|
||||||
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
|
|
||||||
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
|
||||||
|
|
||||||
ipaddr.js@^2.0.1:
|
ipaddr.js@^2.0.1:
|
||||||
version "2.2.0"
|
version "2.2.0"
|
||||||
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
|
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
|
||||||
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
|
integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
|
||||||
|
|
||||||
|
ipaddr.js@1.9.1:
|
||||||
|
version "1.9.1"
|
||||||
|
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
|
||||||
|
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
||||||
|
|
||||||
is-alphabetical@^2.0.0:
|
is-alphabetical@^2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
|
resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz"
|
||||||
@@ -5323,16 +5347,16 @@ is-yarn-global@^0.4.0:
|
|||||||
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz"
|
resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz"
|
||||||
integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==
|
integrity sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==
|
||||||
|
|
||||||
isarray@0.0.1:
|
|
||||||
version "0.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
|
|
||||||
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
|
|
||||||
|
|
||||||
isarray@~1.0.0:
|
isarray@~1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
||||||
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
|
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
|
||||||
|
|
||||||
|
isarray@0.0.1:
|
||||||
|
version "0.0.1"
|
||||||
|
resolved "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
|
||||||
|
integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
|
||||||
|
|
||||||
isexe@^2.0.0:
|
isexe@^2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
|
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
|
||||||
@@ -5352,6 +5376,11 @@ jackspeak@^3.1.2:
|
|||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
"@pkgjs/parseargs" "^0.11.0"
|
"@pkgjs/parseargs" "^0.11.0"
|
||||||
|
|
||||||
|
javascript-stringify@^2.0.1:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.npmjs.org/javascript-stringify/-/javascript-stringify-2.1.0.tgz"
|
||||||
|
integrity sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==
|
||||||
|
|
||||||
jest-util@^29.7.0:
|
jest-util@^29.7.0:
|
||||||
version "29.7.0"
|
version "29.7.0"
|
||||||
resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz"
|
resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz"
|
||||||
@@ -6320,11 +6349,6 @@ micromatch@^4.0.2, micromatch@^4.0.5, micromatch@^4.0.8:
|
|||||||
braces "^3.0.3"
|
braces "^3.0.3"
|
||||||
picomatch "^2.3.1"
|
picomatch "^2.3.1"
|
||||||
|
|
||||||
mime-db@1.52.0:
|
|
||||||
version "1.52.0"
|
|
||||||
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
|
|
||||||
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
|
||||||
|
|
||||||
"mime-db@>= 1.43.0 < 2":
|
"mime-db@>= 1.43.0 < 2":
|
||||||
version "1.53.0"
|
version "1.53.0"
|
||||||
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz"
|
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.53.0.tgz"
|
||||||
@@ -6335,14 +6359,40 @@ mime-db@~1.33.0:
|
|||||||
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz"
|
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz"
|
||||||
integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
|
integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==
|
||||||
|
|
||||||
mime-types@2.1.18, mime-types@~2.1.17:
|
mime-db@1.52.0:
|
||||||
|
version "1.52.0"
|
||||||
|
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
|
||||||
|
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
||||||
|
|
||||||
|
mime-types@^2.1.27:
|
||||||
|
version "2.1.35"
|
||||||
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
|
||||||
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.52.0"
|
||||||
|
|
||||||
|
mime-types@^2.1.31:
|
||||||
|
version "2.1.35"
|
||||||
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
|
||||||
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.52.0"
|
||||||
|
|
||||||
|
mime-types@~2.1.17, mime-types@2.1.18:
|
||||||
version "2.1.18"
|
version "2.1.18"
|
||||||
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz"
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz"
|
||||||
integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
|
integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==
|
||||||
dependencies:
|
dependencies:
|
||||||
mime-db "~1.33.0"
|
mime-db "~1.33.0"
|
||||||
|
|
||||||
mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.24, mime-types@~2.1.34:
|
mime-types@~2.1.24:
|
||||||
|
version "2.1.35"
|
||||||
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
|
||||||
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||||
|
dependencies:
|
||||||
|
mime-db "1.52.0"
|
||||||
|
|
||||||
|
mime-types@~2.1.34:
|
||||||
version "2.1.35"
|
version "2.1.35"
|
||||||
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
|
||||||
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
||||||
@@ -6382,7 +6432,7 @@ minimalistic-assert@^1.0.0:
|
|||||||
resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
|
resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
|
||||||
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
|
||||||
|
|
||||||
minimatch@3.1.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1:
|
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@3.1.2:
|
||||||
version "3.1.2"
|
version "3.1.2"
|
||||||
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
|
||||||
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
||||||
@@ -6423,16 +6473,16 @@ mrmime@^2.0.0:
|
|||||||
resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz"
|
resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz"
|
||||||
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
|
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
|
||||||
|
|
||||||
|
ms@^2.1.3, ms@2.1.3:
|
||||||
|
version "2.1.3"
|
||||||
|
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
|
||||||
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||||
|
|
||||||
ms@2.0.0:
|
ms@2.0.0:
|
||||||
version "2.0.0"
|
version "2.0.0"
|
||||||
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
|
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
|
||||||
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
|
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
|
||||||
|
|
||||||
ms@2.1.3, ms@^2.1.3:
|
|
||||||
version "2.1.3"
|
|
||||||
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
|
|
||||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
|
||||||
|
|
||||||
multicast-dns@^7.2.5:
|
multicast-dns@^7.2.5:
|
||||||
version "7.2.5"
|
version "7.2.5"
|
||||||
resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz"
|
resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz"
|
||||||
@@ -6455,16 +6505,16 @@ nanoid@^3.3.8:
|
|||||||
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz"
|
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz"
|
||||||
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
|
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
|
||||||
|
|
||||||
negotiator@0.6.3:
|
|
||||||
version "0.6.3"
|
|
||||||
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
|
|
||||||
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
|
|
||||||
|
|
||||||
negotiator@~0.6.4:
|
negotiator@~0.6.4:
|
||||||
version "0.6.4"
|
version "0.6.4"
|
||||||
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz"
|
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz"
|
||||||
integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
|
integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==
|
||||||
|
|
||||||
|
negotiator@0.6.3:
|
||||||
|
version "0.6.3"
|
||||||
|
resolved "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz"
|
||||||
|
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
|
||||||
|
|
||||||
neo-async@^2.6.2:
|
neo-async@^2.6.2:
|
||||||
version "2.6.2"
|
version "2.6.2"
|
||||||
resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
|
resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
|
||||||
@@ -6813,6 +6863,13 @@ path-scurry@^1.11.1:
|
|||||||
lru-cache "^10.2.0"
|
lru-cache "^10.2.0"
|
||||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||||
|
|
||||||
|
path-to-regexp@^1.7.0:
|
||||||
|
version "1.9.0"
|
||||||
|
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz"
|
||||||
|
integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==
|
||||||
|
dependencies:
|
||||||
|
isarray "0.0.1"
|
||||||
|
|
||||||
path-to-regexp@0.1.12:
|
path-to-regexp@0.1.12:
|
||||||
version "0.1.12"
|
version "0.1.12"
|
||||||
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz"
|
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz"
|
||||||
@@ -6823,13 +6880,6 @@ path-to-regexp@3.3.0:
|
|||||||
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz"
|
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz"
|
||||||
integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==
|
integrity sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==
|
||||||
|
|
||||||
path-to-regexp@^1.7.0:
|
|
||||||
version "1.9.0"
|
|
||||||
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz"
|
|
||||||
integrity sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==
|
|
||||||
dependencies:
|
|
||||||
isarray "0.0.1"
|
|
||||||
|
|
||||||
path-type@^4.0.0:
|
path-type@^4.0.0:
|
||||||
version "4.0.0"
|
version "4.0.0"
|
||||||
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
|
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
|
||||||
@@ -7456,7 +7506,7 @@ postcss-zindex@^6.0.2:
|
|||||||
resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz"
|
resolved "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-6.0.2.tgz"
|
||||||
integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==
|
integrity sha512-5BxW9l1evPB/4ZIc+2GobEBoKC+h8gPGCMi+jxsYvd2x0mjq7wazk6DrP71pStqxE9Foxh5TVnonbWpFZzXaYg==
|
||||||
|
|
||||||
postcss@^8.4.21, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38, postcss@^8.4.47:
|
"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.2.2, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.24, postcss@^8.4.26, postcss@^8.4.31, postcss@^8.4.33, postcss@^8.4.35, postcss@^8.4.38, postcss@^8.4.47, postcss@^8.4.6, postcss@>=8.0.9:
|
||||||
version "8.5.2"
|
version "8.5.2"
|
||||||
resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz"
|
resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz"
|
||||||
integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==
|
integrity sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==
|
||||||
@@ -7574,16 +7624,21 @@ randombytes@^2.1.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
safe-buffer "^5.1.0"
|
safe-buffer "^5.1.0"
|
||||||
|
|
||||||
|
range-parser@^1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
|
||||||
|
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
||||||
|
|
||||||
|
range-parser@~1.2.1:
|
||||||
|
version "1.2.1"
|
||||||
|
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
|
||||||
|
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
||||||
|
|
||||||
range-parser@1.2.0:
|
range-parser@1.2.0:
|
||||||
version "1.2.0"
|
version "1.2.0"
|
||||||
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
|
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz"
|
||||||
integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
|
integrity sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==
|
||||||
|
|
||||||
range-parser@^1.2.1, range-parser@~1.2.1:
|
|
||||||
version "1.2.1"
|
|
||||||
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
|
|
||||||
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
|
||||||
|
|
||||||
raw-body@2.5.2:
|
raw-body@2.5.2:
|
||||||
version "2.5.2"
|
version "2.5.2"
|
||||||
resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz"
|
resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz"
|
||||||
@@ -7634,7 +7689,7 @@ react-dev-utils@^12.0.1:
|
|||||||
strip-ansi "^6.0.1"
|
strip-ansi "^6.0.1"
|
||||||
text-table "^0.2.0"
|
text-table "^0.2.0"
|
||||||
|
|
||||||
react-dom@^19.0.0:
|
react-dom@*, "react-dom@^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18.0.0 || ^19.0.0", react-dom@^19.0.0, "react-dom@>= 16.8.0 < 19.0.0", react-dom@>=16:
|
||||||
version "19.0.0"
|
version "19.0.0"
|
||||||
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz"
|
resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz"
|
||||||
integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==
|
integrity sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==
|
||||||
@@ -7662,6 +7717,14 @@ react-fast-compare@^3.2.0:
|
|||||||
react-fast-compare "^3.2.0"
|
react-fast-compare "^3.2.0"
|
||||||
shallowequal "^1.1.0"
|
shallowequal "^1.1.0"
|
||||||
|
|
||||||
|
react-hot-toast@^2.5.2:
|
||||||
|
version "2.5.2"
|
||||||
|
resolved "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.5.2.tgz"
|
||||||
|
integrity sha512-Tun3BbCxzmXXM7C+NI4qiv6lT0uwGh4oAfeJyNOjYUejTsm35mK9iCaYLGv8cBz9L5YxZLx/2ii7zsIwPtPUdw==
|
||||||
|
dependencies:
|
||||||
|
csstype "^3.1.3"
|
||||||
|
goober "^2.1.16"
|
||||||
|
|
||||||
react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
|
react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
|
||||||
version "16.13.1"
|
version "16.13.1"
|
||||||
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
||||||
@@ -7679,7 +7742,7 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1:
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@babel/runtime" "^7.10.3"
|
"@babel/runtime" "^7.10.3"
|
||||||
|
|
||||||
"react-loadable@npm:@docusaurus/react-loadable@6.0.0":
|
react-loadable@*, "react-loadable@npm:@docusaurus/react-loadable@6.0.0":
|
||||||
version "6.0.0"
|
version "6.0.0"
|
||||||
resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz"
|
resolved "https://registry.npmjs.org/@docusaurus/react-loadable/-/react-loadable-6.0.0.tgz"
|
||||||
integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==
|
integrity sha512-YMMxTUQV/QFSnbgrP3tjDzLHRg7vsbMn8e9HAa8o/1iXoiomo48b7sk/kkmWEuWNDPJVlKSJRB6Y2fHqdJk+SQ==
|
||||||
@@ -7723,7 +7786,7 @@ react-router-dom@^5.3.4:
|
|||||||
tiny-invariant "^1.0.2"
|
tiny-invariant "^1.0.2"
|
||||||
tiny-warning "^1.0.0"
|
tiny-warning "^1.0.0"
|
||||||
|
|
||||||
react-router@5.3.4, react-router@^5.3.4:
|
react-router@^5.3.4, react-router@>=5, react-router@5.3.4:
|
||||||
version "5.3.4"
|
version "5.3.4"
|
||||||
resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz"
|
resolved "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz"
|
||||||
integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==
|
integrity sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==
|
||||||
@@ -7738,7 +7801,7 @@ react-router@5.3.4, react-router@^5.3.4:
|
|||||||
tiny-invariant "^1.0.2"
|
tiny-invariant "^1.0.2"
|
||||||
tiny-warning "^1.0.0"
|
tiny-warning "^1.0.0"
|
||||||
|
|
||||||
react@^19.0.0:
|
react@*, "react@^16.13.1 || ^17.0.0 || ^18.0.0", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.6.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18.0.0 || ^19.0.0", react@^19.0.0, "react@>= 16.8.0 < 19.0.0", react@>=15, react@>=16, react@>=16.0.0, react@>=18:
|
||||||
version "19.0.0"
|
version "19.0.0"
|
||||||
resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz"
|
resolved "https://registry.npmjs.org/react/-/react-19.0.0.tgz"
|
||||||
integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==
|
integrity sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==
|
||||||
@@ -8100,7 +8163,7 @@ run-parallel@^1.1.9:
|
|||||||
dependencies:
|
dependencies:
|
||||||
queue-microtask "^1.2.2"
|
queue-microtask "^1.2.2"
|
||||||
|
|
||||||
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
|
safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
|
||||||
version "5.2.1"
|
version "5.2.1"
|
||||||
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
|
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
|
||||||
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
||||||
@@ -8125,16 +8188,16 @@ scheduler@^0.25.0:
|
|||||||
resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz"
|
resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz"
|
||||||
integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==
|
integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==
|
||||||
|
|
||||||
schema-utils@2.7.0:
|
schema-utils@^3.0.0:
|
||||||
version "2.7.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
|
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
|
||||||
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
|
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
|
||||||
dependencies:
|
dependencies:
|
||||||
"@types/json-schema" "^7.0.4"
|
"@types/json-schema" "^7.0.8"
|
||||||
ajv "^6.12.2"
|
ajv "^6.12.5"
|
||||||
ajv-keywords "^3.4.1"
|
ajv-keywords "^3.5.2"
|
||||||
|
|
||||||
schema-utils@^3.0.0, schema-utils@^3.2.0:
|
schema-utils@^3.2.0:
|
||||||
version "3.3.0"
|
version "3.3.0"
|
||||||
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
|
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
|
||||||
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
|
integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
|
||||||
@@ -8153,6 +8216,20 @@ schema-utils@^4.0.0, schema-utils@^4.0.1, schema-utils@^4.3.0:
|
|||||||
ajv-formats "^2.1.1"
|
ajv-formats "^2.1.1"
|
||||||
ajv-keywords "^5.1.0"
|
ajv-keywords "^5.1.0"
|
||||||
|
|
||||||
|
schema-utils@2.7.0:
|
||||||
|
version "2.7.0"
|
||||||
|
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
|
||||||
|
integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
|
||||||
|
dependencies:
|
||||||
|
"@types/json-schema" "^7.0.4"
|
||||||
|
ajv "^6.12.2"
|
||||||
|
ajv-keywords "^3.4.1"
|
||||||
|
|
||||||
|
"search-insights@>= 1 < 3":
|
||||||
|
version "2.17.3"
|
||||||
|
resolved "https://registry.npmjs.org/search-insights/-/search-insights-2.17.3.tgz"
|
||||||
|
integrity sha512-RQPdCYTa8A68uM2jwxoY842xDhvx3E5LFL1LxvxCNMev4o5mLuokczhzjAgGwUZBAmOKZknArSxLKmXtIi2AxQ==
|
||||||
|
|
||||||
section-matter@^1.0.0:
|
section-matter@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz"
|
||||||
@@ -8439,7 +8516,7 @@ source-map-support@~0.5.20:
|
|||||||
buffer-from "^1.0.0"
|
buffer-from "^1.0.0"
|
||||||
source-map "^0.6.0"
|
source-map "^0.6.0"
|
||||||
|
|
||||||
source-map@^0.6.0, source-map@~0.6.0:
|
source-map@^0.6.0:
|
||||||
version "0.6.1"
|
version "0.6.1"
|
||||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
|
||||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
@@ -8449,6 +8526,11 @@ source-map@^0.7.0:
|
|||||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
|
||||||
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
|
integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
|
||||||
|
|
||||||
|
source-map@~0.6.0:
|
||||||
|
version "0.6.1"
|
||||||
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
|
||||||
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||||
|
|
||||||
space-separated-tokens@^2.0.0:
|
space-separated-tokens@^2.0.0:
|
||||||
version "2.0.2"
|
version "2.0.2"
|
||||||
resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
|
resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz"
|
||||||
@@ -8487,21 +8569,35 @@ srcset@^4.0.0:
|
|||||||
resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz"
|
resolved "https://registry.npmjs.org/srcset/-/srcset-4.0.0.tgz"
|
||||||
integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
|
integrity sha512-wvLeHgcVHKO8Sc/H/5lkGreJQVeYMm9rlmt8PuR1xE31rIuXhuzznUUqAt8MqLhB3MqJdFzlNAfpcWnxiFUcPw==
|
||||||
|
|
||||||
statuses@2.0.1:
|
|
||||||
version "2.0.1"
|
|
||||||
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
|
|
||||||
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
|
||||||
|
|
||||||
"statuses@>= 1.4.0 < 2":
|
"statuses@>= 1.4.0 < 2":
|
||||||
version "1.5.0"
|
version "1.5.0"
|
||||||
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
|
resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
|
||||||
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
|
integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
|
||||||
|
|
||||||
|
statuses@2.0.1:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
|
||||||
|
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
||||||
|
|
||||||
std-env@^3.7.0:
|
std-env@^3.7.0:
|
||||||
version "3.8.0"
|
version "3.8.0"
|
||||||
resolved "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz"
|
resolved "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz"
|
||||||
integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==
|
integrity sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==
|
||||||
|
|
||||||
|
string_decoder@^1.1.1:
|
||||||
|
version "1.3.0"
|
||||||
|
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
|
||||||
|
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
|
||||||
|
dependencies:
|
||||||
|
safe-buffer "~5.2.0"
|
||||||
|
|
||||||
|
string_decoder@~1.1.1:
|
||||||
|
version "1.1.1"
|
||||||
|
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
|
||||||
|
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
||||||
|
dependencies:
|
||||||
|
safe-buffer "~5.1.0"
|
||||||
|
|
||||||
"string-width-cjs@npm:string-width@^4.2.0":
|
"string-width-cjs@npm:string-width@^4.2.0":
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
||||||
@@ -8511,7 +8607,16 @@ std-env@^3.7.0:
|
|||||||
is-fullwidth-code-point "^3.0.0"
|
is-fullwidth-code-point "^3.0.0"
|
||||||
strip-ansi "^6.0.1"
|
strip-ansi "^6.0.1"
|
||||||
|
|
||||||
string-width@^4.1.0, string-width@^4.2.0:
|
string-width@^4.1.0:
|
||||||
|
version "4.2.3"
|
||||||
|
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
||||||
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
|
dependencies:
|
||||||
|
emoji-regex "^8.0.0"
|
||||||
|
is-fullwidth-code-point "^3.0.0"
|
||||||
|
strip-ansi "^6.0.1"
|
||||||
|
|
||||||
|
string-width@^4.2.0:
|
||||||
version "4.2.3"
|
version "4.2.3"
|
||||||
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
||||||
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
||||||
@@ -8529,20 +8634,6 @@ string-width@^5.0.1, string-width@^5.1.2:
|
|||||||
emoji-regex "^9.2.2"
|
emoji-regex "^9.2.2"
|
||||||
strip-ansi "^7.0.1"
|
strip-ansi "^7.0.1"
|
||||||
|
|
||||||
string_decoder@^1.1.1:
|
|
||||||
version "1.3.0"
|
|
||||||
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
|
|
||||||
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
|
|
||||||
dependencies:
|
|
||||||
safe-buffer "~5.2.0"
|
|
||||||
|
|
||||||
string_decoder@~1.1.1:
|
|
||||||
version "1.1.1"
|
|
||||||
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
|
|
||||||
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
|
||||||
dependencies:
|
|
||||||
safe-buffer "~5.1.0"
|
|
||||||
|
|
||||||
stringify-entities@^4.0.0:
|
stringify-entities@^4.0.0:
|
||||||
version "4.0.4"
|
version "4.0.4"
|
||||||
resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
|
resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
|
||||||
@@ -8836,7 +8927,7 @@ typedarray-to-buffer@^3.1.5:
|
|||||||
dependencies:
|
dependencies:
|
||||||
is-typedarray "^1.0.0"
|
is-typedarray "^1.0.0"
|
||||||
|
|
||||||
typescript@~5.6.2:
|
"typescript@>= 2.7", typescript@>=4.9.5, typescript@~5.6.2:
|
||||||
version "5.6.3"
|
version "5.6.3"
|
||||||
resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz"
|
resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz"
|
||||||
integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
|
integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==
|
||||||
@@ -8944,7 +9035,7 @@ universalify@^2.0.0:
|
|||||||
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
|
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
|
||||||
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
|
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
|
||||||
|
|
||||||
unpipe@1.0.0, unpipe@~1.0.0:
|
unpipe@~1.0.0, unpipe@1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
|
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
|
||||||
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
|
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
|
||||||
@@ -9160,7 +9251,7 @@ webpack-sources@^3.2.3:
|
|||||||
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
|
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
|
||||||
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
|
||||||
|
|
||||||
webpack@^5.88.1, webpack@^5.95.0:
|
"webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.88.1, webpack@^5.95.0, "webpack@>= 4", "webpack@>=4.41.1 || 5.x", webpack@>=5, "webpack@3 || 4 || 5":
|
||||||
version "5.97.1"
|
version "5.97.1"
|
||||||
resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz"
|
resolved "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz"
|
||||||
integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==
|
integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==
|
||||||
@@ -9203,7 +9294,7 @@ webpackbar@^6.0.1:
|
|||||||
std-env "^3.7.0"
|
std-env "^3.7.0"
|
||||||
wrap-ansi "^7.0.0"
|
wrap-ansi "^7.0.0"
|
||||||
|
|
||||||
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
|
websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
|
||||||
version "0.7.4"
|
version "0.7.4"
|
||||||
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
|
resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
|
||||||
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
|
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
|
||||||
@@ -9312,12 +9403,21 @@ yallist@^3.0.2:
|
|||||||
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
|
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
|
||||||
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
||||||
|
|
||||||
|
yaml-loader@^0.8.1:
|
||||||
|
version "0.8.1"
|
||||||
|
resolved "https://registry.npmjs.org/yaml-loader/-/yaml-loader-0.8.1.tgz"
|
||||||
|
integrity sha512-BCEndnUoi3BaZmePkwGGe93txRxLgMhBa/gE725v1/GHnura8QvNs7c4+4C1yyhhKoj3Dg63M7IqhA++15j6ww==
|
||||||
|
dependencies:
|
||||||
|
javascript-stringify "^2.0.1"
|
||||||
|
loader-utils "^2.0.0"
|
||||||
|
yaml "^2.0.0"
|
||||||
|
|
||||||
yaml@^1.7.2:
|
yaml@^1.7.2:
|
||||||
version "1.10.2"
|
version "1.10.2"
|
||||||
resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
|
resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
|
||||||
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
|
||||||
|
|
||||||
yaml@^2.3.4:
|
yaml@^2.0.0, yaml@^2.3.4:
|
||||||
version "2.7.0"
|
version "2.7.0"
|
||||||
resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz"
|
resolved "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz"
|
||||||
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
|
integrity sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==
|
||||||
|
|||||||
Reference in New Issue
Block a user