diff --git a/.github/prereleases/1-versions.mjs b/.github/prereleases/1-versions.mjs index 64b6df4f70a6..641c86f7124c 100644 --- a/.github/prereleases/1-versions.mjs +++ b/.github/prereleases/1-versions.mjs @@ -3,7 +3,8 @@ import { getPackagesForPrerelease, setPackage } from "./0-packages.mjs"; function getPrereleaseVersion() { const sha = execSync("git rev-parse --short HEAD", { encoding: "utf8" }); - return `0.0.0-${sha.trim()}`; + // Prefix with a `v` to ensure the version is always alphanumeric rather than just numeric (which can cause issues with some tools e.g vsce) + return `0.0.0-v${sha.trim()}`; } /** diff --git a/.github/prereleases/2-build-pack-upload.mjs b/.github/prereleases/2-build-pack-upload.mjs index 6b80b9d9768f..3008cc7e311b 100644 --- a/.github/prereleases/2-build-pack-upload.mjs +++ b/.github/prereleases/2-build-pack-upload.mjs @@ -42,12 +42,12 @@ function packPackage(pkg) { /** * @param {~Package} pkg - * @param {string} tarballPath + * @param {string} artifactPath */ -async function uploadPackageTarball(pkg, tarballPath) { +async function uploadPackageArtifact(pkg, artifactPath) { const name = getPrereleaseArtifactName(pkg.json.name); - console.log(`Uploading ${tarballPath} as ${name}...`); - await artifact.uploadArtifact(name, [tarballPath], pkg.path); + console.log(`Uploading ${artifactPath} as ${name}...`); + await artifact.uploadArtifact(name, [artifactPath], pkg.path); } { @@ -60,7 +60,15 @@ async function uploadPackageTarball(pkg, tarballPath) { pkgs.forEach(setPackage); for (const pkg of pkgs) { - const tarballPath = packPackage(pkg); - await uploadPackageTarball(pkg, tarballPath); + if (pkg.json["workers-sdk"].type === "extension") { + const filePath = path.join( + pkg.path, + `${pkg.json.name}-${pkg.json.version}.vsix` + ); + await uploadPackageArtifact(pkg, filePath); + } else { + const tarballPath = packPackage(pkg); + await uploadPackageArtifact(pkg, tarballPath); + } } } diff --git a/.github/prereleases/3-comment.mjs b/.github/prereleases/3-comment.mjs index 1463300163f8..2cee0fb5f26c 100644 --- a/.github/prereleases/3-comment.mjs +++ b/.github/prereleases/3-comment.mjs @@ -45,9 +45,12 @@ npx ${url} dev path/to/script.js */ function buildAdditionalArtifactReport(pkg) { const name = pkg.json.name; + const type = pkg.json["workers-sdk"].type; const url = getPrereleaseArtifactUrl(name); - if (name === "create-cloudflare") { + if (type === "cli") { return `\`\`\`sh\nnpx ${url} --no-auto-update\n\`\`\``; + } else if (type === "extension") { + return `\`\`\`sh\nwget ${url} -O ./${name}.${pkg.json.version}.vsix && code --install-extension ./${name}.${pkg.json.version}.vsix\n\`\`\``; } else { return `\`\`\`sh\nnpm install ${url}\n\`\`\``; } @@ -68,7 +71,7 @@ function buildReport(pkgs) { const additionalReports = pkgs.map(buildAdditionalArtifactReport); return `${wranglerReport} - +
Additional artifacts: ${additionalReports.join("\n\n")} diff --git a/.github/workflows/create-pullrequest-prerelease.yml b/.github/workflows/create-pullrequest-prerelease.yml index 6151ad8d7155..95fdd931511b 100644 --- a/.github/workflows/create-pullrequest-prerelease.yml +++ b/.github/workflows/create-pullrequest-prerelease.yml @@ -19,6 +19,11 @@ jobs: - name: Install Dependencies uses: ./.github/actions/install-dependencies + with: + turbo-api: ${{ secrets.TURBO_API }} + turbo-team: ${{ secrets.TURBO_TEAM }} + turbo-token: ${{ secrets.TURBO_TOKEN }} + turbo-signature: ${{ secrets.TURBO_REMOTE_CACHE_SIGNATURE_KEY }} - name: Build Miniflare # `extract-runtime-versions.mjs` needs to be able to resolve `miniflare`, but we want to have the correct diff --git a/fixtures/nodejs-hybrid-app/worker-configuration.d.ts b/fixtures/nodejs-hybrid-app/worker-configuration.d.ts index b6b7d77d04cd..64aed6d83c1e 100644 --- a/fixtures/nodejs-hybrid-app/worker-configuration.d.ts +++ b/fixtures/nodejs-hybrid-app/worker-configuration.d.ts @@ -1,5 +1,5 @@ -// Generated by Wrangler on Tue Mar 05 2024 16:04:07 GMT+0000 (Greenwich Mean Time) -// by running `wrangler types` +// Generated by Wrangler on Thu Aug 29 2024 19:37:30 GMT+0100 (British Summer Time) +// by running `wrangler types --x-include-runtime` interface Env { DB_HOSTNAME: "hh-pgsql-public.ebi.ac.uk"; diff --git a/fixtures/pages-nodejs-v2-compat/worker-configuration.d.ts b/fixtures/pages-nodejs-v2-compat/worker-configuration.d.ts new file mode 100644 index 000000000000..4d867552af6d --- /dev/null +++ b/fixtures/pages-nodejs-v2-compat/worker-configuration.d.ts @@ -0,0 +1,5 @@ +// Generated by Wrangler on Thu Aug 29 2024 19:37:32 GMT+0100 (British Summer Time) +// by running `wrangler types --x-include-runtime` + +interface Env { +} diff --git a/fixtures/worker-ts/src/index.ts b/fixtures/worker-ts/src/index.ts index 6a010a461e9d..a2e835fc0387 100644 --- a/fixtures/worker-ts/src/index.ts +++ b/fixtures/worker-ts/src/index.ts @@ -9,7 +9,7 @@ */ export interface Env { // Example binding to KV. Learn more at https://developers.cloudflare.com/workers/runtime-apis/kv/ - // MY_KV_NAMESPACE: KVNamespace; + MY_KV_NAMESPACE: KVNamespace; // // Example binding to Durable Object. Learn more at https://developers.cloudflare.com/workers/runtime-apis/durable-objects/ // MY_DURABLE_OBJECT: DurableObjectNamespace; @@ -27,8 +27,18 @@ export default { env: Env, ctx: ExecutionContext ): Promise { - const url = new URL(request.url); - if (url.pathname === "/error") throw new Error("Hello Error"); - return new Response("Hello World!"); + try { + await env.MY_KV_NAMESPACE.put("KEY", "VALUE"); + const value = await env.MY_KV_NAMESPACE.get("KEY"); + if (value === null) { + return new Response("Value not found", { status: 404 }); + } + return new Response(value); + } catch (err) { + // In a production application, you could instead choose to retry your KV + // read or fall back to a default code path. + console.error(`KV returned error: ${err}`); + return new Response(err, { status: 500 }); + } }, }; diff --git a/fixtures/worker-ts/worker-configuration.d.ts b/fixtures/worker-ts/worker-configuration.d.ts new file mode 100644 index 000000000000..c766aed91306 --- /dev/null +++ b/fixtures/worker-ts/worker-configuration.d.ts @@ -0,0 +1,7 @@ +// Generated by Wrangler on Fri Aug 30 2024 21:11:19 GMT+0100 (British Summer Time) +// by running `wrangler types --x-include-runtime` + +interface Env { + SOME: KVNamespace; + HELLO: "WORLD"; +} diff --git a/fixtures/worker-ts/wrangler.toml b/fixtures/worker-ts/wrangler.toml index 0404b911ae95..01e243c239d3 100644 --- a/fixtures/worker-ts/wrangler.toml +++ b/fixtures/worker-ts/wrangler.toml @@ -1,3 +1,17 @@ +#:schema node_modules/wrangler/config-schema.json + name = "worker-ts" main = "src/index.ts" compatibility_date = "2023-05-04" + +[vars] +HELLO="WORLD" + +[[d1_databases]] +binding = "MY_DB" + +[[kv_namespaces]] +binding = "MY_KV_NAMESPACE" + +[[r2_buckets]] +binding = "MY_BUCKET" diff --git a/packages/cloudflare-workers-bindings-extension/.eslintrc.json b/packages/cloudflare-workers-bindings-extension/.eslintrc.json new file mode 100644 index 000000000000..86c86f379da3 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.eslintrc.json @@ -0,0 +1,30 @@ +{ + "root": true, + "parser": "@typescript-eslint/parser", + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module" + }, + "plugins": [ + "@typescript-eslint" + ], + "rules": { + "@typescript-eslint/naming-convention": [ + "warn", + { + "selector": "import", + "format": [ "camelCase", "PascalCase" ] + } + ], + "@typescript-eslint/semi": "warn", + "curly": "warn", + "eqeqeq": "warn", + "no-throw-literal": "warn", + "semi": "off" + }, + "ignorePatterns": [ + "out", + "dist", + "**/*.d.ts" + ] +} \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/.npmrc b/packages/cloudflare-workers-bindings-extension/.npmrc new file mode 100644 index 000000000000..37d1b604190f --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.npmrc @@ -0,0 +1 @@ +enable-pre-post-scripts = true \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/.vscode-test.mjs b/packages/cloudflare-workers-bindings-extension/.vscode-test.mjs new file mode 100644 index 000000000000..b62ba25f015a --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.vscode-test.mjs @@ -0,0 +1,5 @@ +import { defineConfig } from '@vscode/test-cli'; + +export default defineConfig({ + files: 'out/test/**/*.test.js', +}); diff --git a/packages/cloudflare-workers-bindings-extension/.vscode/extensions.json b/packages/cloudflare-workers-bindings-extension/.vscode/extensions.json new file mode 100644 index 000000000000..d7a3ca11f7ec --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + // See http://go.microsoft.com/fwlink/?LinkId=827846 + // for the documentation about the extensions.json format + "recommendations": ["dbaeumer.vscode-eslint", "connor4312.esbuild-problem-matchers", "ms-vscode.extension-test-runner"] +} diff --git a/packages/cloudflare-workers-bindings-extension/.vscode/launch.json b/packages/cloudflare-workers-bindings-extension/.vscode/launch.json new file mode 100644 index 000000000000..c42edc04b042 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.vscode/launch.json @@ -0,0 +1,21 @@ +// A launch configuration that compiles the extension and then opens it inside a new window +// Use IntelliSense to learn about possible attributes. +// Hover to view descriptions of existing attributes. +// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Run Extension", + "type": "extensionHost", + "request": "launch", + "args": [ + "--extensionDevelopmentPath=${workspaceFolder}" + ], + "outFiles": [ + "${workspaceFolder}/dist/**/*.js" + ], + "preLaunchTask": "${defaultBuildTask}" + } + ] +} diff --git a/packages/cloudflare-workers-bindings-extension/.vscode/settings.json b/packages/cloudflare-workers-bindings-extension/.vscode/settings.json new file mode 100644 index 000000000000..5c5ac48c52c5 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.vscode/settings.json @@ -0,0 +1,13 @@ +// Place your settings in this file to overwrite default and user settings. +{ + "files.exclude": { + "out": false, // set this to true to hide the "out" folder with the compiled JS files + "dist": false // set this to true to hide the "dist" folder with the compiled JS files + }, + "search.exclude": { + "out": true, // set this to false to include "out" folder in search results + "dist": true // set this to false to include "dist" folder in search results + }, + // Turn off tsc task auto detection since we have the necessary tasks as npm scripts + "typescript.tsc.autoDetect": "off" +} \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/.vscode/tasks.json b/packages/cloudflare-workers-bindings-extension/.vscode/tasks.json new file mode 100644 index 000000000000..3cf99c37eaeb --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.vscode/tasks.json @@ -0,0 +1,64 @@ +// See https://go.microsoft.com/fwlink/?LinkId=733558 +// for the documentation about the tasks.json format +{ + "version": "2.0.0", + "tasks": [ + { + "label": "watch", + "dependsOn": [ + "npm: watch:tsc", + "npm: watch:esbuild" + ], + "presentation": { + "reveal": "never" + }, + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "type": "npm", + "script": "watch:esbuild", + "group": "build", + "problemMatcher": "$esbuild-watch", + "isBackground": true, + "label": "npm: watch:esbuild", + "presentation": { + "group": "watch", + "reveal": "never" + } + }, + { + "type": "npm", + "script": "watch:tsc", + "group": "build", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "label": "npm: watch:tsc", + "presentation": { + "group": "watch", + "reveal": "never" + } + }, + { + "type": "npm", + "script": "watch-tests", + "problemMatcher": "$tsc-watch", + "isBackground": true, + "presentation": { + "reveal": "never", + "group": "watchers" + }, + "group": "build" + }, + { + "label": "tasks: watch-tests", + "dependsOn": [ + "npm: watch", + "npm: watch-tests" + ], + "problemMatcher": [] + } + ] +} diff --git a/packages/cloudflare-workers-bindings-extension/.vscodeignore b/packages/cloudflare-workers-bindings-extension/.vscodeignore new file mode 100644 index 000000000000..b73723ab6739 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/.vscodeignore @@ -0,0 +1,14 @@ +.vscode/** +.vscode-test/** +out/** +node_modules/** +src/** +.gitignore +.yarnrc +esbuild.js +vsc-extension-quickstart.md +**/tsconfig.json +**/.eslintrc.json +**/*.map +**/*.ts +**/.vscode-test.* diff --git a/packages/cloudflare-workers-bindings-extension/CHANGELOG.md b/packages/cloudflare-workers-bindings-extension/CHANGELOG.md new file mode 100644 index 000000000000..e4a973d9267d --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/CHANGELOG.md @@ -0,0 +1,9 @@ +# Change Log + +All notable changes to the "cloudflare-workers-bindings-extension" extension will be documented in this file. + +Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file. + +## [Unreleased] + +- Initial release \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/README.md b/packages/cloudflare-workers-bindings-extension/README.md new file mode 100644 index 000000000000..32f848a8b60e --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/README.md @@ -0,0 +1 @@ +# cloudflare-workers-bindings-extension README diff --git a/packages/cloudflare-workers-bindings-extension/esbuild.js b/packages/cloudflare-workers-bindings-extension/esbuild.js new file mode 100644 index 000000000000..cc2be598a2ed --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/esbuild.js @@ -0,0 +1,56 @@ +const esbuild = require("esbuild"); + +const production = process.argv.includes('--production'); +const watch = process.argv.includes('--watch'); + +/** + * @type {import('esbuild').Plugin} + */ +const esbuildProblemMatcherPlugin = { + name: 'esbuild-problem-matcher', + + setup(build) { + build.onStart(() => { + console.log('[watch] build started'); + }); + build.onEnd((result) => { + result.errors.forEach(({ text, location }) => { + console.error(`✘ [ERROR] ${text}`); + console.error(` ${location.file}:${location.line}:${location.column}:`); + }); + console.log('[watch] build finished'); + }); + }, +}; + +async function main() { + const ctx = await esbuild.context({ + entryPoints: [ + 'src/extension.ts' + ], + bundle: true, + format: 'cjs', + minify: production, + sourcemap: !production, + sourcesContent: false, + platform: 'node', + outfile: 'dist/extension.js', + external: ['vscode'], + logLevel: 'silent', + plugins: [ + /* add to the end of plugins array */ + esbuildProblemMatcherPlugin, + ], + }); + if (watch) { + await ctx.watch(); + } else { + await ctx.rebuild(); + await ctx.dispose(); + } +} + +main().catch(e => { + console.error(e); + process.exit(1); +}); diff --git a/packages/cloudflare-workers-bindings-extension/media/cf-workers-logo.png b/packages/cloudflare-workers-bindings-extension/media/cf-workers-logo.png new file mode 100644 index 000000000000..45dc7363bb84 Binary files /dev/null and b/packages/cloudflare-workers-bindings-extension/media/cf-workers-logo.png differ diff --git a/packages/cloudflare-workers-bindings-extension/media/cf-workers-logo.svg b/packages/cloudflare-workers-bindings-extension/media/cf-workers-logo.svg new file mode 100644 index 000000000000..b5317770349a --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/media/cf-workers-logo.svg @@ -0,0 +1,66 @@ + + Cloudflare Workers logo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/media/dep.png b/packages/cloudflare-workers-bindings-extension/media/dep.png new file mode 100644 index 000000000000..9bb43d005cd5 Binary files /dev/null and b/packages/cloudflare-workers-bindings-extension/media/dep.png differ diff --git a/packages/cloudflare-workers-bindings-extension/package.json b/packages/cloudflare-workers-bindings-extension/package.json new file mode 100644 index 000000000000..309183bc7034 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/package.json @@ -0,0 +1,135 @@ +{ + "name": "cloudflare-workers-bindings-extension", + "displayName": "Cloudflare Workers", + "version": "0.0.5", + "description": "Manage your Cloudflare Worker's bindings", + "categories": [ + "Other" + ], + "repository": "https://github.com/cloudflare/workers-sdk", + "publisher": "cloudflare", + "main": "./dist/extension.js", + "scripts": { + "vscode:prepublish": "pnpm run package", + "compile": "pnpm run check-types && pnpm run lint && node esbuild.js", + "watch": "npm-run-all -p watch:*", + "watch:esbuild": "node esbuild.js --watch", + "watch:tsc": "tsc --noEmit --watch --project tsconfig.json", + "package": "pnpm run check-types && pnpm run lint && node esbuild.js --production", + "compile-tests": "tsc -p . --outDir out", + "watch-tests": "tsc -p . -w --outDir out", + "check-types": "tsc --noEmit", + "lint": "eslint src --ext ts", + "build": "vsce package", + "deploy": "vsce publish --pre-release" + }, + "contributes": { + "commands": [ + { + "command": "workerBindings.refreshEntry", + "title": "Refresh", + "icon": { + "light": "resources/light/refresh.svg", + "dark": "resources/dark/refresh.svg" + } + }, + { + "command": "workerBindings.addEntry", + "title": "Add", + "icon": "$(add)" + }, + { + "command": "workerBindings.editEntry", + "title": "Edit", + "icon": { + "light": "resources/light/edit.svg", + "dark": "resources/dark/edit.svg" + } + }, + { + "command": "workerBindings.deleteEntry", + "title": "Delete" + }, + { + "command": "workerBindings.selectNewBinding", + "title": "Select New Binding" + }, + { + "command": "samples.quickInput", + "title": "Quick Input Samples" + } + ], + "menus": { + "view/title": [ + { + "command": "workerBindings.refreshEntry", + "when": "view == workerBindings" + }, + { + "command": "workerBindings.addEntry", + "when": "view == workerBindings", + "group": "navigation" + } + ], + "view/item/context": [ + { + "command": "workerBindings.editEntry", + "when": "view == workerBindings && viewItem == dependency", + "group": "inline" + }, + { + "command": "workerBindings.deleteEntry", + "when": "view == workerBindings && viewItem == dependency" + } + ] + }, + "views": { + "cloudflare-workers-bindings": [ + { + "id": "workerBindings", + "name": "Bindings", + "icon": "resources/icons/cf-workers-logo.svg" + } + ] + }, + "viewsContainers": { + "activitybar": [ + { + "id": "cloudflare-workers-bindings", + "title": "Cloudflare Workers", + "icon": "media/cf-workers-logo.svg" + } + ] + } + }, + "activationEvents": [], + "dependencies": { + "cloudflare": "^3.5.0", + "undici": "^5.28.4" + }, + "devDependencies": { + "@types/mocha": "^10.0.7", + "@types/node": "20.x", + "@types/vscode": "^1.92.0", + "@typescript-eslint/eslint-plugin": "^7.14.1", + "@typescript-eslint/parser": "^7.11.0", + "@vscode/test-cli": "^0.0.9", + "@vscode/test-electron": "^2.4.0", + "esbuild": "^0.21.5", + "eslint": "^8.57.0", + "npm-run-all": "^4.1.5", + "typescript": "^5.4.5", + "vsce": "^2.15.0" + }, + "engines": { + "vscode": "^1.92.0" + }, + "icon": "media/cf-workers-logo.png", + "vsce": { + "dependencies": false + }, + "workers-sdk": { + "prerelease": true, + "type": "extension" + } +} diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/1.1.1.1.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/1.1.1.1.svg new file mode 100644 index 000000000000..aa5e105b0656 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/1.1.1.1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/aegis.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/aegis.svg new file mode 100644 index 000000000000..ef28eea7ce34 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/aegis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/ai-gateway.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/ai-gateway.svg new file mode 100644 index 000000000000..672fcad94ea5 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/ai-gateway.svg @@ -0,0 +1 @@ + diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/analytics.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/analytics.svg new file mode 100644 index 000000000000..0c42c3a5bf6d --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/analytics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/api-shield.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/api-shield.svg new file mode 100644 index 000000000000..6eaf0be3ee93 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/api-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/api.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/api.svg new file mode 100644 index 000000000000..2fa013484f94 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/api.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/argo-smart-routing.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/argo-smart-routing.svg new file mode 100644 index 000000000000..92aa318aaf37 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/argo-smart-routing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/automatic-platform-optimization.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/automatic-platform-optimization.svg new file mode 100644 index 000000000000..7b17f93a62fa --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/automatic-platform-optimization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/bots.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/bots.svg new file mode 100644 index 000000000000..3fbcb2ac2bf2 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/bots.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/browser-isolation.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/browser-isolation.svg new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/browser-rendering.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/browser-rendering.svg new file mode 100644 index 000000000000..8580eb994359 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/browser-rendering.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/byoip.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/byoip.svg new file mode 100644 index 000000000000..6dc44d9f254c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/byoip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/cache.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/cache.svg new file mode 100644 index 000000000000..9c2be00399c7 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/cache.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/calls.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/calls.svg new file mode 100644 index 000000000000..32a0b12fbedc --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/calls.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/china-network.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/china-network.svg new file mode 100644 index 000000000000..0934e7334f0c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/china-network.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/client-ip-geolocation.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/client-ip-geolocation.svg new file mode 100644 index 000000000000..74b2c0858a87 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/client-ip-geolocation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/cloudflare-for-platforms.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/cloudflare-for-platforms.svg new file mode 100644 index 000000000000..a1d1f4fddd62 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/cloudflare-for-platforms.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/cloudflare-one.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/cloudflare-one.svg new file mode 100644 index 000000000000..c2acb2f25f2e --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/cloudflare-one.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/constellation.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/constellation.svg new file mode 100644 index 000000000000..45f5971a9d38 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/constellation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/d1.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/d1.svg new file mode 100644 index 000000000000..55c242bc732f --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/d1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/data-localization.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/data-localization.svg new file mode 100644 index 000000000000..cd78fc274df1 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/data-localization.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/ddos-protection.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/ddos-protection.svg new file mode 100644 index 000000000000..21686d220451 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/ddos-protection.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/developer-spotlight.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/developer-spotlight.svg new file mode 100644 index 000000000000..35cee7cd6cbd --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/developer-spotlight.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/dmarc-management.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/dmarc-management.svg new file mode 100644 index 000000000000..397d8988328d --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/dmarc-management.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/dns.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/dns.svg new file mode 100644 index 000000000000..81ed47836094 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/dns.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/docs-guide.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/docs-guide.svg new file mode 100644 index 000000000000..1e5f7bb5c23e --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/docs-guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/durable-objects.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/durable-objects.svg new file mode 100644 index 000000000000..459a0d6a0c11 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/durable-objects.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/email-routing.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/email-routing.svg new file mode 100644 index 000000000000..3e4725a17ac0 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/email-routing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/email-security.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/email-security.svg new file mode 100644 index 000000000000..abff9c2ceef7 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/email-security.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/firewall.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/firewall.svg new file mode 100644 index 000000000000..fee544971d6a --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/firewall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/fundamentals.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/fundamentals.svg new file mode 100644 index 000000000000..de9340568452 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/fundamentals.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/health-checks.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/health-checks.svg new file mode 100644 index 000000000000..6683d54128da --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/health-checks.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/hyperdrive.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/hyperdrive.svg new file mode 100644 index 000000000000..b5a9991d3722 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/hyperdrive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/images.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/images.svg new file mode 100644 index 000000000000..e265f739357d --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/images.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/kv.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/kv.svg new file mode 100644 index 000000000000..aa5283cba381 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/kv.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/learning-paths.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/learning-paths.svg new file mode 100644 index 000000000000..7f4fc6519f52 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/learning-paths.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/load-balancing.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/load-balancing.svg new file mode 100644 index 000000000000..870a9f3553da --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/load-balancing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/logs.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/logs.svg new file mode 100644 index 000000000000..3677547ef6fe --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/logs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/magic-cloud-networking.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-cloud-networking.svg new file mode 100644 index 000000000000..c399eb55a161 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-cloud-networking.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/magic-firewall.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-firewall.svg new file mode 100644 index 000000000000..8ffe73a09dcb --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-firewall.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/magic-network-monitoring.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-network-monitoring.svg new file mode 100644 index 000000000000..8cf72800c835 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-network-monitoring.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/magic-transit.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-transit.svg new file mode 100644 index 000000000000..2581fe5c05bd --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-transit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/magic-wan.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-wan.svg new file mode 100644 index 000000000000..6a1ebd7621d3 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/magic-wan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/migration-guides.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/migration-guides.svg new file mode 100644 index 000000000000..3d029647e202 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/migration-guides.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/network-error-logging.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/network-error-logging.svg new file mode 100644 index 000000000000..77f7336aa072 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/network-error-logging.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/network-interconnect.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/network-interconnect.svg new file mode 100644 index 000000000000..c073e7ea9ddb --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/network-interconnect.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/network.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/network.svg new file mode 100644 index 000000000000..0934e7334f0c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/network.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/notifications.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/notifications.svg new file mode 100644 index 000000000000..b5dd0d023d0e --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/notifications.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/page-shield.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/page-shield.svg new file mode 100644 index 000000000000..720bbe7b550a --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/page-shield.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/pages.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/pages.svg new file mode 100644 index 000000000000..65fdde5d3394 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/pages.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/privacy-gateway.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/privacy-gateway.svg new file mode 100644 index 000000000000..b7245117f9b2 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/privacy-gateway.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/pub-sub.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/pub-sub.svg new file mode 100644 index 000000000000..5f394629cef7 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/pub-sub.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/pulumi.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/pulumi.svg new file mode 100644 index 000000000000..762932c3f1c7 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/pulumi.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/queues.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/queues.svg new file mode 100644 index 000000000000..98412a895954 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/queues.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/r2.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/r2.svg new file mode 100644 index 000000000000..c2c2e1f16f2a --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/r2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/radar.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/radar.svg new file mode 100644 index 000000000000..f6a64da267dd --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/radar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/randomness-beacon.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/randomness-beacon.svg new file mode 100644 index 000000000000..dec53b259664 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/randomness-beacon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/reference-architecture.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/reference-architecture.svg new file mode 100644 index 000000000000..2584b7f496b2 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/reference-architecture.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/registrar.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/registrar.svg new file mode 100644 index 000000000000..2aa3ef7303b0 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/registrar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/rules.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/rules.svg new file mode 100644 index 000000000000..3e821c07a811 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/rules.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/ruleset-engine.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/ruleset-engine.svg new file mode 100644 index 000000000000..dc2444cc5eee --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/ruleset-engine.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/security-center.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/security-center.svg new file mode 100644 index 000000000000..7a8b716b31d9 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/security-center.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/spectrum.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/spectrum.svg new file mode 100644 index 000000000000..eea5161ad531 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/spectrum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/speed.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/speed.svg new file mode 100644 index 000000000000..bfaf1e936c2c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/speed.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/ssl.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/ssl.svg new file mode 100644 index 000000000000..1839447536dc --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/ssl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/stream.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/stream.svg new file mode 100644 index 000000000000..f68186ed6ca0 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/stream.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/style-guide.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/style-guide.svg new file mode 100644 index 000000000000..1e5f7bb5c23e --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/style-guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/support.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/support.svg new file mode 100644 index 000000000000..24a3c10e832c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/support.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/tenant.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/tenant.svg new file mode 100644 index 000000000000..2dc0b87d8bf6 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/tenant.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/terraform.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/terraform.svg new file mode 100644 index 000000000000..49ea3c0cf535 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/terraform.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/time-services.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/time-services.svg new file mode 100644 index 000000000000..2f854fc41d1d --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/time-services.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/turnstile.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/turnstile.svg new file mode 100644 index 000000000000..933329052854 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/turnstile.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/use-cases.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/use-cases.svg new file mode 100644 index 000000000000..727a635ab601 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/use-cases.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/vectorize.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/vectorize.svg new file mode 100644 index 000000000000..138c47f35640 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/vectorize.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/version-management.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/version-management.svg new file mode 100644 index 000000000000..abef2e0c9021 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/version-management.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/waf.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/waf.svg new file mode 100644 index 000000000000..6c2217f01dd1 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/waf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/waiting-room.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/waiting-room.svg new file mode 100644 index 000000000000..94891ccb23f7 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/waiting-room.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/warp-client.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/warp-client.svg new file mode 100644 index 000000000000..fc1e9adfc6dc --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/warp-client.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/web-analytics.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/web-analytics.svg new file mode 100644 index 000000000000..42d6ba81e09e --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/web-analytics.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/web3.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/web3.svg new file mode 100644 index 000000000000..bd1ae9301663 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/web3.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/workers-ai.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/workers-ai.svg new file mode 100644 index 000000000000..62ba251acfb6 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/workers-ai.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/workers.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/workers.svg new file mode 100644 index 000000000000..e380abe7b44c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/workers.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/resources/icons/zaraz.svg b/packages/cloudflare-workers-bindings-extension/resources/icons/zaraz.svg new file mode 100644 index 000000000000..68ededda6f64 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/resources/icons/zaraz.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/cloudflare-workers-bindings-extension/src/api.ts b/packages/cloudflare-workers-bindings-extension/src/api.ts new file mode 100644 index 000000000000..0869508b8367 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/src/api.ts @@ -0,0 +1,35 @@ +import { readFile } from "fs/promises"; +import path from "path"; +import type Cloudflare from "cloudflare"; + +export async function getSdk(workspaceRoot: string): Promise { + const wrangler = path.join( + path.join( + workspaceRoot, + "node_modules", + "wrangler", + "wrangler-dist", + "cli.js" + ) + ); + + const { getSdk } = require(wrangler); + + return getSdk(); +} + +export async function parseTOML(workspaceRoot: string, file: string) { + const wrangler = path.join( + path.join( + workspaceRoot, + "node_modules", + "wrangler", + "wrangler-dist", + "cli.js" + ) + ); + + const { parseTOML } = require(wrangler); + + return parseTOML(await readFile(file, "utf8")); +} diff --git a/packages/cloudflare-workers-bindings-extension/src/basicInput.ts b/packages/cloudflare-workers-bindings-extension/src/basicInput.ts new file mode 100644 index 000000000000..d15991bd395d --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/src/basicInput.ts @@ -0,0 +1,34 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { window } from 'vscode'; + +/** + * Shows a pick list using window.showQuickPick(). + */ +export async function showQuickPick() { + let i = 0; + const result = await window.showQuickPick(['one', 'two', 'three'], { + placeHolder: 'one, two or three', + onDidSelectItem: item => window.showInformationMessage(`Focus ${++i}: ${item}`) + }); + window.showInformationMessage(`Got: ${result}`); +} + +/** + * Shows an input box using window.showInputBox(). + */ +export async function showInputBox() { + const result = await window.showInputBox({ + value: 'abcdef', + valueSelection: [2, 4], + placeHolder: 'For example: fedcba. But not: 123', + validateInput: text => { + window.showInformationMessage(`Validating: ${text}`); + return text === '123' ? 'Not 123!' : null; + } + }); + window.showInformationMessage(`Got: ${result}`); +} diff --git a/packages/cloudflare-workers-bindings-extension/src/extension.ts b/packages/cloudflare-workers-bindings-extension/src/extension.ts new file mode 100644 index 000000000000..2427b32a179a --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/src/extension.ts @@ -0,0 +1,132 @@ +import crypto from "crypto"; +import path from "path"; +import * as vscode from "vscode"; +import { getSdk } from "./api"; +import { showInputBox, showQuickPick } from "./basicInput"; +import { multiStepInput } from "./multiStepInput"; +import { quickOpen } from "./quickOpen"; +import { Binding, DepNodeProvider } from "./workerBindings"; + +const encoder = new TextEncoder(); +export async function activate(context: vscode.ExtensionContext) { + const rootPath = + vscode.workspace.workspaceFolders && + vscode.workspace.workspaceFolders.length > 0 + ? vscode.workspace.workspaceFolders[0].uri.fsPath + : undefined; + + // Samples of `window.registerTreeDataProvider` + const workerBindingsProvider = new DepNodeProvider(rootPath); + + const watcher = vscode.workspace.createFileSystemWatcher("**/wrangler.toml"); + + context.subscriptions.push(watcher); + watcher.onDidChange((uri) => { + console.log("really changed"); + workerBindingsProvider.refresh(); + }); // listen to files being changed + + vscode.window.registerTreeDataProvider( + "workerBindings", + workerBindingsProvider + ); + vscode.commands.registerCommand("workerBindings.refreshEntry", async () => { + workerBindingsProvider.refresh(); + console.log(await (await getSdk(rootPath!)).accounts.list()); + }); + vscode.commands.registerCommand("extension.openPackageOnNpm", (moduleName) => + vscode.commands.executeCommand( + "vscode.open", + vscode.Uri.parse(`https://www.npmjs.com/package/${moduleName}`) + ) + ); + vscode.commands.registerCommand("workerBindings.addEntry", async () => { + console.log(await multiStepInput(context, rootPath!)); + // let i = 0; + // const bindingtype = await vscode.window.showQuickPick(["kv", "r2", "d1"], { + // placeHolder: "Choose binding type", + // onDidSelectItem: (item) => + // vscode.window.showInformationMessage(`Focus ${++i}: ${item}`), + // }); + // if (bindingtype === undefined) { + // return; + // } + // const result = await vscode.window.showInputBox({ + // title: "Binding name?", + // value: "", + // valueSelection: [2, 4], + // placeHolder: "SOME_BINDING_NAME", + // validateInput: (text) => { + // vscode.window.showInformationMessage(`Validating: ${text}`); + // return text.toUpperCase() !== text ? "Not a valid binding name" : null; + // }, + // }); + // vscode.window.showInformationMessage(`Got: ${bindingtype} (${result})`); + + // await vscode.workspace + // .openTextDocument(vscode.Uri.file(path.join(rootPath!, "wrangler.toml"))) + // .then((doc) => { + // vscode.window.showTextDocument(doc); + // let text = doc.getText(); + + // if (bindingtype === "r2") { + // text += ` + + // [[r2_buckets]] + // binding = "${result}" + // bucket_name = "${crypto.randomUUID()}"`; + // } else if (bindingtype === "kv") { + // text += ` + + // [[kv_namespaces]] + // binding = "${result}"`; + // } else if (bindingtype === "d1") { + // text += ` + + // [[d1_databases]] + // binding = "${result}" + // database_id = "${crypto.randomUUID()}"`; + // } + + // vscode.workspace.fs.writeFile(doc.uri, encoder.encode(text)); + // }); + }); + vscode.commands.registerCommand("workerBindings.editEntry", (node: Binding) => + vscode.window.showInformationMessage( + `Successfully called edit entry on ${node.label}.` + ) + ); + vscode.commands.registerCommand( + "workerBindings.deleteEntry", + (node: Binding) => + vscode.window.showInformationMessage( + `Successfully called delete entry on ${node.label}.` + ) + ); + + context.subscriptions.push( + vscode.commands.registerCommand( + "workerBindings.selectNewBinding", + async () => { + const options: { + [key: string]: (context: vscode.ExtensionContext) => Promise; + } = { + showQuickPick, + showInputBox, + // @ts-ignore + multiStepInput, + quickOpen, + }; + const quickPick = vscode.window.createQuickPick(); + quickPick.items = Object.keys(options).map((label) => ({ label })); + quickPick.onDidChangeSelection((selection) => { + if (selection[0]) { + options[selection[0].label](context).catch(console.error); + } + }); + quickPick.onDidHide(() => quickPick.dispose()); + quickPick.show(); + } + ) + ); +} diff --git a/packages/cloudflare-workers-bindings-extension/src/multiStepInput.ts b/packages/cloudflare-workers-bindings-extension/src/multiStepInput.ts new file mode 100644 index 000000000000..82345487af47 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/src/multiStepInput.ts @@ -0,0 +1,445 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +import crypto from "crypto"; +import path from "path"; +import { setTimeout } from "timers/promises"; +import { + CancellationToken, + Disposable, + ExtensionContext, + QuickInput, + QuickInputButton, + QuickInputButtons, + QuickPickItem, + QuickPickItemKind, + ThemeIcon, + Uri, + window, + workspace, +} from "vscode"; +import { getSdk, parseTOML } from "./api"; + +const encoder = new TextEncoder(); +const kvApiResponse = { + result: [], + success: true, + errors: [], + messages: [], + result_info: { + page: 1, + per_page: 20, + count: 20, + total_count: 101, + total_pages: 5, + }, +}; +class BindingType implements QuickPickItem { + constructor( + public label: string, + public description?: string, + public detail?: string, + public iconPath?: Uri + ) {} +} +/** + * A multi-step input using window.createQuickPick() and window.createInputBox(). + * + * This first part uses the helper class `MultiStepInput` that wraps the API for the multi-step case. + */ +export async function multiStepInput( + context: ExtensionContext, + rootPath: string +) { + class MyButton implements QuickInputButton { + constructor( + public iconPath: ThemeIcon, + public tooltip: string + ) {} + } + + const createResourceGroupButton = new MyButton( + new ThemeIcon("search"), + "Search existing namespaces" + ); + + const bindingTypes: BindingType[] = [ + new BindingType( + "KV", + "kv_namespaces", + "Global, low-latency, key-value data storage", + Uri.file(context.asAbsolutePath("resources/icons/kv.svg")) + ), + new BindingType( + "R2", + "r2_buckets", + "Object storage for all your data", + Uri.file(context.asAbsolutePath("resources/icons/r2.svg")) + ), + new BindingType( + "D1", + "d1_databases", + "Serverless SQL databases", + Uri.file(context.asAbsolutePath("resources/icons/d1.svg")) + ), + ]; + + interface State { + title: string; + step: number; + totalSteps: number; + bindingType: BindingType; + name: string; + runtime: QuickPickItem; + id: string; + } + + async function collectInputs() { + const state = {} as Partial; + await MultiStepInput.run((input) => pickResourceGroup(input, state)); + return state as State; + } + + const title = "Add binding"; + + async function pickResourceGroup( + input: MultiStepInput, + state: Partial + ) { + const pick = await input.showQuickPick({ + title, + step: 1, + totalSteps: 3, + placeholder: "Choose a binding type", + items: bindingTypes, + activeItem: + typeof state.bindingType !== "string" ? state.bindingType : undefined, + // buttons: [createResourceGroupButton], + shouldResume: shouldResume, + }); + if (pick instanceof MyButton) { + return (input: MultiStepInput) => selectFromExisting(input, state); + } + state.bindingType = pick as BindingType; + return (input: MultiStepInput) => inputName(input, state); + } + + async function selectFromExisting( + input: MultiStepInput, + state: Partial + ) { + const sdk = await getSdk(rootPath); + console.log(sdk); + + const toml = await parseTOML( + rootPath, + path.join(rootPath, "wrangler.toml") + ); + console.log(toml); + // TODO: support Wrangler account ID inference + caching, with dialog to choose account + const kvNamespaces = await sdk.kv.namespaces.list({ + account_id: toml.account_id, + per_page: 100, + }); + let existing = await input.showQuickPick({ + title, + step: 2, + totalSteps: 4, + items: kvNamespaces.result.map( + (r) => + new BindingType( + r.title, + r.id, + undefined, + Uri.file(context.asAbsolutePath("resources/icons/kv.svg")) + ) + ), + placeholder: "Choose an existing KV namespace", + validate: validateNameIsUnique, + shouldResume: shouldResume, + }); + state.id = existing.description; + return (input: MultiStepInput) => inputName(input, state); + } + + async function inputName(input: MultiStepInput, state: Partial) { + const additionalSteps = typeof state.bindingType === "string" ? 1 : 0; + // TODO: Remember current value when navigating back. + let n = await input.showInputBox({ + title, + step: 2 + additionalSteps, + totalSteps: 3 + additionalSteps, + value: state.name || "", + prompt: "Choose a binding name (e.g. MY_BINDING)", + validate: validateNameIsUnique, + buttons: [createResourceGroupButton], + shouldResume: shouldResume, + }); + if (n instanceof MyButton) { + return (input: MultiStepInput) => selectFromExisting(input, state); + } + state.name = n as string; + return (input: MultiStepInput) => addToToml(input, state); + } + + async function addToToml(input: MultiStepInput, state: Partial) { + await workspace + .openTextDocument(Uri.file(path.join(rootPath!, "wrangler.toml"))) + .then((doc) => { + window.showTextDocument(doc); + let text = doc.getText(); + + if (state.bindingType?.description === "r2_buckets") { + text += ` + +[[r2_buckets]] +binding = "${state.name}" +bucket_name = "${crypto.randomUUID()}"`; + } else if (state.bindingType?.description === "kv_namespaces") { + text += ` + +[[kv_namespaces]] +binding = "${state.name}"${state.id ? `\nid = "${state.id}"` : ""}`; + } else if (state.bindingType?.description === "d1_databases") { + text += ` + +[[d1_databases]] +binding = "${state.name}" +database_id = "${crypto.randomUUID()}"`; + } + + workspace.fs.writeFile(doc.uri, encoder.encode(text)); + }); + } + + function shouldResume() { + // Could show a notification with the option to resume. + return new Promise((resolve, reject) => { + // noop + }); + } + + async function validateNameIsUnique(name: string) { + // TODO: actually validate uniqueness + return name === "SOME_KV_BINDING" ? "Name not unique" : undefined; + } + + const state = await collectInputs(); + window.showInformationMessage(`Creating Application Service '${state.name}'`); +} + +// ------------------------------------------------------- +// Helper code that wraps the API for the multi-step case. +// ------------------------------------------------------- + +class InputFlowAction { + static back = new InputFlowAction(); + static cancel = new InputFlowAction(); + static resume = new InputFlowAction(); +} + +type InputStep = (input: MultiStepInput) => Thenable; + +interface QuickPickParameters { + title: string; + step: number; + totalSteps: number; + items: T[]; + activeItem?: T; + ignoreFocusOut?: boolean; + placeholder: string; + buttons?: QuickInputButton[]; + shouldResume: () => Thenable; +} + +interface InputBoxParameters { + title: string; + step: number; + totalSteps: number; + value: string; + prompt: string; + validate: (value: string) => Promise; + buttons?: QuickInputButton[]; + ignoreFocusOut?: boolean; + placeholder?: string; + shouldResume: () => Thenable; +} + +export class MultiStepInput { + static async run(start: InputStep) { + const input = new MultiStepInput(); + return input.stepThrough(start); + } + + private current?: QuickInput; + private steps: InputStep[] = []; + + private async stepThrough(start: InputStep) { + let step: InputStep | void = start; + while (step) { + this.steps.push(step); + if (this.current) { + this.current.enabled = false; + this.current.busy = true; + } + try { + step = await step(this); + } catch (err) { + if (err === InputFlowAction.back) { + this.steps.pop(); + step = this.steps.pop(); + } else if (err === InputFlowAction.resume) { + step = this.steps.pop(); + } else if (err === InputFlowAction.cancel) { + step = undefined; + } else { + throw err; + } + } + } + if (this.current) { + this.current.dispose(); + } + } + + async showQuickPick< + T extends QuickPickItem, + P extends QuickPickParameters, + >({ + title, + step, + totalSteps, + items, + activeItem, + ignoreFocusOut, + placeholder, + buttons, + shouldResume, + }: P) { + const disposables: Disposable[] = []; + try { + return await new Promise< + T | (P extends { buttons: (infer I)[] } ? I : never) + >((resolve, reject) => { + const input = window.createQuickPick(); + input.title = title; + input.step = step; + input.totalSteps = totalSteps; + input.ignoreFocusOut = ignoreFocusOut ?? false; + input.placeholder = placeholder; + input.items = items; + if (activeItem) { + input.activeItems = [activeItem]; + } + input.buttons = [ + ...(this.steps.length > 1 ? [QuickInputButtons.Back] : []), + ...(buttons || []), + ]; + disposables.push( + input.onDidTriggerButton((item) => { + if (item === QuickInputButtons.Back) { + reject(InputFlowAction.back); + } else { + resolve(item); + } + }), + input.onDidChangeSelection((items) => resolve(items[0])), + input.onDidHide(() => { + (async () => { + reject( + shouldResume && (await shouldResume()) + ? InputFlowAction.resume + : InputFlowAction.cancel + ); + })().catch(reject); + }) + ); + if (this.current) { + this.current.dispose(); + } + this.current = input; + this.current.show(); + }); + } finally { + disposables.forEach((d) => d.dispose()); + } + } + + async showInputBox

({ + title, + step, + totalSteps, + value, + prompt, + validate, + buttons, + ignoreFocusOut, + placeholder, + shouldResume, + }: P) { + const disposables: Disposable[] = []; + try { + return await new Promise< + string | (P extends { buttons: (infer I)[] } ? I : never) + >((resolve, reject) => { + const input = window.createInputBox(); + input.title = title; + input.step = step; + input.totalSteps = totalSteps; + input.value = value || ""; + input.prompt = prompt; + input.ignoreFocusOut = ignoreFocusOut ?? false; + input.placeholder = placeholder; + input.buttons = [ + ...(this.steps.length > 1 ? [QuickInputButtons.Back] : []), + ...(buttons || []), + ]; + let validating = validate(""); + disposables.push( + input.onDidTriggerButton((item) => { + if (item === QuickInputButtons.Back) { + reject(InputFlowAction.back); + } else { + resolve(item); + } + }), + input.onDidAccept(async () => { + const value = input.value; + input.enabled = false; + input.busy = true; + if (!(await validate(value))) { + resolve(value); + } + input.enabled = true; + input.busy = false; + }), + input.onDidChangeValue(async (text) => { + const current = validate(text); + validating = current; + const validationMessage = await current; + if (current === validating) { + input.validationMessage = validationMessage; + } + }), + input.onDidHide(() => { + (async () => { + reject( + shouldResume && (await shouldResume()) + ? InputFlowAction.resume + : InputFlowAction.cancel + ); + })().catch(reject); + }) + ); + if (this.current) { + this.current.dispose(); + } + this.current = input; + this.current.show(); + }); + } finally { + disposables.forEach((d) => d.dispose()); + } + } +} diff --git a/packages/cloudflare-workers-bindings-extension/src/quickOpen.ts b/packages/cloudflare-workers-bindings-extension/src/quickOpen.ts new file mode 100644 index 000000000000..18f39a507159 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/src/quickOpen.ts @@ -0,0 +1,112 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as path from 'path'; +import * as cp from 'child_process'; +import { Uri, window, Disposable } from 'vscode'; +import { QuickPickItem } from 'vscode'; +import { workspace } from 'vscode'; + +/** + * A file opener using window.createQuickPick(). + * + * It shows how the list of items can be dynamically updated based on + * the user's input in the filter field. + */ +export async function quickOpen() { + const uri = await pickFile(); + if (uri) { + const document = await workspace.openTextDocument(uri); + await window.showTextDocument(document); + } +} + +class FileItem implements QuickPickItem { + + label: string; + description: string; + + constructor(public base: Uri, public uri: Uri) { + this.label = path.basename(uri.fsPath); + this.description = path.dirname(path.relative(base.fsPath, uri.fsPath)); + } +} + +class MessageItem implements QuickPickItem { + + label: string; + description = ''; + detail: string; + + constructor(public base: Uri, public message: string) { + this.label = message.replace(/\r?\n/g, ' '); + this.detail = base.fsPath; + } +} + +async function pickFile() { + const disposables: Disposable[] = []; + try { + return await new Promise((resolve, reject) => { + const input = window.createQuickPick(); + input.placeholder = 'Type to search for files'; + let rgs: cp.ChildProcess[] = []; + disposables.push( + input.onDidChangeValue(value => { + rgs.forEach(rg => rg.kill()); + if (!value) { + input.items = []; + return; + } + input.busy = true; + const cwds = workspace.workspaceFolders ? workspace.workspaceFolders.map(f => f.uri.fsPath) : [process.cwd()]; + const q = process.platform === 'win32' ? '"' : '\''; + rgs = cwds.map(cwd => { + const rg = cp.exec(`rg --files -g ${q}*${value}*${q}`, { cwd }, (err, stdout) => { + const i = rgs.indexOf(rg); + if (i !== -1) { + if (rgs.length === cwds.length) { + input.items = []; + } + if (!err) { + input.items = input.items.concat( + stdout + .split('\n').slice(0, 50) + .map(relative => new FileItem(Uri.file(cwd), Uri.file(path.join(cwd, relative)))) + ); + } + if (err && !(err).killed && (err).code !== 1 && err.message) { + input.items = input.items.concat([ + new MessageItem(Uri.file(cwd), err.message) + ]); + } + rgs.splice(i, 1); + if (!rgs.length) { + input.busy = false; + } + } + }); + return rg; + }); + }), + input.onDidChangeSelection(items => { + const item = items[0]; + if (item instanceof FileItem) { + resolve(item.uri); + input.hide(); + } + }), + input.onDidHide(() => { + rgs.forEach(rg => rg.kill()); + resolve(undefined); + input.dispose(); + }) + ); + input.show(); + }); + } finally { + disposables.forEach(d => d.dispose()); + } +} diff --git a/packages/cloudflare-workers-bindings-extension/src/workerBindings.ts b/packages/cloudflare-workers-bindings-extension/src/workerBindings.ts new file mode 100644 index 000000000000..cc24a817b92c --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/src/workerBindings.ts @@ -0,0 +1,114 @@ +import * as fs from "fs"; +import * as path from "path"; +import * as vscode from "vscode"; + +export class DepNodeProvider implements vscode.TreeDataProvider { + private _onDidChangeTreeData: vscode.EventEmitter< + Binding | undefined | void + > = new vscode.EventEmitter(); + readonly onDidChangeTreeData: vscode.Event = + this._onDidChangeTreeData.event; + + constructor(private workspaceRoot: string | undefined) {} + + refresh(): void { + this._onDidChangeTreeData.fire(); + } + + getTreeItem(element: Binding): vscode.TreeItem { + return element; + } + + getChildren(element?: Binding): Thenable { + if (!this.workspaceRoot) { + vscode.window.showInformationMessage("No dependency in empty workspace"); + return Promise.resolve([]); + } + + if (element) { + return Promise.resolve([]); + } else { + return this.getFromWranglerConfig(); + } + } + + private async getFromWranglerConfig() { + const wrangler = path.join( + path.join( + this.workspaceRoot!, + "node_modules", + "wrangler", + "wrangler-dist", + "cli.js" + ) + ); + + const { unstable_getMiniflareWorkerOptions } = require(wrangler); + + console.log(path.join(this.workspaceRoot!, "wrangler.toml")); + // TODO: multiroot workspaces + const options = await unstable_getMiniflareWorkerOptions( + path.join(this.workspaceRoot!, "wrangler.toml") + ); + console.log(options.workerOptions); + + function bindings(from: any, name: string, icon: string) { + return Object.entries(from).map( + ([n, v]) => + new Binding( + n, + name, + vscode.TreeItemCollapsibleState.None, + { + command: "extension.openPackageOnNpm", + title: "", + arguments: [n], + }, + icon + ) + ); + } + + return [ + ...bindings(options.workerOptions.bindings, "text", "workers"), + ...bindings(options.workerOptions.r2Buckets, "r2", "r2"), + ...bindings(options.workerOptions.kvNamespaces, "kv", "kv"), + ]; + } + + private pathExists(p: string): boolean { + try { + fs.accessSync(p); + } catch (err) { + return false; + } + + return true; + } +} + +export class Binding extends vscode.TreeItem { + constructor( + public readonly label: string, + private readonly version: string, + public readonly collapsibleState: vscode.TreeItemCollapsibleState, + public readonly command: vscode.Command, + type?: string + ) { + super(label, collapsibleState); + + this.tooltip = `${this.label}-${this.version}`; + this.description = this.version; + + this.iconPath = path.join( + __filename, + "..", + "..", + "resources", + "icons", + (type ?? "workers") + ".svg" + ); + } + + contextValue = "dependency"; +} diff --git a/packages/cloudflare-workers-bindings-extension/tsconfig.json b/packages/cloudflare-workers-bindings-extension/tsconfig.json new file mode 100644 index 000000000000..db5edf33b355 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "Node16", + "target": "ES2022", + "lib": ["ES2022"], + "sourceMap": true, + "rootDir": "src", + "strict": true, + "noEmit": true /* enable all strict type-checking options */ + /* Additional Checks */ + // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */ + // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */ + // "noUnusedParameters": true, /* Report errors on unused parameters. */ + } +} diff --git a/packages/cloudflare-workers-bindings-extension/vsc-extension-quickstart.md b/packages/cloudflare-workers-bindings-extension/vsc-extension-quickstart.md new file mode 100644 index 000000000000..f518bb846b12 --- /dev/null +++ b/packages/cloudflare-workers-bindings-extension/vsc-extension-quickstart.md @@ -0,0 +1,48 @@ +# Welcome to your VS Code Extension + +## What's in the folder + +* This folder contains all of the files necessary for your extension. +* `package.json` - this is the manifest file in which you declare your extension and command. + * The sample plugin registers a command and defines its title and command name. With this information VS Code can show the command in the command palette. It doesn’t yet need to load the plugin. +* `src/extension.ts` - this is the main file where you will provide the implementation of your command. + * The file exports one function, `activate`, which is called the very first time your extension is activated (in this case by executing the command). Inside the `activate` function we call `registerCommand`. + * We pass the function containing the implementation of the command as the second parameter to `registerCommand`. + +## Setup + +* install the recommended extensions (amodio.tsl-problem-matcher, ms-vscode.extension-test-runner, and dbaeumer.vscode-eslint) + + +## Get up and running straight away + +* Press `F5` to open a new window with your extension loaded. +* Run your command from the command palette by pressing (`Ctrl+Shift+P` or `Cmd+Shift+P` on Mac) and typing `Hello World`. +* Set breakpoints in your code inside `src/extension.ts` to debug your extension. +* Find output from your extension in the debug console. + +## Make changes + +* You can relaunch the extension from the debug toolbar after changing code in `src/extension.ts`. +* You can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes. + + +## Explore the API + +* You can open the full set of our API when you open the file `node_modules/@types/vscode/index.d.ts`. + +## Run tests + +* Install the [Extension Test Runner](https://marketplace.visualstudio.com/items?itemName=ms-vscode.extension-test-runner) +* Run the "watch" task via the **Tasks: Run Task** command. Make sure this is running, or tests might not be discovered. +* Open the Testing view from the activity bar and click the Run Test" button, or use the hotkey `Ctrl/Cmd + ; A` +* See the output of the test result in the Test Results view. +* Make changes to `src/test/extension.test.ts` or create new test files inside the `test` folder. + * The provided test runner will only consider files matching the name pattern `**.test.ts`. + * You can create folders inside the `test` folder to structure your tests any way you want. + +## Go further + +* Reduce the extension size and improve the startup time by [bundling your extension](https://code.visualstudio.com/api/working-with-extensions/bundling-extension). +* [Publish your extension](https://code.visualstudio.com/api/working-with-extensions/publishing-extension) on the VS Code extension marketplace. +* Automate builds by setting up [Continuous Integration](https://code.visualstudio.com/api/working-with-extensions/continuous-integration). diff --git a/packages/create-cloudflare/package.json b/packages/create-cloudflare/package.json index 07b38847328f..b072af2761ec 100644 --- a/packages/create-cloudflare/package.json +++ b/packages/create-cloudflare/package.json @@ -91,7 +91,8 @@ "node": ">=18.14.1" }, "workers-sdk": { - "prerelease": true + "prerelease": true, + "type": "cli" }, "volta": { "extends": "../../package.json" diff --git a/packages/wrangler/package.json b/packages/wrangler/package.json index 4f287e5a94b1..7d07dd697299 100644 --- a/packages/wrangler/package.json +++ b/packages/wrangler/package.json @@ -75,6 +75,7 @@ "@esbuild-plugins/node-modules-polyfill": "^0.2.2", "blake3-wasm": "^2.1.5", "chokidar": "^3.5.3", + "cloudflare": "^3.5.0", "esbuild": "0.17.19", "miniflare": "workspace:*", "nanoid": "^3.3.3", diff --git a/packages/wrangler/scripts/emit-types.ts b/packages/wrangler/scripts/emit-types.ts index 3651b906ddf8..065206d5f5b8 100644 --- a/packages/wrangler/scripts/emit-types.ts +++ b/packages/wrangler/scripts/emit-types.ts @@ -14,7 +14,9 @@ const packageJson = JSON.parse( const configObject = ExtractorConfig.loadFile(configObjectFullPath); // include the dependencies we want to bundle -configObject.bundledPackages = BUNDLED_DEPENDENCIES; +configObject.bundledPackages = BUNDLED_DEPENDENCIES.filter( + (d) => d !== "cloudflare" && d !== "@iarna/toml" +); const pkgRoot = path.resolve(__dirname, ".."); diff --git a/packages/wrangler/src/api/startDevWorker/ConfigController.ts b/packages/wrangler/src/api/startDevWorker/ConfigController.ts index 49ea954ee5b9..7e7e1ffba13c 100644 --- a/packages/wrangler/src/api/startDevWorker/ConfigController.ts +++ b/packages/wrangler/src/api/startDevWorker/ConfigController.ts @@ -132,6 +132,7 @@ async function resolveBindings( input: StartDevWorkerInput ): Promise<{ bindings: StartDevWorkerOptions["bindings"]; unsafe?: CfUnsafe }> { const bindings = getBindings(config, input.env, !input.dev?.remote, { + // @ts-expect-error fixme kv: extractBindingsOfType("kv_namespace", input.bindings), vars: Object.fromEntries( extractBindingsOfType("plain_text", input.bindings).map((b) => [ @@ -143,6 +144,7 @@ async function resolveBindings( "durable_object_namespace", input.bindings ), + // @ts-expect-error fixme r2: extractBindingsOfType("r2_bucket", input.bindings), services: extractBindingsOfType("service", input.bindings), d1Databases: extractBindingsOfType("d1", input.bindings), diff --git a/packages/wrangler/src/cfetch/internal.ts b/packages/wrangler/src/cfetch/internal.ts index e7cddb3a9bcb..73b8e27954ad 100644 --- a/packages/wrangler/src/cfetch/internal.ts +++ b/packages/wrangler/src/cfetch/internal.ts @@ -1,5 +1,6 @@ import assert from "node:assert"; -import { fetch, File, FormData, Headers, Response } from "undici"; +import Cloudflare, { ClientOptions } from "cloudflare"; +import { fetch, File, FormData, Headers, Request, Response } from "undici"; import { version as wranglerVersion } from "../../package.json"; import { getCloudflareApiBaseUrl } from "../environment-variables/misc-variables"; import { UserError } from "../errors"; @@ -117,6 +118,23 @@ export async function fetchInternal( } } +export function getSdk() { + return new Cloudflare({ + fetch: (async (info, init) => { + const request = new Request(info, init); + const url = new URL(request.url); + + return performApiFetch( + url.pathname.split("/client/v4")[1], + // @ts-ignore + { ...request }, + url.searchParams, + request.signal + ); + }) as ClientOptions["fetch"], + }); +} + function truncate(text: string, maxLength: number): string { const { length } = text; if (length <= maxLength) { diff --git a/packages/wrangler/src/cli.ts b/packages/wrangler/src/cli.ts index eea6469827db..99a8735cd658 100644 --- a/packages/wrangler/src/cli.ts +++ b/packages/wrangler/src/cli.ts @@ -58,3 +58,7 @@ const generateASSETSBinding: ( // eslint-disable-next-line @typescript-eslint/no-var-requires require("./miniflare-cli/assets").default; export { generateASSETSBinding as unstable_generateASSETSBinding }; + +export { getSdk } from "./cfetch/internal"; + +export { parseTOML } from "./parse"; diff --git a/packages/wrangler/src/config/environment.ts b/packages/wrangler/src/config/environment.ts index 1066efae3106..55cdffcb56c0 100644 --- a/packages/wrangler/src/config/environment.ts +++ b/packages/wrangler/src/config/environment.ts @@ -445,7 +445,7 @@ export interface EnvironmentNonInheritable { /** The binding name used to refer to the KV Namespace */ binding: string; /** The ID of the KV namespace */ - id: string; + id?: string; /** The ID of the KV namespace used during `wrangler dev` */ preview_id?: string; }[]; @@ -534,7 +534,7 @@ export interface EnvironmentNonInheritable { /** The binding name used to refer to the R2 bucket in the Worker. */ binding: string; /** The name of this R2 bucket at the edge. */ - bucket_name: string; + bucket_name?: string; /** The preview name of this R2 bucket at the edge. */ preview_bucket_name?: string; /** The jurisdiction that the bucket exists in. Default if not present. */ @@ -554,9 +554,9 @@ export interface EnvironmentNonInheritable { /** The binding name used to refer to the D1 database in the Worker. */ binding: string; /** The name of this D1 database. */ - database_name: string; + database_name?: string; /** The UUID of this D1 database (not required). */ - database_id: string; + database_id?: string; /** The UUID of this D1 database for Wrangler Dev (if specified). */ preview_database_id?: string; /** The name of the migrations table for this D1 database (defaults to 'd1_migrations'). */ diff --git a/packages/wrangler/src/config/index.ts b/packages/wrangler/src/config/index.ts index 6110ffa6e644..a739b5e16c0c 100644 --- a/packages/wrangler/src/config/index.ts +++ b/packages/wrangler/src/config/index.ts @@ -194,7 +194,10 @@ export function findWranglerToml( /** * Print all the bindings a worker using a given config would have access to */ -export function printBindings(bindings: CfWorkerInit["bindings"]) { +export function printBindings( + bindings: CfWorkerInit["bindings"], + creation?: boolean +) { const truncate = (item: string | Record) => { const s = typeof item === "string" ? item : JSON.stringify(item); const maxLength = 40; @@ -207,7 +210,7 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) { const output: { type: string; - entries: { key: string; value: string | boolean }[]; + entries: { key: string; value: string | boolean | undefined }[]; }[] = []; const { @@ -313,7 +316,7 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) { type: "D1 Databases", entries: d1_databases.map( ({ binding, database_name, database_id, preview_database_id }) => { - let databaseValue = `${database_id}`; + let databaseValue = database_id; if (database_name) { databaseValue = `${database_name} (${database_id})`; } @@ -542,12 +545,16 @@ export function printBindings(bindings: CfWorkerInit["bindings"]) { } const message = [ - `Your worker has access to the following bindings:`, + creation + ? `The following resources need provisioned:` + : `Your worker has access to the following bindings:`, ...output .map((bindingGroup) => { return [ `- ${bindingGroup.type}:`, - bindingGroup.entries.map(({ key, value }) => ` - ${key}: ${value}`), + bindingGroup.entries.map(({ key, value }) => + creation || !value ? ` - ${key}` : ` - ${key}: ${value}` + ), ]; }) .flat(2), diff --git a/packages/wrangler/src/config/validation.ts b/packages/wrangler/src/config/validation.ts index 80b2ac2774f9..135c581949ae 100644 --- a/packages/wrangler/src/config/validation.ts +++ b/packages/wrangler/src/config/validation.ts @@ -2387,10 +2387,7 @@ const validateKVBinding: ValidatorFn = (diagnostics, field, value) => { ); isValid = false; } - if ( - !isRequiredProperty(value, "id", "string") || - (value as { id: string }).id.length === 0 - ) { + if (!isOptionalProperty(value, "id", "string")) { diagnostics.errors.push( `"${field}" bindings should have a string "id" field but got ${JSON.stringify( value @@ -2549,10 +2546,7 @@ const validateR2Binding: ValidatorFn = (diagnostics, field, value) => { ); isValid = false; } - if ( - !isRequiredProperty(value, "bucket_name", "string") || - (value as { bucket_name: string }).bucket_name.length === 0 - ) { + if (!isOptionalProperty(value, "bucket_name", "string")) { diagnostics.errors.push( `"${field}" bindings should have a string "bucket_name" field but got ${JSON.stringify( value @@ -2610,7 +2604,7 @@ const validateD1Binding: ValidatorFn = (diagnostics, field, value) => { if ( // TODO: allow name only, where we look up the ID dynamically // !isOptionalProperty(value, "database_name", "string") && - !isRequiredProperty(value, "database_id", "string") + !isOptionalProperty(value, "database_id", "string") ) { diagnostics.errors.push( `"${field}" bindings must have a "database_id" field but got ${JSON.stringify( diff --git a/packages/wrangler/src/d1/create.tsx b/packages/wrangler/src/d1/create.tsx index 7c0a647353e6..b5d6622cc43b 100644 --- a/packages/wrangler/src/d1/create.tsx +++ b/packages/wrangler/src/d1/create.tsx @@ -13,6 +13,31 @@ import type { } from "../yargs-types"; import type { DatabaseCreationResult } from "./types"; +export async function createD1Database( + accountId: string, + name: string, + location?: string +) { + let db: DatabaseCreationResult; + try { + db = await fetchResult(`/accounts/${accountId}/d1/database`, { + method: "POST", + headers: { + "Content-Type": "application/json", + }, + body: JSON.stringify({ + name, + ...(location && { primary_location_hint: location }), + }), + }); + } catch (e) { + if ((e as { code: number }).code === 7502) { + throw new UserError("A database with that name already exists"); + } + throw e; + } + return db; +} export function Options(yargs: CommonYargsArgv) { return yargs .positional("name", { @@ -42,25 +67,7 @@ export const Handler = withConfig( ); } } - - let db: DatabaseCreationResult; - try { - db = await fetchResult(`/accounts/${accountId}/d1/database`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - name, - ...(location && { primary_location_hint: location }), - }), - }); - } catch (e) { - if ((e as { code: number }).code === 7502) { - throw new UserError("A database with that name already exists"); - } - throw e; - } + const db = await createD1Database(accountId, name, location); logger.log( renderToString( diff --git a/packages/wrangler/src/d1/utils.ts b/packages/wrangler/src/d1/utils.ts index 0b9972dc6f5c..9c8f17fb4872 100644 --- a/packages/wrangler/src/d1/utils.ts +++ b/packages/wrangler/src/d1/utils.ts @@ -18,6 +18,7 @@ export function getDatabaseInfoFromConfig( uuid: d1Database.database_id, previewDatabaseUuid: d1Database.preview_database_id, binding: d1Database.binding, + // @ts-expect-error fixme name: d1Database.database_name, migrationsTableName: d1Database.migrations_table || DEFAULT_MIGRATION_TABLE, diff --git a/packages/wrangler/src/deploy/deploy.ts b/packages/wrangler/src/deploy/deploy.ts index 1f2addecf685..40f20c7f9423 100644 --- a/packages/wrangler/src/deploy/deploy.ts +++ b/packages/wrangler/src/deploy/deploy.ts @@ -1,11 +1,14 @@ import assert from "node:assert"; +import { randomUUID } from "node:crypto"; import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; import path from "node:path"; import { URLSearchParams } from "node:url"; import { cancel } from "@cloudflare/cli"; +import { inputPrompt, spinner } from "@cloudflare/cli/interactive"; import { syncAssets } from "../assets"; import { fetchListResult, fetchResult } from "../cfetch"; import { printBindings } from "../config"; +import { createD1Database } from "../d1/create"; import { bundleWorker } from "../deployment-bundle/bundle"; import { printBundleSize, @@ -26,7 +29,8 @@ import { validateNodeCompatMode } from "../deployment-bundle/node-compat"; import { loadSourceMaps } from "../deployment-bundle/source-maps"; import { confirm } from "../dialogs"; import { getMigrationsToUpload } from "../durable"; -import { UserError } from "../errors"; +import { FatalError, UserError } from "../errors"; +import { createKVNamespace } from "../kv/helpers"; import { logger } from "../logger"; import { getMetricsUsageHeaders } from "../metrics"; import { isNavigatorDefined } from "../navigator-user-agent"; @@ -40,6 +44,7 @@ import { putConsumerById, putQueue, } from "../queues/client"; +import { createR2Bucket } from "../r2/helpers"; import { syncLegacyAssets } from "../sites"; import { getSourceMappedString, @@ -362,6 +367,158 @@ Update them to point to this script instead?`; return domains.map((domain) => renderRoute(domain)); } +// Find all bindings with undefined IDs. Either: +// - Leave them alone (if there's an existing binding with that name they can inherit from) +// - Prompt the user to create the binding and set the ID +// It currently only works with kv_namespaces +async function ensureBindingsExist( + dryRun: boolean | undefined, + accountId: string | undefined, + name: string, + bindings: CfWorkerInit["bindings"] +): Promise { + if (dryRun) { + return bindings; + } + + assert(accountId, "Missing accountId"); + let settings: { + bindings: { name: string }[]; + } = { bindings: [] }; + try { + settings = await fetchResult<{ + bindings: { name: string }[]; + }>(`/accounts/${accountId}/workers/scripts/${name}/settings`); + } catch {} + + const existingBindings = Object.fromEntries( + settings.bindings.map((b) => [b.name, b]) + ); + + const creators = []; + const toCreate: CfWorkerInit["bindings"] = { + vars: undefined, + kv_namespaces: undefined, + send_email: undefined, + wasm_modules: undefined, + text_blobs: undefined, + browser: undefined, + ai: undefined, + version_metadata: undefined, + data_blobs: undefined, + durable_objects: undefined, + queues: undefined, + r2_buckets: [], + d1_databases: undefined, + vectorize: undefined, + hyperdrive: undefined, + services: undefined, + analytics_engine_datasets: undefined, + dispatch_namespaces: undefined, + mtls_certificates: undefined, + logfwdr: undefined, + unsafe: undefined, + assets: undefined, + pipelines: undefined, + }; + + // First, figure out what bindings we need to create + for (const binding of bindings.kv_namespaces ?? []) { + // Is this a "draft" binding? + if (!binding.id) { + // Is it new in this deployment? + if (!existingBindings[binding.binding]) { + creators.push({ + name: binding.binding, + action: async () => { + const id = await createKVNamespace( + accountId, + `${binding.binding}-${randomUUID()}` + ); + binding.id = id; + }, + }); + toCreate.kv_namespaces ??= []; + toCreate.kv_namespaces.push(binding); + } + } + } + + for (const binding of bindings.r2_buckets ?? []) { + // Is this a "draft" binding? + if (!binding.bucket_name) { + // Is it new in this deployment? + if (!existingBindings[binding.binding]) { + creators.push({ + name: binding.binding, + action: async () => { + const bucketName = `${binding.binding}-${randomUUID()}` + .replaceAll("_", "-") + .toLowerCase(); + await createR2Bucket(accountId, bucketName, binding.jurisdiction); + binding.bucket_name = bucketName; + }, + }); + toCreate.r2_buckets ??= []; + toCreate.r2_buckets.push(binding); + } + } + } + + for (const binding of bindings.d1_databases ?? []) { + // Is this a "draft" binding? + if (!binding.database_id) { + // Is it new in this deployment? + if (!existingBindings[binding.binding]) { + creators.push({ + name: binding.binding, + action: async () => { + const db = await createD1Database( + accountId, + binding.database_name ?? `${binding.binding}-${randomUUID()}` + ); + binding.database_id = db.uuid; + }, + }); + toCreate.d1_databases ??= []; + toCreate.d1_databases.push(binding); + } + } + } + + if (creators.length === 0) { + return bindings; + } + + printBindings(toCreate, true); + + // Stylistic newline + logger.log(); + + const ok = await inputPrompt({ + type: "confirm", + question: + "Would you like Wrangler to provision these resources on your behalf and bind them to your Worker?", + label: "", + defaultValue: true, + }); + if (ok) { + const s = spinner(); + + s.start("Provisioning..."); + + // After asking the user, create the ones we need to create, mutating `bindings` in the process + for (const creator of creators) { + s.update(`Provisioning ${creator.name}`); + await creator.action(); + } + s.stop(`All resources provisioned, continuing deployment...`); + } else { + throw new FatalError("Deployment aborted"); + } + return bindings; +} + export default async function deploy(props: Props): Promise<{ sourceMapSize?: number; versionId: string | null; @@ -653,49 +810,54 @@ See https://developers.cloudflare.com/workers/platform/compatibility-dates for m props.oldAssetTtl ); - const bindings: CfWorkerInit["bindings"] = { - kv_namespaces: (config.kv_namespaces || []).concat( - legacyAssets.namespace - ? { binding: "__STATIC_CONTENT", id: legacyAssets.namespace } - : [] - ), - send_email: config.send_email, - vars: { ...config.vars, ...props.vars }, - wasm_modules: config.wasm_modules, - browser: config.browser, - ai: config.ai, - version_metadata: config.version_metadata, - text_blobs: { - ...config.text_blobs, - ...(legacyAssets.manifest && - format === "service-worker" && { - __STATIC_CONTENT_MANIFEST: "__STATIC_CONTENT_MANIFEST", - }), - }, - data_blobs: config.data_blobs, - durable_objects: config.durable_objects, - queues: config.queues.producers?.map((producer) => { - return { binding: producer.binding, queue_name: producer.queue }; - }), - r2_buckets: config.r2_buckets, - d1_databases: config.d1_databases, - vectorize: config.vectorize, - hyperdrive: config.hyperdrive, - services: config.services, - analytics_engine_datasets: config.analytics_engine_datasets, - dispatch_namespaces: config.dispatch_namespaces, - mtls_certificates: config.mtls_certificates, - pipelines: config.pipelines, - logfwdr: config.logfwdr, - assets: config.assets?.binding - ? { binding: config.assets.binding } - : undefined, - unsafe: { - bindings: config.unsafe.bindings, - metadata: config.unsafe.metadata, - capnp: config.unsafe.capnp, - }, - }; + const bindings: CfWorkerInit["bindings"] = await ensureBindingsExist( + props.dryRun, + accountId, + scriptName, + { + kv_namespaces: (config.kv_namespaces || []).concat( + legacyAssets.namespace + ? { binding: "__STATIC_CONTENT", id: legacyAssets.namespace } + : [] + ), + send_email: config.send_email, + vars: { ...config.vars, ...props.vars }, + wasm_modules: config.wasm_modules, + browser: config.browser, + ai: config.ai, + version_metadata: config.version_metadata, + text_blobs: { + ...config.text_blobs, + ...(legacyAssets.manifest && + format === "service-worker" && { + __STATIC_CONTENT_MANIFEST: "__STATIC_CONTENT_MANIFEST", + }), + }, + data_blobs: config.data_blobs, + durable_objects: config.durable_objects, + queues: config.queues.producers?.map((producer) => { + return { binding: producer.binding, queue_name: producer.queue }; + }), + r2_buckets: config.r2_buckets, + d1_databases: config.d1_databases, + vectorize: config.vectorize, + hyperdrive: config.hyperdrive, + services: config.services, + analytics_engine_datasets: config.analytics_engine_datasets, + dispatch_namespaces: config.dispatch_namespaces, + mtls_certificates: config.mtls_certificates, + logfwdr: config.logfwdr, + assets: config.assets?.binding + ? { binding: config.assets.binding } + : undefined, + unsafe: { + bindings: config.unsafe.bindings, + metadata: config.unsafe.metadata, + capnp: config.unsafe.capnp, + }, + pipelines: config.pipelines, + } + ); if (legacyAssets.manifest) { modules.push({ diff --git a/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts b/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts index 111936e25b71..e1332b08008a 100644 --- a/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts +++ b/packages/wrangler/src/deployment-bundle/create-worker-upload-form.ts @@ -208,6 +208,13 @@ export function createWorkerUploadForm(worker: CfWorkerInit): FormData { const metadataBindings: WorkerMetadataBinding[] = rawBindings ?? []; + function addInheritBinding(name: string) { + metadataBindings.push({ + name, + type: "inherit", + }); + } + Object.entries(bindings.vars || {})?.forEach(([key, value]) => { if (typeof value === "string") { metadataBindings.push({ name: key, type: "plain_text", text: value }); @@ -217,11 +224,15 @@ export function createWorkerUploadForm(worker: CfWorkerInit): FormData { }); bindings.kv_namespaces?.forEach(({ id, binding }) => { - metadataBindings.push({ - name: binding, - type: "kv_namespace", - namespace_id: id, - }); + if (id) { + metadataBindings.push({ + name: binding, + type: "kv_namespace", + namespace_id: id, + }); + } else { + addInheritBinding(binding); + } }); bindings.send_email?.forEach( @@ -257,22 +268,30 @@ export function createWorkerUploadForm(worker: CfWorkerInit): FormData { }); bindings.r2_buckets?.forEach(({ binding, bucket_name, jurisdiction }) => { - metadataBindings.push({ - name: binding, - type: "r2_bucket", - bucket_name, - jurisdiction, - }); + if (bucket_name) { + metadataBindings.push({ + name: binding, + type: "r2_bucket", + bucket_name, + jurisdiction, + }); + } else { + addInheritBinding(binding); + } }); bindings.d1_databases?.forEach( ({ binding, database_id, database_internal_env }) => { - metadataBindings.push({ - name: binding, - type: "d1", - id: database_id, - internalEnv: database_internal_env, - }); + if (database_id) { + metadataBindings.push({ + name: binding, + type: "d1", + id: database_id, + internalEnv: database_internal_env, + }); + } else { + addInheritBinding(binding); + } } ); diff --git a/packages/wrangler/src/deployment-bundle/worker.ts b/packages/wrangler/src/deployment-bundle/worker.ts index e1d772407bb0..52d0ec923931 100644 --- a/packages/wrangler/src/deployment-bundle/worker.ts +++ b/packages/wrangler/src/deployment-bundle/worker.ts @@ -81,7 +81,7 @@ export interface CfVars { */ export interface CfKvNamespace { binding: string; - id: string; + id?: string; } /** @@ -160,15 +160,15 @@ export interface CfQueue { export interface CfR2Bucket { binding: string; - bucket_name: string; + bucket_name?: string; jurisdiction?: string; } // TODO: figure out if this is duplicated in packages/wrangler/src/config/environment.ts export interface CfD1Database { binding: string; - database_id: string; - database_name: string; + database_id?: string; + database_name?: string; preview_database_id?: string; database_internal_env?: string; migrations_table?: string; diff --git a/packages/wrangler/src/dev/miniflare.ts b/packages/wrangler/src/dev/miniflare.ts index 87b8c8ee54a0..6a3828dc2628 100644 --- a/packages/wrangler/src/dev/miniflare.ts +++ b/packages/wrangler/src/dev/miniflare.ts @@ -318,13 +318,13 @@ async function buildSourceOptions( } function kvNamespaceEntry({ binding, id }: CfKvNamespace): [string, string] { - return [binding, id]; + return [binding, id ?? binding]; } function r2BucketEntry({ binding, bucket_name }: CfR2Bucket): [string, string] { - return [binding, bucket_name]; + return [binding, bucket_name ?? binding]; } function d1DatabaseEntry(db: CfD1Database): [string, string] { - return [db.binding, db.preview_database_id ?? db.database_id]; + return [db.binding, db.preview_database_id ?? db.database_id ?? db.binding]; } function queueProducerEntry( queue: CfQueue diff --git a/packages/wrangler/src/pages/dev.ts b/packages/wrangler/src/pages/dev.ts index 630e4bc71a41..b04fbaca5796 100644 --- a/packages/wrangler/src/pages/dev.ts +++ b/packages/wrangler/src/pages/dev.ts @@ -876,8 +876,10 @@ export const Handler = async (args: PagesDevArguments) => { compatibilityFlags, nodeCompat: nodejsCompatMode === "legacy", vars, + // @ts-expect-error fixme kv: kv_namespaces, durableObjects: do_bindings, + // @ts-expect-error fixme r2: r2_buckets, services, ai, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f647a614b2cd..ffd0512a3f0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,6 +6,12 @@ settings: catalogs: default: + '@vitest/runner': + specifier: ~2.1.1 + version: 2.1.1 + '@vitest/snapshot': + specifier: ~2.1.1 + version: 2.1.1 vitest: specifier: ~2.1.1 version: 2.1.1 @@ -107,7 +113,7 @@ importers: version: 5.0.12(@types/node@20.8.3) vitest: specifier: catalog:default - version: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + version: 2.1.1(@types/node@20.8.3) fixtures/additional-modules: devDependencies: @@ -155,7 +161,7 @@ importers: version: 5.28.4 vitest: specifier: catalog:default - version: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + version: 2.1.1(@types/node@20.8.3) wrangler: specifier: workspace:* version: link:../../packages/wrangler @@ -698,7 +704,7 @@ importers: version: 5.5.2 vitest: specifier: catalog:default - version: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + version: 2.1.1(@types/node@20.8.3) wrangler: specifier: workspace:* version: link:../../packages/wrangler @@ -798,6 +804,52 @@ importers: specifier: ^5.28.4 version: 5.28.4 + packages/cloudflare-workers-bindings-extension: + dependencies: + cloudflare: + specifier: ^3.5.0 + version: 3.5.0(encoding@0.1.13) + undici: + specifier: ^5.28.4 + version: 5.28.4 + devDependencies: + '@types/mocha': + specifier: ^10.0.7 + version: 10.0.8 + '@types/node': + specifier: 20.x + version: 20.8.3 + '@types/vscode': + specifier: ^1.92.0 + version: 1.93.0 + '@typescript-eslint/eslint-plugin': + specifier: ^7.14.1 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': + specifier: ^7.11.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@vscode/test-cli': + specifier: ^0.0.9 + version: 0.0.9 + '@vscode/test-electron': + specifier: ^2.4.0 + version: 2.4.1 + esbuild: + specifier: ^0.21.5 + version: 0.21.5 + eslint: + specifier: ^8.57.0 + version: 8.57.0 + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 + typescript: + specifier: ^5.4.5 + version: 5.5.4 + vsce: + specifier: ^2.15.0 + version: 2.15.0 + packages/create-cloudflare: devDependencies: '@babel/parser': @@ -1407,7 +1459,7 @@ importers: version: 5.28.4 vitest: specifier: catalog:default - version: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + version: 2.1.1(@types/node@20.8.3) packages/workers-editor-shared: dependencies: @@ -1620,7 +1672,7 @@ importers: version: 5.5.4 vitest: specifier: catalog:default - version: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + version: 2.1.1(@types/node@20.8.3) packages/workers-tsconfig: {} @@ -1643,7 +1695,7 @@ importers: version: 5.5.2 vitest: specifier: catalog:default - version: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + version: 2.1.1(@types/node@20.8.3) wrangler: specifier: workspace:* version: link:../wrangler @@ -1668,6 +1720,9 @@ importers: chokidar: specifier: ^3.5.3 version: 3.5.3 + cloudflare: + specifier: ^3.5.0 + version: 3.5.0(encoding@0.1.13) esbuild: specifier: 0.17.19 version: 0.17.19 @@ -2289,6 +2344,9 @@ packages: resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@bundled-es-modules/cookie@2.0.0': resolution: {integrity: sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==} @@ -2594,6 +2652,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.17.19': resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} engines: {node: '>=12'} @@ -2612,6 +2676,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.21.5': + resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.17.19': resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} engines: {node: '>=12'} @@ -2630,6 +2700,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.21.5': + resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.17.19': resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} engines: {node: '>=12'} @@ -2648,6 +2724,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.17.19': resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} engines: {node: '>=12'} @@ -2666,6 +2748,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.21.5': + resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.17.19': resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} engines: {node: '>=12'} @@ -2684,6 +2772,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.21.5': + resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.17.19': resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} engines: {node: '>=12'} @@ -2702,6 +2796,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.21.5': + resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.17.19': resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} engines: {node: '>=12'} @@ -2720,6 +2820,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.21.5': + resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.17.19': resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} engines: {node: '>=12'} @@ -2738,6 +2844,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.21.5': + resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.17.19': resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} engines: {node: '>=12'} @@ -2756,6 +2868,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.17.19': resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} engines: {node: '>=12'} @@ -2774,6 +2892,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.17.19': resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} engines: {node: '>=12'} @@ -2792,6 +2916,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.21.5': + resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.17.19': resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} engines: {node: '>=12'} @@ -2810,6 +2940,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.17.19': resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} engines: {node: '>=12'} @@ -2828,6 +2964,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.21.5': + resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.17.19': resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} engines: {node: '>=12'} @@ -2846,6 +2988,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.21.5': + resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.17.19': resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} engines: {node: '>=12'} @@ -2864,6 +3012,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.17.19': resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} engines: {node: '>=12'} @@ -2882,6 +3036,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.17.19': resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} engines: {node: '>=12'} @@ -2900,6 +3060,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-x64@0.17.19': resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} engines: {node: '>=12'} @@ -2918,6 +3084,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.17.19': resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} engines: {node: '>=12'} @@ -2936,6 +3108,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.17.19': resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} engines: {node: '>=12'} @@ -2954,6 +3132,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.17.19': resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} engines: {node: '>=12'} @@ -2972,6 +3156,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.21.5': + resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.17.19': resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} engines: {node: '>=12'} @@ -2990,6 +3180,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.4.0': resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3087,6 +3283,10 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -3729,6 +3929,9 @@ packages: '@types/is-ci@3.0.0': resolution: {integrity: sha512-Q0Op0hdWbYd1iahB+IFNQcWXFq4O0Q5MwQP7uN0souuQ4rPg1vEYcnIOfr1gY+M+6rc8FGoRaBO1mOOvL29sEQ==} + '@types/istanbul-lib-coverage@2.0.6': + resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + '@types/javascript-time-ago@2.0.3': resolution: {integrity: sha512-G6SdYh6gHxgCTU0s4cMIRHwRO4p3f7jQSZbDPfUOZpUAG1od3rTjT0e8rxGThUiTTWQHwpBRws8eHO8D2QqfkA==} @@ -3753,6 +3956,9 @@ packages: '@types/minimist@1.2.2': resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} + '@types/mocha@10.0.8': + resolution: {integrity: sha512-HfMcUmy9hTMJh66VNcmeC9iVErIZJli2bszuXc6julh5YGuRb/W5OnkHjwLNYdFlMis0sY3If5SEAp+PktdJjw==} + '@types/ms@0.7.31': resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==} @@ -3768,6 +3974,9 @@ packages: '@types/node@12.20.47': resolution: {integrity: sha512-BzcaRsnFuznzOItW1WpQrDHM7plAa7GIDMZ6b5pnMbkqEtM/6WCOhvZar39oeMQP79gwvFUWjjptE7/KGcNqFg==} + '@types/node@18.19.54': + resolution: {integrity: sha512-+BRgt0G5gYjTvdLac9sIeE0iZcJxi4Jc4PV5EUzqi+88jmQLr+fRZdv2tCTV7IHKSGxM6SaLoOXQWWUiLUItMw==} + '@types/node@20.12.12': resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} @@ -3853,6 +4062,9 @@ packages: '@types/uuid@9.0.4': resolution: {integrity: sha512-zAuJWQflfx6dYJM62vna+Sn5aeSWhh3OB+wfUEACNcqUSc0AGc5JKl+ycL1vrH7frGTXhJchYjE1Hak8L819dA==} + '@types/vscode@1.93.0': + resolution: {integrity: sha512-kUK6jAHSR5zY8ps42xuW89NLcBpw1kOabah7yv38J8MyiYuOHxLQBi0e7zeXbQgVefDy/mZZetqEFC+Fl5eIEQ==} + '@types/which-pm-runs@1.0.0': resolution: {integrity: sha512-BXfdlYLWvRhngJbih4N57DjO+63Z7AxiFiip8yq3rD46U7V4I2W538gngPvBsZiMehhD8sfGf4xLI6k7TgXvNw==} @@ -3888,6 +4100,17 @@ packages: typescript: optional: true + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/parser@6.10.0': resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3898,10 +4121,24 @@ packages: typescript: optional: true + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/scope-manager@6.10.0': resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/type-utils@6.10.0': resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3912,10 +4149,24 @@ packages: typescript: optional: true + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/types@6.10.0': resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + '@typescript-eslint/typescript-estree@6.10.0': resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} engines: {node: ^16.0.0 || >=18.0.0} @@ -3925,16 +4176,35 @@ packages: typescript: optional: true + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + '@typescript-eslint/utils@6.10.0': resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + '@typescript-eslint/visitor-keys@6.10.0': resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} engines: {node: ^16.0.0 || >=18.0.0} + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + '@ungap/structured-clone@1.2.0': resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} @@ -4005,6 +4275,15 @@ packages: '@volar/typescript@2.4.0-alpha.18': resolution: {integrity: sha512-sXh5Y8sqGUkgxpMWUGvRXggxYHAVxg0Pa1C42lQZuPDrW6vHJPR0VCK8Sr7WJsAW530HuNQT/ZIskmXtxjybMQ==} + '@vscode/test-cli@0.0.9': + resolution: {integrity: sha512-vsl5/ueE3Jf0f6XzB0ECHHMsd5A0Yu6StElb8a+XsubZW7kHNAOw4Y3TSSuDzKEpLnJ92nbMy1Zl+KLGCE6NaA==} + engines: {node: '>=18'} + hasBin: true + + '@vscode/test-electron@2.4.1': + resolution: {integrity: sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==} + engines: {node: '>=16'} + '@vue/compiler-core@3.3.4': resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==} @@ -4052,6 +4331,10 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + accepts@1.3.8: resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} engines: {node: '>= 0.6'} @@ -4092,6 +4375,10 @@ packages: resolution: {integrity: sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==} engines: {node: '>= 14'} + agentkeepalive@4.5.0: + resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} + engines: {node: '>= 8.0.0'} + aggregate-error@3.1.0: resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} engines: {node: '>=8'} @@ -4200,6 +4487,10 @@ packages: array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + array-buffer-byte-length@1.0.1: + resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} + engines: {node: '>= 0.4'} + array-find-index@1.0.2: resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} engines: {node: '>=0.10.0'} @@ -4234,6 +4525,10 @@ packages: resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==} engines: {node: '>= 0.4'} + arraybuffer.prototype.slice@1.0.3: + resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} + engines: {node: '>= 0.4'} + arrgv@1.0.2: resolution: {integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==} engines: {node: '>=8.0.0'} @@ -4302,6 +4597,13 @@ packages: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} engines: {node: '>= 0.4'} + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + azure-devops-node-api@11.2.0: + resolution: {integrity: sha512-XdiGPhrpaT5J8wdERRKs5g8E0Zy1pvOYTli7z9E8nmOn3YGp4FhtjhrOyFmX/8veWCwdI69mCHKJw6l+4J/bHA==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -4339,6 +4641,9 @@ packages: bl@4.1.0: resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + bl@5.1.0: + resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==} + blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} @@ -4349,6 +4654,9 @@ packages: resolution: {integrity: sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + boolean@3.2.0: resolution: {integrity: sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==} @@ -4375,6 +4683,9 @@ packages: browser-process-hrtime@1.0.0: resolution: {integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==} + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + browserslist@4.21.10: resolution: {integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -4423,6 +4734,11 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + c8@9.1.0: + resolution: {integrity: sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==} + engines: {node: '>=14.14.0'} + hasBin: true + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -4438,6 +4754,10 @@ packages: call-bind@1.0.2: resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -4460,6 +4780,10 @@ packages: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} engines: {node: '>=6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001520: resolution: {integrity: sha512-tahF5O9EiiTzwTUqAeFjIZbn4Dnqxzz7ktrgGlMYNLH43Ul26IgTMH/zvL3DG0lZxBYnlT04axvInszUsZULdA==} @@ -4517,6 +4841,13 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -4605,6 +4936,9 @@ packages: cliui@6.0.0: resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -4617,6 +4951,9 @@ packages: resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} engines: {node: '>=0.8'} + cloudflare@3.5.0: + resolution: {integrity: sha512-sIRZ4K2WQf8tZ74gZGan3u6+50VY1cB6uNc9XIGGLQa7Ti/nrvvadirm8EPVFlQMG11PUXPsX1Buheh4MPLiew==} + clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -4669,6 +5006,10 @@ packages: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + common-path-prefix@3.0.0: resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} @@ -4787,6 +5128,13 @@ packages: css-in-js-utils@3.1.0: resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + cssbeautify@0.3.1: resolution: {integrity: sha512-ljnSOCOiMbklF+dwPbpooyB78foId02vUrTDogWzu6ca2DCNB7Kc/BHEGBnYOlUYtwXvSW0mWTwaiO2pwFIoRg==} hasBin: true @@ -4823,6 +5171,18 @@ packages: resolution: {integrity: sha512-a9l6T1qqDogvvnw0nKlfZzqsyikEBZBClF39V3TFoKhDtGBqHu2HkuomJc02j5zft8zrUaXEuoicLeW54RkzPg==} engines: {node: '>= 14'} + data-view-buffer@1.0.1: + resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} + engines: {node: '>= 0.4'} + + data-view-byte-length@1.0.1: + resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} + engines: {node: '>= 0.4'} + + data-view-byte-offset@1.0.0: + resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} + engines: {node: '>= 0.4'} + dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} @@ -4888,6 +5248,10 @@ packages: resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} engines: {node: '>=0.10.0'} + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + decompress-response@6.0.0: resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} engines: {node: '>=10'} @@ -4926,6 +5290,10 @@ packages: resolution: {integrity: sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==} engines: {node: '>= 0.4'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + define-lazy-prop@2.0.0: resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} engines: {node: '>=8'} @@ -5006,6 +5374,10 @@ packages: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} @@ -5021,13 +5393,26 @@ packages: resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} engines: {node: '>=6.0.0'} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dom-urls@1.1.0: resolution: {integrity: sha512-LNxCeExaNbczqMVfQUyLdd+r+smG7ixIa+doeyiJ7nTmL8aZRrJhHkEYBEYVGvYv7k2DOEBh2eKthoCmWpfICg==} engines: {node: '>=0.8.0'} + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dompurify@2.4.7: resolution: {integrity: sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==} + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dot-case@2.1.1: resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} @@ -5097,16 +5482,30 @@ packages: resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} engines: {node: '>= 0.8'} + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} end-of-stream@1.4.4: resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enhanced-resolve@5.17.1: + resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} + engines: {node: '>=10.13.0'} + enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} + entities@2.1.0: + resolution: {integrity: sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + entities@5.0.0: resolution: {integrity: sha512-BeJFvFRJddxobhvEdm5GqHzRV/X+ACeuw0/BuuxsCh1EUZcAIz8+kYmBp/LrQuloy6K1f3a0M7+IhmZ7QnkISA==} engines: {node: '>=0.12'} @@ -5118,19 +5517,39 @@ packages: resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==} engines: {node: '>= 0.4'} + es-abstract@1.23.3: + resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} + engines: {node: '>= 0.4'} + es-array-method-boxes-properly@1.0.0: resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==} + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + es-iterator-helpers@1.0.15: resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} es-module-lexer@1.3.1: resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==} + es-object-atoms@1.0.0: + resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} + engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.1: resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==} engines: {node: '>= 0.4'} + es-set-tostringtag@2.0.3: + resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} + engines: {node: '>= 0.4'} + es-shim-unscopables@1.0.0: resolution: {integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==} @@ -5161,6 +5580,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -5353,6 +5777,10 @@ packages: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} @@ -5434,6 +5862,9 @@ packages: fastq@1.13.0: resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==} + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + fela-bindings@11.7.0: resolution: {integrity: sha512-Apnh7ji04CkEq/BsoRwujmsAZMkvb1tdFBEIJyKEQuNTU6taSA3mdAPLfgEHeZ0+krp7VDIoGgRrLYYS2WcjuA==} peerDependencies: @@ -5523,6 +5954,10 @@ packages: resolution: {integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==} engines: {node: ^10.12.0 || >=12.0.0} + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} @@ -5533,6 +5968,9 @@ packages: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} + form-data-encoder@1.7.2: + resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} + form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} @@ -5545,6 +5983,10 @@ packages: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} engines: {node: '>=0.4.x'} + formdata-node@4.4.1: + resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} + engines: {node: '>= 12.20'} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -5590,10 +6032,17 @@ packages: function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + function.prototype.name@1.1.5: resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==} engines: {node: '>= 0.4'} + function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + functions-have-names@1.2.3: resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} @@ -5620,6 +6069,10 @@ packages: get-intrinsic@1.2.1: resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==} + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + get-port@7.0.0: resolution: {integrity: sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==} engines: {node: '>=16'} @@ -5635,6 +6088,10 @@ packages: resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} engines: {node: '>= 0.4'} + get-symbol-description@1.0.2: + resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} + engines: {node: '>= 0.4'} + get-tsconfig@4.7.0: resolution: {integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==} @@ -5678,6 +6135,11 @@ packages: engines: {node: '>=12'} deprecated: Glob versions prior to v9 are no longer supported + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} @@ -5766,10 +6228,17 @@ packages: has-property-descriptors@1.0.0: resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + has-proto@1.0.1: resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} engines: {node: '>= 0.4'} + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + has-symbols@1.0.3: resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} engines: {node: '>= 0.4'} @@ -5778,6 +6247,10 @@ packages: resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} engines: {node: '>= 0.4'} + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -5785,6 +6258,10 @@ packages: resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} engines: {node: '>= 0.4.0'} + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true @@ -5805,9 +6282,19 @@ packages: hosted-git-info@2.8.9: resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + html-rewriter-wasm@0.4.1: resolution: {integrity: sha512-lNovG8CMCCmcVB1Q7xggMSf7tqPCijZXaH4gL6iE8BFghdQCbaY5Met9i1x2Ex8m/cZHDUtXK9H6/znKamRP8Q==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-cache-semantics@4.1.0: resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} @@ -5822,6 +6309,10 @@ packages: resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} engines: {node: '>= 14'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + http-terminator@3.2.0: resolution: {integrity: sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==} engines: {node: '>=14'} @@ -5838,6 +6329,10 @@ packages: resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} engines: {node: '>= 14'} + https-proxy-agent@7.0.5: + resolution: {integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==} + engines: {node: '>= 14'} + human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} @@ -5853,6 +6348,9 @@ packages: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} + humanize-ms@1.2.1: + resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} + hyphenate-style-name@1.0.4: resolution: {integrity: sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==} @@ -5964,6 +6462,10 @@ packages: resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==} engines: {node: '>= 0.4'} + internal-slot@1.0.7: + resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} + engines: {node: '>= 0.4'} + io-ts@2.2.19: resolution: {integrity: sha512-ED0GQwvKRr5C2jqOOJCkuJW2clnbzqFexQ8V7Qsb+VB36S1Mk/OKH7k0FjSe4mjKy9qBRA3OqgVGyFMUEKIubw==} peerDependencies: @@ -5990,6 +6492,10 @@ packages: is-array-buffer@3.0.2: resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + is-array-buffer@3.0.4: + resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} + engines: {node: '>= 0.4'} + is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} @@ -6023,6 +6529,10 @@ packages: is-core-module@2.13.0: resolution: {integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==} + is-data-view@1.0.1: + resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} + engines: {node: '>= 0.4'} + is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} @@ -6069,6 +6579,10 @@ packages: resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} engines: {node: '>=8'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + is-lower-case@1.1.3: resolution: {integrity: sha512-+5A1e/WJpLLXZEDlgz4G//WYSHyQBD32qa4Jd3Lw06qQlv3fJHnp3YIHjTQSGzHMgzmVKz2ZP3rBxTHkPw/lxA==} @@ -6083,6 +6597,10 @@ packages: resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} engines: {node: '>= 0.4'} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-node-process@1.2.0: resolution: {integrity: sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==} @@ -6135,6 +6653,10 @@ packages: is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + is-shared-array-buffer@1.0.3: + resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} + engines: {node: '>= 0.4'} + is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} @@ -6159,10 +6681,18 @@ packages: resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} engines: {node: '>= 0.4'} + is-typed-array@1.1.13: + resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} + engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + is-unicode-supported@2.0.0: resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} engines: {node: '>=18'} @@ -6204,6 +6734,18 @@ packages: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + iterator.prototype@1.1.2: resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} @@ -6258,6 +6800,9 @@ packages: json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} @@ -6301,6 +6846,9 @@ packages: jwt-decode@3.1.2: resolution: {integrity: sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==} + keytar@7.9.0: + resolution: {integrity: sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==} + keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} @@ -6326,6 +6874,10 @@ packages: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} engines: {node: '>= 0.6.3'} + leven@3.1.0: + resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} + engines: {node: '>=6'} + levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} @@ -6339,6 +6891,13 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@3.0.3: + resolution: {integrity: sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==} + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + load-json-file@7.0.1: resolution: {integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6428,6 +6987,10 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + log-symbols@5.1.0: + resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} + engines: {node: '>=12'} + log-update@5.0.1: resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -6499,6 +7062,10 @@ packages: resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} engines: {node: '>=8'} + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + make-error@1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -6510,6 +7077,10 @@ packages: resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} engines: {node: '>=8'} + markdown-it@12.3.2: + resolution: {integrity: sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==} + hasBin: true + marked@0.3.19: resolution: {integrity: sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==} engines: {node: '>=0.10.0'} @@ -6531,6 +7102,9 @@ packages: resolution: {integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==} engines: {node: '>=8'} + mdurl@1.0.1: + resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -6539,6 +7113,10 @@ packages: resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} engines: {node: '>=18'} + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -6621,6 +7199,10 @@ packages: resolution: {integrity: sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==} engines: {node: '>=10'} + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + minimatch@9.0.1: resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} engines: {node: '>=16 || 14 >=14.17'} @@ -6679,6 +7261,11 @@ packages: mlly@1.4.2: resolution: {integrity: sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==} + mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} + engines: {node: '>= 14.0.0'} + hasBin: true + mock-socket@9.3.1: resolution: {integrity: sha512-qxBgB7Qa2sEQgHFjj0dSigq7fX4k6Saisd5Nelwp2q8mlbAFh5dHV9JTTlF8viYJLSSWgMCZFUom8PJcMNBoJw==} engines: {node: '>= 8'} @@ -6763,6 +7350,13 @@ packages: resolution: {integrity: sha512-CPMcGa+y33xuL1E0TcNIu4YyaZCxnnvkVaEXrsosR3FxN+fV8xvb7Mzpb7IgKler10qeMkE6+Dp8qJhpzdq35g==} engines: {node: '>=10'} + node-addon-api@4.3.0: + resolution: {integrity: sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==} + + node-domexception@1.0.0: + resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} + engines: {node: '>=10.5.0'} + node-fetch@2.6.11: resolution: {integrity: sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==} engines: {node: 4.x || >=6.0.0} @@ -6813,6 +7407,11 @@ packages: resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} engines: {node: '>=14.16'} + npm-run-all@4.1.5: + resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==} + engines: {node: '>= 4'} + hasBin: true + npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} engines: {node: '>=8'} @@ -6828,6 +7427,9 @@ packages: npx-import@1.1.4: resolution: {integrity: sha512-3ShymTWOgqGyNlh5lMJAejLuIv3W1K3fbI5Ewc6YErZU3Sp0PqsNs8UIU1O8z5+KVl/Du5ag56Gza9vdorGEoA==} + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -6839,6 +7441,10 @@ packages: object-inspect@1.12.3: resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==} + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + object-is@1.1.5: resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==} engines: {node: '>= 0.4'} @@ -6851,6 +7457,10 @@ packages: resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} engines: {node: '>= 0.4'} + object.assign@4.1.5: + resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} + engines: {node: '>= 0.4'} + object.entries@1.1.6: resolution: {integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==} engines: {node: '>= 0.4'} @@ -6918,6 +7528,10 @@ packages: resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} engines: {node: '>=10'} + ora@7.0.1: + resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} + engines: {node: '>=16'} + os-paths@7.4.0: resolution: {integrity: sha512-Ux1J4NUqC6tZayBqLN1kUlDAEvLiQlli/53sSddU4IN+h+3xxnv2HmRSMpVSvr1hvJzotfMs3ERvETGK+f4OwA==} engines: {node: '>= 4.0'} @@ -7037,6 +7651,10 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -7048,6 +7666,18 @@ packages: parse-package-name@1.0.0: resolution: {integrity: sha512-kBeTUtcj+SkyfaW4+KBe0HtsloBJ/mKTPoxpVdA57GZiPerREsUWJOhVj9anXweFiJkm5y8FG1sxFZkZ0SN6wg==} + parse-semver@1.1.1: + resolution: {integrity: sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==} + + parse5-htmlparser2-tree-adapter@7.0.0: + resolution: {integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + + parse5@7.1.2: + resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} + parserlib@1.1.1: resolution: {integrity: sha512-e1HbF3+7ASJ/uOZirg5/8ZfPljTh100auNterbHB8TUs5egciuWQ2eX/2al8ko0RdV9Xh/5jDei3jqJAmbTDcg==} @@ -7117,6 +7747,10 @@ packages: path-to-regexp@6.3.0: resolution: {integrity: sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==} + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} @@ -7135,6 +7769,9 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + performance-now@2.1.0: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} @@ -7194,6 +7831,15 @@ packages: resolution: {integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==} engines: {node: '>=10'} + pidtree@0.3.1: + resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==} + engines: {node: '>=0.10'} + hasBin: true + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} @@ -7213,6 +7859,10 @@ packages: resolution: {integrity: sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==} engines: {node: '>=10'} + possible-typed-array-names@1.0.0: + resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} + engines: {node: '>= 0.4'} + postcss@8.4.24: resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} engines: {node: ^10 || ^12 || >=14} @@ -7375,6 +8025,9 @@ packages: resolution: {integrity: sha512-y13xtn3kcTlLub3HKWXxJNeC2qK4mB59evwZ5EkeRlolx+Bp2ztF7LbcZmyCnOqlHQrLnfuNbi1sVmm9lPDlDA==} engines: {node: '>= 0.6.0'} + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -7477,6 +8130,10 @@ packages: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + read-pkg@5.2.0: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} @@ -7485,6 +8142,10 @@ packages: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + read@1.0.7: + resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==} + engines: {node: '>=0.8'} + readable-stream@2.3.7: resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} @@ -7527,6 +8188,10 @@ packages: resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==} engines: {node: '>= 0.4'} + regexp.prototype.flags@1.5.3: + resolution: {integrity: sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==} + engines: {node: '>= 0.4'} + regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} @@ -7684,6 +8349,10 @@ packages: resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} engines: {node: '>=0.4'} + safe-array-concat@1.1.2: + resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} + engines: {node: '>=0.4'} + safe-buffer@5.1.2: resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} @@ -7693,6 +8362,10 @@ packages: safe-regex-test@1.0.0: resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + safe-regex-test@1.0.3: + resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} + engines: {node: '>= 0.4'} + safe-stable-stringify@2.4.3: resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} engines: {node: '>=10'} @@ -7741,6 +8414,11 @@ packages: engines: {node: '>=10'} hasBin: true + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -7752,6 +8430,9 @@ packages: resolution: {integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==} engines: {node: '>=10'} + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + serve-static@1.15.0: resolution: {integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==} engines: {node: '>= 0.8.0'} @@ -7765,10 +8446,18 @@ packages: set-cookie-parser@2.6.0: resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + set-function-name@2.0.1: resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} engines: {node: '>= 0.4'} + set-function-name@2.0.2: + resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} + engines: {node: '>= 0.4'} + setimmediate@1.0.5: resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} @@ -7954,6 +8643,10 @@ packages: std-env@3.7.0: resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==} + stdin-discarder@0.1.0: + resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + stoppable@1.1.0: resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==} engines: {node: '>=4', npm: '>=6'} @@ -7984,6 +8677,10 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@6.1.0: + resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} + engines: {node: '>=16'} + string-width@7.1.0: resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==} engines: {node: '>=18'} @@ -7991,16 +8688,31 @@ packages: string.prototype.matchall@4.0.8: resolution: {integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==} + string.prototype.padend@3.1.6: + resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==} + engines: {node: '>= 0.4'} + string.prototype.trim@1.2.7: resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==} engines: {node: '>= 0.4'} + string.prototype.trim@1.2.9: + resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} + engines: {node: '>= 0.4'} + string.prototype.trimend@1.0.6: resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==} + string.prototype.trimend@1.0.8: + resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} + string.prototype.trimstart@1.0.6: resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==} + string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -8066,6 +8778,10 @@ packages: resolution: {integrity: sha512-XC6g/Kgux+rJXmwokjm9ECpD6k/smUoS5LKlUCcsYr4IY3rW0XyAympon2RmxGrlnZURMpg5T18gWDP9CsHXFA==} engines: {node: '>=12'} + supports-color@9.4.0: + resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} + engines: {node: '>=12'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -8082,6 +8798,10 @@ packages: resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} engines: {node: ^14.18.0 || >=16.0.0} + tapable@2.2.1: + resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + engines: {node: '>=6'} + tar-fs@2.1.1: resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==} @@ -8101,6 +8821,10 @@ packages: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + test-exclude@6.0.0: + resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} + engines: {node: '>=8'} + text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} @@ -8149,6 +8873,10 @@ packages: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} + tmp@0.2.3: + resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} + engines: {node: '>=14.14'} + to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} @@ -8188,6 +8916,12 @@ packages: peerDependencies: typescript: '>=4.2.0' + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + ts-dedent@2.2.0: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} @@ -8346,17 +9080,36 @@ packages: resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} engines: {node: '>= 0.4'} + typed-array-buffer@1.0.2: + resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} + engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.0: resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} engines: {node: '>= 0.4'} + typed-array-byte-length@1.0.1: + resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} + engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.0: resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} engines: {node: '>= 0.4'} + typed-array-byte-offset@1.0.2: + resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} + engines: {node: '>= 0.4'} + typed-array-length@1.0.4: resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} + engines: {node: '>= 0.4'} + + typed-rest-client@1.8.11: + resolution: {integrity: sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==} + typescript@3.9.10: resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} engines: {node: '>=4.2.0'} @@ -8387,6 +9140,9 @@ packages: engines: {node: '>=14.17'} hasBin: true + uc.micro@1.0.6: + resolution: {integrity: sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==} + ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} @@ -8398,6 +9154,9 @@ packages: unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + underscore@1.13.7: + resolution: {integrity: sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==} + undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -8409,6 +9168,10 @@ packages: resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} engines: {node: '>=14.0'} + undici@6.19.8: + resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + engines: {node: '>=18.17'} + unenv-nightly@2.0.0-20240919-125358-9a64854: resolution: {integrity: sha512-XjsgUTrTHR7iw+k/SRTNjh6EQgwpC9voygnoCJo5kh4hKqsSDHUW84MhL9EsHTNfLctvVBHaSw8e2k3R2fKXsQ==} @@ -8465,6 +9228,9 @@ packages: urijs@1.19.11: resolution: {integrity: sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==} + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + url-search-params@0.10.2: resolution: {integrity: sha512-d6GYsr992Bo9rzTZFc9BUw3UFAAg3prE9JGVBgW2TLTbI3rSvg4VDa0BFXHMzKkWbAuhrmaFWpucpRJl+3W7Jg==} deprecated: now available as @ungap/url-search-params @@ -8501,6 +9267,10 @@ packages: v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + v8-to-istanbul@9.3.0: + resolution: {integrity: sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==} + engines: {node: '>=10.12.0'} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -8607,6 +9377,12 @@ packages: jsdom: optional: true + vsce@2.15.0: + resolution: {integrity: sha512-P8E9LAZvBCQnoGoizw65JfGvyMqNGlHdlUXD1VAuxtvYAaHBKLBdKPnpy60XKVDAkQCfmMu53g+gq9FM+ydepw==} + engines: {node: '>= 14'} + deprecated: vsce has been renamed to @vscode/vsce. Install using @vscode/vsce instead. + hasBin: true + vscode-uri@3.0.8: resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} @@ -8626,6 +9402,14 @@ packages: wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + web-streams-polyfill@3.3.3: + resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} + engines: {node: '>= 8'} + + web-streams-polyfill@4.0.0-beta.3: + resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} + engines: {node: '>= 14'} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -8633,6 +9417,14 @@ packages: resolution: {integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==} engines: {node: '>=6'} + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -8661,6 +9453,10 @@ packages: resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==} engines: {node: '>= 0.4'} + which-typed-array@1.1.15: + resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} + engines: {node: '>= 0.4'} + which@1.3.1: resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} hasBin: true @@ -8694,6 +9490,9 @@ packages: engines: {node: '>=16'} hasBin: true + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -8749,6 +9548,10 @@ packages: resolution: {integrity: sha512-xrcqhWDvtZ7WLmt8G4f3hHy37iK7D2idtosRgkeiSPZEPmBShp0VfmRBLWAPC6zLF48APJ21yfea+RfQMF4/Aw==} engines: {node: '>= 4.0'} + xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + xml2js@0.5.0: resolution: {integrity: sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==} engines: {node: '>=4.0.0'} @@ -8788,14 +9591,26 @@ packages: resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} engines: {node: '>=6'} + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + yargs@15.4.1: resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} engines: {node: '>=8'} + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -8805,6 +9620,12 @@ packages: engines: {node: '>=4.0.0'} hasBin: true + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yazl@2.5.1: + resolution: {integrity: sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -8987,7 +9808,7 @@ snapshots: '@babel/traverse': 7.22.20 '@babel/types': 7.22.19 convert-source-map: 1.8.0 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9007,7 +9828,7 @@ snapshots: '@babel/traverse': 7.24.5 '@babel/types': 7.24.5 convert-source-map: 2.0.0 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -9215,7 +10036,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/parser': 7.22.16 '@babel/types': 7.22.19 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9230,7 +10051,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.24.5 '@babel/parser': 7.24.5 '@babel/types': 7.24.5 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -9259,6 +10080,8 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@bcoe/v8-coverage@0.2.3': {} + '@bundled-es-modules/cookie@2.0.0': dependencies: cookie: 0.5.0 @@ -9740,6 +10563,9 @@ snapshots: '@esbuild/aix-ppc64@0.19.12': optional: true + '@esbuild/aix-ppc64@0.21.5': + optional: true + '@esbuild/android-arm64@0.17.19': optional: true @@ -9749,6 +10575,9 @@ snapshots: '@esbuild/android-arm64@0.19.12': optional: true + '@esbuild/android-arm64@0.21.5': + optional: true + '@esbuild/android-arm@0.17.19': optional: true @@ -9758,6 +10587,9 @@ snapshots: '@esbuild/android-arm@0.19.12': optional: true + '@esbuild/android-arm@0.21.5': + optional: true + '@esbuild/android-x64@0.17.19': optional: true @@ -9767,6 +10599,9 @@ snapshots: '@esbuild/android-x64@0.19.12': optional: true + '@esbuild/android-x64@0.21.5': + optional: true + '@esbuild/darwin-arm64@0.17.19': optional: true @@ -9776,6 +10611,9 @@ snapshots: '@esbuild/darwin-arm64@0.19.12': optional: true + '@esbuild/darwin-arm64@0.21.5': + optional: true + '@esbuild/darwin-x64@0.17.19': optional: true @@ -9785,6 +10623,9 @@ snapshots: '@esbuild/darwin-x64@0.19.12': optional: true + '@esbuild/darwin-x64@0.21.5': + optional: true + '@esbuild/freebsd-arm64@0.17.19': optional: true @@ -9794,6 +10635,9 @@ snapshots: '@esbuild/freebsd-arm64@0.19.12': optional: true + '@esbuild/freebsd-arm64@0.21.5': + optional: true + '@esbuild/freebsd-x64@0.17.19': optional: true @@ -9803,6 +10647,9 @@ snapshots: '@esbuild/freebsd-x64@0.19.12': optional: true + '@esbuild/freebsd-x64@0.21.5': + optional: true + '@esbuild/linux-arm64@0.17.19': optional: true @@ -9812,6 +10659,9 @@ snapshots: '@esbuild/linux-arm64@0.19.12': optional: true + '@esbuild/linux-arm64@0.21.5': + optional: true + '@esbuild/linux-arm@0.17.19': optional: true @@ -9821,6 +10671,9 @@ snapshots: '@esbuild/linux-arm@0.19.12': optional: true + '@esbuild/linux-arm@0.21.5': + optional: true + '@esbuild/linux-ia32@0.17.19': optional: true @@ -9830,6 +10683,9 @@ snapshots: '@esbuild/linux-ia32@0.19.12': optional: true + '@esbuild/linux-ia32@0.21.5': + optional: true + '@esbuild/linux-loong64@0.17.19': optional: true @@ -9839,6 +10695,9 @@ snapshots: '@esbuild/linux-loong64@0.19.12': optional: true + '@esbuild/linux-loong64@0.21.5': + optional: true + '@esbuild/linux-mips64el@0.17.19': optional: true @@ -9848,6 +10707,9 @@ snapshots: '@esbuild/linux-mips64el@0.19.12': optional: true + '@esbuild/linux-mips64el@0.21.5': + optional: true + '@esbuild/linux-ppc64@0.17.19': optional: true @@ -9857,6 +10719,9 @@ snapshots: '@esbuild/linux-ppc64@0.19.12': optional: true + '@esbuild/linux-ppc64@0.21.5': + optional: true + '@esbuild/linux-riscv64@0.17.19': optional: true @@ -9866,6 +10731,9 @@ snapshots: '@esbuild/linux-riscv64@0.19.12': optional: true + '@esbuild/linux-riscv64@0.21.5': + optional: true + '@esbuild/linux-s390x@0.17.19': optional: true @@ -9875,6 +10743,9 @@ snapshots: '@esbuild/linux-s390x@0.19.12': optional: true + '@esbuild/linux-s390x@0.21.5': + optional: true + '@esbuild/linux-x64@0.17.19': optional: true @@ -9884,6 +10755,9 @@ snapshots: '@esbuild/linux-x64@0.19.12': optional: true + '@esbuild/linux-x64@0.21.5': + optional: true + '@esbuild/netbsd-x64@0.17.19': optional: true @@ -9893,6 +10767,9 @@ snapshots: '@esbuild/netbsd-x64@0.19.12': optional: true + '@esbuild/netbsd-x64@0.21.5': + optional: true + '@esbuild/openbsd-x64@0.17.19': optional: true @@ -9902,6 +10779,9 @@ snapshots: '@esbuild/openbsd-x64@0.19.12': optional: true + '@esbuild/openbsd-x64@0.21.5': + optional: true + '@esbuild/sunos-x64@0.17.19': optional: true @@ -9911,6 +10791,9 @@ snapshots: '@esbuild/sunos-x64@0.19.12': optional: true + '@esbuild/sunos-x64@0.21.5': + optional: true + '@esbuild/win32-arm64@0.17.19': optional: true @@ -9920,6 +10803,9 @@ snapshots: '@esbuild/win32-arm64@0.19.12': optional: true + '@esbuild/win32-arm64@0.21.5': + optional: true + '@esbuild/win32-ia32@0.17.19': optional: true @@ -9929,6 +10815,9 @@ snapshots: '@esbuild/win32-ia32@0.19.12': optional: true + '@esbuild/win32-ia32@0.21.5': + optional: true + '@esbuild/win32-x64@0.17.19': optional: true @@ -9938,6 +10827,9 @@ snapshots: '@esbuild/win32-x64@0.19.12': optional: true + '@esbuild/win32-x64@0.21.5': + optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.49.0)': dependencies: eslint: 8.49.0 @@ -9955,7 +10847,7 @@ snapshots: '@eslint/eslintrc@2.1.2': dependencies: ajv: 6.12.6 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) espree: 9.6.1 globals: 13.20.0 ignore: 5.3.1 @@ -9969,7 +10861,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) espree: 9.6.1 globals: 13.24.0 ignore: 5.3.1 @@ -9994,7 +10886,7 @@ snapshots: '@humanwhocodes/config-array@0.11.11': dependencies: '@humanwhocodes/object-schema': 1.2.1 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -10002,7 +10894,7 @@ snapshots: '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -10065,6 +10957,8 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@istanbuljs/schema@0.1.3': {} + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -10151,7 +11045,7 @@ snapshots: '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': dependencies: detect-libc: 2.0.2 - https-proxy-agent: 5.0.1(supports-color@9.2.2) + https-proxy-agent: 5.0.1 make-dir: 3.1.0 node-fetch: 2.6.11(encoding@0.1.13) nopt: 5.0.0 @@ -10883,6 +11777,8 @@ snapshots: dependencies: ci-info: 3.3.0 + '@types/istanbul-lib-coverage@2.0.6': {} + '@types/javascript-time-ago@2.0.3': {} '@types/json-schema@7.0.13': {} @@ -10899,6 +11795,8 @@ snapshots: '@types/minimist@1.2.2': {} + '@types/mocha@10.0.8': {} + '@types/ms@0.7.31': {} '@types/mute-stream@0.0.4': @@ -10914,6 +11812,10 @@ snapshots: '@types/node@12.20.47': {} + '@types/node@18.19.54': + dependencies: + undici-types: 5.26.5 + '@types/node@20.12.12': dependencies: undici-types: 5.26.5 @@ -10994,6 +11896,8 @@ snapshots: '@types/uuid@9.0.4': {} + '@types/vscode@1.93.0': {} + '@types/which-pm-runs@1.0.0': {} '@types/which@2.0.2': {} @@ -11056,6 +11960,24 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/regexpp': 4.10.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.1 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/parser@6.10.0(eslint@8.49.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 6.10.0 @@ -11082,16 +12004,34 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6(supports-color@8.1.1) + eslint: 8.57.0 + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/scope-manager@6.10.0': dependencies: '@typescript-eslint/types': 6.10.0 '@typescript-eslint/visitor-keys': 6.10.0 + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + '@typescript-eslint/type-utils@6.10.0(eslint@8.49.0)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.5.4) '@typescript-eslint/utils': 6.10.0(eslint@8.49.0)(typescript@5.5.4) - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) eslint: 8.49.0 ts-api-utils: 1.0.3(typescript@5.5.4) optionalDependencies: @@ -11103,7 +12043,7 @@ snapshots: dependencies: '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.5.4) '@typescript-eslint/utils': 6.10.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) eslint: 8.57.0 ts-api-utils: 1.0.3(typescript@5.5.4) optionalDependencies: @@ -11111,13 +12051,27 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) + debug: 4.3.6(supports-color@8.1.1) + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/types@6.10.0': {} + '@typescript-eslint/types@7.18.0': {} + '@typescript-eslint/typescript-estree@6.10.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 6.10.0 '@typescript-eslint/visitor-keys': 6.10.0 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) globby: 11.1.0 is-glob: 4.0.3 semver: 7.5.4 @@ -11127,6 +12081,21 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.6(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.5.4) + optionalDependencies: + typescript: 5.5.4 + transitivePeerDependencies: + - supports-color + '@typescript-eslint/utils@6.10.0(eslint@8.49.0)(typescript@5.5.4)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.49.0) @@ -11155,11 +12124,27 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@6.10.0': + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@6.10.0': dependencies: '@typescript-eslint/types': 6.10.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + '@ungap/structured-clone@1.2.0': {} '@vercel/nft@0.26.3(encoding@0.1.13)': @@ -11273,6 +12258,28 @@ snapshots: path-browserify: 1.0.1 vscode-uri: 3.0.8 + '@vscode/test-cli@0.0.9': + dependencies: + '@types/mocha': 10.0.8 + c8: 9.1.0 + chokidar: 3.5.3 + enhanced-resolve: 5.17.1 + glob: 10.3.10 + minimatch: 9.0.5 + mocha: 10.7.3 + supports-color: 9.4.0 + yargs: 17.7.2 + + '@vscode/test-electron@2.4.1': + dependencies: + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.5 + jszip: 3.10.1 + ora: 7.0.1 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + '@vue/compiler-core@3.3.4': dependencies: '@babel/parser': 7.22.16 @@ -11352,6 +12359,10 @@ snapshots: abbrev@1.1.1: {} + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -11373,18 +12384,34 @@ snapshots: acorn@8.11.3: {} + agent-base@6.0.2: + dependencies: + debug: 4.3.6(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + agent-base@6.0.2(supports-color@9.2.2): dependencies: debug: 4.3.6(supports-color@9.2.2) transitivePeerDependencies: - supports-color + agent-base@7.1.0: + dependencies: + debug: 4.3.6(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + agent-base@7.1.0(supports-color@9.2.2): dependencies: debug: 4.3.6(supports-color@9.2.2) transitivePeerDependencies: - supports-color + agentkeepalive@4.5.0: + dependencies: + humanize-ms: 1.2.1 + aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 @@ -11510,6 +12537,11 @@ snapshots: call-bind: 1.0.2 is-array-buffer: 3.0.2 + array-buffer-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + is-array-buffer: 3.0.4 + array-find-index@1.0.2: {} array-flatten@1.1.1: {} @@ -11564,6 +12596,17 @@ snapshots: is-array-buffer: 3.0.2 is-shared-array-buffer: 1.0.2 + arraybuffer.prototype.slice@1.0.3: + dependencies: + array-buffer-byte-length: 1.0.1 + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + is-array-buffer: 3.0.4 + is-shared-array-buffer: 1.0.3 + arrgv@1.0.2: {} arrify@1.0.1: {} @@ -11657,6 +12700,15 @@ snapshots: available-typed-arrays@1.0.5: {} + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.0.0 + + azure-devops-node-api@11.2.0: + dependencies: + tunnel: 0.0.6 + typed-rest-client: 1.8.11 + balanced-match@1.0.2: {} base64-js@1.5.1: {} @@ -11690,6 +12742,12 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.0 + bl@5.1.0: + dependencies: + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 3.6.0 + blake3-wasm@2.1.5: {} blueimp-md5@2.19.0: {} @@ -11711,6 +12769,8 @@ snapshots: transitivePeerDependencies: - supports-color + boolbase@1.0.0: {} + boolean@3.2.0: {} bottleneck@2.19.5: {} @@ -11738,6 +12798,8 @@ snapshots: browser-process-hrtime@1.0.0: {} + browser-stdout@1.3.1: {} + browserslist@4.21.10: dependencies: caniuse-lite: 1.0.30001520 @@ -11786,6 +12848,20 @@ snapshots: bytes@3.1.2: {} + c8@9.1.0: + dependencies: + '@bcoe/v8-coverage': 0.2.3 + '@istanbuljs/schema': 0.1.3 + find-up: 5.0.0 + foreground-child: 3.1.1 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.1.7 + test-exclude: 6.0.0 + v8-to-istanbul: 9.3.0 + yargs: 17.7.2 + yargs-parser: 21.1.1 + cac@6.7.14: {} cacheable-lookup@7.0.0: {} @@ -11805,6 +12881,14 @@ snapshots: function-bind: 1.1.1 get-intrinsic: 1.2.1 + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + callsites@3.1.0: {} callsites@4.1.0: {} @@ -11827,13 +12911,15 @@ snapshots: camelcase@5.3.1: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001520: {} caniuse-lite@1.0.30001618: {} capnp-ts@0.5.1: dependencies: - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) format: 0.2.2 tslib: 2.5.3 utf8-encoding: 0.1.2 @@ -11919,6 +13005,29 @@ snapshots: check-error@2.1.1: {} + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.0.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.8 + whatwg-mimetype: 4.0.0 + chokidar@3.5.3: dependencies: anymatch: 3.1.2 @@ -11931,8 +13040,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chownr@1.1.4: - optional: true + chownr@1.1.4: {} chownr@2.0.0: {} @@ -12000,6 +13108,12 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -12010,6 +13124,21 @@ snapshots: clone@2.1.2: {} + cloudflare@3.5.0(encoding@0.1.13): + dependencies: + '@types/node': 18.19.54 + '@types/node-fetch': 2.6.11 + '@types/qs': 6.9.7 + abort-controller: 3.0.0 + agentkeepalive: 4.5.0 + form-data-encoder: 1.7.2 + formdata-node: 4.4.1 + node-fetch: 2.6.11(encoding@0.1.13) + qs: 6.10.3 + web-streams-polyfill: 3.3.3 + transitivePeerDependencies: + - encoding + clsx@1.2.1: {} cmd-shim@4.1.0: @@ -12050,6 +13179,8 @@ snapshots: commander@4.1.1: {} + commander@6.2.1: {} + common-path-prefix@3.0.0: {} compare-versions@6.1.1: {} @@ -12174,6 +13305,16 @@ snapshots: dependencies: hyphenate-style-name: 1.0.4 + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-what@6.1.0: {} + cssbeautify@0.3.1: {} csslint@1.0.5: @@ -12204,6 +13345,24 @@ snapshots: data-uri-to-buffer@5.0.1: {} + data-view-buffer@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + + data-view-byte-offset@1.0.0: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-data-view: 1.0.1 + dataloader@1.4.0: {} date-fns@2.30.0: @@ -12236,6 +13395,12 @@ snapshots: dependencies: ms: 2.1.2 + debug@4.3.6(supports-color@8.1.1): + dependencies: + ms: 2.1.2 + optionalDependencies: + supports-color: 8.1.1 + debug@4.3.6(supports-color@9.2.2): dependencies: ms: 2.1.2 @@ -12249,6 +13414,8 @@ snapshots: decamelize@1.2.0: {} + decamelize@4.0.0: {} + decompress-response@6.0.0: dependencies: mimic-response: 3.1.0 @@ -12285,6 +13452,12 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.0 + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + define-lazy-prop@2.0.0: {} define-lazy-prop@3.0.0: {} @@ -12347,6 +13520,8 @@ snapshots: diff@4.0.2: {} + diff@5.2.0: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 @@ -12361,12 +13536,30 @@ snapshots: dependencies: esutils: 2.0.3 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dom-urls@1.1.0: dependencies: urijs: 1.19.11 + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + dompurify@2.4.7: {} + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@2.1.1: dependencies: no-case: 2.3.2 @@ -12422,6 +13615,11 @@ snapshots: encodeurl@1.0.2: {} + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 @@ -12431,10 +13629,19 @@ snapshots: dependencies: once: 1.4.0 + enhanced-resolve@5.17.1: + dependencies: + graceful-fs: 4.2.10 + tapable: 2.2.1 + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 + entities@2.1.0: {} + + entities@4.5.0: {} + entities@5.0.0: {} error-ex@1.3.2: @@ -12483,8 +13690,63 @@ snapshots: unbox-primitive: 1.0.2 which-typed-array: 1.1.11 + es-abstract@1.23.3: + dependencies: + array-buffer-byte-length: 1.0.1 + arraybuffer.prototype.slice: 1.0.3 + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + data-view-buffer: 1.0.1 + data-view-byte-length: 1.0.1 + data-view-byte-offset: 1.0.0 + es-define-property: 1.0.0 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 + es-set-tostringtag: 2.0.3 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.4 + get-symbol-description: 1.0.2 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + internal-slot: 1.0.7 + is-array-buffer: 3.0.4 + is-callable: 1.2.7 + is-data-view: 1.0.1 + is-negative-zero: 2.0.3 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.3 + is-string: 1.0.7 + is-typed-array: 1.1.13 + is-weakref: 1.0.2 + object-inspect: 1.13.2 + object-keys: 1.1.1 + object.assign: 4.1.5 + regexp.prototype.flags: 1.5.3 + safe-array-concat: 1.1.2 + safe-regex-test: 1.0.3 + string.prototype.trim: 1.2.9 + string.prototype.trimend: 1.0.8 + string.prototype.trimstart: 1.0.8 + typed-array-buffer: 1.0.2 + typed-array-byte-length: 1.0.1 + typed-array-byte-offset: 1.0.2 + typed-array-length: 1.0.6 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.15 + es-array-method-boxes-properly@1.0.0: {} + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + es-iterator-helpers@1.0.15: dependencies: asynciterator.prototype: 1.0.0 @@ -12504,12 +13766,22 @@ snapshots: es-module-lexer@1.3.1: {} + es-object-atoms@1.0.0: + dependencies: + es-errors: 1.3.0 + es-set-tostringtag@2.0.1: dependencies: get-intrinsic: 1.2.1 has: 1.0.3 has-tostringtag: 1.0.0 + es-set-tostringtag@2.0.3: + dependencies: + get-intrinsic: 1.2.4 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + es-shim-unscopables@1.0.0: dependencies: has: 1.0.3 @@ -12605,6 +13877,32 @@ snapshots: '@esbuild/win32-ia32': 0.19.12 '@esbuild/win32-x64': 0.19.12 + esbuild@0.21.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.21.5 + '@esbuild/android-arm': 0.21.5 + '@esbuild/android-arm64': 0.21.5 + '@esbuild/android-x64': 0.21.5 + '@esbuild/darwin-arm64': 0.21.5 + '@esbuild/darwin-x64': 0.21.5 + '@esbuild/freebsd-arm64': 0.21.5 + '@esbuild/freebsd-x64': 0.21.5 + '@esbuild/linux-arm': 0.21.5 + '@esbuild/linux-arm64': 0.21.5 + '@esbuild/linux-ia32': 0.21.5 + '@esbuild/linux-loong64': 0.21.5 + '@esbuild/linux-mips64el': 0.21.5 + '@esbuild/linux-ppc64': 0.21.5 + '@esbuild/linux-riscv64': 0.21.5 + '@esbuild/linux-s390x': 0.21.5 + '@esbuild/linux-x64': 0.21.5 + '@esbuild/netbsd-x64': 0.21.5 + '@esbuild/openbsd-x64': 0.21.5 + '@esbuild/sunos-x64': 0.21.5 + '@esbuild/win32-arm64': 0.21.5 + '@esbuild/win32-ia32': 0.21.5 + '@esbuild/win32-x64': 0.21.5 + escalade@3.1.2: {} escape-html@1.0.3: {} @@ -12891,6 +14189,8 @@ snapshots: etag@1.8.1: {} + event-target-shim@5.0.1: {} + eventemitter3@4.0.7: {} events@3.3.0: {} @@ -12933,8 +14233,7 @@ snapshots: exit-hook@2.2.1: {} - expand-template@2.0.3: - optional: true + expand-template@2.0.3: {} expect-type@0.15.0: {} @@ -13027,6 +14326,10 @@ snapshots: dependencies: reusify: 1.0.4 + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + fela-bindings@11.7.0(fela@11.7.0): dependencies: fast-loops: 1.1.3 @@ -13162,6 +14465,8 @@ snapshots: flatted: 3.3.1 rimraf: 3.0.2 + flat@5.0.2: {} + flatted@3.3.1: {} for-each@0.3.3: @@ -13173,6 +14478,8 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.0.2 + form-data-encoder@1.7.2: {} + form-data-encoder@2.1.4: {} form-data@4.0.0: @@ -13183,6 +14490,11 @@ snapshots: format@0.2.2: {} + formdata-node@4.4.1: + dependencies: + node-domexception: 1.0.0 + web-streams-polyfill: 4.0.0-beta.3 + forwarded@0.2.0: {} fp-ts@2.13.1: {} @@ -13227,6 +14539,8 @@ snapshots: function-bind@1.1.1: {} + function-bind@1.1.2: {} + function.prototype.name@1.1.5: dependencies: call-bind: 1.0.2 @@ -13234,6 +14548,13 @@ snapshots: es-abstract: 1.22.1 functions-have-names: 1.2.3 + function.prototype.name@1.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + functions-have-names: 1.2.3 + functions-have-names@1.2.3: {} gauge@3.0.2: @@ -13263,6 +14584,14 @@ snapshots: has-proto: 1.0.1 has-symbols: 1.0.3 + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.2 + get-port@7.0.0: {} get-source@2.0.12: @@ -13277,6 +14606,12 @@ snapshots: call-bind: 1.0.2 get-intrinsic: 1.2.1 + get-symbol-description@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + get-tsconfig@4.7.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -13285,15 +14620,14 @@ snapshots: dependencies: basic-ftp: 5.0.3 data-uri-to-buffer: 5.0.1 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color git-hooks-list@1.0.3: {} - github-from-package@0.0.0: - optional: true + github-from-package@0.0.0: {} glob-parent@5.1.2: dependencies: @@ -13339,6 +14673,14 @@ snapshots: minimatch: 5.1.1 once: 1.4.0 + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + globals@11.12.0: {} globals@13.20.0: @@ -13455,20 +14797,34 @@ snapshots: dependencies: get-intrinsic: 1.2.1 + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + has-proto@1.0.1: {} + has-proto@1.0.3: {} + has-symbols@1.0.3: {} has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.0.3 + has-unicode@2.0.1: {} has@1.0.3: dependencies: function-bind: 1.1.1 + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + he@1.2.0: {} header-case@1.0.1: @@ -13484,8 +14840,21 @@ snapshots: hosted-git-info@2.8.9: {} + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + html-escaper@2.0.2: {} + html-rewriter-wasm@0.4.1: {} + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + http-cache-semantics@4.1.0: {} http-cache-semantics@4.1.1: {} @@ -13500,8 +14869,15 @@ snapshots: http-proxy-agent@7.0.0: dependencies: - agent-base: 7.1.0(supports-color@9.2.2) - debug: 4.3.6(supports-color@9.2.2) + agent-base: 7.1.0 + debug: 4.3.6(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.3.6(supports-color@8.1.1) transitivePeerDependencies: - supports-color @@ -13517,6 +14893,13 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.6(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + https-proxy-agent@5.0.1(supports-color@9.2.2): dependencies: agent-base: 6.0.2(supports-color@9.2.2) @@ -13524,6 +14907,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.0 + debug: 4.3.4(supports-color@9.2.2) + transitivePeerDependencies: + - supports-color + https-proxy-agent@7.0.2(supports-color@9.2.2): dependencies: agent-base: 7.1.0(supports-color@9.2.2) @@ -13531,6 +14921,13 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.5: + dependencies: + agent-base: 7.1.0 + debug: 4.3.6(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + human-id@1.0.2: {} human-signals@2.1.0: {} @@ -13539,6 +14936,10 @@ snapshots: human-signals@4.3.1: {} + humanize-ms@1.2.1: + dependencies: + ms: 2.1.3 + hyphenate-style-name@1.0.4: {} iconv-lite@0.4.24: @@ -13548,7 +14949,6 @@ snapshots: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 - optional: true ieee754@1.2.1: {} @@ -13682,6 +15082,12 @@ snapshots: has: 1.0.3 side-channel: 1.0.4 + internal-slot@1.0.7: + dependencies: + es-errors: 1.3.0 + hasown: 2.0.2 + side-channel: 1.0.4 + io-ts@2.2.19(fp-ts@2.13.1): dependencies: fp-ts: 2.13.1 @@ -13705,6 +15111,11 @@ snapshots: get-intrinsic: 1.2.1 is-typed-array: 1.1.10 + is-array-buffer@3.0.4: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + is-arrayish@0.2.1: {} is-async-function@2.0.0: @@ -13738,6 +15149,10 @@ snapshots: dependencies: has: 1.0.3 + is-data-view@1.0.1: + dependencies: + is-typed-array: 1.1.13 + is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 @@ -13770,6 +15185,8 @@ snapshots: is-interactive@1.0.0: {} + is-interactive@2.0.0: {} + is-lower-case@1.1.3: dependencies: lower-case: 1.1.4 @@ -13783,6 +15200,8 @@ snapshots: is-negative-zero@2.0.2: {} + is-negative-zero@2.0.3: {} + is-node-process@1.2.0: {} is-number-object@1.0.7: @@ -13820,6 +15239,10 @@ snapshots: dependencies: call-bind: 1.0.2 + is-shared-array-buffer@1.0.3: + dependencies: + call-bind: 1.0.7 + is-stream@2.0.1: {} is-stream@3.0.0: {} @@ -13844,8 +15267,14 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.0 + is-typed-array@1.1.13: + dependencies: + which-typed-array: 1.1.15 + is-unicode-supported@0.1.0: {} + is-unicode-supported@1.3.0: {} + is-unicode-supported@2.0.0: {} is-upper-case@1.1.2: @@ -13879,6 +15308,19 @@ snapshots: isobject@3.0.1: {} + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + iterator.prototype@1.1.2: dependencies: define-properties: 1.2.1 @@ -13935,6 +15377,8 @@ snapshots: json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} + json-parse-even-better-errors@2.3.1: {} json-schema-traverse@0.4.1: {} @@ -13977,6 +15421,11 @@ snapshots: jwt-decode@3.1.2: {} + keytar@7.9.0: + dependencies: + node-addon-api: 4.3.0 + prebuild-install: 7.1.2 + keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -13997,6 +15446,8 @@ snapshots: dependencies: readable-stream: 2.3.7 + leven@3.1.0: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -14012,6 +15463,17 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@3.0.3: + dependencies: + uc.micro: 1.0.6 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.10 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + load-json-file@7.0.1: {} load-yaml-file@0.2.0: @@ -14094,6 +15556,11 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + log-symbols@5.1.0: + dependencies: + chalk: 5.3.0 + is-unicode-supported: 1.3.0 + log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 @@ -14167,12 +15634,24 @@ snapshots: dependencies: semver: 6.3.1 + make-dir@4.0.0: + dependencies: + semver: 7.5.4 + make-error@1.3.6: {} map-obj@1.0.1: {} map-obj@4.3.0: {} + markdown-it@12.3.2: + dependencies: + argparse: 2.0.1 + entities: 2.1.0 + linkify-it: 3.0.3 + mdurl: 1.0.1 + uc.micro: 1.0.6 + marked@0.3.19: {} match-sorter@6.3.1: @@ -14190,12 +15669,16 @@ snapshots: dependencies: blueimp-md5: 2.19.0 + mdurl@1.0.1: {} + media-typer@0.3.0: {} memoize@10.0.0: dependencies: mimic-function: 5.0.0 + memorystream@0.3.1: {} + meow@6.1.1: dependencies: '@types/minimist': 1.2.2 @@ -14265,6 +15748,10 @@ snapshots: dependencies: brace-expansion: 2.0.1 + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + minimatch@9.0.1: dependencies: brace-expansion: 2.0.1 @@ -14300,8 +15787,7 @@ snapshots: mixme@0.5.4: {} - mkdirp-classic@0.5.3: - optional: true + mkdirp-classic@0.5.3: {} mkdirp-infer-owner@2.0.0: dependencies: @@ -14322,6 +15808,29 @@ snapshots: pkg-types: 1.0.3 ufo: 1.5.4 + mocha@10.7.3: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.5.3 + debug: 4.3.6(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + mock-socket@9.3.1: {} mrmime@2.0.0: {} @@ -14369,8 +15878,7 @@ snapshots: nanoid@3.3.7: {} - napi-build-utils@1.0.2: - optional: true + napi-build-utils@1.0.2: {} natural-compare@1.4.0: {} @@ -14394,7 +15902,10 @@ snapshots: node-abi@3.62.0: dependencies: semver: 7.5.4 - optional: true + + node-addon-api@4.3.0: {} + + node-domexception@1.0.0: {} node-fetch@2.6.11(encoding@0.1.13): dependencies: @@ -14449,6 +15960,18 @@ snapshots: normalize-url@8.0.1: {} + npm-run-all@4.1.5: + dependencies: + ansi-styles: 3.2.1 + chalk: 2.4.2 + cross-spawn: 6.0.5 + memorystream: 0.3.1 + minimatch: 3.1.2 + pidtree: 0.3.1 + read-pkg: 3.0.0 + shell-quote: 1.8.1 + string.prototype.padend: 3.1.6 + npm-run-path@4.0.1: dependencies: path-key: 3.1.1 @@ -14471,12 +15994,18 @@ snapshots: semver: 7.5.4 validate-npm-package-name: 4.0.0 + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + object-assign@4.1.1: {} object-hash@2.2.0: {} object-inspect@1.12.3: {} + object-inspect@1.13.2: {} + object-is@1.1.5: dependencies: call-bind: 1.0.2 @@ -14491,6 +16020,13 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 + object.assign@4.1.5: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + object.entries@1.1.6: dependencies: call-bind: 1.0.2 @@ -14595,6 +16131,18 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 + ora@7.0.1: + dependencies: + chalk: 5.3.0 + cli-cursor: 4.0.0 + cli-spinners: 2.9.2 + is-interactive: 2.0.0 + is-unicode-supported: 1.3.0 + log-symbols: 5.1.0 + stdin-discarder: 0.1.0 + string-width: 6.1.0 + strip-ansi: 7.1.0 + os-paths@7.4.0: optionalDependencies: fsevents: 2.3.3 @@ -14665,11 +16213,11 @@ snapshots: pac-proxy-agent@7.0.1: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 - agent-base: 7.1.0(supports-color@9.2.2) - debug: 4.3.6(supports-color@9.2.2) + agent-base: 7.1.0 + debug: 4.3.6(supports-color@8.1.1) get-uri: 6.0.1 http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2(supports-color@9.2.2) + https-proxy-agent: 7.0.2 pac-resolver: 7.0.0 socks-proxy-agent: 8.0.2 transitivePeerDependencies: @@ -14709,6 +16257,11 @@ snapshots: parse-github-url@1.0.2: {} + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.7 @@ -14720,6 +16273,23 @@ snapshots: parse-package-name@1.0.0: {} + parse-semver@1.1.1: + dependencies: + semver: 5.7.1 + + parse5-htmlparser2-tree-adapter@7.0.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.1.2 + + parse5@7.1.2: + dependencies: + entities: 4.5.0 + parserlib@1.1.1: {} parseurl@1.3.3: {} @@ -14787,6 +16357,10 @@ snapshots: path-to-regexp@6.3.0: {} + path-type@3.0.0: + dependencies: + pify: 3.0.0 + path-type@4.0.0: {} path-type@5.0.0: {} @@ -14797,6 +16371,8 @@ snapshots: pathval@2.0.0: {} + pend@1.2.0: {} + performance-now@2.1.0: {} pg-cloudflare@1.1.1: {} @@ -14855,6 +16431,10 @@ snapshots: picomatch@3.0.1: {} + pidtree@0.3.1: {} + + pify@3.0.0: {} + pify@4.0.1: {} pkg-dir@4.2.0: @@ -14875,6 +16455,8 @@ snapshots: dependencies: '@babel/runtime': 7.22.5 + possible-typed-array-names@1.0.0: {} + postcss@8.4.24: dependencies: nanoid: 3.3.7 @@ -14923,7 +16505,6 @@ snapshots: simple-get: 4.0.1 tar-fs: 2.1.1 tunnel-agent: 0.6.0 - optional: true preferred-pm@3.0.3: dependencies: @@ -14991,10 +16572,10 @@ snapshots: proxy-agent@6.3.1: dependencies: - agent-base: 7.1.0(supports-color@9.2.2) - debug: 4.3.6(supports-color@9.2.2) + agent-base: 7.1.0 + debug: 4.3.6(supports-color@8.1.1) http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2(supports-color@9.2.2) + https-proxy-agent: 7.0.2 lru-cache: 7.18.3 pac-proxy-agent: 7.0.1 proxy-from-env: 1.1.0 @@ -15012,7 +16593,6 @@ snapshots: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - optional: true punycode@2.1.1: {} @@ -15034,6 +16614,10 @@ snapshots: dependencies: json-stringify-safe: 5.0.1 + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + range-parser@1.2.1: {} raw-body@2.5.1: @@ -15150,6 +16734,12 @@ snapshots: read-pkg: 5.2.0 type-fest: 0.8.1 + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.1 @@ -15164,6 +16754,10 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + read@1.0.7: + dependencies: + mute-stream: 0.0.8 + readable-stream@2.3.7: dependencies: core-util-is: 1.0.3 @@ -15226,6 +16820,13 @@ snapshots: define-properties: 1.2.1 functions-have-names: 1.2.3 + regexp.prototype.flags@1.5.3: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-errors: 1.3.0 + set-function-name: 2.0.2 + regexpp@3.2.0: {} reghex@1.0.2: {} @@ -15393,6 +16994,13 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 + safe-array-concat@1.1.2: + dependencies: + call-bind: 1.0.7 + get-intrinsic: 1.2.4 + has-symbols: 1.0.3 + isarray: 2.0.5 + safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} @@ -15403,6 +17011,12 @@ snapshots: get-intrinsic: 1.2.1 is-regex: 1.1.4 + safe-regex-test@1.0.3: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-regex: 1.1.4 + safe-stable-stringify@2.4.3: {} safer-buffer@2.1.2: {} @@ -15443,6 +17057,8 @@ snapshots: dependencies: lru-cache: 6.0.0 + semver@7.6.3: {} + send@0.18.0(supports-color@9.2.2): dependencies: debug: 2.6.9(supports-color@9.2.2) @@ -15470,6 +17086,10 @@ snapshots: dependencies: type-fest: 0.13.1 + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + serve-static@1.15.0(supports-color@9.2.2): dependencies: encodeurl: 1.0.2 @@ -15490,12 +17110,28 @@ snapshots: set-cookie-parser@2.6.0: {} + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + set-function-name@2.0.1: dependencies: define-data-property: 1.1.0 functions-have-names: 1.2.3 has-property-descriptors: 1.0.0 + set-function-name@2.0.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.2 + setimmediate@1.0.5: {} setprototypeof@1.2.0: {} @@ -15541,15 +17177,13 @@ snapshots: signal-exit@4.1.0: {} - simple-concat@1.0.1: - optional: true + simple-concat@1.0.1: {} simple-get@4.0.1: dependencies: decompress-response: 6.0.0 once: 1.4.0 simple-concat: 1.0.1 - optional: true sirv@2.0.4: dependencies: @@ -15593,8 +17227,8 @@ snapshots: socks-proxy-agent@8.0.2: dependencies: - agent-base: 7.1.0(supports-color@9.2.2) - debug: 4.3.6(supports-color@9.2.2) + agent-base: 7.1.0 + debug: 4.3.6(supports-color@8.1.1) socks: 2.7.1 transitivePeerDependencies: - supports-color @@ -15674,6 +17308,10 @@ snapshots: std-env@3.7.0: {} + stdin-discarder@0.1.0: + dependencies: + bl: 5.1.0 + stoppable@1.1.0: {} stream-transform@2.1.3: @@ -15700,6 +17338,12 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string-width@6.1.0: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 10.3.0 + strip-ansi: 7.1.0 + string-width@7.1.0: dependencies: emoji-regex: 10.3.0 @@ -15717,24 +17361,50 @@ snapshots: regexp.prototype.flags: 1.5.0 side-channel: 1.0.4 + string.prototype.padend@3.1.6: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + string.prototype.trim@1.2.7: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.1 + string.prototype.trim@1.2.9: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-abstract: 1.23.3 + es-object-atoms: 1.0.0 + string.prototype.trimend@1.0.6: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.1 + string.prototype.trimend@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string.prototype.trimstart@1.0.6: dependencies: call-bind: 1.0.2 define-properties: 1.2.1 es-abstract: 1.22.1 + string.prototype.trimstart@1.0.8: + dependencies: + call-bind: 1.0.7 + define-properties: 1.2.1 + es-object-atoms: 1.0.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -15805,6 +17475,8 @@ snapshots: supports-color@9.2.2: {} + supports-color@9.4.0: {} + supports-preserve-symlinks-flag@1.0.0: {} swap-case@1.1.2: @@ -15823,13 +17495,14 @@ snapshots: '@pkgr/utils': 2.4.1 tslib: 2.5.3 + tapable@2.2.1: {} + tar-fs@2.1.1: dependencies: chownr: 1.1.4 mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 2.2.0 - optional: true tar-stream@2.2.0: dependencies: @@ -15852,6 +17525,12 @@ snapshots: term-size@2.2.1: {} + test-exclude@6.0.0: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 7.2.3 + minimatch: 3.1.2 + text-table@0.2.0: {} through@2.3.8: {} @@ -15888,6 +17567,8 @@ snapshots: dependencies: os-tmpdir: 1.0.2 + tmp@0.2.3: {} + to-fast-properties@2.0.0: {} to-regex-range@5.0.1: @@ -15917,6 +17598,10 @@ snapshots: dependencies: typescript: 5.5.4 + ts-api-utils@1.3.0(typescript@5.5.4): + dependencies: + typescript: 5.5.4 + ts-dedent@2.2.0: {} ts-json-schema-generator@1.5.0: @@ -15995,7 +17680,6 @@ snapshots: tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 - optional: true tunnel@0.0.6: {} @@ -16070,6 +17754,12 @@ snapshots: get-intrinsic: 1.2.1 is-typed-array: 1.1.10 + typed-array-buffer@1.0.2: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + is-typed-array: 1.1.13 + typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.2 @@ -16077,6 +17767,14 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.10 + typed-array-byte-length@1.0.1: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 @@ -16085,12 +17783,36 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.10 + typed-array-byte-offset@1.0.2: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + typed-array-length@1.0.4: dependencies: call-bind: 1.0.2 for-each: 0.3.3 is-typed-array: 1.1.10 + typed-array-length@1.0.6: + dependencies: + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-proto: 1.0.3 + is-typed-array: 1.1.13 + possible-typed-array-names: 1.0.0 + + typed-rest-client@1.8.11: + dependencies: + qs: 6.10.3 + tunnel: 0.0.6 + underscore: 1.13.7 + typescript@3.9.10: {} typescript@4.2.4: {} @@ -16103,6 +17825,8 @@ snapshots: typescript@5.5.4: {} + uc.micro@1.0.6: {} + ufo@1.5.4: {} uglify-js@3.17.4: @@ -16115,6 +17839,8 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + underscore@1.13.7: {} + undici-types@5.26.5: {} undici@5.28.2: @@ -16125,6 +17851,8 @@ snapshots: dependencies: '@fastify/busboy': 2.1.1 + undici@6.19.8: {} + unenv-nightly@2.0.0-20240919-125358-9a64854: dependencies: defu: 6.1.4 @@ -16178,6 +17906,8 @@ snapshots: urijs@1.19.11: {} + url-join@4.0.1: {} + url-search-params@0.10.2: {} urlpattern-polyfill@4.0.3: {} @@ -16208,6 +17938,12 @@ snapshots: v8-compile-cache-lib@3.0.1: {} + v8-to-istanbul@9.3.0: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@types/istanbul-lib-coverage': 2.0.6 + convert-source-map: 2.0.0 + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.1.1 @@ -16227,6 +17963,22 @@ snapshots: vary@1.1.2: {} + vite-node@2.1.1(@types/node@20.8.3): + dependencies: + cac: 6.7.14 + debug: 4.3.6(supports-color@8.1.1) + pathe: 1.1.2 + vite: 5.0.12(@types/node@20.8.3) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + vite-node@2.1.1(@types/node@20.8.3)(supports-color@9.2.2): dependencies: cac: 6.7.14 @@ -16250,7 +18002,7 @@ snapshots: '@volar/typescript': 2.3.4 '@vue/language-core': 2.0.29(typescript@5.5.4) compare-versions: 6.1.1 - debug: 4.3.6(supports-color@9.2.2) + debug: 4.3.6(supports-color@8.1.1) kolorist: 1.8.0 local-pkg: 0.5.0 magic-string: 0.30.11 @@ -16303,6 +18055,39 @@ snapshots: mock-socket: 9.3.1 vitest: 2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2) + vitest@2.1.1(@types/node@20.8.3): + dependencies: + '@vitest/expect': 2.1.1 + '@vitest/mocker': 2.1.1(@vitest/spy@2.1.1)(msw@2.3.0(typescript@5.5.4))(vite@5.0.12(@types/node@20.8.3)) + '@vitest/pretty-format': 2.1.1 + '@vitest/runner': 2.1.1 + '@vitest/snapshot': 2.1.1 + '@vitest/spy': 2.1.1 + '@vitest/utils': 2.1.1 + chai: 5.1.1 + debug: 4.3.6(supports-color@8.1.1) + magic-string: 0.30.11 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.9.0 + tinyexec: 0.3.0 + tinypool: 1.0.1 + tinyrainbow: 1.2.0 + vite: 5.0.12(@types/node@20.8.3) + vite-node: 2.1.1(@types/node@20.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 20.8.3 + transitivePeerDependencies: + - less + - lightningcss + - msw + - sass + - stylus + - sugarss + - supports-color + - terser + vitest@2.1.1(@types/node@20.8.3)(@vitest/ui@1.6.0)(msw@2.3.0(typescript@5.5.4))(supports-color@9.2.2): dependencies: '@vitest/expect': 2.1.1 @@ -16337,6 +18122,29 @@ snapshots: - supports-color - terser + vsce@2.15.0: + dependencies: + azure-devops-node-api: 11.2.0 + chalk: 2.4.2 + cheerio: 1.0.0 + commander: 6.2.1 + glob: 7.2.3 + hosted-git-info: 4.1.0 + keytar: 7.9.0 + leven: 3.1.0 + markdown-it: 12.3.2 + mime: 1.6.0 + minimatch: 3.1.2 + parse-semver: 1.1.1 + read: 1.0.7 + semver: 5.7.1 + tmp: 0.2.3 + typed-rest-client: 1.8.11 + url-join: 4.0.1 + xml2js: 0.4.23 + yauzl: 2.10.0 + yazl: 2.5.1 + vscode-uri@3.0.8: {} vue-tsc@2.0.29(typescript@5.5.4): @@ -16358,10 +18166,20 @@ snapshots: dependencies: defaults: 1.0.3 + web-streams-polyfill@3.3.3: {} + + web-streams-polyfill@4.0.0-beta.3: {} + webidl-conversions@3.0.1: {} well-known-symbols@2.0.0: {} + whatwg-encoding@3.1.1: + dependencies: + iconv-lite: 0.6.3 + + whatwg-mimetype@4.0.0: {} + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -16414,6 +18232,14 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.0 + which-typed-array@1.1.15: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.7 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.2 + which@1.3.1: dependencies: isexe: 2.0.0 @@ -16447,6 +18273,8 @@ snapshots: '@cloudflare/workerd-linux-arm64': 1.20240925.0 '@cloudflare/workerd-windows-64': 1.20240925.0 + workerpool@6.5.1: {} + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -16494,6 +18322,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + xml2js@0.4.23: + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + xml2js@0.5.0: dependencies: sax: 1.3.0 @@ -16522,8 +18355,17 @@ snapshots: camelcase: 5.3.1 decamelize: 1.2.0 + yargs-parser@20.2.9: {} + yargs-parser@21.1.1: {} + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -16538,6 +18380,16 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.1.2 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -16550,6 +18402,15 @@ snapshots: yarn@1.22.19: {} + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yazl@2.5.1: + dependencies: + buffer-crc32: 0.2.13 + yn@3.1.1: {} yocto-queue@0.1.0: {}