diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/README.md b/README.md index ff25f16..c71ba99 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,13 @@ -# Vanilla JS Frontend Template +# PwnFox -This template should be used as a starting point for creating a new plugin with a vanilla JS frontend. +Workflow to enable customization and coloring HTTP requests from the [PwnFox addon](https://github.com/yeswehack/PwnFox) -## Features +## Installation -- [pnpm](https://pnpm.io/) as package manager -- [TypeScript](https://www.typescriptlang.org/) +Install this plugin directly from the Caido store. + +## Usage + +This plugin installs a passive workflow that will automatically colorize them based on the custom rules defined in the PwnFox extension. + +Enable / disable the workflow from the Workflow page. diff --git a/manifest.json b/manifest.json index d99837b..021f6ad 100644 --- a/manifest.json +++ b/manifest.json @@ -12,7 +12,8 @@ { "kind": "workflow", "id": "pwnfox-passive", - "name": "Passive Workflow" + "name": "Passive Workflow", + "definition": "workflow/definition.json" } ] } diff --git a/packages/backend/package.json b/packages/backend/package.json deleted file mode 100644 index 19b032d..0000000 --- a/packages/backend/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "backend", - "version": "0.0.0", - "type": "module", - "types": "src/index.ts", - "scripts": { - "typecheck": "tsc --noEmit", - "build": "vite build" - }, - "devDependencies": { - "@caido/sdk-backend": "0.42.0" - } -} diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts deleted file mode 100644 index 70b1abc..0000000 --- a/packages/backend/src/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { DefineAPI, SDK } from "caido:plugin"; - -const generateRandomString = (sdk: SDK, length: number) => { - const randomString = Math.random().toString(36).substring(2, length + 2); - sdk.console.log(`Generating random string: ${randomString}`); - return randomString; -} - -export type API = DefineAPI<{ - generateRandomString: typeof generateRandomString; -}>; - -export function init(sdk: SDK) { - sdk.api.register("generateRandomString", generateRandomString); -} diff --git a/packages/backend/tsconfig.json b/packages/backend/tsconfig.json deleted file mode 100644 index 9dec401..0000000 --- a/packages/backend/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "types": ["@caido/sdk-backend"] - }, - "include": ["./src/**/*.ts"] -} diff --git a/packages/backend/vite.config.ts b/packages/backend/vite.config.ts deleted file mode 100644 index 1631618..0000000 --- a/packages/backend/vite.config.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { defineConfig } from "vite"; -import { resolve } from "path"; -import { builtinModules } from "module"; - -export default defineConfig({ - build: { - lib: { - entry: resolve(__dirname, "src/index.ts"), - name: "plugin-template-backend", - fileName: (format) => "script.js", - formats: ["es"], - }, - outDir: "../../dist/backend", - rollupOptions: { - external: [/caido:.+/, ...builtinModules], - output: { - manualChunks: undefined, - }, - }, - }, -}); diff --git a/packages/workflow/definition.json b/packages/workflow/definition.json new file mode 100644 index 0000000..5b0e392 --- /dev/null +++ b/packages/workflow/definition.json @@ -0,0 +1,907 @@ +{ + "description": "pwnfox", + "edition": 2, + "graph": { + "edges": [ + { + "source": { + "exec_alias": "exec", + "node_id": 4 + }, + "target": { + "exec_alias": "exec", + "node_id": 1 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 2 + }, + "target": { + "exec_alias": "exec", + "node_id": 3 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 0 + }, + "target": { + "exec_alias": "exec", + "node_id": 2 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 7 + }, + "target": { + "exec_alias": "exec", + "node_id": 8 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 8 + }, + "target": { + "exec_alias": "exec", + "node_id": 9 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 3 + }, + "target": { + "exec_alias": "exec", + "node_id": 4 + } + }, + { + "source": { + "exec_alias": "false", + "node_id": 3 + }, + "target": { + "exec_alias": "exec", + "node_id": 6 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 6 + }, + "target": { + "exec_alias": "exec", + "node_id": 7 + } + }, + { + "source": { + "exec_alias": "false", + "node_id": 7 + }, + "target": { + "exec_alias": "exec", + "node_id": 10 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 10 + }, + "target": { + "exec_alias": "exec", + "node_id": 11 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 11 + }, + "target": { + "exec_alias": "exec", + "node_id": 12 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 12 + }, + "target": { + "exec_alias": "exec", + "node_id": 13 + } + }, + { + "source": { + "exec_alias": "false", + "node_id": 11 + }, + "target": { + "exec_alias": "exec", + "node_id": 14 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 14 + }, + "target": { + "exec_alias": "exec", + "node_id": 15 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 16 + }, + "target": { + "exec_alias": "exec", + "node_id": 17 + } + }, + { + "source": { + "exec_alias": "false", + "node_id": 15 + }, + "target": { + "exec_alias": "exec", + "node_id": 18 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 18 + }, + "target": { + "exec_alias": "exec", + "node_id": 19 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 20 + }, + "target": { + "exec_alias": "exec", + "node_id": 21 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 24 + }, + "target": { + "exec_alias": "exec", + "node_id": 25 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 22 + }, + "target": { + "exec_alias": "exec", + "node_id": 23 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 19 + }, + "target": { + "exec_alias": "exec", + "node_id": 20 + } + }, + { + "source": { + "exec_alias": "false", + "node_id": 19 + }, + "target": { + "exec_alias": "exec", + "node_id": 22 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 15 + }, + "target": { + "exec_alias": "exec", + "node_id": 16 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 23 + }, + "target": { + "exec_alias": "exec", + "node_id": 24 + } + }, + { + "source": { + "exec_alias": "false", + "node_id": 23 + }, + "target": { + "exec_alias": "exec", + "node_id": 26 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 26 + }, + "target": { + "exec_alias": "exec", + "node_id": 27 + } + }, + { + "source": { + "exec_alias": "true", + "node_id": 27 + }, + "target": { + "exec_alias": "exec", + "node_id": 28 + } + }, + { + "source": { + "exec_alias": "exec", + "node_id": 28 + }, + "target": { + "exec_alias": "exec", + "node_id": 29 + } + } + ], + "nodes": [ + { + "alias": "on_intercept_request", + "definition_id": "caido/on-intercept-request", + "display": { + "x": -680, + "y": -340 + }, + "id": 0, + "inputs": [], + "name": "On intercept request", + "version": "0.1.0" + }, + { + "alias": "passive_end", + "definition_id": "caido/passive-end", + "display": { + "x": -690, + "y": 150 + }, + "id": 1, + "inputs": [], + "name": "Passive End", + "version": "0.1.0" + }, + { + "alias": "matches_httpql", + "definition_id": "caido/httpql-matches", + "display": { + "x": -680, + "y": -220 + }, + "id": 2, + "inputs": [ + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: yellow\"", + "kind": "string" + } + }, + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + } + ], + "name": "yellow", + "version": "0.1.0" + }, + { + "alias": "if_else", + "definition_id": "caido/if-else", + "display": { + "x": -680, + "y": -80 + }, + "id": 3, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql.matches", + "kind": "ref" + } + } + ], + "name": "If/Else", + "version": "0.1.0" + }, + { + "alias": "set_color", + "definition_id": "caido/color-set", + "display": { + "x": -690, + "y": 40 + }, + "id": 4, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "color", + "value": { + "data": "#D99E4A", + "kind": "string" + } + } + ], + "name": "Set Color", + "version": "0.1.0" + }, + { + "alias": "matches_httpql_1", + "definition_id": "caido/httpql-matches", + "display": { + "x": -480, + "y": -220 + }, + "id": 6, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: red\"", + "kind": "string" + } + } + ], + "name": "red", + "version": "0.1.0" + }, + { + "alias": "if_else_1", + "definition_id": "caido/if-else", + "display": { + "x": -490, + "y": -80 + }, + "id": 7, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql_1.matches", + "kind": "ref" + } + } + ], + "name": "If/Else 1", + "version": "0.1.0" + }, + { + "alias": "set_color_1", + "definition_id": "caido/color-set", + "display": { + "x": -500, + "y": 40 + }, + "id": 8, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "color", + "value": { + "data": "#e70606", + "kind": "string" + } + } + ], + "name": "Set Color 1", + "version": "0.1.0" + }, + { + "alias": "passive_end_1", + "definition_id": "caido/passive-end", + "display": { + "x": -500, + "y": 150 + }, + "id": 9, + "inputs": [], + "name": "Passive End 1", + "version": "0.1.0" + }, + { + "alias": "matches_httpql_2", + "definition_id": "caido/httpql-matches", + "display": { + "x": -300, + "y": -220 + }, + "id": 10, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: orange\"", + "kind": "string" + } + } + ], + "name": "orange", + "version": "0.1.0" + }, + { + "alias": "if_else_2", + "definition_id": "caido/if-else", + "display": { + "x": -300, + "y": -80 + }, + "id": 11, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql_2.matches", + "kind": "ref" + } + } + ], + "name": "If/Else 2", + "version": "0.1.0" + }, + { + "alias": "set_color_2", + "definition_id": "caido/color-set", + "display": { + "x": -310, + "y": 40 + }, + "id": 12, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "color", + "value": { + "data": "#e79106", + "kind": "string" + } + } + ], + "name": "Set Color 2", + "version": "0.1.0" + }, + { + "alias": "passive_end_2", + "definition_id": "caido/passive-end", + "display": { + "x": -310, + "y": 150 + }, + "id": 13, + "inputs": [], + "name": "Passive End 2", + "version": "0.1.0" + }, + { + "alias": "matches_httpql_3", + "definition_id": "caido/httpql-matches", + "display": { + "x": -110, + "y": -220 + }, + "id": 14, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: green\"", + "kind": "string" + } + } + ], + "name": "green", + "version": "0.1.0" + }, + { + "alias": "if_else_3", + "definition_id": "caido/if-else", + "display": { + "x": -110, + "y": -80 + }, + "id": 15, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql_3.matches", + "kind": "ref" + } + } + ], + "name": "If/Else 3", + "version": "0.1.0" + }, + { + "alias": "set_color_3", + "definition_id": "caido/color-set", + "display": { + "x": -120, + "y": 40 + }, + "id": 16, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "color", + "value": { + "data": "#6ce706", + "kind": "string" + } + } + ], + "name": "Set Color 3", + "version": "0.1.0" + }, + { + "alias": "passive_end_3", + "definition_id": "caido/passive-end", + "display": { + "x": -120, + "y": 150 + }, + "id": 17, + "inputs": [], + "name": "Passive End 3", + "version": "0.1.0" + }, + { + "alias": "matches_httpql_4", + "definition_id": "caido/httpql-matches", + "display": { + "x": 80, + "y": -220 + }, + "id": 18, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: magenta\"", + "kind": "string" + } + } + ], + "name": "magenta", + "version": "0.1.0" + }, + { + "alias": "if_else_4", + "definition_id": "caido/if-else", + "display": { + "x": 80, + "y": -80 + }, + "id": 19, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql_4.matches", + "kind": "ref" + } + } + ], + "name": "If/Else 4", + "version": "0.1.0" + }, + { + "alias": "set_color_4", + "definition_id": "caido/color-set", + "display": { + "x": 70, + "y": 40 + }, + "id": 20, + "inputs": [ + { + "alias": "color", + "value": { + "data": "#b406e7", + "kind": "string" + } + }, + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + } + ], + "name": "Set Color 4", + "version": "0.1.0" + }, + { + "alias": "passive_end_4", + "definition_id": "caido/passive-end", + "display": { + "x": 70, + "y": 150 + }, + "id": 21, + "inputs": [], + "name": "Passive End 4", + "version": "0.1.0" + }, + { + "alias": "matches_httpql_5", + "definition_id": "caido/httpql-matches", + "display": { + "x": 270, + "y": -220 + }, + "id": 22, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: cyan\"", + "kind": "string" + } + } + ], + "name": "cyan", + "version": "0.1.0" + }, + { + "alias": "if_else_5", + "definition_id": "caido/if-else", + "display": { + "x": 270, + "y": -80 + }, + "id": 23, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql_5.matches", + "kind": "ref" + } + } + ], + "name": "If/Else 5", + "version": "0.1.0" + }, + { + "alias": "set_color_5", + "definition_id": "caido/color-set", + "display": { + "x": 270, + "y": 40 + }, + "id": 24, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "color", + "value": { + "data": "#31cd6f", + "kind": "string" + } + } + ], + "name": "Set Color 5", + "version": "0.1.0" + }, + { + "alias": "passive_end_5", + "definition_id": "caido/passive-end", + "display": { + "x": 270, + "y": 150 + }, + "id": 25, + "inputs": [], + "name": "Passive End 5", + "version": "0.1.0" + }, + { + "alias": "matches_httpql_6", + "definition_id": "caido/httpql-matches", + "display": { + "x": 460, + "y": -220 + }, + "id": 26, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "query", + "value": { + "data": "req.raw.cont:\"X-PwnFox-Color: blue\"", + "kind": "string" + } + } + ], + "name": "blue", + "version": "0.1.0" + }, + { + "alias": "if_else_6", + "definition_id": "caido/if-else", + "display": { + "x": 460, + "y": -80 + }, + "id": 27, + "inputs": [ + { + "alias": "condition", + "value": { + "data": "$matches_httpql_6.matches", + "kind": "ref" + } + } + ], + "name": "If/Else 6", + "version": "0.1.0" + }, + { + "alias": "set_color_6", + "definition_id": "caido/color-set", + "display": { + "x": 450, + "y": 40 + }, + "id": 28, + "inputs": [ + { + "alias": "request", + "value": { + "data": "$on_intercept_request.request", + "kind": "ref" + } + }, + { + "alias": "color", + "value": { + "data": "#4094bf", + "kind": "string" + } + } + ], + "name": "Set Color 6", + "version": "0.1.0" + }, + { + "alias": "passive_end_6", + "definition_id": "caido/passive-end", + "display": { + "x": 460, + "y": 160 + }, + "id": 29, + "inputs": [], + "name": "Passive End 6", + "version": "0.1.0" + } + ] + }, + "id": "ccb99345-5d22-49f9-9e33-ed2bd4eea82b", + "kind": "passive", + "name": "pwnfox" + } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..5bf2192 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,641 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@caido/plugin-manifest': + specifier: 0.1.3 + version: 0.1.3 + jszip: + specifier: 3.10.1 + version: 3.10.1 + typescript: + specifier: 5.5.4 + version: 5.5.4 + vite: + specifier: 5.2.7 + version: 5.2.7 + +packages: + + '@caido/plugin-manifest@0.1.3': + resolution: {integrity: sha512-6PK/mIz2vIImgNFmc34Smiz86ifE+B962xz7uR4MPMxRaRlMlgfL8IvPkbpJyRaXb0mDDVqGzMB82HddpyGQSw==} + + '@esbuild/aix-ppc64@0.20.2': + resolution: {integrity: sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.20.2': + resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.20.2': + resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.20.2': + resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.20.2': + resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.20.2': + resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.20.2': + resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.20.2': + resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.20.2': + resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.20.2': + resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.20.2': + resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.20.2': + resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.20.2': + resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.20.2': + resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.20.2': + resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.20.2': + resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.20.2': + resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.20.2': + resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-x64@0.20.2': + resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.20.2': + resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.20.2': + resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.20.2': + resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.20.2': + resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@rollup/rollup-android-arm-eabi@4.24.2': + resolution: {integrity: sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.24.2': + resolution: {integrity: sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.24.2': + resolution: {integrity: sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.24.2': + resolution: {integrity: sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.24.2': + resolution: {integrity: sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.24.2': + resolution: {integrity: sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.24.2': + resolution: {integrity: sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.24.2': + resolution: {integrity: sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.24.2': + resolution: {integrity: sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.24.2': + resolution: {integrity: sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': + resolution: {integrity: sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.24.2': + resolution: {integrity: sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.24.2': + resolution: {integrity: sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.24.2': + resolution: {integrity: sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.24.2': + resolution: {integrity: sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.24.2': + resolution: {integrity: sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.24.2': + resolution: {integrity: sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.24.2': + resolution: {integrity: sha512-2mLH46K1u3r6uwc95hU+OR9q/ggYMpnS7pSp83Ece1HUQgF9Nh/QwTK5rcgbFnV9j+08yBrU5sA/P0RK2MSBNA==} + cpu: [x64] + os: [win32] + + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + esbuild@0.20.2: + resolution: {integrity: sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==} + engines: {node: '>=12'} + hasBin: true + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-uri@3.0.3: + resolution: {integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + postcss@8.4.47: + resolution: {integrity: sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==} + engines: {node: ^10 || ^12 || >=14} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + rollup@4.24.2: + resolution: {integrity: sha512-do/DFGq5g6rdDhdpPq5qb2ecoczeK6y+2UAjdJ5trjQJj5f1AiVdLRWRc9A9/fFukfvJRgM0UXzxBIYMovm5ww==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + typescript@5.5.4: + resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + engines: {node: '>=14.17'} + hasBin: true + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + vite@5.2.7: + resolution: {integrity: sha512-k14PWOKLI6pMaSzAuGtT+Cf0YmIx12z9YGon39onaJNy8DLBfBJrzg9FQEmkAM5lpHBZs9wksWAsyF/HkpEwJA==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@types/node': ^18.0.0 || >=20.0.0 + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + +snapshots: + + '@caido/plugin-manifest@0.1.3': + dependencies: + ajv: 8.17.1 + + '@esbuild/aix-ppc64@0.20.2': + optional: true + + '@esbuild/android-arm64@0.20.2': + optional: true + + '@esbuild/android-arm@0.20.2': + optional: true + + '@esbuild/android-x64@0.20.2': + optional: true + + '@esbuild/darwin-arm64@0.20.2': + optional: true + + '@esbuild/darwin-x64@0.20.2': + optional: true + + '@esbuild/freebsd-arm64@0.20.2': + optional: true + + '@esbuild/freebsd-x64@0.20.2': + optional: true + + '@esbuild/linux-arm64@0.20.2': + optional: true + + '@esbuild/linux-arm@0.20.2': + optional: true + + '@esbuild/linux-ia32@0.20.2': + optional: true + + '@esbuild/linux-loong64@0.20.2': + optional: true + + '@esbuild/linux-mips64el@0.20.2': + optional: true + + '@esbuild/linux-ppc64@0.20.2': + optional: true + + '@esbuild/linux-riscv64@0.20.2': + optional: true + + '@esbuild/linux-s390x@0.20.2': + optional: true + + '@esbuild/linux-x64@0.20.2': + optional: true + + '@esbuild/netbsd-x64@0.20.2': + optional: true + + '@esbuild/openbsd-x64@0.20.2': + optional: true + + '@esbuild/sunos-x64@0.20.2': + optional: true + + '@esbuild/win32-arm64@0.20.2': + optional: true + + '@esbuild/win32-ia32@0.20.2': + optional: true + + '@esbuild/win32-x64@0.20.2': + optional: true + + '@rollup/rollup-android-arm-eabi@4.24.2': + optional: true + + '@rollup/rollup-android-arm64@4.24.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.24.2': + optional: true + + '@rollup/rollup-darwin-x64@4.24.2': + optional: true + + '@rollup/rollup-freebsd-arm64@4.24.2': + optional: true + + '@rollup/rollup-freebsd-x64@4.24.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.24.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.24.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.24.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.24.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.24.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.24.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.24.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.24.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.24.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.24.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.24.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.24.2': + optional: true + + '@types/estree@1.0.6': {} + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.3 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + core-util-is@1.0.3: {} + + esbuild@0.20.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.20.2 + '@esbuild/android-arm': 0.20.2 + '@esbuild/android-arm64': 0.20.2 + '@esbuild/android-x64': 0.20.2 + '@esbuild/darwin-arm64': 0.20.2 + '@esbuild/darwin-x64': 0.20.2 + '@esbuild/freebsd-arm64': 0.20.2 + '@esbuild/freebsd-x64': 0.20.2 + '@esbuild/linux-arm': 0.20.2 + '@esbuild/linux-arm64': 0.20.2 + '@esbuild/linux-ia32': 0.20.2 + '@esbuild/linux-loong64': 0.20.2 + '@esbuild/linux-mips64el': 0.20.2 + '@esbuild/linux-ppc64': 0.20.2 + '@esbuild/linux-riscv64': 0.20.2 + '@esbuild/linux-s390x': 0.20.2 + '@esbuild/linux-x64': 0.20.2 + '@esbuild/netbsd-x64': 0.20.2 + '@esbuild/openbsd-x64': 0.20.2 + '@esbuild/sunos-x64': 0.20.2 + '@esbuild/win32-arm64': 0.20.2 + '@esbuild/win32-ia32': 0.20.2 + '@esbuild/win32-x64': 0.20.2 + + fast-deep-equal@3.1.3: {} + + fast-uri@3.0.3: {} + + fsevents@2.3.3: + optional: true + + immediate@3.0.6: {} + + inherits@2.0.4: {} + + isarray@1.0.0: {} + + json-schema-traverse@1.0.0: {} + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + nanoid@3.3.7: {} + + pako@1.0.11: {} + + picocolors@1.1.1: {} + + postcss@8.4.47: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + process-nextick-args@2.0.1: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + require-from-string@2.0.2: {} + + rollup@4.24.2: + dependencies: + '@types/estree': 1.0.6 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.24.2 + '@rollup/rollup-android-arm64': 4.24.2 + '@rollup/rollup-darwin-arm64': 4.24.2 + '@rollup/rollup-darwin-x64': 4.24.2 + '@rollup/rollup-freebsd-arm64': 4.24.2 + '@rollup/rollup-freebsd-x64': 4.24.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.24.2 + '@rollup/rollup-linux-arm-musleabihf': 4.24.2 + '@rollup/rollup-linux-arm64-gnu': 4.24.2 + '@rollup/rollup-linux-arm64-musl': 4.24.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.24.2 + '@rollup/rollup-linux-riscv64-gnu': 4.24.2 + '@rollup/rollup-linux-s390x-gnu': 4.24.2 + '@rollup/rollup-linux-x64-gnu': 4.24.2 + '@rollup/rollup-linux-x64-musl': 4.24.2 + '@rollup/rollup-win32-arm64-msvc': 4.24.2 + '@rollup/rollup-win32-ia32-msvc': 4.24.2 + '@rollup/rollup-win32-x64-msvc': 4.24.2 + fsevents: 2.3.3 + + safe-buffer@5.1.2: {} + + setimmediate@1.0.5: {} + + source-map-js@1.2.1: {} + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + typescript@5.5.4: {} + + util-deprecate@1.0.2: {} + + vite@5.2.7: + dependencies: + esbuild: 0.20.2 + postcss: 8.4.47 + rollup: 4.24.2 + optionalDependencies: + fsevents: 2.3.3