diff --git a/.codependencerc b/.codependencerc
index 64f33b3..5c8c6e5 100644
--- a/.codependencerc
+++ b/.codependencerc
@@ -1,30 +1,7 @@
{
"codependencies": [
- "@changesets/cli",
- "@commitlint/cli",
- "@commitlint/config-lerna-scopes",
- "@commitlint/prompt",
- "@types/node",
- "@typescript-eslint/eslint-plugin",
- "@typescript-eslint/parser",
- "@vitest/coverage-c8",
- "c8",
- "changesets",
- "codependence",
- "commitizen",
- "conventional-changelog-cli",
- "cross-env",
- "eslint",
- "eslint-config-prettier",
- "husky",
- "lint-staged",
- "path-exists-cli",
"prettier",
- "rimraf",
- "tslib",
- "tsutils",
"turbo",
- "typescript",
- "vitest"
+ "typescript"
]
}
diff --git a/.env.example b/.env.example
new file mode 100644
index 0000000..1856e5a
--- /dev/null
+++ b/.env.example
@@ -0,0 +1,11 @@
+# Anthropic API Key for generating weekly challenges
+# Get your key from: https://console.anthropic.com/
+ANTHROPIC_API_KEY=your_api_key_here
+
+# Turbo Remote Caching (optional, speeds up CI/CD)
+# Get your token from: https://vercel.com/account/tokens
+TURBO_TOKEN=your_turbo_token_here
+TURBO_TEAM=your_team_slug_here
+
+GITHUB_TOKEN=
+PR_CREATE_TOKEN=
diff --git a/.github/workflows/biweekly-challenge.yml b/.github/workflows/biweekly-challenge.yml
new file mode 100644
index 0000000..caedbf2
--- /dev/null
+++ b/.github/workflows/biweekly-challenge.yml
@@ -0,0 +1,119 @@
+name: Biweekly Data Structure Challenge
+
+on:
+ schedule:
+ # Every other Monday at 9:00 AM UTC (1:00 AM PST) - runs on the 1st and 15th day of month
+ - cron: '0 9 1,15 * *'
+ workflow_dispatch: # Allow manual trigger
+
+jobs:
+ generate-challenge:
+ runs-on: ubuntu-latest
+ permissions:
+ contents: write
+ pull-requests: write
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v4
+
+ - name: Setup Bun
+ uses: oven-sh/setup-bun@v2
+ with:
+ bun-version: latest
+
+ - name: Install dependencies
+ run: bun install
+
+ - name: Generate new data structure challenge
+ env:
+ ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
+ run: bun run scripts/generateNewDataStructure.ts
+
+ - name: Get challenge info
+ id: challenge-info
+ run: |
+ # Get the newest challenge detail file
+ CHALLENGE_FILE=$(ls -t challenge-*.json | head -1)
+
+ # Extract info from the challenge file
+ NAME=$(jq -r '.name' $CHALLENGE_FILE)
+ TITLE=$(jq -r '.title' $CHALLENGE_FILE)
+ DIFFICULTY=$(jq -r '.difficulty' $CHALLENGE_FILE)
+
+ echo "name=$NAME" >> $GITHUB_OUTPUT
+ echo "title=$TITLE" >> $GITHUB_OUTPUT
+ echo "difficulty=$DIFFICULTY" >> $GITHUB_OUTPUT
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v6
+ with:
+ token: ${{ secrets.GITHUB_TOKEN }}
+ commit-message: |
+ feat(${{ steps.challenge-info.outputs.name }}): add ${{ steps.challenge-info.outputs.title }} challenge
+
+ - Difficulty: ${{ steps.challenge-info.outputs.difficulty }}
+ - Challenge details provided
+ - Ready for implementation
+
+ Generated with Claude AI
+ branch: challenge/${{ steps.challenge-info.outputs.name }}
+ delete-branch: true
+ title: "Biweekly Challenge: ${{ steps.challenge-info.outputs.title }}"
+ body: |
+ ## New Biweekly Data Structure Challenge
+
+ **Data Structure:** ${{ steps.challenge-info.outputs.title }}
+ **Difficulty:** ${{ steps.challenge-info.outputs.difficulty }}
+ **Challenge Details:** `challenge-${{ steps.challenge-info.outputs.name }}.json`
+
+ ### What's Included
+
+ - Challenge specification with operations and complexity analysis
+ - TypeScript interface and factory function templates
+ - Hints and use cases
+ - Added to challenges.json tracker
+
+ ### Getting Started
+
+ ```bash
+ # 1. Create the package and demo app
+ bun run create ${{ steps.challenge-info.outputs.name }}
+
+ # 2. Review the challenge details
+ cat challenge-${{ steps.challenge-info.outputs.name }}.json
+
+ # 3. Implement the data structure
+ cd packages/${{ steps.challenge-info.outputs.name }}
+ # Edit src/index.ts with the implementation
+
+ # 4. Create the visualization
+ cd ../../apps/${{ steps.challenge-info.outputs.name }}-demo
+ bun run dev
+ # Edit src/main.ts to visualize the data structure
+
+ # 5. Run tests
+ cd ../..
+ bun test
+ ```
+
+ ### Implementation Checklist
+
+ - [ ] Create package with `bun run create ${{ steps.challenge-info.outputs.name }}`
+ - [ ] Implement data structure in `packages/${{ steps.challenge-info.outputs.name }}/src/index.ts`
+ - [ ] Write tests in `packages/${{ steps.challenge-info.outputs.name }}/tests/`
+ - [ ] Create interactive demo in `apps/${{ steps.challenge-info.outputs.name }}-demo/`
+ - [ ] Add visualization with Tailwind CSS
+ - [ ] All tests passing
+ - [ ] Update challenges.json `completed: true`
+ - [ ] Ready for code review
+
+ ---
+
+ *This challenge was generated by Claude AI using the biweekly automation.*
+
+ Have fun building!
+ labels: |
+ data-structure
+ biweekly-challenge
+ auto-generated
diff --git a/.gitignore b/.gitignore
index 57680b0..b2c0ca0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -64,3 +64,16 @@ coverage
**/dist/*
.turbo
+.vscode
+
+# Generated challenge detail files (committed in PRs)
+challenge-*.json
+
+# Python
+__pycache__/
+*.py[cod]
+*$py.class
+.pytest_cache/
+.venv/
+venv/
+*.egg-info/
\ No newline at end of file
diff --git a/.husky/commit-msg b/.husky/commit-msg
deleted file mode 100755
index 9db0170..0000000
--- a/.husky/commit-msg
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-npm run commit-msg
diff --git a/.husky/post-merge b/.husky/post-merge
deleted file mode 100755
index bb37cce..0000000
--- a/.husky/post-merge
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-npm run setup
diff --git a/.husky/pre-commit b/.husky/pre-commit
deleted file mode 100755
index d4a43dd..0000000
--- a/.husky/pre-commit
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-npm run pre-commit
diff --git a/.mise.toml b/.mise.toml
new file mode 100644
index 0000000..5f3f72c
--- /dev/null
+++ b/.mise.toml
@@ -0,0 +1,73 @@
+[tools]
+bun = "1.3.1"
+python = "3.14"
+go = "1.25"
+
+[settings]
+legacy_version_file = true
+
+[tasks.install]
+description = "Install all dependencies"
+run = [
+ "bun install",
+ "pip install pytest"
+]
+
+[tasks.test]
+description = "Run all tests with Turbo caching"
+run = "turbo run test"
+
+[tasks."test:ts"]
+description = "Run TypeScript tests"
+run = "turbo run test:ts"
+
+[tasks."test:go"]
+description = "Run Go tests"
+run = "turbo run test:go"
+
+[tasks."test:python"]
+description = "Run Python tests"
+run = "turbo run test:python"
+
+[tasks.format]
+description = "Format code with Prettier"
+run = "bun run format"
+
+[tasks.clean]
+description = "Remove build artifacts and caches"
+run = [
+ "rm -rf structures/*/dist",
+ "rm -rf structures/*/.turbo",
+ "rm -rf .turbo",
+ "find structures -name '__pycache__' -exec rm -rf {} +",
+ "find structures -name '.pytest_cache' -exec rm -rf {} +"
+]
+
+[tasks.setup]
+description = "First-time project setup"
+run = [
+ "bun install",
+ "pip install pytest",
+ "./scripts/setup-hooks.sh"
+]
+
+[tasks.check]
+description = "Verify all tools and dependencies are working"
+run = [
+ "bun --version",
+ "go version",
+ "python --version",
+ "pytest --version",
+ "turbo --version"
+]
+
+[tasks."generate-challenge"]
+description = "Generate a new data structure challenge"
+run = "bun run generate-challenge"
+
+[tasks."update-readme"]
+description = "Update README with implementation status"
+run = "bun run scripts/updateReadme.ts"
+
+[env]
+_.python.venv = { path = ".venv", create = true }
diff --git a/.nvmrc b/.nvmrc
deleted file mode 100644
index 209e3ef..0000000
--- a/.nvmrc
+++ /dev/null
@@ -1 +0,0 @@
-20
diff --git a/.prettierrc b/.prettierrc
deleted file mode 100644
index d59b3e1..0000000
--- a/.prettierrc
+++ /dev/null
@@ -1,9 +0,0 @@
-{
- "semi": false,
- "trailingComma": "all",
- "printWidth": 120,
- "useTabs": false,
- "singleQuote": true,
- "jsxSingleQuote": true,
- "proseWrap": "preserve"
-}
diff --git a/apps/stack-demo/index.html b/apps/stack-demo/index.html
new file mode 100644
index 0000000..325ea70
--- /dev/null
+++ b/apps/stack-demo/index.html
@@ -0,0 +1,42 @@
+
+
+
+
+
+ Stack Data Structure Demo
+
+
+
+
+
+ Stack
+
+ Last In, First Out (LIFO)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/stack-demo/package.json b/apps/stack-demo/package.json
new file mode 100644
index 0000000..70d7256
--- /dev/null
+++ b/apps/stack-demo/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@datastructures/stack-demo",
+ "version": "0.0.1",
+ "private": true,
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "vite build",
+ "preview": "vite preview",
+ "tsc": "tsc --noEmit"
+ },
+ "dependencies": {
+ "@datastructures/stack": "workspace:*",
+ "@datastructures/components": "workspace:*"
+ },
+ "devDependencies": {
+ "autoprefixer": "^10.4.20",
+ "postcss": "^8.4.49",
+ "tailwindcss": "^3.4.17",
+ "typescript": "^5.7.2",
+ "vite": "^6.0.5"
+ }
+}
diff --git a/apps/stack-demo/postcss.config.js b/apps/stack-demo/postcss.config.js
new file mode 100644
index 0000000..2e7af2b
--- /dev/null
+++ b/apps/stack-demo/postcss.config.js
@@ -0,0 +1,6 @@
+export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
diff --git a/apps/stack-demo/src/main.js b/apps/stack-demo/src/main.js
new file mode 100644
index 0000000..753d988
--- /dev/null
+++ b/apps/stack-demo/src/main.js
@@ -0,0 +1,97 @@
+import { stack } from "@datastructures/stack";
+import { createButton, createInput } from "@datastructures/components";
+import "./style.css";
+let currentStack = stack();
+const controlsEl = document.getElementById("controls");
+const lengthDisplay = document.getElementById("lengthDisplay");
+const stackContainer = document.getElementById("stackContainer");
+const logContainer = document.getElementById("logContainer");
+const updateDisplay = () => {
+ const items = currentStack.print();
+ const length = currentStack.length();
+ lengthDisplay.textContent = String(length);
+ if (items.length === 0) {
+ stackContainer.innerHTML =
+ 'Stack is empty
';
+ }
+ else {
+ stackContainer.innerHTML = items
+ .map((item, index) => `
+
+ ${item}
+ ${index}
+
+ `)
+ .reverse()
+ .join("");
+ }
+};
+const addLog = (operation, value) => {
+ const logEntry = document.createElement("div");
+ logEntry.className =
+ "p-2 font-mono text-sm text-slate-400 border-l-2 border-slate-600 pl-4 mb-2 animate-slide-in";
+ const timestamp = new Date().toLocaleTimeString();
+ logEntry.textContent = `[${timestamp}] ${operation}${value !== undefined ? `: ${value}` : ""}`;
+ logContainer.insertBefore(logEntry, logContainer.firstChild);
+ if (logContainer.children.length > 10) {
+ logContainer.removeChild(logContainer.lastChild);
+ }
+};
+const itemInput = createInput({
+ placeholder: "Enter item to push...",
+ onEnter: (value) => {
+ if (!value.trim())
+ return;
+ currentStack = currentStack.add(value);
+ addLog("Push", value);
+ updateDisplay();
+ itemInput.value = "";
+ itemInput.focus();
+ },
+});
+const pushBtn = createButton({
+ text: "Push",
+ onClick: () => {
+ const value = itemInput.value.trim();
+ if (!value)
+ return;
+ currentStack = currentStack.add(value);
+ addLog("Push", value);
+ updateDisplay();
+ itemInput.value = "";
+ itemInput.focus();
+ },
+});
+const popBtn = createButton({
+ text: "Pop",
+ variant: "danger",
+ onClick: () => {
+ const items = currentStack.print();
+ if (items.length === 0) {
+ addLog("Pop failed - stack is empty");
+ return;
+ }
+ const poppedValue = items[items.length - 1];
+ currentStack = currentStack.remove();
+ addLog("Pop", poppedValue);
+ updateDisplay();
+ },
+});
+const clearBtn = createButton({
+ text: "Clear",
+ variant: "secondary",
+ onClick: () => {
+ currentStack = stack();
+ addLog("Clear stack");
+ updateDisplay();
+ },
+});
+const inputGroup = document.createElement("div");
+inputGroup.className = "flex gap-2 flex-1 min-w-[250px]";
+inputGroup.appendChild(itemInput);
+inputGroup.appendChild(pushBtn);
+controlsEl.appendChild(inputGroup);
+controlsEl.appendChild(popBtn);
+controlsEl.appendChild(clearBtn);
+updateDisplay();
+addLog("Stack initialized");
diff --git a/apps/stack-demo/src/main.ts b/apps/stack-demo/src/main.ts
new file mode 100644
index 0000000..ef70da8
--- /dev/null
+++ b/apps/stack-demo/src/main.ts
@@ -0,0 +1,111 @@
+import { stack, StackList } from "@datastructures/stack"
+import { createButton, createInput } from "@datastructures/components"
+import "./style.css"
+
+let currentStack: StackList = stack()
+
+const controlsEl = document.getElementById("controls")!
+const lengthDisplay = document.getElementById("lengthDisplay")!
+const stackContainer = document.getElementById("stackContainer")!
+const logContainer = document.getElementById("logContainer")!
+
+const updateDisplay = () => {
+ const items = currentStack.print()
+ const length = currentStack.length()
+
+ lengthDisplay.textContent = String(length)
+
+ if (items.length === 0) {
+ stackContainer.innerHTML =
+ 'Stack is empty
'
+ } else {
+ stackContainer.innerHTML = items
+ .map(
+ (item, index) => `
+
+ ${item}
+ ${index}
+
+ `
+ )
+ .reverse()
+ .join("")
+ }
+}
+
+const addLog = (operation: string, value?: unknown) => {
+ const logEntry = document.createElement("div")
+ logEntry.className =
+ "p-2 font-mono text-sm text-slate-400 border-l-2 border-slate-600 pl-4 mb-2 animate-slide-in"
+ const timestamp = new Date().toLocaleTimeString()
+ logEntry.textContent = `[${timestamp}] ${operation}${value !== undefined ? `: ${value}` : ""}`
+
+ logContainer.insertBefore(logEntry, logContainer.firstChild)
+
+ if (logContainer.children.length > 10) {
+ logContainer.removeChild(logContainer.lastChild!)
+ }
+}
+
+const itemInput = createInput({
+ placeholder: "Enter item to push...",
+ onEnter: (value) => {
+ if (!value.trim()) return
+ currentStack = currentStack.add(value)
+ addLog("Push", value)
+ updateDisplay()
+ itemInput.value = ""
+ itemInput.focus()
+ },
+})
+
+const pushBtn = createButton({
+ text: "Push",
+ onClick: () => {
+ const value = itemInput.value.trim()
+ if (!value) return
+ currentStack = currentStack.add(value)
+ addLog("Push", value)
+ updateDisplay()
+ itemInput.value = ""
+ itemInput.focus()
+ },
+})
+
+const popBtn = createButton({
+ text: "Pop",
+ variant: "danger",
+ onClick: () => {
+ const items = currentStack.print()
+ if (items.length === 0) {
+ addLog("Pop failed - stack is empty")
+ return
+ }
+ const poppedValue = items[items.length - 1]
+ currentStack = currentStack.remove()
+ addLog("Pop", poppedValue)
+ updateDisplay()
+ },
+})
+
+const clearBtn = createButton({
+ text: "Clear",
+ variant: "secondary",
+ onClick: () => {
+ currentStack = stack()
+ addLog("Clear stack")
+ updateDisplay()
+ },
+})
+
+const inputGroup = document.createElement("div")
+inputGroup.className = "flex gap-2 flex-1 min-w-[250px]"
+inputGroup.appendChild(itemInput)
+inputGroup.appendChild(pushBtn)
+
+controlsEl.appendChild(inputGroup)
+controlsEl.appendChild(popBtn)
+controlsEl.appendChild(clearBtn)
+
+updateDisplay()
+addLog("Stack initialized")
diff --git a/apps/stack-demo/src/style.css b/apps/stack-demo/src/style.css
new file mode 100644
index 0000000..c10bc44
--- /dev/null
+++ b/apps/stack-demo/src/style.css
@@ -0,0 +1,20 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer utilities {
+ .animate-slide-in {
+ animation: slideIn 0.3s ease-out;
+ }
+}
+
+@keyframes slideIn {
+ from {
+ opacity: 0;
+ transform: translateY(-10px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
diff --git a/apps/stack-demo/tailwind.config.js b/apps/stack-demo/tailwind.config.js
new file mode 100644
index 0000000..38302b3
--- /dev/null
+++ b/apps/stack-demo/tailwind.config.js
@@ -0,0 +1,8 @@
+/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+}
diff --git a/apps/stack-demo/tsconfig.json b/apps/stack-demo/tsconfig.json
new file mode 100644
index 0000000..ae57f7d
--- /dev/null
+++ b/apps/stack-demo/tsconfig.json
@@ -0,0 +1,15 @@
+{
+ "compilerOptions": {
+ "target": "ES2020",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
+ "skipLibCheck": true,
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noEmit": true,
+ "strict": false
+ },
+ "include": ["src"]
+}
diff --git a/bun.lock b/bun.lock
new file mode 100644
index 0000000..61208b9
--- /dev/null
+++ b/bun.lock
@@ -0,0 +1,527 @@
+{
+ "lockfileVersion": 1,
+ "workspaces": {
+ "": {
+ "name": "@datastructures/root",
+ "devDependencies": {
+ "@anthropic-ai/sdk": "^0.32.1",
+ "@types/bun": "^1.1.15",
+ "prettier": "3.3.1",
+ "turbo": "2.0.3",
+ "typescript": "5.4.5",
+ },
+ },
+ "apps/stack-demo": {
+ "name": "@datastructures/stack-demo",
+ "version": "0.0.1",
+ "dependencies": {
+ "@datastructures/components": "workspace:*",
+ "@datastructures/stack": "workspace:*",
+ },
+ "devDependencies": {
+ "autoprefixer": "^10.4.20",
+ "postcss": "^8.4.49",
+ "tailwindcss": "^3.4.17",
+ "typescript": "^5.7.2",
+ "vite": "^6.0.5",
+ },
+ },
+ "packages/avl-tree": {
+ "name": "@datastructures/avl-tree",
+ "version": "0.0.2",
+ },
+ "packages/components": {
+ "name": "@datastructures/components",
+ "version": "0.0.1",
+ },
+ "packages/graph": {
+ "name": "@datastructures/graph",
+ "version": "0.0.1",
+ },
+ "packages/linked-list": {
+ "name": "@datastructures/linked-list",
+ "version": "1.0.0",
+ },
+ "packages/queue": {
+ "name": "@datastructures/queue",
+ "version": "0.0.1",
+ },
+ "packages/stack": {
+ "name": "@datastructures/stack",
+ "version": "0.0.1",
+ },
+ },
+ "packages": {
+ "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="],
+
+ "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.32.1", "", { "dependencies": { "@types/node": "^18.11.18", "@types/node-fetch": "^2.6.4", "abort-controller": "^3.0.0", "agentkeepalive": "^4.2.1", "form-data-encoder": "1.7.2", "formdata-node": "^4.3.2", "node-fetch": "^2.6.7" } }, "sha512-U9JwTrDvdQ9iWuABVsMLj8nJVwAyQz6QXvgLsVhryhCEPkLsbcP/MXxm+jYcAwLoV8ESbaTTjnD4kuAFa+Hyjg=="],
+
+ "@datastructures/avl-tree": ["@datastructures/avl-tree@workspace:packages/avl-tree"],
+
+ "@datastructures/components": ["@datastructures/components@workspace:packages/components"],
+
+ "@datastructures/graph": ["@datastructures/graph@workspace:packages/graph"],
+
+ "@datastructures/linked-list": ["@datastructures/linked-list@workspace:packages/linked-list"],
+
+ "@datastructures/queue": ["@datastructures/queue@workspace:packages/queue"],
+
+ "@datastructures/stack": ["@datastructures/stack@workspace:packages/stack"],
+
+ "@datastructures/stack-demo": ["@datastructures/stack-demo@workspace:apps/stack-demo"],
+
+ "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="],
+
+ "@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="],
+
+ "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="],
+
+ "@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="],
+
+ "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="],
+
+ "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="],
+
+ "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="],
+
+ "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="],
+
+ "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="],
+
+ "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="],
+
+ "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="],
+
+ "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="],
+
+ "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="],
+
+ "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="],
+
+ "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="],
+
+ "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="],
+
+ "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="],
+
+ "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="],
+
+ "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="],
+
+ "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="],
+
+ "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="],
+
+ "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="],
+
+ "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="],
+
+ "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="],
+
+ "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="],
+
+ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="],
+
+ "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],
+
+ "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="],
+
+ "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="],
+
+ "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="],
+
+ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
+
+ "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
+
+ "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
+
+ "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="],
+
+ "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="],
+
+ "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.53.2", "", { "os": "android", "cpu": "arm" }, "sha512-yDPzwsgiFO26RJA4nZo8I+xqzh7sJTZIWQOxn+/XOdPE31lAvLIYCKqjV+lNH/vxE2L2iH3plKxDCRK6i+CwhA=="],
+
+ "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.2", "", { "os": "android", "cpu": "arm64" }, "sha512-k8FontTxIE7b0/OGKeSN5B6j25EuppBcWM33Z19JoVT7UTXFSo3D9CdU39wGTeb29NO3XxpMNauh09B+Ibw+9g=="],
+
+ "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-A6s4gJpomNBtJ2yioj8bflM2oogDwzUiMl2yNJ2v9E7++sHrSrsQ29fOfn5DM/iCzpWcebNYEdXpaK4tr2RhfQ=="],
+
+ "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-e6XqVmXlHrBlG56obu9gDRPW3O3hLxpwHpLsBJvuI8qqnsrtSZ9ERoWUXtPOkY8c78WghyPHZdmPhHLWNdAGEw=="],
+
+ "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-v0E9lJW8VsrwPux5Qe5CwmH/CF/2mQs6xU1MF3nmUxmZUCHazCjLgYvToOk+YuuUqLQBio1qkkREhxhc656ViA=="],
+
+ "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-ClAmAPx3ZCHtp6ysl4XEhWU69GUB1D+s7G9YjHGhIGCSrsg00nEGRRZHmINYxkdoJehde8VIsDC5t9C0gb6yqA=="],
+
+ "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.53.2", "", { "os": "linux", "cpu": "arm" }, "sha512-EPlb95nUsz6Dd9Qy13fI5kUPXNSljaG9FiJ4YUGU1O/Q77i5DYFW5KR8g1OzTcdZUqQQ1KdDqsTohdFVwCwjqg=="],
+
+ "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.2", "", { "os": "linux", "cpu": "arm" }, "sha512-BOmnVW+khAUX+YZvNfa0tGTEMVVEerOxN0pDk2E6N6DsEIa2Ctj48FOMfNDdrwinocKaC7YXUZ1pHlKpnkja/Q=="],
+
+ "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.53.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-Xt2byDZ+6OVNuREgBXr4+CZDJtrVso5woFtpKdGPhpTPHcNG7D8YXeQzpNbFRxzTVqJf7kvPMCub/pcGUWgBjA=="],
+
+ "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-+LdZSldy/I9N8+klim/Y1HsKbJ3BbInHav5qE9Iy77dtHC/pibw1SR/fXlWyAk0ThnpRKoODwnAuSjqxFRDHUQ=="],
+
+ "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.2", "", { "os": "linux", "cpu": "none" }, "sha512-8ms8sjmyc1jWJS6WdNSA23rEfdjWB30LH8Wqj0Cqvv7qSHnvw6kgMMXRdop6hkmGPlyYBdRPkjJnj3KCUHV/uQ=="],
+
+ "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.53.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-3HRQLUQbpBDMmzoxPJYd3W6vrVHOo2cVW8RUo87Xz0JPJcBLBr5kZ1pGcQAhdZgX9VV7NbGNipah1omKKe23/g=="],
+
+ "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.53.2", "", { "os": "linux", "cpu": "none" }, "sha512-fMjKi+ojnmIvhk34gZP94vjogXNNUKMEYs+EDaB/5TG/wUkoeua7p7VCHnE6T2Tx+iaghAqQX8teQzcvrYpaQA=="],
+
+ "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.53.2", "", { "os": "linux", "cpu": "none" }, "sha512-XuGFGU+VwUUV5kLvoAdi0Wz5Xbh2SrjIxCtZj6Wq8MDp4bflb/+ThZsVxokM7n0pcbkEr2h5/pzqzDYI7cCgLQ=="],
+
+ "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.53.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-w6yjZF0P+NGzWR3AXWX9zc0DNEGdtvykB03uhonSHMRa+oWA6novflo2WaJr6JZakG2ucsyb+rvhrKac6NIy+w=="],
+
+ "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.53.2", "", { "os": "linux", "cpu": "x64" }, "sha512-yo8d6tdfdeBArzC7T/PnHd7OypfI9cbuZzPnzLJIyKYFhAQ8SvlkKtKBMbXDxe1h03Rcr7u++nFS7tqXz87Gtw=="],
+
+ "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.53.2", "", { "os": "linux", "cpu": "x64" }, "sha512-ah59c1YkCxKExPP8O9PwOvs+XRLKwh/mV+3YdKqQ5AMQ0r4M4ZDuOrpWkUaqO7fzAHdINzV9tEVu8vNw48z0lA=="],
+
+ "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.53.2", "", { "os": "none", "cpu": "arm64" }, "sha512-4VEd19Wmhr+Zy7hbUsFZ6YXEiP48hE//KPLCSVNY5RMGX2/7HZ+QkN55a3atM1C/BZCGIgqN+xrVgtdak2S9+A=="],
+
+ "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.53.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-IlbHFYc/pQCgew/d5fslcy1KEaYVCJ44G8pajugd8VoOEI8ODhtb/j8XMhLpwHCMB3yk2J07ctup10gpw2nyMA=="],
+
+ "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.53.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-lNlPEGgdUfSzdCWU176ku/dQRnA7W+Gp8d+cWv73jYrb8uT7HTVVxq62DUYxjbaByuf1Yk0RIIAbDzp+CnOTFg=="],
+
+ "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.53.2", "", { "os": "win32", "cpu": "x64" }, "sha512-S6YojNVrHybQis2lYov1sd+uj7K0Q05NxHcGktuMMdIQ2VixGwAfbJ23NnlvvVV1bdpR2m5MsNBViHJKcA4ADw=="],
+
+ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.53.2", "", { "os": "win32", "cpu": "x64" }, "sha512-k+/Rkcyx//P6fetPoLMb8pBeqJBNGx81uuf7iljX9++yNBVRDQgD04L+SVXmXmh5ZP4/WOp4mWF0kmi06PW2tA=="],
+
+ "@types/bun": ["@types/bun@1.3.2", "", { "dependencies": { "bun-types": "1.3.2" } }, "sha512-t15P7k5UIgHKkxwnMNkJbWlh/617rkDGEdSsDbu+qNHTaz9SKf7aC8fiIlUdD5RPpH6GEkP0cK7WlvmrEBRtWg=="],
+
+ "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
+
+ "@types/node": ["@types/node@18.19.130", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg=="],
+
+ "@types/node-fetch": ["@types/node-fetch@2.6.13", "", { "dependencies": { "@types/node": "*", "form-data": "^4.0.4" } }, "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw=="],
+
+ "@types/react": ["@types/react@19.2.5", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-keKxkZMqnDicuvFoJbzrhbtdLSPhj/rZThDlKWCDbgXmUg0rEUFtRssDXKYmtXluZlIqiC5VqkCgRwzuyLHKHw=="],
+
+ "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="],
+
+ "agentkeepalive": ["agentkeepalive@4.6.0", "", { "dependencies": { "humanize-ms": "^1.2.1" } }, "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ=="],
+
+ "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="],
+
+ "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="],
+
+ "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="],
+
+ "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
+
+ "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="],
+
+ "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="],
+
+ "autoprefixer": ["autoprefixer@10.4.22", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-lite": "^1.0.30001754", "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg=="],
+
+ "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
+
+ "baseline-browser-mapping": ["baseline-browser-mapping@2.8.28", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ=="],
+
+ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
+
+ "brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="],
+
+ "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
+
+ "browserslist": ["browserslist@4.28.0", "", { "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", "electron-to-chromium": "^1.5.249", "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" } }, "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ=="],
+
+ "bun-types": ["bun-types@1.3.2", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-i/Gln4tbzKNuxP70OWhJRZz1MRfvqExowP7U6JKoI8cntFrtxg7RJK3jvz7wQW54UuvNC8tbKHHri5fy74FVqg=="],
+
+ "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
+
+ "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="],
+
+ "caniuse-lite": ["caniuse-lite@1.0.30001755", "", {}, "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA=="],
+
+ "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
+
+ "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
+
+ "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
+
+ "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="],
+
+ "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="],
+
+ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
+
+ "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="],
+
+ "csstype": ["csstype@3.2.2", "", {}, "sha512-D80T+tiqkd/8B0xNlbstWDG4x6aqVfO52+OlSUNIdkTvmNw0uQpJLeos2J/2XvpyidAFuTPmpad+tUxLndwj6g=="],
+
+ "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="],
+
+ "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="],
+
+ "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="],
+
+ "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
+
+ "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="],
+
+ "electron-to-chromium": ["electron-to-chromium@1.5.254", "", {}, "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg=="],
+
+ "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
+
+ "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
+
+ "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
+
+ "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
+
+ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="],
+
+ "esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="],
+
+ "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="],
+
+ "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="],
+
+ "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="],
+
+ "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="],
+
+ "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
+
+ "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
+
+ "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="],
+
+ "form-data": ["form-data@4.0.4", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow=="],
+
+ "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="],
+
+ "formdata-node": ["formdata-node@4.4.1", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "4.0.0-beta.3" } }, "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ=="],
+
+ "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="],
+
+ "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
+
+ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="],
+
+ "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="],
+
+ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="],
+
+ "glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="],
+
+ "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
+
+ "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="],
+
+ "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="],
+
+ "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
+
+ "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="],
+
+ "humanize-ms": ["humanize-ms@1.2.1", "", { "dependencies": { "ms": "^2.0.0" } }, "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ=="],
+
+ "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
+
+ "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="],
+
+ "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
+
+ "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
+
+ "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
+
+ "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
+
+ "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
+
+ "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="],
+
+ "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="],
+
+ "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="],
+
+ "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="],
+
+ "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="],
+
+ "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="],
+
+ "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="],
+
+ "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="],
+
+ "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="],
+
+ "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="],
+
+ "minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="],
+
+ "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
+
+ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
+
+ "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
+
+ "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="],
+
+ "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="],
+
+ "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="],
+
+ "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="],
+
+ "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
+
+ "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="],
+
+ "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
+
+ "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="],
+
+ "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="],
+
+ "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
+
+ "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="],
+
+ "path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="],
+
+ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
+
+ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="],
+
+ "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="],
+
+ "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="],
+
+ "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="],
+
+ "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="],
+
+ "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="],
+
+ "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="],
+
+ "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="],
+
+ "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="],
+
+ "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="],
+
+ "prettier": ["prettier@3.3.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg=="],
+
+ "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
+
+ "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="],
+
+ "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
+
+ "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="],
+
+ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="],
+
+ "rollup": ["rollup@4.53.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.53.2", "@rollup/rollup-android-arm64": "4.53.2", "@rollup/rollup-darwin-arm64": "4.53.2", "@rollup/rollup-darwin-x64": "4.53.2", "@rollup/rollup-freebsd-arm64": "4.53.2", "@rollup/rollup-freebsd-x64": "4.53.2", "@rollup/rollup-linux-arm-gnueabihf": "4.53.2", "@rollup/rollup-linux-arm-musleabihf": "4.53.2", "@rollup/rollup-linux-arm64-gnu": "4.53.2", "@rollup/rollup-linux-arm64-musl": "4.53.2", "@rollup/rollup-linux-loong64-gnu": "4.53.2", "@rollup/rollup-linux-ppc64-gnu": "4.53.2", "@rollup/rollup-linux-riscv64-gnu": "4.53.2", "@rollup/rollup-linux-riscv64-musl": "4.53.2", "@rollup/rollup-linux-s390x-gnu": "4.53.2", "@rollup/rollup-linux-x64-gnu": "4.53.2", "@rollup/rollup-linux-x64-musl": "4.53.2", "@rollup/rollup-openharmony-arm64": "4.53.2", "@rollup/rollup-win32-arm64-msvc": "4.53.2", "@rollup/rollup-win32-ia32-msvc": "4.53.2", "@rollup/rollup-win32-x64-gnu": "4.53.2", "@rollup/rollup-win32-x64-msvc": "4.53.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-MHngMYwGJVi6Fmnk6ISmnk7JAHRNF0UkuucA0CUW3N3a4KnONPEZz+vUanQP/ZC/iY1Qkf3bwPWzyY84wEks1g=="],
+
+ "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
+
+ "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
+
+ "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
+
+ "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="],
+
+ "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="],
+
+ "string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
+
+ "string-width-cjs": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="],
+
+ "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "sucrase": ["sucrase@3.35.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA=="],
+
+ "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
+
+ "tailwindcss": ["tailwindcss@3.4.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ=="],
+
+ "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="],
+
+ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="],
+
+ "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="],
+
+ "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
+
+ "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="],
+
+ "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="],
+
+ "turbo": ["turbo@2.0.3", "", { "optionalDependencies": { "turbo-darwin-64": "2.0.3", "turbo-darwin-arm64": "2.0.3", "turbo-linux-64": "2.0.3", "turbo-linux-arm64": "2.0.3", "turbo-windows-64": "2.0.3", "turbo-windows-arm64": "2.0.3" }, "bin": { "turbo": "bin/turbo" } }, "sha512-jF1K0tTUyryEWmgqk1V0ALbSz3VdeZ8FXUo6B64WsPksCMCE48N5jUezGOH2MN0+epdaRMH8/WcPU0QQaVfeLA=="],
+
+ "turbo-darwin-64": ["turbo-darwin-64@2.0.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-v7ztJ8sxdHw3SLfO2MhGFeeU4LQhFii1hIGs9uBiXns/0YTGOvxLeifnfGqhfSrAIIhrCoByXO7nR9wlm10n3Q=="],
+
+ "turbo-darwin-arm64": ["turbo-darwin-arm64@2.0.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LUcqvkV9Bxtng6QHbevp8IK8zzwbIxM6HMjCE7FEW6yJBN1KwvTtRtsGBwwmTxaaLO0wD1Jgl3vgkXAmQ4fqUw=="],
+
+ "turbo-linux-64": ["turbo-linux-64@2.0.3", "", { "os": "linux", "cpu": "x64" }, "sha512-xpdY1suXoEbsQsu0kPep2zrB8ijv/S5aKKrntGuQ62hCiwDFoDcA/Z7FZ8IHQ2u+dpJARa7yfiByHmizFE0r5Q=="],
+
+ "turbo-linux-arm64": ["turbo-linux-arm64@2.0.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-MBACTcSR874L1FtLL7gkgbI4yYJWBUCqeBN/iE29D+8EFe0d3fAyviFlbQP4K/HaDYet1i26xkkOiWr0z7/V9A=="],
+
+ "turbo-windows-64": ["turbo-windows-64@2.0.3", "", { "os": "win32", "cpu": "x64" }, "sha512-zi3YuKPkM9JxMTshZo3excPk37hUrj5WfnCqh4FjI26ux6j/LJK+Dh3SebMHd9mR7wP9CMam4GhmLCT+gDfM+w=="],
+
+ "turbo-windows-arm64": ["turbo-windows-arm64@2.0.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-wmed4kkenLvRbidi7gISB4PU77ujBuZfgVGDZ4DXTFslE/kYpINulwzkVwJIvNXsJtHqyOq0n6jL8Zwl3BrwDg=="],
+
+ "typescript": ["typescript@5.4.5", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ=="],
+
+ "undici-types": ["undici-types@5.26.5", "", {}, "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="],
+
+ "update-browserslist-db": ["update-browserslist-db@1.1.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A=="],
+
+ "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
+
+ "vite": ["vite@6.4.1", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g=="],
+
+ "web-streams-polyfill": ["web-streams-polyfill@4.0.0-beta.3", "", {}, "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug=="],
+
+ "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="],
+
+ "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="],
+
+ "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
+
+ "wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
+
+ "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
+
+ "@datastructures/stack-demo/typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
+
+ "@types/node-fetch/@types/node": ["@types/node@20.14.2", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q=="],
+
+ "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "bun-types/@types/node": ["@types/node@20.14.2", "", { "dependencies": { "undici-types": "~5.26.4" } }, "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q=="],
+
+ "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
+
+ "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
+
+ "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
+
+ "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "wrap-ansi-cjs/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
+
+ "wrap-ansi-cjs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
+
+ "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
+
+ "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+
+ "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
+
+ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
+ }
+}
diff --git a/challenges.json b/challenges.json
new file mode 100644
index 0000000..8daa4b0
--- /dev/null
+++ b/challenges.json
@@ -0,0 +1,39 @@
+{
+ "challenges": [
+ {
+ "name": "stack",
+ "title": "Stack",
+ "description": "An ordered structure of data inputs obeying the principle of last in, first out (LIFO)",
+ "difficulty": "easy",
+ "completed": true
+ },
+ {
+ "name": "queue",
+ "title": "Queue",
+ "description": "An ordered structure of data inputs obeying the principle of first in, first out (FIFO)",
+ "difficulty": "easy",
+ "completed": true
+ },
+ {
+ "name": "linked-list",
+ "title": "Linked List",
+ "description": "A linear structure of nodes where each node contains data and a reference to the next node",
+ "difficulty": "easy",
+ "completed": true
+ },
+ {
+ "name": "avl-tree",
+ "title": "AVL Tree",
+ "description": "A self-balancing binary search tree where heights of left and right subtrees differ by at most 1",
+ "difficulty": "medium",
+ "completed": true
+ },
+ {
+ "name": "graph",
+ "title": "Graph",
+ "description": "A collection of vertices/nodes connected by edges",
+ "difficulty": "medium",
+ "completed": true
+ }
+ ]
+}
diff --git a/eslint.config.mjs b/eslint.config.mjs
deleted file mode 100644
index 2aab9ed..0000000
--- a/eslint.config.mjs
+++ /dev/null
@@ -1,15 +0,0 @@
-import globals from "globals";
-import pluginJs from "@eslint/js";
-import tseslint from "typescript-eslint";
-
-
-export default [
- {
- ignores: ["*.js", "**/dist"],
- },
- {
- languageOptions: { globals: globals.browser },
- },
- pluginJs.configs.recommended,
- ...tseslint.configs.recommended,
-];
diff --git a/mise.toml b/mise.toml
new file mode 100644
index 0000000..017c7ae
--- /dev/null
+++ b/mise.toml
@@ -0,0 +1,8 @@
+[tools]
+node = { version = "24", postinstall = "corepack enable", package_manager = "pnpm" }
+go = { version = "1.24" }
+python = { version = "3.13", package_manager = "poetry", postinstall = "poetry install" }
+
+[env]
+NODE_ENV = "development"
+
diff --git a/package.json b/package.json
index 4a48afc..a5f61f9 100644
--- a/package.json
+++ b/package.json
@@ -4,30 +4,22 @@
"description": "Data Structures in TypeScript 🦄",
"private": true,
"workspaces": [
- "packages/*"
+ "structures/*",
+ "apps/*",
+ "scripts"
],
- "packageManager": "pnpm@9.5.0",
+ "packageManager": "bun@1.3.1",
"scripts": {
"build": "turbo run build",
- "clean": "pnpm -r clean",
- "commit": "git-cz",
- "commit-msg": "commitlint --edit $1",
- "husky-setup": "(path-exists .husky/commit-msg) || (husky install && pnpm run husky-setup:commit-msg && pnpm run husky-setup:post-merge && pnpm run husky-setup:pre-commit)",
- "husky-setup:commit-msg": "npx husky add .husky/commit-msg 'npm run commit-msg'",
- "husky-setup:post-merge": "npx husky add .husky/post-merge 'npm run setup'",
- "husky-setup:pre-commit": "npx husky add .husky/pre-commit 'npm run pre-commit'",
- "lint": "eslint --cache --fix",
- "lint:ci": "eslint --cache",
- "test": "vitest run --coverage",
- "test:ci": "pnpm run test",
- "tsc": "tsc -p ./tsconfig.test.json",
- "pre-commit": "cross-env FORCE_COLOR=1 lint-staged",
- "prepare": "is-ci || pnpm husky-setup",
- "prepublishOnly": "pnpm test && pnpm clean && pnpm build",
- "publish:prep": "changeset add",
- "publish:packages": "pnpm prepublishOnly && changeset publish && git push --follow-tags",
- "setup": "pnpm install --reporter=silent -r && pnpm run build",
- "update": "codependence --update"
+ "commit": "bun scripts/commit-prompt.ts",
+ "create": "bun scripts/create-datastructure.ts",
+ "generate-challenge": "bun scripts/generateNewDataStructure.ts",
+ "update-readme": "bun scripts/updateReadme.ts",
+ "format": "prettier --write .",
+ "test": "bun test && go test ./... && python -m pytest",
+ "pre-commit": "bun run format && turbo run build",
+ "setup": "bun install && ./scripts/setup-hooks.sh",
+ "setup:hooks": "./scripts/setup-hooks.sh"
},
"repository": "git@github.com:yowainwright/datastructures.git",
"keywords": [
@@ -42,81 +34,10 @@
},
"homepage": "https://github.com/yowainwright/datastructures#readme",
"devDependencies": {
- "@changesets/cli": "2.27.5",
- "@commitlint/cli": "19.3.0",
- "@commitlint/config-lerna-scopes": "19.0.0",
- "@commitlint/prompt": "19.3.1",
- "@eslint/js": "^9.1.1",
- "@types/node": "20.14.2",
- "@vitest/coverage-c8": "^0.33.0",
- "@vitest/coverage-v8": "^1.2.1",
- "c8": "^9.1.0",
- "changesets": "^1.0.2",
- "codependence": "0.3.1",
- "commitizen": "4.3.0",
- "conventional-changelog-cli": "5.0.0",
- "cross-env": "^7.0.3",
- "eslint": "9.4.0",
- "eslint-config-prettier": "^9.1.0",
- "husky": "9.0.11",
- "lint-staged": "15.2.5",
- "path-exists-cli": "^2.0.0",
+ "@anthropic-ai/sdk": "^0.32.1",
+ "@types/bun": "^1.1.15",
"prettier": "3.3.1",
- "rimraf": "^5.0.7",
- "tslib": "2.6.3",
- "tsutils": "^3.21.0",
"turbo": "2.0.3",
- "typescript": "5.4.5",
- "typescript-eslint": "^7.7.1",
- "vitest": "1.6.1"
- },
- "config": {
- "commitizen": {
- "path": "node_modules/@commitlint/prompt"
- }
- },
- "commitlint": {
- "extends": [
- "@commitlint/config-lerna-scopes"
- ],
- "rules": {
- "header-max-length": [
- 2,
- "always",
- 120
- ],
- "scope-enum": [
- 2,
- "always",
- [
- "root",
- "avl-tree",
- "linked-list",
- "queue",
- "stack",
- "graph"
- ]
- ],
- "type-enum": [
- 2,
- "always",
- [
- "chore",
- "feat",
- "fix",
- "docs",
- "style",
- "refactor",
- "test",
- "release",
- "revert"
- ]
- ]
- }
- },
- "lint-staged": {
- "*.ts": [
- "eslint --ext '.ts'"
- ]
+ "typescript": "5.4.5"
}
}
diff --git a/packages/linked-list/src/index.ts b/packages/linked-list/src/index.ts
deleted file mode 100644
index f8bf791..0000000
--- a/packages/linked-list/src/index.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Linked List ⛓
- * ----
- * @description a Linear Structure of Nodes
- * @summary a typed Linked List
- * @note if you desire to add more functionality
- * - to this minimal Linked List,
- * - submit a pull request 🙏
- */
-
-export type NodeObject = {
- name: string
- data?: unknown
-} | null
-
-export type List = {
- item: NodeObject
- nextItem: List
-} | null
-
-export type ListFactory = {
- create: (items: NodeObject[]) => List
- toArray: (list: List) => NodeObject[]
-}
-
-/**
- * item 🙋
- * @param name
- * @param data
- * @param nextItem
- * constructs an object describing a linked list item
- */
-export const item = (name: string, data: unknown = null): NodeObject => ({
- name,
- data,
-})
-
-/**
- * link 🔗
- * @param nextItem
- * @param item
- * a function which constructs a list of item from items
- */
-export const link = (nextItem: List, { name, data }: NodeObject): List => ({
- item: { name, data },
- nextItem,
-})
-
-/**
- * create 👨🎤
- * @param items
- * a function which constructs a list
- */
-export const create = (items): List => items.reduceRight(link, null)
-
-/**
- * constuctArray 🛠
- * @param list
- * a curried recursive function that constructs an array from a list
- */
-export const constructArray = (list: List): NodeObject[] =>
- (({ item, nextItem }): NodeObject[] => [item, ...(nextItem !== null ? constructArray(nextItem) : [])])(list)
-
-/**
- * toArray
- * @param list
- * @abstraction of constructArray
- */
-export const toArray = (list: List): NodeObject[] => constructArray(list)
-
-/**
- * linkedList ⛓
- * @description a factory function providing utility methods to construct a linked list
- */
-export const list = (): ListFactory => ({
- create,
- toArray,
-})
diff --git a/packages/linked-list/tests/index.test.ts b/packages/linked-list/tests/index.test.ts
deleted file mode 100644
index 9a6cb7f..0000000
--- a/packages/linked-list/tests/index.test.ts
+++ /dev/null
@@ -1,107 +0,0 @@
-import { describe, test, expect } from 'vitest'
-import { constructArray, create, item, list, toArray } from '../src/index'
-
-describe('list', () => {
- test('item', () => {
- const result = item('foo', { foo: 'bar' })
- expect(typeof result).toEqual('object')
- expect(result.name).toEqual('foo')
- expect(result.data).toEqual({ foo: 'bar' })
- })
-
- test('create', () => {
- const a = item('foo', { foo: 'bar' })
- const b = item('bar', { biz: 'baz' })
- const result = create([a, b])
- expect(result).toEqual({
- item: { name: 'foo', data: { foo: 'bar' } },
- nextItem: {
- item: {
- name: 'bar',
- data: { biz: 'baz' },
- },
- nextItem: null,
- },
- })
- })
-
- test('constructArray', () => {
- const a = item('foo', { foo: 'bar' })
- const b = item('bar', { biz: 'baz' })
- const testList = create([a, b])
- expect(testList).toEqual({
- item: { name: 'foo', data: { foo: 'bar' } },
- nextItem: {
- item: {
- name: 'bar',
- data: { biz: 'baz' },
- },
- nextItem: null,
- },
- })
- const arraylist = constructArray(testList)
- expect(arraylist).toEqual([
- { data: { foo: 'bar' }, name: 'foo' },
- { data: { biz: 'baz' }, name: 'bar' },
- ])
- })
-
- test('toArray', () => {
- const a = item('foo', { foo: 'bar' })
- const b = item('bar', { biz: 'baz' })
- const testList = create([a, b])
- expect(testList).toEqual({
- item: { name: 'foo', data: { foo: 'bar' } },
- nextItem: {
- item: {
- name: 'bar',
- data: { biz: 'baz' },
- },
- nextItem: null,
- },
- })
- const arraylist = toArray(testList)
- expect(arraylist).toEqual([
- { data: { foo: 'bar' }, name: 'foo' },
- { data: { biz: 'baz' }, name: 'bar' },
- ])
- })
-
- test('list.create', () => {
- const a = item('foo', { foo: 'bar' })
- const b = item('bar', { biz: 'baz' })
- const result = list().create([a, b])
- expect(result).toEqual({
- item: { name: 'foo', data: { foo: 'bar' } },
- nextItem: {
- item: {
- name: 'bar',
- data: { biz: 'baz' },
- },
- nextItem: null,
- },
- })
- })
-
- test('list.toArray', () => {
- const a = item('foo', { foo: 'bar' })
- const b = item('bar', { biz: 'baz' })
- const testlist = list()
- const linkedlist = testlist.create([a, b])
- expect(linkedlist).toEqual({
- item: { name: 'foo', data: { foo: 'bar' } },
- nextItem: {
- item: {
- name: 'bar',
- data: { biz: 'baz' },
- },
- nextItem: null,
- },
- })
- const arraylist = testlist.toArray(linkedlist)
- expect(arraylist).toEqual([
- { data: { foo: 'bar' }, name: 'foo' },
- { data: { biz: 'baz' }, name: 'bar' },
- ])
- })
-})
diff --git a/packages/queue/src/index.ts b/packages/queue/src/index.ts
deleted file mode 100644
index 361ff2c..0000000
--- a/packages/queue/src/index.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Queue ➡️|➡️|
- * ----
- * @description An ordered structure of data inputs obeying the principle of first in, first out.
- * @summary a typed functional Queue
- * @note if you desire to add more functionality
- * - to this minimal queue,
- * - submit a pull request
- */
-
-export type QueueList = {
- add: (item: unknown) => QueueList
- remove: () => QueueList
- length: () => number
- print: () => unknown[]
-}
-
-export const queue = (list: unknown[] = []): QueueList => ({
- add(item: unknown): QueueList {
- list.unshift(item)
- return this
- },
- remove(): QueueList {
- list.pop()
- return this
- },
- length: (): number => list.length,
- print: (): unknown[] => list,
-})
-
-// Quokka testing 💅
-// -----------------
-// const todo = queue()
-// todo.add('foo')
-// todo.add('bar')
-// const test1 = todo.length()
-// test1
-// tody.remove()
-// const test2 = todo.length()
-// test2
diff --git a/packages/stack/src/index.ts b/packages/stack/src/index.ts
deleted file mode 100644
index 5ade1bd..0000000
--- a/packages/stack/src/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Stack
- * ----
- * @description An ordered structure of data inputs obeying the principle of last in, first out.
- * @summary a typed functional Stack
- * @note if you desire to add more functionality
- * - to this minimal Stack,
- * - submit a pull request
- */
-
-export type StackList = {
- add: (item: unknown) => StackList
- remove: () => StackList
- length: () => number
- print: () => unknown[]
-}
-
-export const stack = (list: unknown[] = []): StackList => ({
- add(item: unknown): StackList {
- list.push(item)
- return this
- },
- remove(): StackList {
- list.pop()
- return this
- },
- length: (): number => list.length,
- print: (): unknown[] => list,
-})
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index 07f5a55..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,6695 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- devDependencies:
- '@changesets/cli':
- specifier: 2.27.5
- version: 2.27.5
- '@commitlint/cli':
- specifier: 19.3.0
- version: 19.3.0(@types/node@20.14.2)(typescript@5.4.5)
- '@commitlint/config-lerna-scopes':
- specifier: 19.0.0
- version: 19.0.0
- '@commitlint/prompt':
- specifier: 19.3.1
- version: 19.3.1(@types/node@20.14.2)(typescript@5.4.5)
- '@eslint/js':
- specifier: ^9.1.1
- version: 9.1.1
- '@types/node':
- specifier: 20.14.2
- version: 20.14.2
- '@vitest/coverage-c8':
- specifier: ^0.33.0
- version: 0.33.0(vitest@1.6.1(@types/node@20.14.2))
- '@vitest/coverage-v8':
- specifier: ^1.2.1
- version: 1.2.1(vitest@1.6.1(@types/node@20.14.2))
- c8:
- specifier: ^9.1.0
- version: 9.1.0
- changesets:
- specifier: ^1.0.2
- version: 1.0.2
- codependence:
- specifier: 0.3.1
- version: 0.3.1(typescript@5.4.5)
- commitizen:
- specifier: 4.3.0
- version: 4.3.0(@types/node@20.14.2)(typescript@5.4.5)
- conventional-changelog-cli:
- specifier: 5.0.0
- version: 5.0.0(conventional-commits-filter@4.0.0)
- cross-env:
- specifier: ^7.0.3
- version: 7.0.3
- eslint:
- specifier: 9.4.0
- version: 9.4.0
- eslint-config-prettier:
- specifier: ^9.1.0
- version: 9.1.0(eslint@9.4.0)
- husky:
- specifier: 9.0.11
- version: 9.0.11
- lint-staged:
- specifier: 15.2.5
- version: 15.2.5
- path-exists-cli:
- specifier: ^2.0.0
- version: 2.0.0
- prettier:
- specifier: 3.3.1
- version: 3.3.1
- rimraf:
- specifier: ^5.0.7
- version: 5.0.7
- tslib:
- specifier: 2.6.3
- version: 2.6.3
- tsutils:
- specifier: ^3.21.0
- version: 3.21.0(typescript@5.4.5)
- turbo:
- specifier: 2.0.3
- version: 2.0.3
- typescript:
- specifier: 5.4.5
- version: 5.4.5
- typescript-eslint:
- specifier: ^7.7.1
- version: 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- vitest:
- specifier: 1.6.1
- version: 1.6.1(@types/node@20.14.2)
-
- packages/avl-tree: {}
-
- packages/graph: {}
-
- packages/linked-list: {}
-
- packages/queue: {}
-
- packages/stack: {}
-
-packages:
-
- '@aashutoshrathi/word-wrap@1.2.6':
- resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==}
- engines: {node: '>=0.10.0'}
-
- '@ampproject/remapping@2.2.1':
- resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
- engines: {node: '>=6.0.0'}
-
- '@babel/code-frame@7.23.5':
- resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-string-parser@7.23.4':
- resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.22.20':
- resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.23.4':
- resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.23.6':
- resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/runtime@7.23.8':
- resolution: {integrity: sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/types@7.23.6':
- resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
- engines: {node: '>=6.9.0'}
-
- '@bcoe/v8-coverage@0.2.3':
- resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==}
-
- '@changesets/apply-release-plan@7.0.3':
- resolution: {integrity: sha512-klL6LCdmfbEe9oyfLxnidIf/stFXmrbFO/3gT5LU5pcyoZytzJe4gWpTBx3BPmyNPl16dZ1xrkcW7b98e3tYkA==}
-
- '@changesets/assemble-release-plan@6.0.2':
- resolution: {integrity: sha512-n9/Tdq+ze+iUtjmq0mZO3pEhJTKkku9hUxtUadW30jlN7kONqJG3O6ALeXrmc6gsi/nvoCuKjqEJ68Hk8RbMTQ==}
-
- '@changesets/changelog-git@0.2.0':
- resolution: {integrity: sha512-bHOx97iFI4OClIT35Lok3sJAwM31VbUM++gnMBV16fdbtBhgYu4dxsphBF/0AZZsyAHMrnM0yFcj5gZM1py6uQ==}
-
- '@changesets/cli@2.27.5':
- resolution: {integrity: sha512-UVppOvzCjjylBenFcwcZNG5IaZ8jsIaEVraV/pbXgukYNb0Oqa0d8UWb0LkYzA1Bf1HmUrOfccFcRLheRuA7pA==}
- hasBin: true
-
- '@changesets/config@3.0.1':
- resolution: {integrity: sha512-nCr8pOemUjvGJ8aUu8TYVjqnUL+++bFOQHBVmtNbLvKzIDkN/uiP/Z4RKmr7NNaiujIURHySDEGFPftR4GbTUA==}
-
- '@changesets/errors@0.2.0':
- resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==}
-
- '@changesets/get-dependents-graph@2.1.0':
- resolution: {integrity: sha512-QOt6pQq9RVXKGHPVvyKimJDYJumx7p4DO5MO9AhRJYgAPgv0emhNqAqqysSVKHBm4sxKlGN4S1zXOIb5yCFuhQ==}
-
- '@changesets/get-release-plan@4.0.2':
- resolution: {integrity: sha512-rOalz7nMuMV2vyeP7KBeAhqEB7FM2GFPO5RQSoOoUKKH9L6wW3QyPA2K+/rG9kBrWl2HckPVES73/AuwPvbH3w==}
-
- '@changesets/get-version-range-type@0.4.0':
- resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==}
-
- '@changesets/git@3.0.0':
- resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==}
-
- '@changesets/logger@0.1.0':
- resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==}
-
- '@changesets/parse@0.4.0':
- resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==}
-
- '@changesets/pre@2.0.0':
- resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==}
-
- '@changesets/read@0.6.0':
- resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==}
-
- '@changesets/should-skip-package@0.1.0':
- resolution: {integrity: sha512-FxG6Mhjw7yFStlSM7Z0Gmg3RiyQ98d/9VpQAZ3Fzr59dCOM9G6ZdYbjiSAt0XtFr9JR5U2tBaJWPjrkGGc618g==}
-
- '@changesets/types@4.1.0':
- resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==}
-
- '@changesets/types@6.0.0':
- resolution: {integrity: sha512-b1UkfNulgKoWfqyHtzKS5fOZYSJO+77adgL7DLRDr+/7jhChN+QcHnbjiQVOz/U+Ts3PGNySq7diAItzDgugfQ==}
-
- '@changesets/write@0.3.1':
- resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==}
-
- '@commitlint/cli@19.3.0':
- resolution: {integrity: sha512-LgYWOwuDR7BSTQ9OLZ12m7F/qhNY+NpAyPBgo4YNMkACE7lGuUnuQq1yi9hz1KA4+3VqpOYl8H1rY/LYK43v7g==}
- engines: {node: '>=v18'}
- hasBin: true
-
- '@commitlint/config-lerna-scopes@19.0.0':
- resolution: {integrity: sha512-Us46bcN74Efdva2gsuxootQY2ueLdeNNWhsM/24FKdRDzxqrbL1gbA+lDBC+HhwTQ/jb3w+NRaCx4kRYJpWqJA==}
- engines: {node: '>=v18'}
- peerDependencies:
- lerna: ^5.0.0 || ^6
- peerDependenciesMeta:
- lerna:
- optional: true
-
- '@commitlint/config-validator@19.0.3':
- resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==}
- engines: {node: '>=v18'}
-
- '@commitlint/ensure@19.0.3':
- resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==}
- engines: {node: '>=v18'}
-
- '@commitlint/execute-rule@19.0.0':
- resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==}
- engines: {node: '>=v18'}
-
- '@commitlint/format@19.3.0':
- resolution: {integrity: sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==}
- engines: {node: '>=v18'}
-
- '@commitlint/is-ignored@19.2.2':
- resolution: {integrity: sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==}
- engines: {node: '>=v18'}
-
- '@commitlint/lint@19.2.2':
- resolution: {integrity: sha512-xrzMmz4JqwGyKQKTpFzlN0dx0TAiT7Ran1fqEBgEmEj+PU98crOFtysJgY+QdeSagx6EDRigQIXJVnfrI0ratA==}
- engines: {node: '>=v18'}
-
- '@commitlint/load@19.2.0':
- resolution: {integrity: sha512-XvxxLJTKqZojCxaBQ7u92qQLFMMZc4+p9qrIq/9kJDy8DOrEa7P1yx7Tjdc2u2JxIalqT4KOGraVgCE7eCYJyQ==}
- engines: {node: '>=v18'}
-
- '@commitlint/message@19.0.0':
- resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==}
- engines: {node: '>=v18'}
-
- '@commitlint/parse@19.0.3':
- resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==}
- engines: {node: '>=v18'}
-
- '@commitlint/prompt@19.3.1':
- resolution: {integrity: sha512-HmKyDgDag2xA/4jNLxP1rVJ4ePbGs1ZVrBl2hEeF55RvfnIRIcAklVytOD7ETphlWna8n88HlWupr82OUYvekg==}
- engines: {node: '>=v18'}
-
- '@commitlint/read@19.2.1':
- resolution: {integrity: sha512-qETc4+PL0EUv7Q36lJbPG+NJiBOGg7SSC7B5BsPWOmei+Dyif80ErfWQ0qXoW9oCh7GTpTNRoaVhiI8RbhuaNw==}
- engines: {node: '>=v18'}
-
- '@commitlint/resolve-extends@19.1.0':
- resolution: {integrity: sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==}
- engines: {node: '>=v18'}
-
- '@commitlint/rules@19.0.3':
- resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==}
- engines: {node: '>=v18'}
-
- '@commitlint/to-lines@19.0.0':
- resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==}
- engines: {node: '>=v18'}
-
- '@commitlint/top-level@19.0.0':
- resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==}
- engines: {node: '>=v18'}
-
- '@commitlint/types@19.0.3':
- resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==}
- engines: {node: '>=v18'}
-
- '@conventional-changelog/git-client@1.0.0':
- resolution: {integrity: sha512-PkUIv8bcY8/mIJig+3CGneb1hfXvjUotuBcroBHyVO4obIz5WGJpBWTuo17XV4p1sTmbGa8TxAmdMzhlPU+tLA==}
- engines: {node: '>=18'}
- peerDependencies:
- conventional-commits-filter: ^4.0.0
- conventional-commits-parser: ^5.0.0
- peerDependenciesMeta:
- conventional-commits-filter:
- optional: true
- conventional-commits-parser:
- optional: true
-
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@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.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- 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.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- 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.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- 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.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- 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.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- 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.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@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.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- 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.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}
- peerDependencies:
- eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
-
- '@eslint-community/regexpp@4.10.0':
- resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==}
- engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
-
- '@eslint/config-array@0.15.1':
- resolution: {integrity: sha512-K4gzNq+yymn/EVsXYmf+SBcBro8MTf+aXJZUphM96CdzUEr+ClGDvAbpmaEK+cGVigVXIgs9gNmvHAlrzzY5JQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/eslintrc@3.1.0':
- resolution: {integrity: sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.1.1':
- resolution: {integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/js@9.4.0':
- resolution: {integrity: sha512-fdI7VJjP3Rvc70lC4xkFXHB0fiPeojiL1PxVG6t1ZvXQrarj893PweuBTujxDUFk0Fxj4R7PIIAZ/aiiyZPZcg==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@eslint/object-schema@2.1.3':
- resolution: {integrity: sha512-HAbhAYKfsAC2EkTqve00ibWIZlaU74Z1EHwAjYr4PXF0YU2VEA1zSIKSSpKszRLRWwHzzRZXvK632u+uXzvsvw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- '@humanwhocodes/module-importer@1.0.1':
- resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
- engines: {node: '>=12.22'}
-
- '@humanwhocodes/retry@0.3.0':
- resolution: {integrity: sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==}
- engines: {node: '>=18.18'}
-
- '@hutson/parse-repository-url@5.0.0':
- resolution: {integrity: sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==}
- engines: {node: '>=10.13.0'}
-
- '@isaacs/cliui@8.0.2':
- 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}
-
- '@jridgewell/gen-mapping@0.3.3':
- resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/resolve-uri@3.1.1':
- resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/set-array@1.1.2':
- resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
- engines: {node: '>=6.0.0'}
-
- '@jridgewell/sourcemap-codec@1.4.15':
- resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@jridgewell/trace-mapping@0.3.22':
- resolution: {integrity: sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==}
-
- '@lerna/package@6.4.1':
- resolution: {integrity: sha512-TrOah58RnwS9R8d3+WgFFTu5lqgZs7M+e1dvcRga7oSJeKscqpEK57G0xspvF3ycjfXQwRMmEtwPmpkeEVLMzA==}
- engines: {node: ^14.15.0 || >=16.0.0}
- deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
-
- '@lerna/project@6.4.1':
- resolution: {integrity: sha512-BPFYr4A0mNZ2jZymlcwwh7PfIC+I6r52xgGtJ4KIrIOB6mVKo9u30dgYJbUQxmSuMRTOnX7PJZttQQzSda4gEg==}
- engines: {node: ^14.15.0 || >=16.0.0}
- deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
-
- '@lerna/validation-error@6.4.1':
- resolution: {integrity: sha512-fxfJvl3VgFd7eBfVMRX6Yal9omDLs2mcGKkNYeCEyt4Uwlz1B5tPAXyk/sNMfkKV2Aat/mlK5tnY13vUrMKkyA==}
- engines: {node: ^14.15.0 || >=16.0.0}
- deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
-
- '@ljharb/through@2.3.12':
- resolution: {integrity: sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==}
- engines: {node: '>= 0.4'}
-
- '@manypkg/find-root@1.1.0':
- resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==}
-
- '@manypkg/get-packages@1.1.3':
- resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==}
-
- '@nodelib/fs.scandir@2.1.5':
- resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.stat@2.0.5':
- resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
- engines: {node: '>= 8'}
-
- '@nodelib/fs.walk@1.2.8':
- resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
- engines: {node: '>= 8'}
-
- '@pkgjs/parseargs@0.11.0':
- resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
- engines: {node: '>=14'}
-
- '@rollup/rollup-android-arm-eabi@4.39.0':
- resolution: {integrity: sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.39.0':
- resolution: {integrity: sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.39.0':
- resolution: {integrity: sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.39.0':
- resolution: {integrity: sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-freebsd-arm64@4.39.0':
- resolution: {integrity: sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==}
- cpu: [arm64]
- os: [freebsd]
-
- '@rollup/rollup-freebsd-x64@4.39.0':
- resolution: {integrity: sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==}
- cpu: [x64]
- os: [freebsd]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
- resolution: {integrity: sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.39.0':
- resolution: {integrity: sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.39.0':
- resolution: {integrity: sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.39.0':
- resolution: {integrity: sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
- resolution: {integrity: sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==}
- cpu: [loong64]
- os: [linux]
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
- resolution: {integrity: sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.39.0':
- resolution: {integrity: sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-musl@4.39.0':
- resolution: {integrity: sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.39.0':
- resolution: {integrity: sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.39.0':
- resolution: {integrity: sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.39.0':
- resolution: {integrity: sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-win32-arm64-msvc@4.39.0':
- resolution: {integrity: sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.39.0':
- resolution: {integrity: sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.39.0':
- resolution: {integrity: sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==}
- cpu: [x64]
- os: [win32]
-
- '@sinclair/typebox@0.27.8':
- resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
-
- '@types/conventional-commits-parser@5.0.0':
- resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==}
-
- '@types/estree@1.0.7':
- resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
-
- '@types/istanbul-lib-coverage@2.0.6':
- resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==}
-
- '@types/json-schema@7.0.15':
- resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
-
- '@types/minimist@1.2.5':
- resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
-
- '@types/node@12.20.55':
- resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==}
-
- '@types/node@20.14.2':
- resolution: {integrity: sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==}
-
- '@types/normalize-package-data@2.4.4':
- resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
-
- '@types/parse-json@4.0.2':
- resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
-
- '@types/semver@7.5.8':
- resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
-
- '@types/tinycolor2@1.4.6':
- resolution: {integrity: sha512-iEN8J0BoMnsWBqjVbWH/c0G0Hh7O21lpR2/+PrvAVgWdzL7eexIFm4JN/Wn10PTcmNdtS6U67r499mlWMXOxNw==}
-
- '@typescript-eslint/eslint-plugin@7.7.1':
- resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==}
- 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@7.7.1':
- resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==}
- engines: {node: ^18.18.0 || >=20.0.0}
- peerDependencies:
- eslint: ^8.56.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/scope-manager@7.7.1':
- resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==}
- engines: {node: ^18.18.0 || >=20.0.0}
-
- '@typescript-eslint/type-utils@7.7.1':
- resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==}
- engines: {node: ^18.18.0 || >=20.0.0}
- peerDependencies:
- eslint: ^8.56.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/types@7.7.1':
- resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==}
- engines: {node: ^18.18.0 || >=20.0.0}
-
- '@typescript-eslint/typescript-estree@7.7.1':
- resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==}
- engines: {node: ^18.18.0 || >=20.0.0}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- '@typescript-eslint/utils@7.7.1':
- resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==}
- engines: {node: ^18.18.0 || >=20.0.0}
- peerDependencies:
- eslint: ^8.56.0
-
- '@typescript-eslint/visitor-keys@7.7.1':
- resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==}
- engines: {node: ^18.18.0 || >=20.0.0}
-
- '@vitest/coverage-c8@0.33.0':
- resolution: {integrity: sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==}
- deprecated: v8 coverage is moved to @vitest/coverage-v8 package
- peerDependencies:
- vitest: '>=0.30.0 <1'
-
- '@vitest/coverage-v8@1.2.1':
- resolution: {integrity: sha512-fJEhKaDwGMZtJUX7BRcGxooGwg1Hl0qt53mVup/ZJeznhvL5EodteVnb/mcByhEcvVWbK83ZF31c7nPEDi4LOQ==}
- peerDependencies:
- vitest: ^1.0.0
-
- '@vitest/expect@1.6.1':
- resolution: {integrity: sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==}
-
- '@vitest/runner@1.6.1':
- resolution: {integrity: sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==}
-
- '@vitest/snapshot@1.6.1':
- resolution: {integrity: sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==}
-
- '@vitest/spy@1.6.1':
- resolution: {integrity: sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==}
-
- '@vitest/utils@1.6.1':
- resolution: {integrity: sha512-jOrrUvXM4Av9ZWiG1EajNto0u96kWAhJ1LmPmJhXXQx/32MecEKd10pOLYgS2BQx1TgkGhloPU1ArDW2vvaY6g==}
-
- JSONStream@1.3.5:
- resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
- hasBin: true
-
- acorn-jsx@5.3.2:
- resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
- peerDependencies:
- acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
-
- acorn-walk@8.3.4:
- resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
- engines: {node: '>=0.4.0'}
-
- acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- acorn@8.14.1:
- resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==}
- engines: {node: '>=0.4.0'}
- hasBin: true
-
- add-stream@1.0.0:
- resolution: {integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==}
-
- aggregate-error@3.1.0:
- resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==}
- engines: {node: '>=8'}
-
- ajv@6.12.6:
- resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
-
- ajv@8.12.0:
- resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==}
-
- ansi-colors@4.1.3:
- resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
- engines: {node: '>=6'}
-
- ansi-escapes@4.3.2:
- resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
- engines: {node: '>=8'}
-
- ansi-escapes@6.2.0:
- resolution: {integrity: sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==}
- engines: {node: '>=14.16'}
-
- ansi-regex@5.0.1:
- resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
- engines: {node: '>=8'}
-
- ansi-regex@6.0.1:
- resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
- engines: {node: '>=12'}
-
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
- ansi-styles@4.3.0:
- resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
- engines: {node: '>=8'}
-
- ansi-styles@5.2.0:
- resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==}
- engines: {node: '>=10'}
-
- ansi-styles@6.2.1:
- resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
- engines: {node: '>=12'}
-
- aproba@2.0.0:
- resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
-
- are-we-there-yet@3.0.1:
- resolution: {integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- deprecated: This package is no longer supported.
-
- argparse@1.0.10:
- resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
-
- argparse@2.0.1:
- resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
-
- array-buffer-byte-length@1.0.0:
- resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
-
- array-ify@1.0.0:
- resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
-
- array-union@2.1.0:
- resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
- engines: {node: '>=8'}
-
- array.prototype.flat@1.3.2:
- resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==}
- engines: {node: '>= 0.4'}
-
- arraybuffer.prototype.slice@1.0.2:
- resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==}
- engines: {node: '>= 0.4'}
-
- arrify@1.0.1:
- resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
- engines: {node: '>=0.10.0'}
-
- assertion-error@1.1.0:
- resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
-
- at-least-node@1.0.0:
- resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==}
- engines: {node: '>= 4.0.0'}
-
- available-typed-arrays@1.0.5:
- resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
- engines: {node: '>= 0.4'}
-
- balanced-match@1.0.2:
- resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
-
- base64-js@1.5.1:
- resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
-
- better-path-resolve@1.0.0:
- resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==}
- engines: {node: '>=4'}
-
- bl@4.1.0:
- resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
-
- brace-expansion@1.1.11:
- resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
-
- brace-expansion@2.0.1:
- resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
-
- braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
- engines: {node: '>=8'}
-
- braces@3.0.3:
- resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
- engines: {node: '>=8'}
-
- breakword@1.0.6:
- resolution: {integrity: sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==}
-
- buffer@5.7.1:
- resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
-
- builtins@1.0.3:
- resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
-
- c8@7.14.0:
- resolution: {integrity: sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==}
- engines: {node: '>=10.12.0'}
- hasBin: true
-
- 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'}
-
- cachedir@2.3.0:
- resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==}
- engines: {node: '>=6'}
-
- call-bind@1.0.5:
- resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==}
-
- callsites@3.1.0:
- resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
- engines: {node: '>=6'}
-
- camelcase-keys@6.2.2:
- resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
- engines: {node: '>=8'}
-
- camelcase-keys@7.0.2:
- resolution: {integrity: sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==}
- engines: {node: '>=12'}
-
- camelcase@5.3.1:
- resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
- engines: {node: '>=6'}
-
- camelcase@6.3.0:
- resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
- engines: {node: '>=10'}
-
- chai@4.5.0:
- resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
- engines: {node: '>=4'}
-
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
- chalk@4.1.2:
- resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
- engines: {node: '>=10'}
-
- chalk@5.3.0:
- resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
- engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
-
- changesets@1.0.2:
- resolution: {integrity: sha512-lnXvvqJEcK0z/6RtwKNLbejazl+Hxd1bocMcNgfLHWb4rGxuqkO/LdeGNzwIx3jHj+fNWZ6AGgK5AqNBwva4Xg==}
-
- chardet@0.7.0:
- resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
-
- check-error@1.0.3:
- resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
-
- ci-info@3.9.0:
- resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
- engines: {node: '>=8'}
-
- clean-stack@2.2.0:
- resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==}
- engines: {node: '>=6'}
-
- cli-cursor@3.1.0:
- resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
- engines: {node: '>=8'}
-
- cli-cursor@4.0.0:
- resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- cli-spinners@2.9.2:
- resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
- engines: {node: '>=6'}
-
- cli-truncate@4.0.0:
- resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==}
- engines: {node: '>=18'}
-
- cli-width@3.0.0:
- resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
- engines: {node: '>= 10'}
-
- cli-width@4.1.0:
- resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
- engines: {node: '>= 12'}
-
- 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'}
-
- clone@1.0.4:
- resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
- engines: {node: '>=0.8'}
-
- codependence@0.3.1:
- resolution: {integrity: sha512-w8tvE9FC1v0dOErVi7QxBmQCgeGbf1lYM7OWqtkv0X9Fd6O75r3r4D8Y4ZVyEUzYezKXOhXAzeIgkZN5cOrPlg==}
- hasBin: true
-
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
- color-convert@2.0.1:
- resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
- engines: {node: '>=7.0.0'}
-
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
- color-name@1.1.4:
- resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
-
- color-support@1.1.3:
- resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==}
- hasBin: true
-
- colorette@2.0.20:
- resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==}
-
- commander@11.1.0:
- resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==}
- engines: {node: '>=16'}
-
- commander@12.1.0:
- resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==}
- engines: {node: '>=18'}
-
- commitizen@4.3.0:
- resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==}
- engines: {node: '>= 12'}
- hasBin: true
-
- compare-func@2.0.0:
- resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
-
- concat-map@0.0.1:
- resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
-
- confbox@0.1.8:
- resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==}
-
- console-control-strings@1.1.0:
- resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
-
- conventional-changelog-angular@7.0.0:
- resolution: {integrity: sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==}
- engines: {node: '>=16'}
-
- conventional-changelog-angular@8.0.0:
- resolution: {integrity: sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==}
- engines: {node: '>=18'}
-
- conventional-changelog-atom@5.0.0:
- resolution: {integrity: sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==}
- engines: {node: '>=18'}
-
- conventional-changelog-cli@5.0.0:
- resolution: {integrity: sha512-9Y8fucJe18/6ef6ZlyIlT2YQUbczvoQZZuYmDLaGvcSBP+M6h+LAvf7ON7waRxKJemcCII8Yqu5/8HEfskTxJQ==}
- engines: {node: '>=18'}
- hasBin: true
-
- conventional-changelog-codemirror@5.0.0:
- resolution: {integrity: sha512-8gsBDI5Y3vrKUCxN6Ue8xr6occZ5nsDEc4C7jO/EovFGozx8uttCAyfhRrvoUAWi2WMm3OmYs+0mPJU7kQdYWQ==}
- engines: {node: '>=18'}
-
- conventional-changelog-conventionalcommits@8.0.0:
- resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==}
- engines: {node: '>=18'}
-
- conventional-changelog-core@8.0.0:
- resolution: {integrity: sha512-EATUx5y9xewpEe10UEGNpbSHRC6cVZgO+hXQjofMqpy+gFIrcGvH3Fl6yk2VFKh7m+ffenup2N7SZJYpyD9evw==}
- engines: {node: '>=18'}
-
- conventional-changelog-ember@5.0.0:
- resolution: {integrity: sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==}
- engines: {node: '>=18'}
-
- conventional-changelog-eslint@6.0.0:
- resolution: {integrity: sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==}
- engines: {node: '>=18'}
-
- conventional-changelog-express@5.0.0:
- resolution: {integrity: sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==}
- engines: {node: '>=18'}
-
- conventional-changelog-jquery@6.0.0:
- resolution: {integrity: sha512-2kxmVakyehgyrho2ZHBi90v4AHswkGzHuTaoH40bmeNqUt20yEkDOSpw8HlPBfvEQBwGtbE+5HpRwzj6ac2UfA==}
- engines: {node: '>=18'}
-
- conventional-changelog-jshint@5.0.0:
- resolution: {integrity: sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==}
- engines: {node: '>=18'}
-
- conventional-changelog-preset-loader@5.0.0:
- resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==}
- engines: {node: '>=18'}
-
- conventional-changelog-writer@8.0.0:
- resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==}
- engines: {node: '>=18'}
- hasBin: true
-
- conventional-changelog@6.0.0:
- resolution: {integrity: sha512-tuUH8H/19VjtD9Ig7l6TQRh+Z0Yt0NZ6w/cCkkyzUbGQTnUEmKfGtkC9gGfVgCfOL1Rzno5NgNF4KY8vR+Jo3w==}
- engines: {node: '>=18'}
-
- conventional-commit-types@3.0.0:
- resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==}
-
- conventional-commits-filter@4.0.0:
- resolution: {integrity: sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==}
- engines: {node: '>=16'}
-
- conventional-commits-filter@5.0.0:
- resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==}
- engines: {node: '>=18'}
-
- conventional-commits-parser@5.0.0:
- resolution: {integrity: sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==}
- engines: {node: '>=16'}
- hasBin: true
-
- conventional-commits-parser@6.0.0:
- resolution: {integrity: sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==}
- engines: {node: '>=18'}
- hasBin: true
-
- convert-source-map@2.0.0:
- resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
-
- cosmiconfig-typescript-loader@5.0.0:
- resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==}
- engines: {node: '>=v16'}
- peerDependencies:
- '@types/node': '*'
- cosmiconfig: '>=8.2'
- typescript: '>=4'
-
- cosmiconfig@7.1.0:
- resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
- engines: {node: '>=10'}
-
- cosmiconfig@9.0.0:
- resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==}
- engines: {node: '>=14'}
- peerDependencies:
- typescript: '>=4.9.5'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- cross-env@7.0.3:
- resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
- engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
- hasBin: true
-
- cross-spawn@5.1.0:
- resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==}
-
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
- cross-spawn@7.0.6:
- resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
- engines: {node: '>= 8'}
-
- csv-generate@3.4.3:
- resolution: {integrity: sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==}
-
- csv-parse@4.16.3:
- resolution: {integrity: sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==}
-
- csv-stringify@5.6.5:
- resolution: {integrity: sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==}
-
- csv@5.5.3:
- resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==}
- engines: {node: '>= 0.1.90'}
-
- cz-conventional-changelog@3.3.0:
- resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==}
- engines: {node: '>= 10'}
-
- dargs@8.1.0:
- resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==}
- engines: {node: '>=12'}
-
- debug@4.3.4:
- resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- debug@4.4.0:
- resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
- engines: {node: '>=6.0'}
- peerDependencies:
- supports-color: '*'
- peerDependenciesMeta:
- supports-color:
- optional: true
-
- decamelize-keys@1.1.1:
- resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
- engines: {node: '>=0.10.0'}
-
- decamelize@1.2.0:
- resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
- engines: {node: '>=0.10.0'}
-
- decamelize@5.0.1:
- resolution: {integrity: sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==}
- engines: {node: '>=10'}
-
- dedent@0.7.0:
- resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
-
- deep-eql@4.1.4:
- resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
- engines: {node: '>=6'}
-
- deep-is@0.1.4:
- resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
-
- defaults@1.0.4:
- resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
-
- define-data-property@1.1.1:
- resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==}
- engines: {node: '>= 0.4'}
-
- define-properties@1.2.1:
- resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
- engines: {node: '>= 0.4'}
-
- delegates@1.0.0:
- resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
-
- detect-file@1.0.0:
- resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==}
- engines: {node: '>=0.10.0'}
-
- detect-indent@5.0.0:
- resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==}
- engines: {node: '>=4'}
-
- detect-indent@6.1.0:
- resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==}
- engines: {node: '>=8'}
-
- diff-sequences@29.6.3:
- resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
- dir-glob@3.0.1:
- resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
- engines: {node: '>=8'}
-
- dot-prop@5.3.0:
- resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
- engines: {node: '>=8'}
-
- dot-prop@6.0.1:
- resolution: {integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==}
- engines: {node: '>=10'}
-
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
-
- emoji-regex@10.3.0:
- resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
-
- emoji-regex@8.0.0:
- resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
-
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
- enquirer@2.4.1:
- resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
- engines: {node: '>=8.6'}
-
- env-paths@2.2.1:
- resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
- engines: {node: '>=6'}
-
- error-ex@1.3.2:
- resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
-
- es-abstract@1.22.3:
- resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.0.2:
- resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==}
- engines: {node: '>= 0.4'}
-
- es-shim-unscopables@1.0.2:
- resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==}
-
- es-to-primitive@1.2.1:
- resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
- engines: {node: '>= 0.4'}
-
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
-
- escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
- engines: {node: '>=6'}
-
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
- escape-string-regexp@4.0.0:
- resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
- engines: {node: '>=10'}
-
- eslint-config-prettier@9.1.0:
- resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==}
- hasBin: true
- peerDependencies:
- eslint: '>=7.0.0'
-
- eslint-scope@8.0.1:
- resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint-visitor-keys@3.4.3:
- resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
- engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
-
- eslint-visitor-keys@4.0.0:
- resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- eslint@9.4.0:
- resolution: {integrity: sha512-sjc7Y8cUD1IlwYcTS9qPSvGjAC8Ne9LctpxKKu3x/1IC9bnOg98Zy6GxEJUfr1NojMgVPlyANXYns8oE2c1TAA==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
- hasBin: true
-
- espree@10.0.1:
- resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==}
- engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
-
- esprima@4.0.1:
- resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
- engines: {node: '>=4'}
- hasBin: true
-
- esquery@1.5.0:
- resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==}
- engines: {node: '>=0.10'}
-
- esrecurse@4.3.0:
- resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
- engines: {node: '>=4.0'}
-
- estraverse@5.3.0:
- resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
- engines: {node: '>=4.0'}
-
- estree-walker@3.0.3:
- resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
-
- esutils@2.0.3:
- resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
- engines: {node: '>=0.10.0'}
-
- eventemitter3@5.0.1:
- resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
-
- execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
-
- expand-tilde@2.0.2:
- resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
- engines: {node: '>=0.10.0'}
-
- extendable-error@0.1.7:
- resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==}
-
- external-editor@3.1.0:
- resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
- engines: {node: '>=4'}
-
- fast-deep-equal@3.1.3:
- resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
-
- fast-glob@3.3.2:
- resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==}
- engines: {node: '>=8.6.0'}
-
- fast-json-stable-stringify@2.1.0:
- resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
-
- fast-levenshtein@2.0.6:
- resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
-
- fastq@1.16.0:
- resolution: {integrity: sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==}
-
- figures@3.2.0:
- resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
- engines: {node: '>=8'}
-
- file-entry-cache@8.0.0:
- resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
- engines: {node: '>=16.0.0'}
-
- fill-range@7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
- engines: {node: '>=8'}
-
- fill-range@7.1.1:
- resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
- engines: {node: '>=8'}
-
- find-node-modules@2.1.3:
- resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==}
-
- find-root@1.1.0:
- resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==}
-
- find-up-simple@1.0.0:
- resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==}
- engines: {node: '>=18'}
-
- find-up@4.1.0:
- resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
- engines: {node: '>=8'}
-
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
- find-up@7.0.0:
- resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==}
- engines: {node: '>=18'}
-
- find-yarn-workspace-root2@1.2.16:
- resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
-
- findup-sync@4.0.0:
- resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==}
- engines: {node: '>= 8'}
-
- flat-cache@4.0.1:
- resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
- engines: {node: '>=16'}
-
- flatted@3.2.9:
- resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==}
-
- for-each@0.3.3:
- resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
-
- foreground-child@2.0.0:
- resolution: {integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==}
- engines: {node: '>=8.0.0'}
-
- foreground-child@3.1.1:
- resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==}
- engines: {node: '>=14'}
-
- fs-extra@7.0.1:
- resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==}
- engines: {node: '>=6 <7 || >=8'}
-
- fs-extra@8.1.0:
- resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
- engines: {node: '>=6 <7 || >=8'}
-
- fs-extra@9.1.0:
- resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==}
- engines: {node: '>=10'}
-
- fs.realpath@1.0.0:
- resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- 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==}
-
- gauge@4.0.4:
- resolution: {integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- deprecated: This package is no longer supported.
-
- get-caller-file@2.0.5:
- resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
- engines: {node: 6.* || 8.* || >= 10.*}
-
- get-east-asian-width@1.2.0:
- resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
- engines: {node: '>=18'}
-
- get-func-name@2.0.2:
- resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
-
- get-intrinsic@1.2.2:
- resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==}
-
- get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
-
- get-symbol-description@1.0.0:
- resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
- engines: {node: '>= 0.4'}
-
- git-raw-commits@4.0.0:
- resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==}
- engines: {node: '>=16'}
- hasBin: true
-
- git-raw-commits@5.0.0:
- resolution: {integrity: sha512-I2ZXrXeOc0KrCvC7swqtIFXFN+rbjnC7b2T943tvemIOVNl+XP8YnA9UVwqFhzzLClnSA60KR/qEjLpXzs73Qg==}
- engines: {node: '>=18'}
- hasBin: true
-
- git-semver-tags@8.0.0:
- resolution: {integrity: sha512-N7YRIklvPH3wYWAR2vysaqGLPRcpwQ0GKdlqTiVN5w1UmCdaeY3K8s6DMKRCh54DDdzyt/OAB6C8jgVtb7Y2Fg==}
- engines: {node: '>=18'}
- hasBin: true
-
- glob-parent@5.1.2:
- resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
- engines: {node: '>= 6'}
-
- glob-parent@6.0.2:
- resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
- engines: {node: '>=10.13.0'}
-
- glob@10.3.10:
- resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==}
- engines: {node: '>=16 || 14 >=14.17'}
- hasBin: true
-
- glob@7.2.3:
- resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
- deprecated: Glob versions prior to v9 are no longer supported
-
- global-directory@4.0.1:
- resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==}
- engines: {node: '>=18'}
-
- global-modules@1.0.0:
- resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
- engines: {node: '>=0.10.0'}
-
- global-prefix@1.0.2:
- resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==}
- engines: {node: '>=0.10.0'}
-
- globals@14.0.0:
- resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
- engines: {node: '>=18'}
-
- globalthis@1.0.3:
- resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
- engines: {node: '>= 0.4'}
-
- globby@11.1.0:
- resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
- engines: {node: '>=10'}
-
- gopd@1.0.1:
- resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
-
- graceful-fs@4.2.11:
- resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
-
- gradient-string@2.0.2:
- resolution: {integrity: sha512-rEDCuqUQ4tbD78TpzsMtt5OIf0cBCSDWSJtUDaF6JsAh+k0v9r++NzxNEG87oDZx9ZwGhD8DaezR2L/yrw0Jdw==}
- engines: {node: '>=10'}
-
- grapheme-splitter@1.0.4:
- resolution: {integrity: sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==}
-
- graphemer@1.4.0:
- resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==}
-
- handlebars@4.7.8:
- resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
- engines: {node: '>=0.4.7'}
- hasBin: true
-
- hard-rejection@2.1.0:
- resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
- engines: {node: '>=6'}
-
- has-bigints@1.0.2:
- resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
-
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
-
- has-flag@4.0.0:
- resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
- engines: {node: '>=8'}
-
- has-property-descriptors@1.0.1:
- resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==}
-
- has-proto@1.0.1:
- resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
- engines: {node: '>= 0.4'}
-
- has-symbols@1.0.3:
- resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.0:
- resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
- engines: {node: '>= 0.4'}
-
- has-unicode@2.0.1:
- resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
-
- hasown@2.0.0:
- resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
- engines: {node: '>= 0.4'}
-
- homedir-polyfill@1.0.3:
- resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
- engines: {node: '>=0.10.0'}
-
- hosted-git-info@2.8.9:
- resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
-
- hosted-git-info@3.0.8:
- resolution: {integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==}
- engines: {node: '>=10'}
-
- hosted-git-info@4.1.0:
- resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
- engines: {node: '>=10'}
-
- hosted-git-info@7.0.1:
- resolution: {integrity: sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==}
- engines: {node: ^16.14.0 || >=18.0.0}
-
- html-escaper@2.0.2:
- resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
-
- human-id@1.0.2:
- resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==}
-
- human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
-
- husky@9.0.11:
- resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==}
- engines: {node: '>=18'}
- hasBin: true
-
- iconv-lite@0.4.24:
- resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
- engines: {node: '>=0.10.0'}
-
- ieee754@1.2.1:
- resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
-
- ignore@5.3.0:
- resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==}
- engines: {node: '>= 4'}
-
- ignore@5.3.1:
- resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==}
- engines: {node: '>= 4'}
-
- import-fresh@3.3.0:
- resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==}
- engines: {node: '>=6'}
-
- import-from@4.0.0:
- resolution: {integrity: sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==}
- engines: {node: '>=12.2'}
-
- import-meta-resolve@4.0.0:
- resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==}
-
- imurmurhash@0.1.4:
- resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
- engines: {node: '>=0.8.19'}
-
- indent-string@4.0.0:
- resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
- engines: {node: '>=8'}
-
- indent-string@5.0.0:
- resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
- engines: {node: '>=12'}
-
- index-to-position@0.1.2:
- resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==}
- engines: {node: '>=18'}
-
- inflight@1.0.6:
- resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
- deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
-
- inherits@2.0.4:
- resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
-
- ini@1.3.8:
- resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
-
- ini@4.1.1:
- resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
- inquirer@8.2.5:
- resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==}
- engines: {node: '>=12.0.0'}
-
- inquirer@9.2.15:
- resolution: {integrity: sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==}
- engines: {node: '>=18'}
-
- internal-slot@1.0.6:
- resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==}
- engines: {node: '>= 0.4'}
-
- is-array-buffer@3.0.2:
- resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
-
- is-arrayish@0.2.1:
- resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
-
- is-bigint@1.0.4:
- resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
-
- is-boolean-object@1.1.2:
- resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
- engines: {node: '>= 0.4'}
-
- is-callable@1.2.7:
- resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
- engines: {node: '>= 0.4'}
-
- is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
-
- is-date-object@1.0.5:
- resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
- engines: {node: '>= 0.4'}
-
- is-extglob@2.1.1:
- resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
- engines: {node: '>=0.10.0'}
-
- is-fullwidth-code-point@3.0.0:
- resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
- engines: {node: '>=8'}
-
- is-fullwidth-code-point@4.0.0:
- resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==}
- engines: {node: '>=12'}
-
- is-fullwidth-code-point@5.0.0:
- resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==}
- engines: {node: '>=18'}
-
- is-glob@4.0.3:
- resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
- engines: {node: '>=0.10.0'}
-
- is-interactive@1.0.0:
- 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-negative-zero@2.0.2:
- resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
- engines: {node: '>= 0.4'}
-
- is-number-object@1.0.7:
- resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
- engines: {node: '>= 0.4'}
-
- is-number@7.0.0:
- resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
- engines: {node: '>=0.12.0'}
-
- is-obj@2.0.0:
- resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
- engines: {node: '>=8'}
-
- is-path-inside@3.0.3:
- resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
- engines: {node: '>=8'}
-
- is-plain-obj@1.1.0:
- resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
- engines: {node: '>=0.10.0'}
-
- is-plain-obj@2.1.0:
- resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
- engines: {node: '>=8'}
-
- is-regex@1.1.4:
- resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
- engines: {node: '>= 0.4'}
-
- is-shared-array-buffer@1.0.2:
- resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
-
- is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- is-string@1.0.7:
- resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
- engines: {node: '>= 0.4'}
-
- is-subdir@1.2.0:
- resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==}
- engines: {node: '>=4'}
-
- is-symbol@1.0.4:
- resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
- engines: {node: '>= 0.4'}
-
- is-text-path@2.0.0:
- resolution: {integrity: sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==}
- engines: {node: '>=8'}
-
- is-typed-array@1.1.12:
- resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
- engines: {node: '>= 0.4'}
-
- is-typedarray@1.0.0:
- resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
-
- 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'}
-
- is-utf8@0.2.1:
- resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
-
- is-weakref@1.0.2:
- resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
-
- is-windows@1.0.2:
- resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
- engines: {node: '>=0.10.0'}
-
- isarray@2.0.5:
- resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
-
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
- 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-lib-source-maps@4.0.1:
- resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==}
- engines: {node: '>=10'}
-
- istanbul-reports@3.1.6:
- resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==}
- engines: {node: '>=8'}
-
- jackspeak@2.3.6:
- resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==}
- engines: {node: '>=14'}
-
- jiti@1.21.0:
- resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==}
- hasBin: true
-
- js-tokens@4.0.0:
- resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
-
- js-tokens@9.0.1:
- resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==}
-
- js-yaml@3.14.1:
- resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
- hasBin: true
-
- js-yaml@4.1.0:
- resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
- hasBin: true
-
- json-buffer@3.0.1:
- resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
-
- json-parse-even-better-errors@2.3.1:
- resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
-
- json-schema-traverse@0.4.1:
- resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
-
- json-schema-traverse@1.0.0:
- resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
-
- json-stable-stringify-without-jsonify@1.0.1:
- resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
-
- jsonfile@4.0.0:
- resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
-
- jsonfile@6.1.0:
- resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
-
- jsonparse@1.3.1:
- resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
- engines: {'0': node >= 0.2.0}
-
- keyv@4.5.4:
- resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
-
- kind-of@6.0.3:
- resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
- engines: {node: '>=0.10.0'}
-
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
- engines: {node: '>=6'}
-
- levn@0.4.1:
- resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
- engines: {node: '>= 0.8.0'}
-
- lilconfig@3.1.1:
- resolution: {integrity: sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==}
- engines: {node: '>=14'}
-
- lines-and-columns@1.2.4:
- resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
-
- lint-staged@15.2.5:
- resolution: {integrity: sha512-j+DfX7W9YUvdzEZl3Rk47FhDF6xwDBV5wwsCPw6BwWZVPYJemusQmvb9bRsW23Sqsaa+vRloAWogbK4BUuU2zA==}
- engines: {node: '>=18.12.0'}
- hasBin: true
-
- listr2@8.2.1:
- resolution: {integrity: sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g==}
- engines: {node: '>=18.0.0'}
-
- load-json-file@6.2.0:
- resolution: {integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==}
- engines: {node: '>=8'}
-
- load-yaml-file@0.2.0:
- resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
- engines: {node: '>=6'}
-
- local-pkg@0.5.1:
- resolution: {integrity: sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==}
- engines: {node: '>=14'}
-
- locate-path@5.0.0:
- resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
- engines: {node: '>=8'}
-
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- locate-path@7.2.0:
- resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- lodash.camelcase@4.3.0:
- resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==}
-
- lodash.isplainobject@4.0.6:
- resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==}
-
- lodash.kebabcase@4.1.1:
- resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
-
- lodash.map@4.6.0:
- resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==}
-
- lodash.merge@4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
-
- lodash.mergewith@4.6.2:
- resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==}
-
- lodash.snakecase@4.1.1:
- resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
-
- lodash.startcase@4.4.0:
- resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==}
-
- lodash.uniq@4.5.0:
- resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
-
- lodash.upperfirst@4.3.1:
- resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==}
-
- lodash@4.17.21:
- resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
-
- log-symbols@4.1.0:
- resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==}
- engines: {node: '>=10'}
-
- log-symbols@6.0.0:
- resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
- engines: {node: '>=18'}
-
- log-update@6.0.0:
- resolution: {integrity: sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==}
- engines: {node: '>=18'}
-
- longest@2.0.1:
- resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==}
- engines: {node: '>=0.10.0'}
-
- loupe@2.3.7:
- resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
-
- lru-cache@10.1.0:
- resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==}
- engines: {node: 14 || >=16.14}
-
- lru-cache@4.1.5:
- resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
-
- lru-cache@6.0.0:
- resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
- engines: {node: '>=10'}
-
- magic-string@0.30.17:
- resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
-
- magic-string@0.30.5:
- resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
- engines: {node: '>=12'}
-
- magicast@0.3.3:
- resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==}
-
- make-dir@2.1.0:
- resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
- engines: {node: '>=6'}
-
- make-dir@3.1.0:
- 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'}
-
- map-obj@1.0.1:
- resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
- engines: {node: '>=0.10.0'}
-
- map-obj@4.3.0:
- resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
- engines: {node: '>=8'}
-
- meow@10.1.5:
- resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- meow@12.1.1:
- resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==}
- engines: {node: '>=16.10'}
-
- meow@13.2.0:
- resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==}
- engines: {node: '>=18'}
-
- meow@6.1.1:
- resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==}
- engines: {node: '>=8'}
-
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
- merge2@1.4.1:
- resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
- engines: {node: '>= 8'}
-
- merge@2.1.1:
- resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==}
-
- micromatch@4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
- engines: {node: '>=8.6'}
-
- micromatch@4.0.7:
- resolution: {integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==}
- engines: {node: '>=8.6'}
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
-
- min-indent@1.0.1:
- resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
- engines: {node: '>=4'}
-
- minimatch@3.1.2:
- resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
-
- minimatch@9.0.3:
- resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minimatch@9.0.4:
- resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- minimist-options@4.1.0:
- resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
- engines: {node: '>= 6'}
-
- minimist@1.2.7:
- resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==}
-
- minimist@1.2.8:
- resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
-
- minipass@7.0.4:
- resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- mixme@0.5.10:
- resolution: {integrity: sha512-5H76ANWinB1H3twpJ6JY8uvAtpmFvHNArpilJAjXRKXSDDLPIMoZArw5SH0q9z+lLs8IrMw7Q2VWpWimFKFT1Q==}
- engines: {node: '>= 8.0.0'}
-
- mlly@1.7.4:
- resolution: {integrity: sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==}
-
- ms@2.1.2:
- resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
-
- ms@2.1.3:
- resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
-
- mute-stream@0.0.8:
- resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
-
- mute-stream@1.0.0:
- resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- natural-compare@1.4.0:
- resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
-
- neo-async@2.6.2:
- resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
-
- normalize-package-data@2.5.0:
- resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
-
- normalize-package-data@3.0.3:
- resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
- engines: {node: '>=10'}
-
- normalize-package-data@6.0.0:
- resolution: {integrity: sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==}
- engines: {node: ^16.14.0 || >=18.0.0}
-
- npm-package-arg@8.1.1:
- resolution: {integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==}
- engines: {node: '>=10'}
-
- npm-run-path@5.3.0:
- resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- npmlog@6.0.2:
- resolution: {integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==}
- engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0}
- deprecated: This package is no longer supported.
-
- object-inspect@1.13.1:
- resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==}
-
- object-keys@1.1.1:
- resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
- engines: {node: '>= 0.4'}
-
- object.assign@4.1.5:
- resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==}
- engines: {node: '>= 0.4'}
-
- once@1.4.0:
- resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
-
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
-
- onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
-
- optionator@0.9.3:
- resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
- engines: {node: '>= 0.8.0'}
-
- ora@5.4.1:
- resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==}
- engines: {node: '>=10'}
-
- ora@8.0.1:
- resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==}
- engines: {node: '>=18'}
-
- os-tmpdir@1.0.2:
- resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
- engines: {node: '>=0.10.0'}
-
- outdent@0.5.0:
- resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==}
-
- p-filter@2.1.0:
- resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==}
- engines: {node: '>=8'}
-
- p-limit@2.3.0:
- resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
- engines: {node: '>=6'}
-
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-limit@4.0.0:
- resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-limit@5.0.0:
- resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
- engines: {node: '>=18'}
-
- p-locate@4.1.0:
- resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
- engines: {node: '>=8'}
-
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
- p-locate@6.0.0:
- resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- p-map@2.1.0:
- resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
- engines: {node: '>=6'}
-
- p-map@4.0.0:
- resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
- engines: {node: '>=10'}
-
- p-try@2.2.0:
- resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
- engines: {node: '>=6'}
-
- parent-module@1.0.1:
- resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
- engines: {node: '>=6'}
-
- parse-json@5.2.0:
- resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
- engines: {node: '>=8'}
-
- parse-json@8.1.0:
- resolution: {integrity: sha512-rum1bPifK5SSar35Z6EKZuYPJx85pkNaFrxBK3mwdfSJ1/WKbYrjoW/zTPSjRRamfmVX1ACBIdFAO0VRErW/EA==}
- engines: {node: '>=18'}
-
- parse-passwd@1.0.0:
- resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
- engines: {node: '>=0.10.0'}
-
- path-exists-cli@2.0.0:
- resolution: {integrity: sha512-qGr0A87KYCznmvabblxyxnzA/MtPZ28wH+4SCMP4tjTFAbzqwvs5xpUZExAYzq5OgHe5vIswzdH5iosCb8YF/Q==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
- hasBin: true
-
- path-exists@4.0.0:
- resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
- engines: {node: '>=8'}
-
- path-exists@5.0.0:
- resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- path-is-absolute@1.0.1:
- resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
- engines: {node: '>=0.10.0'}
-
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- path-scurry@1.10.1:
- resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==}
- engines: {node: '>=16 || 14 >=14.17'}
-
- path-type@4.0.0:
- resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
- engines: {node: '>=8'}
-
- pathe@1.1.2:
- resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==}
-
- pathe@2.0.3:
- resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
-
- pathval@1.1.1:
- resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
-
- picocolors@1.0.0:
- resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- picomatch@2.3.1:
- resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
- engines: {node: '>=8.6'}
-
- pidtree@0.6.0:
- resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==}
- engines: {node: '>=0.10'}
- hasBin: true
-
- pify@4.0.1:
- resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
- engines: {node: '>=6'}
-
- pkg-dir@4.2.0:
- resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
- engines: {node: '>=8'}
-
- pkg-types@1.3.1:
- resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
-
- postcss@8.5.3:
- resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
- engines: {node: ^10 || ^12 || >=14}
-
- preferred-pm@3.1.2:
- resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==}
- engines: {node: '>=10'}
-
- prelude-ls@1.2.1:
- resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
- engines: {node: '>= 0.8.0'}
-
- prettier@2.8.8:
- resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
- engines: {node: '>=10.13.0'}
- hasBin: true
-
- prettier@3.3.1:
- resolution: {integrity: sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==}
- engines: {node: '>=14'}
- hasBin: true
-
- pretty-format@29.7.0:
- resolution: {integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==}
- engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
-
- pseudomap@1.0.2:
- resolution: {integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==}
-
- punycode@2.3.1:
- resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
- engines: {node: '>=6'}
-
- queue-microtask@1.2.3:
- resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
-
- quick-lru@4.0.1:
- resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
- engines: {node: '>=8'}
-
- quick-lru@5.1.1:
- resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
- engines: {node: '>=10'}
-
- react-is@18.3.1:
- resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==}
-
- read-package-up@11.0.0:
- resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==}
- engines: {node: '>=18'}
-
- read-pkg-up@7.0.1:
- resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
- engines: {node: '>=8'}
-
- read-pkg-up@8.0.0:
- resolution: {integrity: sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==}
- engines: {node: '>=12'}
-
- read-pkg@5.2.0:
- resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
- engines: {node: '>=8'}
-
- read-pkg@6.0.0:
- resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==}
- engines: {node: '>=12'}
-
- read-pkg@9.0.1:
- resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==}
- engines: {node: '>=18'}
-
- read-yaml-file@1.1.0:
- resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==}
- engines: {node: '>=6'}
-
- readable-stream@3.6.2:
- resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
- engines: {node: '>= 6'}
-
- redent@3.0.0:
- resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
- engines: {node: '>=8'}
-
- redent@4.0.0:
- resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==}
- engines: {node: '>=12'}
-
- regenerator-runtime@0.14.1:
- resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
-
- regexp.prototype.flags@1.5.1:
- resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==}
- engines: {node: '>= 0.4'}
-
- require-directory@2.1.1:
- resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
- engines: {node: '>=0.10.0'}
-
- require-from-string@2.0.2:
- resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
- engines: {node: '>=0.10.0'}
-
- require-main-filename@2.0.0:
- resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
-
- resolve-dir@1.0.1:
- resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
- engines: {node: '>=0.10.0'}
-
- resolve-from@4.0.0:
- resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
- engines: {node: '>=4'}
-
- resolve-from@5.0.0:
- resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
- engines: {node: '>=8'}
-
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
-
- restore-cursor@3.1.0:
- resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
- engines: {node: '>=8'}
-
- restore-cursor@4.0.0:
- resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
- reusify@1.0.4:
- resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
- engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
-
- rfdc@1.3.1:
- resolution: {integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==}
-
- rimraf@3.0.2:
- resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
- deprecated: Rimraf versions prior to v4 are no longer supported
- hasBin: true
-
- rimraf@5.0.7:
- resolution: {integrity: sha512-nV6YcJo5wbLW77m+8KjH8aB/7/rxQy9SZ0HY5shnwULfS+9nmTtVXAJET5NdZmCzA4fPI/Hm1wo/Po/4mopOdg==}
- engines: {node: '>=14.18'}
- hasBin: true
-
- rollup@4.39.0:
- resolution: {integrity: sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- run-async@2.4.1:
- resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
- engines: {node: '>=0.12.0'}
-
- run-async@3.0.0:
- resolution: {integrity: sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==}
- engines: {node: '>=0.12.0'}
-
- run-parallel@1.2.0:
- resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
-
- rxjs@7.8.1:
- resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==}
-
- safe-array-concat@1.1.0:
- resolution: {integrity: sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==}
- engines: {node: '>=0.4'}
-
- safe-buffer@5.2.1:
- resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
-
- safe-regex-test@1.0.2:
- resolution: {integrity: sha512-83S9w6eFq12BBIJYvjMux6/dkirb8+4zJRA9cxNBVb7Wq5fJBW+Xze48WqR8pxua7bDuAaaAxtVVd4Idjp1dBQ==}
- engines: {node: '>= 0.4'}
-
- safer-buffer@2.1.2:
- resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
-
- semver@5.7.2:
- resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
- hasBin: true
-
- semver@6.3.1:
- resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
- hasBin: true
-
- semver@7.5.4:
- resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
- engines: {node: '>=10'}
- hasBin: true
-
- semver@7.6.0:
- resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==}
- engines: {node: '>=10'}
- hasBin: true
-
- set-blocking@2.0.0:
- resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
-
- set-function-length@1.2.0:
- resolution: {integrity: sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==}
- engines: {node: '>= 0.4'}
-
- set-function-name@2.0.1:
- resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==}
- engines: {node: '>= 0.4'}
-
- shebang-command@1.2.0:
- resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
- engines: {node: '>=0.10.0'}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@1.0.0:
- resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
- engines: {node: '>=0.10.0'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
-
- side-channel@1.0.4:
- resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
-
- siginfo@2.0.0:
- resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
-
- signal-exit@4.1.0:
- resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
- engines: {node: '>=14'}
-
- slash@3.0.0:
- resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
- engines: {node: '>=8'}
-
- slice-ansi@5.0.0:
- resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==}
- engines: {node: '>=12'}
-
- slice-ansi@7.1.0:
- resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==}
- engines: {node: '>=18'}
-
- smartwrap@2.0.2:
- resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==}
- engines: {node: '>=6'}
- hasBin: true
-
- sort-keys@2.0.0:
- resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==}
- engines: {node: '>=4'}
-
- sort-keys@4.2.0:
- resolution: {integrity: sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg==}
- engines: {node: '>=8'}
-
- source-map-js@1.0.2:
- resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
- engines: {node: '>=0.10.0'}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- source-map@0.6.1:
- resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
- engines: {node: '>=0.10.0'}
-
- spawndamnit@2.0.0:
- resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==}
-
- spdx-correct@3.2.0:
- resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
-
- spdx-exceptions@2.3.0:
- resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
-
- spdx-expression-parse@3.0.1:
- resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
-
- spdx-license-ids@3.0.16:
- resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==}
-
- split2@4.2.0:
- resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==}
- engines: {node: '>= 10.x'}
-
- sprintf-js@1.0.3:
- resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
-
- stackback@0.0.2:
- resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
-
- std-env@3.7.0:
- resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
-
- std-env@3.9.0:
- resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==}
-
- stdin-discarder@0.2.2:
- resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
- engines: {node: '>=18'}
-
- stream-transform@2.1.3:
- resolution: {integrity: sha512-9GHUiM5hMiCi6Y03jD2ARC1ettBXkQBoQAe7nJsPknnI0ow10aXjTnew8QtYQmLjzn974BnmWEAJgCY6ZP1DeQ==}
-
- string-argv@0.3.2:
- resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
- engines: {node: '>=0.6.19'}
-
- string-width@4.2.3:
- resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
- engines: {node: '>=8'}
-
- string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
-
- string-width@7.0.0:
- resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==}
- engines: {node: '>=18'}
-
- string.prototype.trim@1.2.8:
- resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==}
- engines: {node: '>= 0.4'}
-
- string.prototype.trimend@1.0.7:
- resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==}
-
- string.prototype.trimstart@1.0.7:
- resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==}
-
- string_decoder@1.3.0:
- resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
-
- strip-ansi@6.0.1:
- resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
- engines: {node: '>=8'}
-
- strip-ansi@7.1.0:
- resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==}
- engines: {node: '>=12'}
-
- strip-bom@3.0.0:
- resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
- engines: {node: '>=4'}
-
- strip-bom@4.0.0:
- resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==}
- engines: {node: '>=8'}
-
- strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
-
- strip-indent@3.0.0:
- resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
- engines: {node: '>=8'}
-
- strip-indent@4.0.0:
- resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==}
- engines: {node: '>=12'}
-
- strip-json-comments@3.1.1:
- resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
- engines: {node: '>=8'}
-
- strip-literal@2.1.1:
- resolution: {integrity: sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==}
-
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
- supports-color@7.2.0:
- resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
- engines: {node: '>=8'}
-
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
- temp-dir@3.0.0:
- resolution: {integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==}
- engines: {node: '>=14.16'}
-
- tempfile@5.0.0:
- resolution: {integrity: sha512-bX655WZI/F7EoTDw9JvQURqAXiPHi8o8+yFxPF2lWYyz1aHnmMRuXWqL6YB6GmeO0o4DIYWHLgGNi/X64T+X4Q==}
- engines: {node: '>=14.18'}
-
- term-size@2.2.1:
- 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-extensions@2.4.0:
- resolution: {integrity: sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==}
- engines: {node: '>=8'}
-
- text-table@0.2.0:
- resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
-
- through@2.3.8:
- resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
-
- tinybench@2.9.0:
- resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
-
- tinycolor2@1.6.0:
- resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==}
-
- tinygradient@1.1.5:
- resolution: {integrity: sha512-8nIfc2vgQ4TeLnk2lFj4tRLvvJwEfQuabdsmvDdQPT0xlk9TaNtpGd6nNRxXoK6vQhN6RSzj+Cnp5tTQmpxmbw==}
-
- tinypool@0.8.4:
- resolution: {integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==}
- engines: {node: '>=14.0.0'}
-
- tinyspy@2.2.1:
- resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
- engines: {node: '>=14.0.0'}
-
- tmp@0.0.33:
- resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
- engines: {node: '>=0.6.0'}
-
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
-
- to-regex-range@5.0.1:
- resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
- engines: {node: '>=8.0'}
-
- trim-newlines@3.0.1:
- resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
- engines: {node: '>=8'}
-
- trim-newlines@4.1.1:
- resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==}
- engines: {node: '>=12'}
-
- ts-api-utils@1.3.0:
- resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
- engines: {node: '>=16'}
- peerDependencies:
- typescript: '>=4.2.0'
-
- tslib@1.14.1:
- resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
-
- tslib@2.6.3:
- resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
-
- tsutils@3.21.0:
- resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
- engines: {node: '>= 6'}
- peerDependencies:
- typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
-
- tty-table@4.2.3:
- resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==}
- engines: {node: '>=8.0.0'}
- hasBin: true
-
- turbo-darwin-64@2.0.3:
- resolution: {integrity: sha512-v7ztJ8sxdHw3SLfO2MhGFeeU4LQhFii1hIGs9uBiXns/0YTGOvxLeifnfGqhfSrAIIhrCoByXO7nR9wlm10n3Q==}
- cpu: [x64]
- os: [darwin]
-
- turbo-darwin-arm64@2.0.3:
- resolution: {integrity: sha512-LUcqvkV9Bxtng6QHbevp8IK8zzwbIxM6HMjCE7FEW6yJBN1KwvTtRtsGBwwmTxaaLO0wD1Jgl3vgkXAmQ4fqUw==}
- cpu: [arm64]
- os: [darwin]
-
- turbo-linux-64@2.0.3:
- resolution: {integrity: sha512-xpdY1suXoEbsQsu0kPep2zrB8ijv/S5aKKrntGuQ62hCiwDFoDcA/Z7FZ8IHQ2u+dpJARa7yfiByHmizFE0r5Q==}
- cpu: [x64]
- os: [linux]
-
- turbo-linux-arm64@2.0.3:
- resolution: {integrity: sha512-MBACTcSR874L1FtLL7gkgbI4yYJWBUCqeBN/iE29D+8EFe0d3fAyviFlbQP4K/HaDYet1i26xkkOiWr0z7/V9A==}
- cpu: [arm64]
- os: [linux]
-
- turbo-windows-64@2.0.3:
- resolution: {integrity: sha512-zi3YuKPkM9JxMTshZo3excPk37hUrj5WfnCqh4FjI26ux6j/LJK+Dh3SebMHd9mR7wP9CMam4GhmLCT+gDfM+w==}
- cpu: [x64]
- os: [win32]
-
- turbo-windows-arm64@2.0.3:
- resolution: {integrity: sha512-wmed4kkenLvRbidi7gISB4PU77ujBuZfgVGDZ4DXTFslE/kYpINulwzkVwJIvNXsJtHqyOq0n6jL8Zwl3BrwDg==}
- cpu: [arm64]
- os: [win32]
-
- turbo@2.0.3:
- resolution: {integrity: sha512-jF1K0tTUyryEWmgqk1V0ALbSz3VdeZ8FXUo6B64WsPksCMCE48N5jUezGOH2MN0+epdaRMH8/WcPU0QQaVfeLA==}
- hasBin: true
-
- type-check@0.4.0:
- resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
- engines: {node: '>= 0.8.0'}
-
- type-detect@4.1.0:
- resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
- engines: {node: '>=4'}
-
- type-fest@0.13.1:
- resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==}
- engines: {node: '>=10'}
-
- type-fest@0.21.3:
- resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
- engines: {node: '>=10'}
-
- type-fest@0.4.1:
- resolution: {integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==}
- engines: {node: '>=6'}
-
- type-fest@0.6.0:
- resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
- engines: {node: '>=8'}
-
- type-fest@0.8.1:
- resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
- engines: {node: '>=8'}
-
- type-fest@1.4.0:
- resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==}
- engines: {node: '>=10'}
-
- type-fest@3.13.1:
- resolution: {integrity: sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==}
- engines: {node: '>=14.16'}
-
- type-fest@4.9.0:
- resolution: {integrity: sha512-KS/6lh/ynPGiHD/LnAobrEFq3Ad4pBzOlJ1wAnJx9N4EYoqFhMfLIBjUT2UEx4wg5ZE+cC1ob6DCSpppVo+rtg==}
- engines: {node: '>=16'}
-
- typed-array-buffer@1.0.0:
- resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
- 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-offset@1.0.0:
- resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
- engines: {node: '>= 0.4'}
-
- typed-array-length@1.0.4:
- resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
-
- typedarray-to-buffer@3.1.5:
- resolution: {integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==}
-
- typescript-eslint@7.7.1:
- resolution: {integrity: sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ==}
- engines: {node: ^18.18.0 || >=20.0.0}
- peerDependencies:
- eslint: ^8.56.0
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- typescript@5.4.5:
- resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==}
- engines: {node: '>=14.17'}
- hasBin: true
-
- ufo@1.5.4:
- resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
-
- uglify-js@3.17.4:
- resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==}
- engines: {node: '>=0.8.0'}
- hasBin: true
-
- unbox-primitive@1.0.2:
- resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
-
- undici-types@5.26.5:
- resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==}
-
- unicorn-magic@0.1.0:
- resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==}
- engines: {node: '>=18'}
-
- universalify@0.1.2:
- resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
- engines: {node: '>= 4.0.0'}
-
- universalify@2.0.1:
- resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
- engines: {node: '>= 10.0.0'}
-
- uri-js@4.4.1:
- resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
-
- util-deprecate@1.0.2:
- resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
-
- v8-to-istanbul@9.2.0:
- resolution: {integrity: sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==}
- engines: {node: '>=10.12.0'}
-
- validate-npm-package-license@3.0.4:
- resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
-
- validate-npm-package-name@3.0.0:
- resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
-
- validate-npm-package-name@5.0.1:
- resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==}
- engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
-
- vite-node@1.6.1:
- resolution: {integrity: sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
-
- vite@5.4.17:
- resolution: {integrity: sha512-5+VqZryDj4wgCs55o9Lp+p8GE78TLVg0lasCH5xFZ4jacZjtqZa6JUw9/p0WeAojaOfncSM6v77InkFPGnvPvg==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- vitest@1.6.1:
- resolution: {integrity: sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@edge-runtime/vm': '*'
- '@types/node': ^18.0.0 || >=20.0.0
- '@vitest/browser': 1.6.1
- '@vitest/ui': 1.6.1
- happy-dom: '*'
- jsdom: '*'
- peerDependenciesMeta:
- '@edge-runtime/vm':
- optional: true
- '@types/node':
- optional: true
- '@vitest/browser':
- optional: true
- '@vitest/ui':
- optional: true
- happy-dom:
- optional: true
- jsdom:
- optional: true
-
- wcwidth@1.0.1:
- resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
-
- which-boxed-primitive@1.0.2:
- resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
-
- which-module@2.0.1:
- resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
-
- which-pm@2.0.0:
- resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
- engines: {node: '>=8.15'}
-
- which-typed-array@1.1.13:
- resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==}
- engines: {node: '>= 0.4'}
-
- which@1.3.1:
- resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
- hasBin: true
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
-
- why-is-node-running@2.3.0:
- resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
- engines: {node: '>=8'}
- hasBin: true
-
- wide-align@1.1.5:
- resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
-
- word-wrap@1.2.5:
- resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
- engines: {node: '>=0.10.0'}
-
- wordwrap@1.0.0:
- resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
-
- wrap-ansi@6.2.0:
- resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
- engines: {node: '>=8'}
-
- wrap-ansi@7.0.0:
- resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==}
- engines: {node: '>=10'}
-
- wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
-
- wrap-ansi@9.0.0:
- resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
- engines: {node: '>=18'}
-
- wrappy@1.0.2:
- resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
-
- write-file-atomic@2.4.3:
- resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
-
- write-file-atomic@3.0.3:
- resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==}
-
- write-json-file@3.2.0:
- resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==}
- engines: {node: '>=6'}
-
- write-json-file@4.3.0:
- resolution: {integrity: sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ==}
- engines: {node: '>=8.3'}
-
- write-pkg@4.0.0:
- resolution: {integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==}
- engines: {node: '>=8'}
-
- y18n@4.0.3:
- resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
-
- y18n@5.0.8:
- resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
- engines: {node: '>=10'}
-
- yallist@2.1.2:
- resolution: {integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==}
-
- yallist@4.0.0:
- resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
-
- yaml@1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
-
- yaml@2.4.2:
- resolution: {integrity: sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==}
- engines: {node: '>= 14'}
- hasBin: true
-
- yargs-parser@18.1.3:
- 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@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'}
-
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- yocto-queue@1.2.1:
- resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==}
- engines: {node: '>=12.20'}
-
-snapshots:
-
- '@aashutoshrathi/word-wrap@1.2.6': {}
-
- '@ampproject/remapping@2.2.1':
- dependencies:
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.22
-
- '@babel/code-frame@7.23.5':
- dependencies:
- '@babel/highlight': 7.23.4
- chalk: 2.4.2
-
- '@babel/helper-string-parser@7.23.4': {}
-
- '@babel/helper-validator-identifier@7.22.20': {}
-
- '@babel/highlight@7.23.4':
- dependencies:
- '@babel/helper-validator-identifier': 7.22.20
- chalk: 2.4.2
- js-tokens: 4.0.0
-
- '@babel/parser@7.23.6':
- dependencies:
- '@babel/types': 7.23.6
-
- '@babel/runtime@7.23.8':
- dependencies:
- regenerator-runtime: 0.14.1
-
- '@babel/types@7.23.6':
- dependencies:
- '@babel/helper-string-parser': 7.23.4
- '@babel/helper-validator-identifier': 7.22.20
- to-fast-properties: 2.0.0
-
- '@bcoe/v8-coverage@0.2.3': {}
-
- '@changesets/apply-release-plan@7.0.3':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/config': 3.0.1
- '@changesets/get-version-range-type': 0.4.0
- '@changesets/git': 3.0.0
- '@changesets/should-skip-package': 0.1.0
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
- detect-indent: 6.1.0
- fs-extra: 7.0.1
- lodash.startcase: 4.4.0
- outdent: 0.5.0
- prettier: 2.8.8
- resolve-from: 5.0.0
- semver: 7.6.0
-
- '@changesets/assemble-release-plan@6.0.2':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.1.0
- '@changesets/should-skip-package': 0.1.0
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
- semver: 7.6.0
-
- '@changesets/changelog-git@0.2.0':
- dependencies:
- '@changesets/types': 6.0.0
-
- '@changesets/cli@2.27.5':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/apply-release-plan': 7.0.3
- '@changesets/assemble-release-plan': 6.0.2
- '@changesets/changelog-git': 0.2.0
- '@changesets/config': 3.0.1
- '@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.1.0
- '@changesets/get-release-plan': 4.0.2
- '@changesets/git': 3.0.0
- '@changesets/logger': 0.1.0
- '@changesets/pre': 2.0.0
- '@changesets/read': 0.6.0
- '@changesets/should-skip-package': 0.1.0
- '@changesets/types': 6.0.0
- '@changesets/write': 0.3.1
- '@manypkg/get-packages': 1.1.3
- '@types/semver': 7.5.8
- ansi-colors: 4.1.3
- chalk: 2.4.2
- ci-info: 3.9.0
- enquirer: 2.4.1
- external-editor: 3.1.0
- fs-extra: 7.0.1
- human-id: 1.0.2
- meow: 6.1.1
- outdent: 0.5.0
- p-limit: 2.3.0
- preferred-pm: 3.1.2
- resolve-from: 5.0.0
- semver: 7.6.0
- spawndamnit: 2.0.0
- term-size: 2.2.1
- tty-table: 4.2.3
-
- '@changesets/config@3.0.1':
- dependencies:
- '@changesets/errors': 0.2.0
- '@changesets/get-dependents-graph': 2.1.0
- '@changesets/logger': 0.1.0
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
- fs-extra: 7.0.1
- micromatch: 4.0.7
-
- '@changesets/errors@0.2.0':
- dependencies:
- extendable-error: 0.1.7
-
- '@changesets/get-dependents-graph@2.1.0':
- dependencies:
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
- chalk: 2.4.2
- fs-extra: 7.0.1
- semver: 7.6.0
-
- '@changesets/get-release-plan@4.0.2':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/assemble-release-plan': 6.0.2
- '@changesets/config': 3.0.1
- '@changesets/pre': 2.0.0
- '@changesets/read': 0.6.0
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
-
- '@changesets/get-version-range-type@0.4.0': {}
-
- '@changesets/git@3.0.0':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/errors': 0.2.0
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
- is-subdir: 1.2.0
- micromatch: 4.0.7
- spawndamnit: 2.0.0
-
- '@changesets/logger@0.1.0':
- dependencies:
- chalk: 2.4.2
-
- '@changesets/parse@0.4.0':
- dependencies:
- '@changesets/types': 6.0.0
- js-yaml: 3.14.1
-
- '@changesets/pre@2.0.0':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/errors': 0.2.0
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
- fs-extra: 7.0.1
-
- '@changesets/read@0.6.0':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/git': 3.0.0
- '@changesets/logger': 0.1.0
- '@changesets/parse': 0.4.0
- '@changesets/types': 6.0.0
- chalk: 2.4.2
- fs-extra: 7.0.1
- p-filter: 2.1.0
-
- '@changesets/should-skip-package@0.1.0':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/types': 6.0.0
- '@manypkg/get-packages': 1.1.3
-
- '@changesets/types@4.1.0': {}
-
- '@changesets/types@6.0.0': {}
-
- '@changesets/write@0.3.1':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/types': 6.0.0
- fs-extra: 7.0.1
- human-id: 1.0.2
- prettier: 2.8.8
-
- '@commitlint/cli@19.3.0(@types/node@20.14.2)(typescript@5.4.5)':
- dependencies:
- '@commitlint/format': 19.3.0
- '@commitlint/lint': 19.2.2
- '@commitlint/load': 19.2.0(@types/node@20.14.2)(typescript@5.4.5)
- '@commitlint/read': 19.2.1
- '@commitlint/types': 19.0.3
- execa: 8.0.1
- yargs: 17.7.2
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- '@commitlint/config-lerna-scopes@19.0.0':
- dependencies:
- '@lerna/project': 6.4.1
- glob: 10.3.10
- import-from: 4.0.0
- semver: 7.6.0
-
- '@commitlint/config-validator@19.0.3':
- dependencies:
- '@commitlint/types': 19.0.3
- ajv: 8.12.0
-
- '@commitlint/ensure@19.0.3':
- dependencies:
- '@commitlint/types': 19.0.3
- lodash.camelcase: 4.3.0
- lodash.kebabcase: 4.1.1
- lodash.snakecase: 4.1.1
- lodash.startcase: 4.4.0
- lodash.upperfirst: 4.3.1
-
- '@commitlint/execute-rule@19.0.0': {}
-
- '@commitlint/format@19.3.0':
- dependencies:
- '@commitlint/types': 19.0.3
- chalk: 5.3.0
-
- '@commitlint/is-ignored@19.2.2':
- dependencies:
- '@commitlint/types': 19.0.3
- semver: 7.6.0
-
- '@commitlint/lint@19.2.2':
- dependencies:
- '@commitlint/is-ignored': 19.2.2
- '@commitlint/parse': 19.0.3
- '@commitlint/rules': 19.0.3
- '@commitlint/types': 19.0.3
-
- '@commitlint/load@19.2.0(@types/node@20.14.2)(typescript@5.4.5)':
- dependencies:
- '@commitlint/config-validator': 19.0.3
- '@commitlint/execute-rule': 19.0.0
- '@commitlint/resolve-extends': 19.1.0
- '@commitlint/types': 19.0.3
- chalk: 5.3.0
- cosmiconfig: 9.0.0(typescript@5.4.5)
- cosmiconfig-typescript-loader: 5.0.0(@types/node@20.14.2)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5)
- lodash.isplainobject: 4.0.6
- lodash.merge: 4.6.2
- lodash.uniq: 4.5.0
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- '@commitlint/message@19.0.0': {}
-
- '@commitlint/parse@19.0.3':
- dependencies:
- '@commitlint/types': 19.0.3
- conventional-changelog-angular: 7.0.0
- conventional-commits-parser: 5.0.0
-
- '@commitlint/prompt@19.3.1(@types/node@20.14.2)(typescript@5.4.5)':
- dependencies:
- '@commitlint/ensure': 19.0.3
- '@commitlint/load': 19.2.0(@types/node@20.14.2)(typescript@5.4.5)
- '@commitlint/types': 19.0.3
- chalk: 5.3.0
- inquirer: 9.2.15
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- '@commitlint/read@19.2.1':
- dependencies:
- '@commitlint/top-level': 19.0.0
- '@commitlint/types': 19.0.3
- execa: 8.0.1
- git-raw-commits: 4.0.0
- minimist: 1.2.8
-
- '@commitlint/resolve-extends@19.1.0':
- dependencies:
- '@commitlint/config-validator': 19.0.3
- '@commitlint/types': 19.0.3
- global-directory: 4.0.1
- import-meta-resolve: 4.0.0
- lodash.mergewith: 4.6.2
- resolve-from: 5.0.0
-
- '@commitlint/rules@19.0.3':
- dependencies:
- '@commitlint/ensure': 19.0.3
- '@commitlint/message': 19.0.0
- '@commitlint/to-lines': 19.0.0
- '@commitlint/types': 19.0.3
- execa: 8.0.1
-
- '@commitlint/to-lines@19.0.0': {}
-
- '@commitlint/top-level@19.0.0':
- dependencies:
- find-up: 7.0.0
-
- '@commitlint/types@19.0.3':
- dependencies:
- '@types/conventional-commits-parser': 5.0.0
- chalk: 5.3.0
-
- '@conventional-changelog/git-client@1.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0)':
- dependencies:
- '@types/semver': 7.5.8
- semver: 7.6.0
- optionalDependencies:
- conventional-commits-filter: 4.0.0
- conventional-commits-parser: 6.0.0
-
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
-
- '@esbuild/android-arm64@0.21.5':
- optional: true
-
- '@esbuild/android-arm@0.21.5':
- optional: true
-
- '@esbuild/android-x64@0.21.5':
- optional: true
-
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
-
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
- '@eslint-community/eslint-utils@4.4.0(eslint@9.4.0)':
- dependencies:
- eslint: 9.4.0
- eslint-visitor-keys: 3.4.3
-
- '@eslint-community/regexpp@4.10.0': {}
-
- '@eslint/config-array@0.15.1':
- dependencies:
- '@eslint/object-schema': 2.1.3
- debug: 4.3.4
- minimatch: 3.1.2
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/eslintrc@3.1.0':
- dependencies:
- ajv: 6.12.6
- debug: 4.3.4
- espree: 10.0.1
- globals: 14.0.0
- ignore: 5.3.1
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- minimatch: 3.1.2
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - supports-color
-
- '@eslint/js@9.1.1': {}
-
- '@eslint/js@9.4.0': {}
-
- '@eslint/object-schema@2.1.3': {}
-
- '@humanwhocodes/module-importer@1.0.1': {}
-
- '@humanwhocodes/retry@0.3.0': {}
-
- '@hutson/parse-repository-url@5.0.0': {}
-
- '@isaacs/cliui@8.0.2':
- dependencies:
- string-width: 5.1.2
- string-width-cjs: string-width@4.2.3
- strip-ansi: 7.1.0
- strip-ansi-cjs: strip-ansi@6.0.1
- 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
-
- '@jridgewell/gen-mapping@0.3.3':
- dependencies:
- '@jridgewell/set-array': 1.1.2
- '@jridgewell/sourcemap-codec': 1.5.0
- '@jridgewell/trace-mapping': 0.3.22
-
- '@jridgewell/resolve-uri@3.1.1': {}
-
- '@jridgewell/set-array@1.1.2': {}
-
- '@jridgewell/sourcemap-codec@1.4.15': {}
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@jridgewell/trace-mapping@0.3.22':
- dependencies:
- '@jridgewell/resolve-uri': 3.1.1
- '@jridgewell/sourcemap-codec': 1.5.0
-
- '@lerna/package@6.4.1':
- dependencies:
- load-json-file: 6.2.0
- npm-package-arg: 8.1.1
- write-pkg: 4.0.0
-
- '@lerna/project@6.4.1':
- dependencies:
- '@lerna/package': 6.4.1
- '@lerna/validation-error': 6.4.1
- cosmiconfig: 7.1.0
- dedent: 0.7.0
- dot-prop: 6.0.1
- glob-parent: 5.1.2
- globby: 11.1.0
- js-yaml: 4.1.0
- load-json-file: 6.2.0
- npmlog: 6.0.2
- p-map: 4.0.0
- resolve-from: 5.0.0
- write-json-file: 4.3.0
-
- '@lerna/validation-error@6.4.1':
- dependencies:
- npmlog: 6.0.2
-
- '@ljharb/through@2.3.12':
- dependencies:
- call-bind: 1.0.5
-
- '@manypkg/find-root@1.1.0':
- dependencies:
- '@babel/runtime': 7.23.8
- '@types/node': 12.20.55
- find-up: 4.1.0
- fs-extra: 8.1.0
-
- '@manypkg/get-packages@1.1.3':
- dependencies:
- '@babel/runtime': 7.23.8
- '@changesets/types': 4.1.0
- '@manypkg/find-root': 1.1.0
- fs-extra: 8.1.0
- globby: 11.1.0
- read-yaml-file: 1.1.0
-
- '@nodelib/fs.scandir@2.1.5':
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- run-parallel: 1.2.0
-
- '@nodelib/fs.stat@2.0.5': {}
-
- '@nodelib/fs.walk@1.2.8':
- dependencies:
- '@nodelib/fs.scandir': 2.1.5
- fastq: 1.16.0
-
- '@pkgjs/parseargs@0.11.0':
- optional: true
-
- '@rollup/rollup-android-arm-eabi@4.39.0':
- optional: true
-
- '@rollup/rollup-android-arm64@4.39.0':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.39.0':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.39.0':
- optional: true
-
- '@rollup/rollup-freebsd-arm64@4.39.0':
- optional: true
-
- '@rollup/rollup-freebsd-x64@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-loongarch64-gnu@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-riscv64-musl@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.39.0':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.39.0':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.39.0':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.39.0':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.39.0':
- optional: true
-
- '@sinclair/typebox@0.27.8': {}
-
- '@types/conventional-commits-parser@5.0.0':
- dependencies:
- '@types/node': 20.14.2
-
- '@types/estree@1.0.7': {}
-
- '@types/istanbul-lib-coverage@2.0.6': {}
-
- '@types/json-schema@7.0.15': {}
-
- '@types/minimist@1.2.5': {}
-
- '@types/node@12.20.55': {}
-
- '@types/node@20.14.2':
- dependencies:
- undici-types: 5.26.5
-
- '@types/normalize-package-data@2.4.4': {}
-
- '@types/parse-json@4.0.2': {}
-
- '@types/semver@7.5.8': {}
-
- '@types/tinycolor2@1.4.6': {}
-
- '@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)':
- dependencies:
- '@eslint-community/regexpp': 4.10.0
- '@typescript-eslint/parser': 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/scope-manager': 7.7.1
- '@typescript-eslint/type-utils': 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/utils': 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/visitor-keys': 7.7.1
- debug: 4.4.0
- eslint: 9.4.0
- graphemer: 1.4.0
- ignore: 5.3.1
- natural-compare: 1.4.0
- semver: 7.6.0
- ts-api-utils: 1.3.0(typescript@5.4.5)
- optionalDependencies:
- typescript: 5.4.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/parser@7.7.1(eslint@9.4.0)(typescript@5.4.5)':
- dependencies:
- '@typescript-eslint/scope-manager': 7.7.1
- '@typescript-eslint/types': 7.7.1
- '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5)
- '@typescript-eslint/visitor-keys': 7.7.1
- debug: 4.4.0
- eslint: 9.4.0
- optionalDependencies:
- typescript: 5.4.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/scope-manager@7.7.1':
- dependencies:
- '@typescript-eslint/types': 7.7.1
- '@typescript-eslint/visitor-keys': 7.7.1
-
- '@typescript-eslint/type-utils@7.7.1(eslint@9.4.0)(typescript@5.4.5)':
- dependencies:
- '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5)
- '@typescript-eslint/utils': 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- debug: 4.4.0
- eslint: 9.4.0
- ts-api-utils: 1.3.0(typescript@5.4.5)
- optionalDependencies:
- typescript: 5.4.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/types@7.7.1': {}
-
- '@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5)':
- dependencies:
- '@typescript-eslint/types': 7.7.1
- '@typescript-eslint/visitor-keys': 7.7.1
- debug: 4.4.0
- globby: 11.1.0
- is-glob: 4.0.3
- minimatch: 9.0.4
- semver: 7.6.0
- ts-api-utils: 1.3.0(typescript@5.4.5)
- optionalDependencies:
- typescript: 5.4.5
- transitivePeerDependencies:
- - supports-color
-
- '@typescript-eslint/utils@7.7.1(eslint@9.4.0)(typescript@5.4.5)':
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
- '@types/json-schema': 7.0.15
- '@types/semver': 7.5.8
- '@typescript-eslint/scope-manager': 7.7.1
- '@typescript-eslint/types': 7.7.1
- '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5)
- eslint: 9.4.0
- semver: 7.6.0
- transitivePeerDependencies:
- - supports-color
- - typescript
-
- '@typescript-eslint/visitor-keys@7.7.1':
- dependencies:
- '@typescript-eslint/types': 7.7.1
- eslint-visitor-keys: 3.4.3
-
- '@vitest/coverage-c8@0.33.0(vitest@1.6.1(@types/node@20.14.2))':
- dependencies:
- '@ampproject/remapping': 2.2.1
- c8: 7.14.0
- magic-string: 0.30.5
- picocolors: 1.0.0
- std-env: 3.7.0
- vitest: 1.6.1(@types/node@20.14.2)
-
- '@vitest/coverage-v8@1.2.1(vitest@1.6.1(@types/node@20.14.2))':
- dependencies:
- '@ampproject/remapping': 2.2.1
- '@bcoe/v8-coverage': 0.2.3
- debug: 4.3.4
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-report: 3.0.1
- istanbul-lib-source-maps: 4.0.1
- istanbul-reports: 3.1.6
- magic-string: 0.30.5
- magicast: 0.3.3
- picocolors: 1.0.0
- std-env: 3.7.0
- test-exclude: 6.0.0
- v8-to-istanbul: 9.2.0
- vitest: 1.6.1(@types/node@20.14.2)
- transitivePeerDependencies:
- - supports-color
-
- '@vitest/expect@1.6.1':
- dependencies:
- '@vitest/spy': 1.6.1
- '@vitest/utils': 1.6.1
- chai: 4.5.0
-
- '@vitest/runner@1.6.1':
- dependencies:
- '@vitest/utils': 1.6.1
- p-limit: 5.0.0
- pathe: 1.1.2
-
- '@vitest/snapshot@1.6.1':
- dependencies:
- magic-string: 0.30.17
- pathe: 1.1.2
- pretty-format: 29.7.0
-
- '@vitest/spy@1.6.1':
- dependencies:
- tinyspy: 2.2.1
-
- '@vitest/utils@1.6.1':
- dependencies:
- diff-sequences: 29.6.3
- estree-walker: 3.0.3
- loupe: 2.3.7
- pretty-format: 29.7.0
-
- JSONStream@1.3.5:
- dependencies:
- jsonparse: 1.3.1
- through: 2.3.8
-
- acorn-jsx@5.3.2(acorn@8.11.3):
- dependencies:
- acorn: 8.11.3
-
- acorn-walk@8.3.4:
- dependencies:
- acorn: 8.14.1
-
- acorn@8.11.3: {}
-
- acorn@8.14.1: {}
-
- add-stream@1.0.0: {}
-
- aggregate-error@3.1.0:
- dependencies:
- clean-stack: 2.2.0
- indent-string: 4.0.0
-
- ajv@6.12.6:
- dependencies:
- fast-deep-equal: 3.1.3
- fast-json-stable-stringify: 2.1.0
- json-schema-traverse: 0.4.1
- uri-js: 4.4.1
-
- ajv@8.12.0:
- dependencies:
- fast-deep-equal: 3.1.3
- json-schema-traverse: 1.0.0
- require-from-string: 2.0.2
- uri-js: 4.4.1
-
- ansi-colors@4.1.3: {}
-
- ansi-escapes@4.3.2:
- dependencies:
- type-fest: 0.21.3
-
- ansi-escapes@6.2.0:
- dependencies:
- type-fest: 3.13.1
-
- ansi-regex@5.0.1: {}
-
- ansi-regex@6.0.1: {}
-
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
- ansi-styles@4.3.0:
- dependencies:
- color-convert: 2.0.1
-
- ansi-styles@5.2.0: {}
-
- ansi-styles@6.2.1: {}
-
- aproba@2.0.0: {}
-
- are-we-there-yet@3.0.1:
- dependencies:
- delegates: 1.0.0
- readable-stream: 3.6.2
-
- argparse@1.0.10:
- dependencies:
- sprintf-js: 1.0.3
-
- argparse@2.0.1: {}
-
- array-buffer-byte-length@1.0.0:
- dependencies:
- call-bind: 1.0.5
- is-array-buffer: 3.0.2
-
- array-ify@1.0.0: {}
-
- array-union@2.1.0: {}
-
- array.prototype.flat@1.3.2:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- es-abstract: 1.22.3
- es-shim-unscopables: 1.0.2
-
- arraybuffer.prototype.slice@1.0.2:
- dependencies:
- array-buffer-byte-length: 1.0.0
- call-bind: 1.0.5
- define-properties: 1.2.1
- es-abstract: 1.22.3
- get-intrinsic: 1.2.2
- is-array-buffer: 3.0.2
- is-shared-array-buffer: 1.0.2
-
- arrify@1.0.1: {}
-
- assertion-error@1.1.0: {}
-
- at-least-node@1.0.0: {}
-
- available-typed-arrays@1.0.5: {}
-
- balanced-match@1.0.2: {}
-
- base64-js@1.5.1: {}
-
- better-path-resolve@1.0.0:
- dependencies:
- is-windows: 1.0.2
-
- bl@4.1.0:
- dependencies:
- buffer: 5.7.1
- inherits: 2.0.4
- readable-stream: 3.6.2
-
- brace-expansion@1.1.11:
- dependencies:
- balanced-match: 1.0.2
- concat-map: 0.0.1
-
- brace-expansion@2.0.1:
- dependencies:
- balanced-match: 1.0.2
-
- braces@3.0.2:
- dependencies:
- fill-range: 7.0.1
-
- braces@3.0.3:
- dependencies:
- fill-range: 7.1.1
-
- breakword@1.0.6:
- dependencies:
- wcwidth: 1.0.1
-
- buffer@5.7.1:
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
-
- builtins@1.0.3: {}
-
- c8@7.14.0:
- dependencies:
- '@bcoe/v8-coverage': 0.2.3
- '@istanbuljs/schema': 0.1.3
- find-up: 5.0.0
- foreground-child: 2.0.0
- istanbul-lib-coverage: 3.2.2
- istanbul-lib-report: 3.0.1
- istanbul-reports: 3.1.6
- rimraf: 3.0.2
- test-exclude: 6.0.0
- v8-to-istanbul: 9.2.0
- yargs: 16.2.0
- yargs-parser: 20.2.9
-
- 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.6
- test-exclude: 6.0.0
- v8-to-istanbul: 9.2.0
- yargs: 17.7.2
- yargs-parser: 21.1.1
-
- cac@6.7.14: {}
-
- cachedir@2.3.0: {}
-
- call-bind@1.0.5:
- dependencies:
- function-bind: 1.1.2
- get-intrinsic: 1.2.2
- set-function-length: 1.2.0
-
- callsites@3.1.0: {}
-
- camelcase-keys@6.2.2:
- dependencies:
- camelcase: 5.3.1
- map-obj: 4.3.0
- quick-lru: 4.0.1
-
- camelcase-keys@7.0.2:
- dependencies:
- camelcase: 6.3.0
- map-obj: 4.3.0
- quick-lru: 5.1.1
- type-fest: 1.4.0
-
- camelcase@5.3.1: {}
-
- camelcase@6.3.0: {}
-
- chai@4.5.0:
- dependencies:
- assertion-error: 1.1.0
- check-error: 1.0.3
- deep-eql: 4.1.4
- get-func-name: 2.0.2
- loupe: 2.3.7
- pathval: 1.1.1
- type-detect: 4.1.0
-
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
- chalk@4.1.2:
- dependencies:
- ansi-styles: 4.3.0
- supports-color: 7.2.0
-
- chalk@5.3.0: {}
-
- changesets@1.0.2: {}
-
- chardet@0.7.0: {}
-
- check-error@1.0.3:
- dependencies:
- get-func-name: 2.0.2
-
- ci-info@3.9.0: {}
-
- clean-stack@2.2.0: {}
-
- cli-cursor@3.1.0:
- dependencies:
- restore-cursor: 3.1.0
-
- cli-cursor@4.0.0:
- dependencies:
- restore-cursor: 4.0.0
-
- cli-spinners@2.9.2: {}
-
- cli-truncate@4.0.0:
- dependencies:
- slice-ansi: 5.0.0
- string-width: 7.0.0
-
- cli-width@3.0.0: {}
-
- cli-width@4.1.0: {}
-
- cliui@6.0.0:
- dependencies:
- string-width: 4.2.3
- 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
- strip-ansi: 6.0.1
- wrap-ansi: 7.0.0
-
- clone@1.0.4: {}
-
- codependence@0.3.1(typescript@5.4.5):
- dependencies:
- commander: 11.1.0
- cosmiconfig: 9.0.0(typescript@5.4.5)
- execa: 8.0.1
- fast-glob: 3.3.2
- gradient-string: 2.0.2
- ora: 8.0.1
- validate-npm-package-name: 5.0.1
- transitivePeerDependencies:
- - typescript
-
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
- color-convert@2.0.1:
- dependencies:
- color-name: 1.1.4
-
- color-name@1.1.3: {}
-
- color-name@1.1.4: {}
-
- color-support@1.1.3: {}
-
- colorette@2.0.20: {}
-
- commander@11.1.0: {}
-
- commander@12.1.0: {}
-
- commitizen@4.3.0(@types/node@20.14.2)(typescript@5.4.5):
- dependencies:
- cachedir: 2.3.0
- cz-conventional-changelog: 3.3.0(@types/node@20.14.2)(typescript@5.4.5)
- dedent: 0.7.0
- detect-indent: 6.1.0
- find-node-modules: 2.1.3
- find-root: 1.1.0
- fs-extra: 9.1.0
- glob: 7.2.3
- inquirer: 8.2.5
- is-utf8: 0.2.1
- lodash: 4.17.21
- minimist: 1.2.7
- strip-bom: 4.0.0
- strip-json-comments: 3.1.1
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- compare-func@2.0.0:
- dependencies:
- array-ify: 1.0.0
- dot-prop: 5.3.0
-
- concat-map@0.0.1: {}
-
- confbox@0.1.8: {}
-
- console-control-strings@1.1.0: {}
-
- conventional-changelog-angular@7.0.0:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-angular@8.0.0:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-atom@5.0.0: {}
-
- conventional-changelog-cli@5.0.0(conventional-commits-filter@4.0.0):
- dependencies:
- add-stream: 1.0.0
- conventional-changelog: 6.0.0(conventional-commits-filter@4.0.0)
- meow: 13.2.0
- tempfile: 5.0.0
- transitivePeerDependencies:
- - conventional-commits-filter
-
- conventional-changelog-codemirror@5.0.0: {}
-
- conventional-changelog-conventionalcommits@8.0.0:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-core@8.0.0(conventional-commits-filter@4.0.0):
- dependencies:
- '@hutson/parse-repository-url': 5.0.0
- add-stream: 1.0.0
- conventional-changelog-writer: 8.0.0
- conventional-commits-parser: 6.0.0
- git-raw-commits: 5.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0)
- git-semver-tags: 8.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0)
- hosted-git-info: 7.0.1
- normalize-package-data: 6.0.0
- read-package-up: 11.0.0
- read-pkg: 9.0.1
- transitivePeerDependencies:
- - conventional-commits-filter
-
- conventional-changelog-ember@5.0.0: {}
-
- conventional-changelog-eslint@6.0.0: {}
-
- conventional-changelog-express@5.0.0: {}
-
- conventional-changelog-jquery@6.0.0: {}
-
- conventional-changelog-jshint@5.0.0:
- dependencies:
- compare-func: 2.0.0
-
- conventional-changelog-preset-loader@5.0.0: {}
-
- conventional-changelog-writer@8.0.0:
- dependencies:
- '@types/semver': 7.5.8
- conventional-commits-filter: 5.0.0
- handlebars: 4.7.8
- meow: 13.2.0
- semver: 7.6.0
-
- conventional-changelog@6.0.0(conventional-commits-filter@4.0.0):
- dependencies:
- conventional-changelog-angular: 8.0.0
- conventional-changelog-atom: 5.0.0
- conventional-changelog-codemirror: 5.0.0
- conventional-changelog-conventionalcommits: 8.0.0
- conventional-changelog-core: 8.0.0(conventional-commits-filter@4.0.0)
- conventional-changelog-ember: 5.0.0
- conventional-changelog-eslint: 6.0.0
- conventional-changelog-express: 5.0.0
- conventional-changelog-jquery: 6.0.0
- conventional-changelog-jshint: 5.0.0
- conventional-changelog-preset-loader: 5.0.0
- transitivePeerDependencies:
- - conventional-commits-filter
-
- conventional-commit-types@3.0.0: {}
-
- conventional-commits-filter@4.0.0:
- optional: true
-
- conventional-commits-filter@5.0.0: {}
-
- conventional-commits-parser@5.0.0:
- dependencies:
- JSONStream: 1.3.5
- is-text-path: 2.0.0
- meow: 12.1.1
- split2: 4.2.0
-
- conventional-commits-parser@6.0.0:
- dependencies:
- meow: 13.2.0
-
- convert-source-map@2.0.0: {}
-
- cosmiconfig-typescript-loader@5.0.0(@types/node@20.14.2)(cosmiconfig@9.0.0(typescript@5.4.5))(typescript@5.4.5):
- dependencies:
- '@types/node': 20.14.2
- cosmiconfig: 9.0.0(typescript@5.4.5)
- jiti: 1.21.0
- typescript: 5.4.5
-
- cosmiconfig@7.1.0:
- dependencies:
- '@types/parse-json': 4.0.2
- import-fresh: 3.3.0
- parse-json: 5.2.0
- path-type: 4.0.0
- yaml: 1.10.2
-
- cosmiconfig@9.0.0(typescript@5.4.5):
- dependencies:
- env-paths: 2.2.1
- import-fresh: 3.3.0
- js-yaml: 4.1.0
- parse-json: 5.2.0
- optionalDependencies:
- typescript: 5.4.5
-
- cross-env@7.0.3:
- dependencies:
- cross-spawn: 7.0.3
-
- cross-spawn@5.1.0:
- dependencies:
- lru-cache: 4.1.5
- shebang-command: 1.2.0
- which: 1.3.1
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- cross-spawn@7.0.6:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
-
- csv-generate@3.4.3: {}
-
- csv-parse@4.16.3: {}
-
- csv-stringify@5.6.5: {}
-
- csv@5.5.3:
- dependencies:
- csv-generate: 3.4.3
- csv-parse: 4.16.3
- csv-stringify: 5.6.5
- stream-transform: 2.1.3
-
- cz-conventional-changelog@3.3.0(@types/node@20.14.2)(typescript@5.4.5):
- dependencies:
- chalk: 2.4.2
- commitizen: 4.3.0(@types/node@20.14.2)(typescript@5.4.5)
- conventional-commit-types: 3.0.0
- lodash.map: 4.6.0
- longest: 2.0.1
- word-wrap: 1.2.5
- optionalDependencies:
- '@commitlint/load': 19.2.0(@types/node@20.14.2)(typescript@5.4.5)
- transitivePeerDependencies:
- - '@types/node'
- - typescript
-
- dargs@8.1.0: {}
-
- debug@4.3.4:
- dependencies:
- ms: 2.1.2
-
- debug@4.4.0:
- dependencies:
- ms: 2.1.3
-
- decamelize-keys@1.1.1:
- dependencies:
- decamelize: 1.2.0
- map-obj: 1.0.1
-
- decamelize@1.2.0: {}
-
- decamelize@5.0.1: {}
-
- dedent@0.7.0: {}
-
- deep-eql@4.1.4:
- dependencies:
- type-detect: 4.1.0
-
- deep-is@0.1.4: {}
-
- defaults@1.0.4:
- dependencies:
- clone: 1.0.4
-
- define-data-property@1.1.1:
- dependencies:
- get-intrinsic: 1.2.2
- gopd: 1.0.1
- has-property-descriptors: 1.0.1
-
- define-properties@1.2.1:
- dependencies:
- define-data-property: 1.1.1
- has-property-descriptors: 1.0.1
- object-keys: 1.1.1
-
- delegates@1.0.0: {}
-
- detect-file@1.0.0: {}
-
- detect-indent@5.0.0: {}
-
- detect-indent@6.1.0: {}
-
- diff-sequences@29.6.3: {}
-
- dir-glob@3.0.1:
- dependencies:
- path-type: 4.0.0
-
- dot-prop@5.3.0:
- dependencies:
- is-obj: 2.0.0
-
- dot-prop@6.0.1:
- dependencies:
- is-obj: 2.0.0
-
- eastasianwidth@0.2.0: {}
-
- emoji-regex@10.3.0: {}
-
- emoji-regex@8.0.0: {}
-
- emoji-regex@9.2.2: {}
-
- enquirer@2.4.1:
- dependencies:
- ansi-colors: 4.1.3
- strip-ansi: 6.0.1
-
- env-paths@2.2.1: {}
-
- error-ex@1.3.2:
- dependencies:
- is-arrayish: 0.2.1
-
- es-abstract@1.22.3:
- dependencies:
- array-buffer-byte-length: 1.0.0
- arraybuffer.prototype.slice: 1.0.2
- available-typed-arrays: 1.0.5
- call-bind: 1.0.5
- es-set-tostringtag: 2.0.2
- es-to-primitive: 1.2.1
- function.prototype.name: 1.1.6
- get-intrinsic: 1.2.2
- get-symbol-description: 1.0.0
- globalthis: 1.0.3
- gopd: 1.0.1
- has-property-descriptors: 1.0.1
- has-proto: 1.0.1
- has-symbols: 1.0.3
- hasown: 2.0.0
- internal-slot: 1.0.6
- is-array-buffer: 3.0.2
- is-callable: 1.2.7
- is-negative-zero: 2.0.2
- is-regex: 1.1.4
- is-shared-array-buffer: 1.0.2
- is-string: 1.0.7
- is-typed-array: 1.1.12
- is-weakref: 1.0.2
- object-inspect: 1.13.1
- object-keys: 1.1.1
- object.assign: 4.1.5
- regexp.prototype.flags: 1.5.1
- safe-array-concat: 1.1.0
- safe-regex-test: 1.0.2
- string.prototype.trim: 1.2.8
- string.prototype.trimend: 1.0.7
- string.prototype.trimstart: 1.0.7
- typed-array-buffer: 1.0.0
- typed-array-byte-length: 1.0.0
- typed-array-byte-offset: 1.0.0
- typed-array-length: 1.0.4
- unbox-primitive: 1.0.2
- which-typed-array: 1.1.13
-
- es-set-tostringtag@2.0.2:
- dependencies:
- get-intrinsic: 1.2.2
- has-tostringtag: 1.0.0
- hasown: 2.0.0
-
- es-shim-unscopables@1.0.2:
- dependencies:
- hasown: 2.0.0
-
- es-to-primitive@1.2.1:
- dependencies:
- is-callable: 1.2.7
- is-date-object: 1.0.5
- is-symbol: 1.0.4
-
- 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.1: {}
-
- escape-string-regexp@1.0.5: {}
-
- escape-string-regexp@4.0.0: {}
-
- eslint-config-prettier@9.1.0(eslint@9.4.0):
- dependencies:
- eslint: 9.4.0
-
- eslint-scope@8.0.1:
- dependencies:
- esrecurse: 4.3.0
- estraverse: 5.3.0
-
- eslint-visitor-keys@3.4.3: {}
-
- eslint-visitor-keys@4.0.0: {}
-
- eslint@9.4.0:
- dependencies:
- '@eslint-community/eslint-utils': 4.4.0(eslint@9.4.0)
- '@eslint-community/regexpp': 4.10.0
- '@eslint/config-array': 0.15.1
- '@eslint/eslintrc': 3.1.0
- '@eslint/js': 9.4.0
- '@humanwhocodes/module-importer': 1.0.1
- '@humanwhocodes/retry': 0.3.0
- '@nodelib/fs.walk': 1.2.8
- ajv: 6.12.6
- chalk: 4.1.2
- cross-spawn: 7.0.3
- debug: 4.3.4
- escape-string-regexp: 4.0.0
- eslint-scope: 8.0.1
- eslint-visitor-keys: 4.0.0
- espree: 10.0.1
- esquery: 1.5.0
- esutils: 2.0.3
- fast-deep-equal: 3.1.3
- file-entry-cache: 8.0.0
- find-up: 5.0.0
- glob-parent: 6.0.2
- ignore: 5.3.1
- imurmurhash: 0.1.4
- is-glob: 4.0.3
- is-path-inside: 3.0.3
- json-stable-stringify-without-jsonify: 1.0.1
- levn: 0.4.1
- lodash.merge: 4.6.2
- minimatch: 3.1.2
- natural-compare: 1.4.0
- optionator: 0.9.3
- strip-ansi: 6.0.1
- text-table: 0.2.0
- transitivePeerDependencies:
- - supports-color
-
- espree@10.0.1:
- dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
- eslint-visitor-keys: 4.0.0
-
- esprima@4.0.1: {}
-
- esquery@1.5.0:
- dependencies:
- estraverse: 5.3.0
-
- esrecurse@4.3.0:
- dependencies:
- estraverse: 5.3.0
-
- estraverse@5.3.0: {}
-
- estree-walker@3.0.3:
- dependencies:
- '@types/estree': 1.0.7
-
- esutils@2.0.3: {}
-
- eventemitter3@5.0.1: {}
-
- execa@8.0.1:
- dependencies:
- cross-spawn: 7.0.6
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.3.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
-
- expand-tilde@2.0.2:
- dependencies:
- homedir-polyfill: 1.0.3
-
- extendable-error@0.1.7: {}
-
- external-editor@3.1.0:
- dependencies:
- chardet: 0.7.0
- iconv-lite: 0.4.24
- tmp: 0.0.33
-
- fast-deep-equal@3.1.3: {}
-
- fast-glob@3.3.2:
- dependencies:
- '@nodelib/fs.stat': 2.0.5
- '@nodelib/fs.walk': 1.2.8
- glob-parent: 5.1.2
- merge2: 1.4.1
- micromatch: 4.0.5
-
- fast-json-stable-stringify@2.1.0: {}
-
- fast-levenshtein@2.0.6: {}
-
- fastq@1.16.0:
- dependencies:
- reusify: 1.0.4
-
- figures@3.2.0:
- dependencies:
- escape-string-regexp: 1.0.5
-
- file-entry-cache@8.0.0:
- dependencies:
- flat-cache: 4.0.1
-
- fill-range@7.0.1:
- dependencies:
- to-regex-range: 5.0.1
-
- fill-range@7.1.1:
- dependencies:
- to-regex-range: 5.0.1
-
- find-node-modules@2.1.3:
- dependencies:
- findup-sync: 4.0.0
- merge: 2.1.1
-
- find-root@1.1.0: {}
-
- find-up-simple@1.0.0: {}
-
- find-up@4.1.0:
- dependencies:
- locate-path: 5.0.0
- path-exists: 4.0.0
-
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
- find-up@7.0.0:
- dependencies:
- locate-path: 7.2.0
- path-exists: 5.0.0
- unicorn-magic: 0.1.0
-
- find-yarn-workspace-root2@1.2.16:
- dependencies:
- micromatch: 4.0.7
- pkg-dir: 4.2.0
-
- findup-sync@4.0.0:
- dependencies:
- detect-file: 1.0.0
- is-glob: 4.0.3
- micromatch: 4.0.5
- resolve-dir: 1.0.1
-
- flat-cache@4.0.1:
- dependencies:
- flatted: 3.2.9
- keyv: 4.5.4
-
- flatted@3.2.9: {}
-
- for-each@0.3.3:
- dependencies:
- is-callable: 1.2.7
-
- foreground-child@2.0.0:
- dependencies:
- cross-spawn: 7.0.6
- signal-exit: 3.0.7
-
- foreground-child@3.1.1:
- dependencies:
- cross-spawn: 7.0.3
- signal-exit: 4.1.0
-
- fs-extra@7.0.1:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 4.0.0
- universalify: 0.1.2
-
- fs-extra@8.1.0:
- dependencies:
- graceful-fs: 4.2.11
- jsonfile: 4.0.0
- universalify: 0.1.2
-
- fs-extra@9.1.0:
- dependencies:
- at-least-node: 1.0.0
- graceful-fs: 4.2.11
- jsonfile: 6.1.0
- universalify: 2.0.1
-
- fs.realpath@1.0.0: {}
-
- fsevents@2.3.3:
- optional: true
-
- function-bind@1.1.2: {}
-
- function.prototype.name@1.1.6:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- es-abstract: 1.22.3
- functions-have-names: 1.2.3
-
- functions-have-names@1.2.3: {}
-
- gauge@4.0.4:
- dependencies:
- aproba: 2.0.0
- color-support: 1.1.3
- console-control-strings: 1.1.0
- has-unicode: 2.0.1
- signal-exit: 3.0.7
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wide-align: 1.1.5
-
- get-caller-file@2.0.5: {}
-
- get-east-asian-width@1.2.0: {}
-
- get-func-name@2.0.2: {}
-
- get-intrinsic@1.2.2:
- dependencies:
- function-bind: 1.1.2
- has-proto: 1.0.1
- has-symbols: 1.0.3
- hasown: 2.0.0
-
- get-stream@8.0.1: {}
-
- get-symbol-description@1.0.0:
- dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
-
- git-raw-commits@4.0.0:
- dependencies:
- dargs: 8.1.0
- meow: 12.1.1
- split2: 4.2.0
-
- git-raw-commits@5.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0):
- dependencies:
- '@conventional-changelog/git-client': 1.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0)
- meow: 13.2.0
- transitivePeerDependencies:
- - conventional-commits-filter
- - conventional-commits-parser
-
- git-semver-tags@8.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0):
- dependencies:
- '@conventional-changelog/git-client': 1.0.0(conventional-commits-filter@4.0.0)(conventional-commits-parser@6.0.0)
- meow: 13.2.0
- transitivePeerDependencies:
- - conventional-commits-filter
- - conventional-commits-parser
-
- glob-parent@5.1.2:
- dependencies:
- is-glob: 4.0.3
-
- glob-parent@6.0.2:
- dependencies:
- is-glob: 4.0.3
-
- glob@10.3.10:
- dependencies:
- foreground-child: 3.1.1
- jackspeak: 2.3.6
- minimatch: 9.0.3
- minipass: 7.0.4
- path-scurry: 1.10.1
-
- glob@7.2.3:
- dependencies:
- fs.realpath: 1.0.0
- inflight: 1.0.6
- inherits: 2.0.4
- minimatch: 3.1.2
- once: 1.4.0
- path-is-absolute: 1.0.1
-
- global-directory@4.0.1:
- dependencies:
- ini: 4.1.1
-
- global-modules@1.0.0:
- dependencies:
- global-prefix: 1.0.2
- is-windows: 1.0.2
- resolve-dir: 1.0.1
-
- global-prefix@1.0.2:
- dependencies:
- expand-tilde: 2.0.2
- homedir-polyfill: 1.0.3
- ini: 1.3.8
- is-windows: 1.0.2
- which: 1.3.1
-
- globals@14.0.0: {}
-
- globalthis@1.0.3:
- dependencies:
- define-properties: 1.2.1
-
- globby@11.1.0:
- dependencies:
- array-union: 2.1.0
- dir-glob: 3.0.1
- fast-glob: 3.3.2
- ignore: 5.3.0
- merge2: 1.4.1
- slash: 3.0.0
-
- gopd@1.0.1:
- dependencies:
- get-intrinsic: 1.2.2
-
- graceful-fs@4.2.11: {}
-
- gradient-string@2.0.2:
- dependencies:
- chalk: 4.1.2
- tinygradient: 1.1.5
-
- grapheme-splitter@1.0.4: {}
-
- graphemer@1.4.0: {}
-
- handlebars@4.7.8:
- dependencies:
- minimist: 1.2.8
- neo-async: 2.6.2
- source-map: 0.6.1
- wordwrap: 1.0.0
- optionalDependencies:
- uglify-js: 3.17.4
-
- hard-rejection@2.1.0: {}
-
- has-bigints@1.0.2: {}
-
- has-flag@3.0.0: {}
-
- has-flag@4.0.0: {}
-
- has-property-descriptors@1.0.1:
- dependencies:
- get-intrinsic: 1.2.2
-
- has-proto@1.0.1: {}
-
- has-symbols@1.0.3: {}
-
- has-tostringtag@1.0.0:
- dependencies:
- has-symbols: 1.0.3
-
- has-unicode@2.0.1: {}
-
- hasown@2.0.0:
- dependencies:
- function-bind: 1.1.2
-
- homedir-polyfill@1.0.3:
- dependencies:
- parse-passwd: 1.0.0
-
- hosted-git-info@2.8.9: {}
-
- hosted-git-info@3.0.8:
- dependencies:
- lru-cache: 6.0.0
-
- hosted-git-info@4.1.0:
- dependencies:
- lru-cache: 6.0.0
-
- hosted-git-info@7.0.1:
- dependencies:
- lru-cache: 10.1.0
-
- html-escaper@2.0.2: {}
-
- human-id@1.0.2: {}
-
- human-signals@5.0.0: {}
-
- husky@9.0.11: {}
-
- iconv-lite@0.4.24:
- dependencies:
- safer-buffer: 2.1.2
-
- ieee754@1.2.1: {}
-
- ignore@5.3.0: {}
-
- ignore@5.3.1: {}
-
- import-fresh@3.3.0:
- dependencies:
- parent-module: 1.0.1
- resolve-from: 4.0.0
-
- import-from@4.0.0: {}
-
- import-meta-resolve@4.0.0: {}
-
- imurmurhash@0.1.4: {}
-
- indent-string@4.0.0: {}
-
- indent-string@5.0.0: {}
-
- index-to-position@0.1.2: {}
-
- inflight@1.0.6:
- dependencies:
- once: 1.4.0
- wrappy: 1.0.2
-
- inherits@2.0.4: {}
-
- ini@1.3.8: {}
-
- ini@4.1.1: {}
-
- inquirer@8.2.5:
- dependencies:
- ansi-escapes: 4.3.2
- chalk: 4.1.2
- cli-cursor: 3.1.0
- cli-width: 3.0.0
- external-editor: 3.1.0
- figures: 3.2.0
- lodash: 4.17.21
- mute-stream: 0.0.8
- ora: 5.4.1
- run-async: 2.4.1
- rxjs: 7.8.1
- string-width: 4.2.3
- strip-ansi: 6.0.1
- through: 2.3.8
- wrap-ansi: 7.0.0
-
- inquirer@9.2.15:
- dependencies:
- '@ljharb/through': 2.3.12
- ansi-escapes: 4.3.2
- chalk: 5.3.0
- cli-cursor: 3.1.0
- cli-width: 4.1.0
- external-editor: 3.1.0
- figures: 3.2.0
- lodash: 4.17.21
- mute-stream: 1.0.0
- ora: 5.4.1
- run-async: 3.0.0
- rxjs: 7.8.1
- string-width: 4.2.3
- strip-ansi: 6.0.1
- wrap-ansi: 6.2.0
-
- internal-slot@1.0.6:
- dependencies:
- get-intrinsic: 1.2.2
- hasown: 2.0.0
- side-channel: 1.0.4
-
- is-array-buffer@3.0.2:
- dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- is-typed-array: 1.1.12
-
- is-arrayish@0.2.1: {}
-
- is-bigint@1.0.4:
- dependencies:
- has-bigints: 1.0.2
-
- is-boolean-object@1.1.2:
- dependencies:
- call-bind: 1.0.5
- has-tostringtag: 1.0.0
-
- is-callable@1.2.7: {}
-
- is-core-module@2.13.1:
- dependencies:
- hasown: 2.0.0
-
- is-date-object@1.0.5:
- dependencies:
- has-tostringtag: 1.0.0
-
- is-extglob@2.1.1: {}
-
- is-fullwidth-code-point@3.0.0: {}
-
- is-fullwidth-code-point@4.0.0: {}
-
- is-fullwidth-code-point@5.0.0:
- dependencies:
- get-east-asian-width: 1.2.0
-
- is-glob@4.0.3:
- dependencies:
- is-extglob: 2.1.1
-
- is-interactive@1.0.0: {}
-
- is-interactive@2.0.0: {}
-
- is-negative-zero@2.0.2: {}
-
- is-number-object@1.0.7:
- dependencies:
- has-tostringtag: 1.0.0
-
- is-number@7.0.0: {}
-
- is-obj@2.0.0: {}
-
- is-path-inside@3.0.3: {}
-
- is-plain-obj@1.1.0: {}
-
- is-plain-obj@2.1.0: {}
-
- is-regex@1.1.4:
- dependencies:
- call-bind: 1.0.5
- has-tostringtag: 1.0.0
-
- is-shared-array-buffer@1.0.2:
- dependencies:
- call-bind: 1.0.5
-
- is-stream@3.0.0: {}
-
- is-string@1.0.7:
- dependencies:
- has-tostringtag: 1.0.0
-
- is-subdir@1.2.0:
- dependencies:
- better-path-resolve: 1.0.0
-
- is-symbol@1.0.4:
- dependencies:
- has-symbols: 1.0.3
-
- is-text-path@2.0.0:
- dependencies:
- text-extensions: 2.4.0
-
- is-typed-array@1.1.12:
- dependencies:
- which-typed-array: 1.1.13
-
- is-typedarray@1.0.0: {}
-
- is-unicode-supported@0.1.0: {}
-
- is-unicode-supported@1.3.0: {}
-
- is-unicode-supported@2.0.0: {}
-
- is-utf8@0.2.1: {}
-
- is-weakref@1.0.2:
- dependencies:
- call-bind: 1.0.5
-
- is-windows@1.0.2: {}
-
- isarray@2.0.5: {}
-
- isexe@2.0.0: {}
-
- 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-lib-source-maps@4.0.1:
- dependencies:
- debug: 4.3.4
- istanbul-lib-coverage: 3.2.2
- source-map: 0.6.1
- transitivePeerDependencies:
- - supports-color
-
- istanbul-reports@3.1.6:
- dependencies:
- html-escaper: 2.0.2
- istanbul-lib-report: 3.0.1
-
- jackspeak@2.3.6:
- dependencies:
- '@isaacs/cliui': 8.0.2
- optionalDependencies:
- '@pkgjs/parseargs': 0.11.0
-
- jiti@1.21.0: {}
-
- js-tokens@4.0.0: {}
-
- js-tokens@9.0.1: {}
-
- js-yaml@3.14.1:
- dependencies:
- argparse: 1.0.10
- esprima: 4.0.1
-
- js-yaml@4.1.0:
- dependencies:
- argparse: 2.0.1
-
- json-buffer@3.0.1: {}
-
- json-parse-even-better-errors@2.3.1: {}
-
- json-schema-traverse@0.4.1: {}
-
- json-schema-traverse@1.0.0: {}
-
- json-stable-stringify-without-jsonify@1.0.1: {}
-
- jsonfile@4.0.0:
- optionalDependencies:
- graceful-fs: 4.2.11
-
- jsonfile@6.1.0:
- dependencies:
- universalify: 2.0.1
- optionalDependencies:
- graceful-fs: 4.2.11
-
- jsonparse@1.3.1: {}
-
- keyv@4.5.4:
- dependencies:
- json-buffer: 3.0.1
-
- kind-of@6.0.3: {}
-
- kleur@4.1.5: {}
-
- levn@0.4.1:
- dependencies:
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
- lilconfig@3.1.1: {}
-
- lines-and-columns@1.2.4: {}
-
- lint-staged@15.2.5:
- dependencies:
- chalk: 5.3.0
- commander: 12.1.0
- debug: 4.3.4
- execa: 8.0.1
- lilconfig: 3.1.1
- listr2: 8.2.1
- micromatch: 4.0.7
- pidtree: 0.6.0
- string-argv: 0.3.2
- yaml: 2.4.2
- transitivePeerDependencies:
- - supports-color
-
- listr2@8.2.1:
- dependencies:
- cli-truncate: 4.0.0
- colorette: 2.0.20
- eventemitter3: 5.0.1
- log-update: 6.0.0
- rfdc: 1.3.1
- wrap-ansi: 9.0.0
-
- load-json-file@6.2.0:
- dependencies:
- graceful-fs: 4.2.11
- parse-json: 5.2.0
- strip-bom: 4.0.0
- type-fest: 0.6.0
-
- load-yaml-file@0.2.0:
- dependencies:
- graceful-fs: 4.2.11
- js-yaml: 3.14.1
- pify: 4.0.1
- strip-bom: 3.0.0
-
- local-pkg@0.5.1:
- dependencies:
- mlly: 1.7.4
- pkg-types: 1.3.1
-
- locate-path@5.0.0:
- dependencies:
- p-locate: 4.1.0
-
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
- locate-path@7.2.0:
- dependencies:
- p-locate: 6.0.0
-
- lodash.camelcase@4.3.0: {}
-
- lodash.isplainobject@4.0.6: {}
-
- lodash.kebabcase@4.1.1: {}
-
- lodash.map@4.6.0: {}
-
- lodash.merge@4.6.2: {}
-
- lodash.mergewith@4.6.2: {}
-
- lodash.snakecase@4.1.1: {}
-
- lodash.startcase@4.4.0: {}
-
- lodash.uniq@4.5.0: {}
-
- lodash.upperfirst@4.3.1: {}
-
- lodash@4.17.21: {}
-
- log-symbols@4.1.0:
- dependencies:
- chalk: 4.1.2
- is-unicode-supported: 0.1.0
-
- log-symbols@6.0.0:
- dependencies:
- chalk: 5.3.0
- is-unicode-supported: 1.3.0
-
- log-update@6.0.0:
- dependencies:
- ansi-escapes: 6.2.0
- cli-cursor: 4.0.0
- slice-ansi: 7.1.0
- strip-ansi: 7.1.0
- wrap-ansi: 9.0.0
-
- longest@2.0.1: {}
-
- loupe@2.3.7:
- dependencies:
- get-func-name: 2.0.2
-
- lru-cache@10.1.0: {}
-
- lru-cache@4.1.5:
- dependencies:
- pseudomap: 1.0.2
- yallist: 2.1.2
-
- lru-cache@6.0.0:
- dependencies:
- yallist: 4.0.0
-
- magic-string@0.30.17:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
-
- magic-string@0.30.5:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
-
- magicast@0.3.3:
- dependencies:
- '@babel/parser': 7.23.6
- '@babel/types': 7.23.6
- source-map-js: 1.0.2
-
- make-dir@2.1.0:
- dependencies:
- pify: 4.0.1
- semver: 5.7.2
-
- make-dir@3.1.0:
- dependencies:
- semver: 6.3.1
-
- make-dir@4.0.0:
- dependencies:
- semver: 7.5.4
-
- map-obj@1.0.1: {}
-
- map-obj@4.3.0: {}
-
- meow@10.1.5:
- dependencies:
- '@types/minimist': 1.2.5
- camelcase-keys: 7.0.2
- decamelize: 5.0.1
- decamelize-keys: 1.1.1
- hard-rejection: 2.1.0
- minimist-options: 4.1.0
- normalize-package-data: 3.0.3
- read-pkg-up: 8.0.0
- redent: 4.0.0
- trim-newlines: 4.1.1
- type-fest: 1.4.0
- yargs-parser: 20.2.9
-
- meow@12.1.1: {}
-
- meow@13.2.0: {}
-
- meow@6.1.1:
- dependencies:
- '@types/minimist': 1.2.5
- camelcase-keys: 6.2.2
- decamelize-keys: 1.1.1
- hard-rejection: 2.1.0
- minimist-options: 4.1.0
- normalize-package-data: 2.5.0
- read-pkg-up: 7.0.1
- redent: 3.0.0
- trim-newlines: 3.0.1
- type-fest: 0.13.1
- yargs-parser: 18.1.3
-
- merge-stream@2.0.0: {}
-
- merge2@1.4.1: {}
-
- merge@2.1.1: {}
-
- micromatch@4.0.5:
- dependencies:
- braces: 3.0.2
- picomatch: 2.3.1
-
- micromatch@4.0.7:
- dependencies:
- braces: 3.0.3
- picomatch: 2.3.1
-
- mimic-fn@2.1.0: {}
-
- mimic-fn@4.0.0: {}
-
- min-indent@1.0.1: {}
-
- minimatch@3.1.2:
- dependencies:
- brace-expansion: 1.1.11
-
- minimatch@9.0.3:
- dependencies:
- brace-expansion: 2.0.1
-
- minimatch@9.0.4:
- dependencies:
- brace-expansion: 2.0.1
-
- minimist-options@4.1.0:
- dependencies:
- arrify: 1.0.1
- is-plain-obj: 1.1.0
- kind-of: 6.0.3
-
- minimist@1.2.7: {}
-
- minimist@1.2.8: {}
-
- minipass@7.0.4: {}
-
- mixme@0.5.10: {}
-
- mlly@1.7.4:
- dependencies:
- acorn: 8.14.1
- pathe: 2.0.3
- pkg-types: 1.3.1
- ufo: 1.5.4
-
- ms@2.1.2: {}
-
- ms@2.1.3: {}
-
- mute-stream@0.0.8: {}
-
- mute-stream@1.0.0: {}
-
- nanoid@3.3.11: {}
-
- natural-compare@1.4.0: {}
-
- neo-async@2.6.2: {}
-
- normalize-package-data@2.5.0:
- dependencies:
- hosted-git-info: 2.8.9
- resolve: 1.22.8
- semver: 5.7.2
- validate-npm-package-license: 3.0.4
-
- normalize-package-data@3.0.3:
- dependencies:
- hosted-git-info: 4.1.0
- is-core-module: 2.13.1
- semver: 7.6.0
- validate-npm-package-license: 3.0.4
-
- normalize-package-data@6.0.0:
- dependencies:
- hosted-git-info: 7.0.1
- is-core-module: 2.13.1
- semver: 7.6.0
- validate-npm-package-license: 3.0.4
-
- npm-package-arg@8.1.1:
- dependencies:
- hosted-git-info: 3.0.8
- semver: 7.6.0
- validate-npm-package-name: 3.0.0
-
- npm-run-path@5.3.0:
- dependencies:
- path-key: 4.0.0
-
- npmlog@6.0.2:
- dependencies:
- are-we-there-yet: 3.0.1
- console-control-strings: 1.1.0
- gauge: 4.0.4
- set-blocking: 2.0.0
-
- object-inspect@1.13.1: {}
-
- object-keys@1.1.1: {}
-
- object.assign@4.1.5:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- has-symbols: 1.0.3
- object-keys: 1.1.1
-
- once@1.4.0:
- dependencies:
- wrappy: 1.0.2
-
- onetime@5.1.2:
- dependencies:
- mimic-fn: 2.1.0
-
- onetime@6.0.0:
- dependencies:
- mimic-fn: 4.0.0
-
- optionator@0.9.3:
- dependencies:
- '@aashutoshrathi/word-wrap': 1.2.6
- deep-is: 0.1.4
- fast-levenshtein: 2.0.6
- levn: 0.4.1
- prelude-ls: 1.2.1
- type-check: 0.4.0
-
- ora@5.4.1:
- dependencies:
- bl: 4.1.0
- chalk: 4.1.2
- cli-cursor: 3.1.0
- cli-spinners: 2.9.2
- is-interactive: 1.0.0
- is-unicode-supported: 0.1.0
- log-symbols: 4.1.0
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
-
- ora@8.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: 2.0.0
- log-symbols: 6.0.0
- stdin-discarder: 0.2.2
- string-width: 7.0.0
- strip-ansi: 7.1.0
-
- os-tmpdir@1.0.2: {}
-
- outdent@0.5.0: {}
-
- p-filter@2.1.0:
- dependencies:
- p-map: 2.1.0
-
- p-limit@2.3.0:
- dependencies:
- p-try: 2.2.0
-
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-limit@4.0.0:
- dependencies:
- yocto-queue: 1.2.1
-
- p-limit@5.0.0:
- dependencies:
- yocto-queue: 1.2.1
-
- p-locate@4.1.0:
- dependencies:
- p-limit: 2.3.0
-
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
- p-locate@6.0.0:
- dependencies:
- p-limit: 4.0.0
-
- p-map@2.1.0: {}
-
- p-map@4.0.0:
- dependencies:
- aggregate-error: 3.1.0
-
- p-try@2.2.0: {}
-
- parent-module@1.0.1:
- dependencies:
- callsites: 3.1.0
-
- parse-json@5.2.0:
- dependencies:
- '@babel/code-frame': 7.23.5
- error-ex: 1.3.2
- json-parse-even-better-errors: 2.3.1
- lines-and-columns: 1.2.4
-
- parse-json@8.1.0:
- dependencies:
- '@babel/code-frame': 7.23.5
- index-to-position: 0.1.2
- type-fest: 4.9.0
-
- parse-passwd@1.0.0: {}
-
- path-exists-cli@2.0.0:
- dependencies:
- meow: 10.1.5
- path-exists: 5.0.0
-
- path-exists@4.0.0: {}
-
- path-exists@5.0.0: {}
-
- path-is-absolute@1.0.1: {}
-
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- path-parse@1.0.7: {}
-
- path-scurry@1.10.1:
- dependencies:
- lru-cache: 10.1.0
- minipass: 7.0.4
-
- path-type@4.0.0: {}
-
- pathe@1.1.2: {}
-
- pathe@2.0.3: {}
-
- pathval@1.1.1: {}
-
- picocolors@1.0.0: {}
-
- picocolors@1.1.1: {}
-
- picomatch@2.3.1: {}
-
- pidtree@0.6.0: {}
-
- pify@4.0.1: {}
-
- pkg-dir@4.2.0:
- dependencies:
- find-up: 4.1.0
-
- pkg-types@1.3.1:
- dependencies:
- confbox: 0.1.8
- mlly: 1.7.4
- pathe: 2.0.3
-
- postcss@8.5.3:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- preferred-pm@3.1.2:
- dependencies:
- find-up: 5.0.0
- find-yarn-workspace-root2: 1.2.16
- path-exists: 4.0.0
- which-pm: 2.0.0
-
- prelude-ls@1.2.1: {}
-
- prettier@2.8.8: {}
-
- prettier@3.3.1: {}
-
- pretty-format@29.7.0:
- dependencies:
- '@jest/schemas': 29.6.3
- ansi-styles: 5.2.0
- react-is: 18.3.1
-
- pseudomap@1.0.2: {}
-
- punycode@2.3.1: {}
-
- queue-microtask@1.2.3: {}
-
- quick-lru@4.0.1: {}
-
- quick-lru@5.1.1: {}
-
- react-is@18.3.1: {}
-
- read-package-up@11.0.0:
- dependencies:
- find-up-simple: 1.0.0
- read-pkg: 9.0.1
- type-fest: 4.9.0
-
- read-pkg-up@7.0.1:
- dependencies:
- find-up: 4.1.0
- read-pkg: 5.2.0
- type-fest: 0.8.1
-
- read-pkg-up@8.0.0:
- dependencies:
- find-up: 5.0.0
- read-pkg: 6.0.0
- type-fest: 1.4.0
-
- read-pkg@5.2.0:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 2.5.0
- parse-json: 5.2.0
- type-fest: 0.6.0
-
- read-pkg@6.0.0:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 3.0.3
- parse-json: 5.2.0
- type-fest: 1.4.0
-
- read-pkg@9.0.1:
- dependencies:
- '@types/normalize-package-data': 2.4.4
- normalize-package-data: 6.0.0
- parse-json: 8.1.0
- type-fest: 4.9.0
- unicorn-magic: 0.1.0
-
- read-yaml-file@1.1.0:
- dependencies:
- graceful-fs: 4.2.11
- js-yaml: 3.14.1
- pify: 4.0.1
- strip-bom: 3.0.0
-
- readable-stream@3.6.2:
- dependencies:
- inherits: 2.0.4
- string_decoder: 1.3.0
- util-deprecate: 1.0.2
-
- redent@3.0.0:
- dependencies:
- indent-string: 4.0.0
- strip-indent: 3.0.0
-
- redent@4.0.0:
- dependencies:
- indent-string: 5.0.0
- strip-indent: 4.0.0
-
- regenerator-runtime@0.14.1: {}
-
- regexp.prototype.flags@1.5.1:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- set-function-name: 2.0.1
-
- require-directory@2.1.1: {}
-
- require-from-string@2.0.2: {}
-
- require-main-filename@2.0.0: {}
-
- resolve-dir@1.0.1:
- dependencies:
- expand-tilde: 2.0.2
- global-modules: 1.0.0
-
- resolve-from@4.0.0: {}
-
- resolve-from@5.0.0: {}
-
- resolve@1.22.8:
- dependencies:
- is-core-module: 2.13.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
-
- restore-cursor@3.1.0:
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
-
- restore-cursor@4.0.0:
- dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
-
- reusify@1.0.4: {}
-
- rfdc@1.3.1: {}
-
- rimraf@3.0.2:
- dependencies:
- glob: 7.2.3
-
- rimraf@5.0.7:
- dependencies:
- glob: 10.3.10
-
- rollup@4.39.0:
- dependencies:
- '@types/estree': 1.0.7
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.39.0
- '@rollup/rollup-android-arm64': 4.39.0
- '@rollup/rollup-darwin-arm64': 4.39.0
- '@rollup/rollup-darwin-x64': 4.39.0
- '@rollup/rollup-freebsd-arm64': 4.39.0
- '@rollup/rollup-freebsd-x64': 4.39.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.39.0
- '@rollup/rollup-linux-arm-musleabihf': 4.39.0
- '@rollup/rollup-linux-arm64-gnu': 4.39.0
- '@rollup/rollup-linux-arm64-musl': 4.39.0
- '@rollup/rollup-linux-loongarch64-gnu': 4.39.0
- '@rollup/rollup-linux-powerpc64le-gnu': 4.39.0
- '@rollup/rollup-linux-riscv64-gnu': 4.39.0
- '@rollup/rollup-linux-riscv64-musl': 4.39.0
- '@rollup/rollup-linux-s390x-gnu': 4.39.0
- '@rollup/rollup-linux-x64-gnu': 4.39.0
- '@rollup/rollup-linux-x64-musl': 4.39.0
- '@rollup/rollup-win32-arm64-msvc': 4.39.0
- '@rollup/rollup-win32-ia32-msvc': 4.39.0
- '@rollup/rollup-win32-x64-msvc': 4.39.0
- fsevents: 2.3.3
-
- run-async@2.4.1: {}
-
- run-async@3.0.0: {}
-
- run-parallel@1.2.0:
- dependencies:
- queue-microtask: 1.2.3
-
- rxjs@7.8.1:
- dependencies:
- tslib: 2.6.3
-
- safe-array-concat@1.1.0:
- dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- has-symbols: 1.0.3
- isarray: 2.0.5
-
- safe-buffer@5.2.1: {}
-
- safe-regex-test@1.0.2:
- dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- is-regex: 1.1.4
-
- safer-buffer@2.1.2: {}
-
- semver@5.7.2: {}
-
- semver@6.3.1: {}
-
- semver@7.5.4:
- dependencies:
- lru-cache: 6.0.0
-
- semver@7.6.0:
- dependencies:
- lru-cache: 6.0.0
-
- set-blocking@2.0.0: {}
-
- set-function-length@1.2.0:
- dependencies:
- define-data-property: 1.1.1
- function-bind: 1.1.2
- get-intrinsic: 1.2.2
- gopd: 1.0.1
- has-property-descriptors: 1.0.1
-
- set-function-name@2.0.1:
- dependencies:
- define-data-property: 1.1.1
- functions-have-names: 1.2.3
- has-property-descriptors: 1.0.1
-
- shebang-command@1.2.0:
- dependencies:
- shebang-regex: 1.0.0
-
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@1.0.0: {}
-
- shebang-regex@3.0.0: {}
-
- side-channel@1.0.4:
- dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- object-inspect: 1.13.1
-
- siginfo@2.0.0: {}
-
- signal-exit@3.0.7: {}
-
- signal-exit@4.1.0: {}
-
- slash@3.0.0: {}
-
- slice-ansi@5.0.0:
- dependencies:
- ansi-styles: 6.2.1
- is-fullwidth-code-point: 4.0.0
-
- slice-ansi@7.1.0:
- dependencies:
- ansi-styles: 6.2.1
- is-fullwidth-code-point: 5.0.0
-
- smartwrap@2.0.2:
- dependencies:
- array.prototype.flat: 1.3.2
- breakword: 1.0.6
- grapheme-splitter: 1.0.4
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
- yargs: 15.4.1
-
- sort-keys@2.0.0:
- dependencies:
- is-plain-obj: 1.1.0
-
- sort-keys@4.2.0:
- dependencies:
- is-plain-obj: 2.1.0
-
- source-map-js@1.0.2: {}
-
- source-map-js@1.2.1: {}
-
- source-map@0.6.1: {}
-
- spawndamnit@2.0.0:
- dependencies:
- cross-spawn: 5.1.0
- signal-exit: 3.0.7
-
- spdx-correct@3.2.0:
- dependencies:
- spdx-expression-parse: 3.0.1
- spdx-license-ids: 3.0.16
-
- spdx-exceptions@2.3.0: {}
-
- spdx-expression-parse@3.0.1:
- dependencies:
- spdx-exceptions: 2.3.0
- spdx-license-ids: 3.0.16
-
- spdx-license-ids@3.0.16: {}
-
- split2@4.2.0: {}
-
- sprintf-js@1.0.3: {}
-
- stackback@0.0.2: {}
-
- std-env@3.7.0: {}
-
- std-env@3.9.0: {}
-
- stdin-discarder@0.2.2: {}
-
- stream-transform@2.1.3:
- dependencies:
- mixme: 0.5.10
-
- string-argv@0.3.2: {}
-
- string-width@4.2.3:
- dependencies:
- emoji-regex: 8.0.0
- is-fullwidth-code-point: 3.0.0
- strip-ansi: 6.0.1
-
- string-width@5.1.2:
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.1.0
-
- string-width@7.0.0:
- dependencies:
- emoji-regex: 10.3.0
- get-east-asian-width: 1.2.0
- strip-ansi: 7.1.0
-
- string.prototype.trim@1.2.8:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- es-abstract: 1.22.3
-
- string.prototype.trimend@1.0.7:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- es-abstract: 1.22.3
-
- string.prototype.trimstart@1.0.7:
- dependencies:
- call-bind: 1.0.5
- define-properties: 1.2.1
- es-abstract: 1.22.3
-
- string_decoder@1.3.0:
- dependencies:
- safe-buffer: 5.2.1
-
- strip-ansi@6.0.1:
- dependencies:
- ansi-regex: 5.0.1
-
- strip-ansi@7.1.0:
- dependencies:
- ansi-regex: 6.0.1
-
- strip-bom@3.0.0: {}
-
- strip-bom@4.0.0: {}
-
- strip-final-newline@3.0.0: {}
-
- strip-indent@3.0.0:
- dependencies:
- min-indent: 1.0.1
-
- strip-indent@4.0.0:
- dependencies:
- min-indent: 1.0.1
-
- strip-json-comments@3.1.1: {}
-
- strip-literal@2.1.1:
- dependencies:
- js-tokens: 9.0.1
-
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
- supports-color@7.2.0:
- dependencies:
- has-flag: 4.0.0
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
- temp-dir@3.0.0: {}
-
- tempfile@5.0.0:
- dependencies:
- temp-dir: 3.0.0
-
- 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-extensions@2.4.0: {}
-
- text-table@0.2.0: {}
-
- through@2.3.8: {}
-
- tinybench@2.9.0: {}
-
- tinycolor2@1.6.0: {}
-
- tinygradient@1.1.5:
- dependencies:
- '@types/tinycolor2': 1.4.6
- tinycolor2: 1.6.0
-
- tinypool@0.8.4: {}
-
- tinyspy@2.2.1: {}
-
- tmp@0.0.33:
- dependencies:
- os-tmpdir: 1.0.2
-
- to-fast-properties@2.0.0: {}
-
- to-regex-range@5.0.1:
- dependencies:
- is-number: 7.0.0
-
- trim-newlines@3.0.1: {}
-
- trim-newlines@4.1.1: {}
-
- ts-api-utils@1.3.0(typescript@5.4.5):
- dependencies:
- typescript: 5.4.5
-
- tslib@1.14.1: {}
-
- tslib@2.6.3: {}
-
- tsutils@3.21.0(typescript@5.4.5):
- dependencies:
- tslib: 1.14.1
- typescript: 5.4.5
-
- tty-table@4.2.3:
- dependencies:
- chalk: 4.1.2
- csv: 5.5.3
- kleur: 4.1.5
- smartwrap: 2.0.2
- strip-ansi: 6.0.1
- wcwidth: 1.0.1
- yargs: 17.7.2
-
- turbo-darwin-64@2.0.3:
- optional: true
-
- turbo-darwin-arm64@2.0.3:
- optional: true
-
- turbo-linux-64@2.0.3:
- optional: true
-
- turbo-linux-arm64@2.0.3:
- optional: true
-
- turbo-windows-64@2.0.3:
- optional: true
-
- turbo-windows-arm64@2.0.3:
- optional: true
-
- turbo@2.0.3:
- optionalDependencies:
- turbo-darwin-64: 2.0.3
- turbo-darwin-arm64: 2.0.3
- turbo-linux-64: 2.0.3
- turbo-linux-arm64: 2.0.3
- turbo-windows-64: 2.0.3
- turbo-windows-arm64: 2.0.3
-
- type-check@0.4.0:
- dependencies:
- prelude-ls: 1.2.1
-
- type-detect@4.1.0: {}
-
- type-fest@0.13.1: {}
-
- type-fest@0.21.3: {}
-
- type-fest@0.4.1: {}
-
- type-fest@0.6.0: {}
-
- type-fest@0.8.1: {}
-
- type-fest@1.4.0: {}
-
- type-fest@3.13.1: {}
-
- type-fest@4.9.0: {}
-
- typed-array-buffer@1.0.0:
- dependencies:
- call-bind: 1.0.5
- get-intrinsic: 1.2.2
- is-typed-array: 1.1.12
-
- typed-array-byte-length@1.0.0:
- dependencies:
- call-bind: 1.0.5
- for-each: 0.3.3
- has-proto: 1.0.1
- is-typed-array: 1.1.12
-
- typed-array-byte-offset@1.0.0:
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.5
- for-each: 0.3.3
- has-proto: 1.0.1
- is-typed-array: 1.1.12
-
- typed-array-length@1.0.4:
- dependencies:
- call-bind: 1.0.5
- for-each: 0.3.3
- is-typed-array: 1.1.12
-
- typedarray-to-buffer@3.1.5:
- dependencies:
- is-typedarray: 1.0.0
-
- typescript-eslint@7.7.1(eslint@9.4.0)(typescript@5.4.5):
- dependencies:
- '@typescript-eslint/eslint-plugin': 7.7.1(@typescript-eslint/parser@7.7.1(eslint@9.4.0)(typescript@5.4.5))(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/parser': 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- '@typescript-eslint/utils': 7.7.1(eslint@9.4.0)(typescript@5.4.5)
- eslint: 9.4.0
- optionalDependencies:
- typescript: 5.4.5
- transitivePeerDependencies:
- - supports-color
-
- typescript@5.4.5: {}
-
- ufo@1.5.4: {}
-
- uglify-js@3.17.4:
- optional: true
-
- unbox-primitive@1.0.2:
- dependencies:
- call-bind: 1.0.5
- has-bigints: 1.0.2
- has-symbols: 1.0.3
- which-boxed-primitive: 1.0.2
-
- undici-types@5.26.5: {}
-
- unicorn-magic@0.1.0: {}
-
- universalify@0.1.2: {}
-
- universalify@2.0.1: {}
-
- uri-js@4.4.1:
- dependencies:
- punycode: 2.3.1
-
- util-deprecate@1.0.2: {}
-
- v8-to-istanbul@9.2.0:
- dependencies:
- '@jridgewell/trace-mapping': 0.3.22
- '@types/istanbul-lib-coverage': 2.0.6
- convert-source-map: 2.0.0
-
- validate-npm-package-license@3.0.4:
- dependencies:
- spdx-correct: 3.2.0
- spdx-expression-parse: 3.0.1
-
- validate-npm-package-name@3.0.0:
- dependencies:
- builtins: 1.0.3
-
- validate-npm-package-name@5.0.1: {}
-
- vite-node@1.6.1(@types/node@20.14.2):
- dependencies:
- cac: 6.7.14
- debug: 4.4.0
- pathe: 1.1.2
- picocolors: 1.1.1
- vite: 5.4.17(@types/node@20.14.2)
- transitivePeerDependencies:
- - '@types/node'
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
-
- vite@5.4.17(@types/node@20.14.2):
- dependencies:
- esbuild: 0.21.5
- postcss: 8.5.3
- rollup: 4.39.0
- optionalDependencies:
- '@types/node': 20.14.2
- fsevents: 2.3.3
-
- vitest@1.6.1(@types/node@20.14.2):
- dependencies:
- '@vitest/expect': 1.6.1
- '@vitest/runner': 1.6.1
- '@vitest/snapshot': 1.6.1
- '@vitest/spy': 1.6.1
- '@vitest/utils': 1.6.1
- acorn-walk: 8.3.4
- chai: 4.5.0
- debug: 4.4.0
- execa: 8.0.1
- local-pkg: 0.5.1
- magic-string: 0.30.17
- pathe: 1.1.2
- picocolors: 1.1.1
- std-env: 3.9.0
- strip-literal: 2.1.1
- tinybench: 2.9.0
- tinypool: 0.8.4
- vite: 5.4.17(@types/node@20.14.2)
- vite-node: 1.6.1(@types/node@20.14.2)
- why-is-node-running: 2.3.0
- optionalDependencies:
- '@types/node': 20.14.2
- transitivePeerDependencies:
- - less
- - lightningcss
- - sass
- - sass-embedded
- - stylus
- - sugarss
- - supports-color
- - terser
-
- wcwidth@1.0.1:
- dependencies:
- defaults: 1.0.4
-
- which-boxed-primitive@1.0.2:
- dependencies:
- is-bigint: 1.0.4
- is-boolean-object: 1.1.2
- is-number-object: 1.0.7
- is-string: 1.0.7
- is-symbol: 1.0.4
-
- which-module@2.0.1: {}
-
- which-pm@2.0.0:
- dependencies:
- load-yaml-file: 0.2.0
- path-exists: 4.0.0
-
- which-typed-array@1.1.13:
- dependencies:
- available-typed-arrays: 1.0.5
- call-bind: 1.0.5
- for-each: 0.3.3
- gopd: 1.0.1
- has-tostringtag: 1.0.0
-
- which@1.3.1:
- dependencies:
- isexe: 2.0.0
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
-
- why-is-node-running@2.3.0:
- dependencies:
- siginfo: 2.0.0
- stackback: 0.0.2
-
- wide-align@1.1.5:
- dependencies:
- string-width: 4.2.3
-
- word-wrap@1.2.5: {}
-
- wordwrap@1.0.0: {}
-
- wrap-ansi@6.2.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
- wrap-ansi@7.0.0:
- dependencies:
- ansi-styles: 4.3.0
- string-width: 4.2.3
- strip-ansi: 6.0.1
-
- wrap-ansi@8.1.0:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 5.1.2
- strip-ansi: 7.1.0
-
- wrap-ansi@9.0.0:
- dependencies:
- ansi-styles: 6.2.1
- string-width: 7.0.0
- strip-ansi: 7.1.0
-
- wrappy@1.0.2: {}
-
- write-file-atomic@2.4.3:
- dependencies:
- graceful-fs: 4.2.11
- imurmurhash: 0.1.4
- signal-exit: 3.0.7
-
- write-file-atomic@3.0.3:
- dependencies:
- imurmurhash: 0.1.4
- is-typedarray: 1.0.0
- signal-exit: 3.0.7
- typedarray-to-buffer: 3.1.5
-
- write-json-file@3.2.0:
- dependencies:
- detect-indent: 5.0.0
- graceful-fs: 4.2.11
- make-dir: 2.1.0
- pify: 4.0.1
- sort-keys: 2.0.0
- write-file-atomic: 2.4.3
-
- write-json-file@4.3.0:
- dependencies:
- detect-indent: 6.1.0
- graceful-fs: 4.2.11
- is-plain-obj: 2.1.0
- make-dir: 3.1.0
- sort-keys: 4.2.0
- write-file-atomic: 3.0.3
-
- write-pkg@4.0.0:
- dependencies:
- sort-keys: 2.0.0
- type-fest: 0.4.1
- write-json-file: 3.2.0
-
- y18n@4.0.3: {}
-
- y18n@5.0.8: {}
-
- yallist@2.1.2: {}
-
- yallist@4.0.0: {}
-
- yaml@1.10.2: {}
-
- yaml@2.4.2: {}
-
- yargs-parser@18.1.3:
- dependencies:
- camelcase: 5.3.1
- decamelize: 1.2.0
-
- yargs-parser@20.2.9: {}
-
- yargs-parser@21.1.1: {}
-
- yargs@15.4.1:
- dependencies:
- cliui: 6.0.0
- decamelize: 1.2.0
- find-up: 4.1.0
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- require-main-filename: 2.0.0
- set-blocking: 2.0.0
- string-width: 4.2.3
- which-module: 2.0.1
- y18n: 4.0.3
- yargs-parser: 18.1.3
-
- yargs@16.2.0:
- dependencies:
- cliui: 7.0.4
- escalade: 3.1.1
- 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
- escalade: 3.1.1
- get-caller-file: 2.0.5
- require-directory: 2.1.1
- string-width: 4.2.3
- y18n: 5.0.8
- yargs-parser: 21.1.1
-
- yocto-queue@0.1.0: {}
-
- yocto-queue@1.2.1: {}
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
deleted file mode 100644
index dee51e9..0000000
--- a/pnpm-workspace.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
-packages:
- - "packages/*"
diff --git a/scripts/commit-lint.ts b/scripts/commit-lint.ts
new file mode 100755
index 0000000..dcf05f5
--- /dev/null
+++ b/scripts/commit-lint.ts
@@ -0,0 +1,87 @@
+#!/usr/bin/env bun
+
+/**
+ * Custom commit message linter
+ * Validates commit messages according to conventional commit format
+ */
+
+const VALID_TYPES = [
+ "chore",
+ "feat",
+ "fix",
+ "docs",
+ "style",
+ "refactor",
+ "test",
+ "release",
+ "revert",
+] as const;
+
+const VALID_SCOPES = [
+ "root",
+ "avl-tree",
+ "linked-list",
+ "queue",
+ "stack",
+ "graph",
+ "components",
+ "scripts",
+] as const;
+
+const MAX_HEADER_LENGTH = 120;
+
+const commitMessageFile = process.argv[2];
+
+if (!commitMessageFile) {
+ console.error("Error: No commit message file provided");
+ process.exit(1);
+}
+
+const commitMessage = await Bun.file(commitMessageFile).text();
+const firstLine = commitMessage.trim().split("\n")[0];
+
+const commitRegex = /^(\w+)(?:\(([^)]+)\))?: (.+)$/;
+const match = firstLine.match(commitRegex);
+
+const errors: string[] = [];
+
+if (!match) {
+ errors.push(
+ "Commit message must follow format: type(scope): message"
+ );
+} else {
+ const [, type, scope, message] = match;
+
+ if (!VALID_TYPES.includes(type as any)) {
+ errors.push(
+ `Invalid type "${type}". Must be one of: ${VALID_TYPES.join(", ")}`
+ );
+ }
+
+ if (scope && !VALID_SCOPES.includes(scope as any)) {
+ errors.push(
+ `Invalid scope "${scope}". Must be one of: ${VALID_SCOPES.join(", ")}`
+ );
+ }
+
+ if (!message || message.trim().length === 0) {
+ errors.push("Commit message cannot be empty");
+ }
+}
+
+if (firstLine.length > MAX_HEADER_LENGTH) {
+ errors.push(
+ `Header exceeds ${MAX_HEADER_LENGTH} characters (currently ${firstLine.length})`
+ );
+}
+
+if (errors.length > 0) {
+ console.error("\n❌ Commit message validation failed:\n");
+ errors.forEach((error) => console.error(` • ${error}`));
+ console.error("\nYour commit message:");
+ console.error(` ${firstLine}\n`);
+ process.exit(1);
+}
+
+console.log("✅ Commit message is valid");
+process.exit(0);
diff --git a/scripts/commit-prompt.ts b/scripts/commit-prompt.ts
new file mode 100755
index 0000000..a6e8f9a
--- /dev/null
+++ b/scripts/commit-prompt.ts
@@ -0,0 +1,100 @@
+#!/usr/bin/env bun
+
+/**
+ * Interactive commit message prompt
+ * Helps create properly formatted conventional commits
+ */
+
+import { stdin, stdout } from "process";
+import { createInterface } from "readline";
+
+const TYPES = [
+ { value: "feat", description: "A new feature" },
+ { value: "fix", description: "A bug fix" },
+ { value: "docs", description: "Documentation only changes" },
+ { value: "style", description: "Code style changes (formatting, etc)" },
+ { value: "refactor", description: "Code refactoring" },
+ { value: "test", description: "Adding or updating tests" },
+ { value: "chore", description: "Maintenance tasks" },
+ { value: "release", description: "Release commits" },
+ { value: "revert", description: "Revert previous commit" },
+];
+
+const SCOPES = [
+ "root",
+ "avl-tree",
+ "linked-list",
+ "queue",
+ "stack",
+ "graph",
+];
+
+const rl = createInterface({
+ input: stdin,
+ output: stdout,
+});
+
+const question = (prompt: string): Promise => {
+ return new Promise((resolve) => {
+ rl.question(prompt, resolve);
+ });
+};
+
+console.log("\nCreate a conventional commit message\n");
+
+console.log("Available types:");
+TYPES.forEach((type, index) => {
+ console.log(` ${index + 1}. ${type.value.padEnd(10)} - ${type.description}`);
+});
+
+const typeAnswer = await question("\nSelect type (1-9): ");
+const typeIndex = parseInt(typeAnswer) - 1;
+
+if (typeIndex < 0 || typeIndex >= TYPES.length) {
+ console.error("Invalid type selection");
+ rl.close();
+ process.exit(1);
+}
+
+const selectedType = TYPES[typeIndex].value;
+
+console.log("\nAvailable scopes:");
+SCOPES.forEach((scope, index) => {
+ console.log(` ${index + 1}. ${scope}`);
+});
+
+const scopeAnswer = await question("\nSelect scope (1-6, or press Enter to skip): ");
+const scopeIndex = scopeAnswer ? parseInt(scopeAnswer) - 1 : -1;
+const selectedScope =
+ scopeIndex >= 0 && scopeIndex < SCOPES.length ? SCOPES[scopeIndex] : "";
+
+const message = await question("\nEnter commit message: ");
+
+if (!message || message.trim().length === 0) {
+ console.error("Commit message cannot be empty");
+ rl.close();
+ process.exit(1);
+}
+
+const commitMessage = selectedScope
+ ? `${selectedType}(${selectedScope}): ${message}`
+ : `${selectedType}: ${message}`;
+
+console.log(`\n✨ Generated commit message:\n ${commitMessage}\n`);
+
+const confirm = await question("Proceed with commit? (y/n): ");
+
+rl.close();
+
+if (confirm.toLowerCase() === "y" || confirm.toLowerCase() === "yes") {
+ const proc = Bun.spawn(["git", "commit", "-m", commitMessage], {
+ stdout: "inherit",
+ stderr: "inherit",
+ });
+
+ const exitCode = await proc.exited;
+ process.exit(exitCode);
+} else {
+ console.log("Commit cancelled");
+ process.exit(0);
+}
diff --git a/scripts/create-datastructure.ts b/scripts/create-datastructure.ts
new file mode 100755
index 0000000..f574e95
--- /dev/null
+++ b/scripts/create-datastructure.ts
@@ -0,0 +1,405 @@
+#!/usr/bin/env bun
+
+/**
+ * Generator script to create a new data structure package and demo app
+ * Usage: bun run create
+ */
+
+import { existsSync, mkdirSync, writeFileSync } from "fs"
+import { join } from "path"
+
+const name = process.argv[2]
+
+if (!name) {
+ console.error("Error: Please provide a data structure name")
+ console.log("Usage: bun run create ")
+ console.log("Example: bun run create binary-tree")
+ process.exit(1)
+}
+
+const kebabCase = name.toLowerCase().replace(/\s+/g, "-")
+const pascalCase = kebabCase
+ .split("-")
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
+ .join("")
+const titleCase = kebabCase
+ .split("-")
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
+ .join(" ")
+
+const packagesDir = join(process.cwd(), "packages", kebabCase)
+const appsDir = join(process.cwd(), "apps", `${kebabCase}-demo`)
+
+// Check if already exists
+if (existsSync(packagesDir)) {
+ console.error(`Error: Package ${kebabCase} already exists`)
+ process.exit(1)
+}
+
+if (existsSync(appsDir)) {
+ console.error(`Error: App ${kebabCase}-demo already exists`)
+ process.exit(1)
+}
+
+console.log(`Creating data structure: ${titleCase}`)
+console.log(` Package: packages/${kebabCase}`)
+console.log(` App: apps/${kebabCase}-demo`)
+
+// Create package structure
+mkdirSync(packagesDir, { recursive: true })
+mkdirSync(join(packagesDir, "src"), { recursive: true })
+mkdirSync(join(packagesDir, "tests"), { recursive: true })
+
+// Package: package.json
+const packageJson = {
+ name: `@datastructures/${kebabCase}`,
+ version: "0.0.1",
+ description: `A minimal functional typed implementation of ${titleCase}`,
+ main: "dist/",
+ unpkg: "dist/index.js",
+ module: "dist/index.js",
+ types: "index.ts",
+ publishConfig: {
+ access: "public",
+ },
+ scripts: {
+ build: "tsc",
+ clean: "rimraf dist",
+ tsc: "tsc --noEmit",
+ test: "bun test",
+ },
+ repository: {
+ type: "git",
+ url: "git@github.com:yowainwright/datastructures.git",
+ },
+ keywords: [kebabCase, "data structures", titleCase.toLowerCase()],
+ author: "Jeff Wainwright (https://jeffry.in)",
+ license: "MIT",
+}
+
+writeFileSync(
+ join(packagesDir, "package.json"),
+ JSON.stringify(packageJson, null, 2)
+)
+
+// Package: tsconfig.json
+const packageTsConfig = {
+ extends: "../../tsconfig.json",
+ compilerOptions: {
+ outDir: "./dist",
+ rootDir: "./src",
+ declaration: true,
+ declarationMap: true,
+ },
+ include: ["src/**/*"],
+ exclude: ["node_modules", "dist", "tests"],
+}
+
+writeFileSync(
+ join(packagesDir, "tsconfig.json"),
+ JSON.stringify(packageTsConfig, null, 2)
+)
+
+// Package: src/index.ts
+const camelCase = kebabCase.replace(/-([a-z])/g, (g) => g[1].toUpperCase())
+const packageIndex = `/**
+ * ${titleCase}
+ * ----
+ * @description ${titleCase} data structure implementation
+ * @summary a typed functional ${titleCase}
+ */
+
+export type ${pascalCase}List = {
+ // Add your methods here
+ print: () => unknown[]
+}
+
+export const ${camelCase} = (list: unknown[] = []): ${pascalCase}List => ({
+ print: (): unknown[] => [...list],
+})
+`
+
+writeFileSync(join(packagesDir, "src", "index.ts"), packageIndex)
+
+// Package: tests/index.test.ts
+const packageTest = `import { describe, expect, test } from "bun:test"
+import { ${camelCase} } from "../src/index"
+
+describe("${titleCase}", () => {
+ test("should create a new ${titleCase}", () => {
+ const ds = ${camelCase}()
+ expect(ds).toBeDefined()
+ })
+
+ test("should print empty list initially", () => {
+ const ds = ${camelCase}()
+ expect(ds.print()).toEqual([])
+ })
+})
+`
+
+writeFileSync(join(packagesDir, "tests", "index.test.ts"), packageTest)
+
+// Create app structure
+mkdirSync(appsDir, { recursive: true })
+mkdirSync(join(appsDir, "src"), { recursive: true })
+mkdirSync(join(appsDir, "tests"), { recursive: true })
+
+// App: package.json
+const appPackageJson = {
+ name: `@datastructures/${kebabCase}-demo`,
+ version: "0.0.1",
+ private: true,
+ type: "module",
+ scripts: {
+ dev: "vite",
+ build: "tsc && vite build",
+ preview: "vite preview",
+ test: "bun test",
+ },
+ dependencies: {
+ [`@datastructures/${kebabCase}`]: "workspace:*",
+ "@datastructures/components": "workspace:*",
+ },
+ devDependencies: {
+ autoprefixer: "^10.4.20",
+ postcss: "^8.4.49",
+ tailwindcss: "^3.4.17",
+ typescript: "^5.7.2",
+ vite: "^6.0.5",
+ },
+}
+
+writeFileSync(
+ join(appsDir, "package.json"),
+ JSON.stringify(appPackageJson, null, 2)
+)
+
+// App: tsconfig.json
+const appTsConfig = {
+ compilerOptions: {
+ target: "ES2020",
+ useDefineForClassFields: true,
+ module: "ESNext",
+ lib: ["ES2020", "DOM", "DOM.Iterable"],
+ skipLibCheck: true,
+ moduleResolution: "bundler",
+ allowImportingTsExtensions: true,
+ resolveJsonModule: true,
+ isolatedModules: true,
+ noEmit: true,
+ strict: true,
+ noUnusedLocals: true,
+ noUnusedParameters: true,
+ noFallthroughCasesInSwitch: true,
+ },
+ include: ["src"],
+}
+
+writeFileSync(join(appsDir, "tsconfig.json"), JSON.stringify(appTsConfig, null, 2))
+
+// App: tailwind.config.js
+const tailwindConfig = `/** @type {import('tailwindcss').Config} */
+export default {
+ content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"],
+ theme: {
+ extend: {},
+ },
+ plugins: [],
+}
+`
+
+writeFileSync(join(appsDir, "tailwind.config.js"), tailwindConfig)
+
+// App: postcss.config.js
+const postcssConfig = `export default {
+ plugins: {
+ tailwindcss: {},
+ autoprefixer: {},
+ },
+}
+`
+
+writeFileSync(join(appsDir, "postcss.config.js"), postcssConfig)
+
+// App: index.html
+const indexHtml = `
+
+
+
+
+ ${titleCase} Demo
+
+
+
+
+
+ ${titleCase}
+
+ Data Structure Visualization
+
+
+
+
+
+
+
+
+
+
+
+
+`
+
+writeFileSync(join(appsDir, "index.html"), indexHtml)
+
+// App: src/style.css
+const styleCss = `@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+@layer utilities {
+ .animate-slide-in {
+ animation: slideIn 0.3s ease-out;
+ }
+}
+
+@keyframes slideIn {
+ from {
+ opacity: 0;
+ transform: translateY(-10px);
+ }
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+}
+`
+
+writeFileSync(join(appsDir, "src", "style.css"), styleCss)
+
+// App: src/main.ts
+const mainTs = `import { ${camelCase} } from "@datastructures/${kebabCase}"
+import { createButton, createInput } from "@datastructures/components"
+import "./style.css"
+
+const controlsEl = document.getElementById("controls")!
+const visualizationEl = document.getElementById("visualization")!
+const logEl = document.getElementById("log")!
+
+let ds = ${camelCase}()
+
+const addLog = (message: string) => {
+ const entry = document.createElement("div")
+ entry.className =
+ "p-2 font-mono text-sm text-slate-400 border-l-2 border-slate-600 pl-4 mb-2 animate-slide-in"
+ const timestamp = new Date().toLocaleTimeString()
+ entry.textContent = \`[\${timestamp}] \${message}\`
+ logEl.insertBefore(entry, logEl.firstChild)
+
+ if (logEl.children.length > 10) {
+ logEl.removeChild(logEl.lastChild!)
+ }
+}
+
+const updateVisualization = () => {
+ const items = ds.print()
+
+ if (items.length === 0) {
+ visualizationEl.innerHTML = \`
+
+ ${titleCase} is empty
+
+ \`
+ } else {
+ visualizationEl.innerHTML = items
+ .map(
+ (item, index) => \`
+
+ \${item}
+ \${index}
+
+ \`
+ )
+ .join("")
+ }
+}
+
+// Example controls - customize these for your data structure
+const input = createInput({
+ placeholder: "Enter value...",
+ onEnter: (value) => {
+ if (!value.trim()) return
+ addLog(\`Added: \${value}\`)
+ // TODO: Implement add functionality
+ // ds = ds.add(value)
+ updateVisualization()
+ },
+})
+
+const addBtn = createButton({
+ text: "Add",
+ onClick: () => {
+ const value = (input as HTMLInputElement).value.trim()
+ if (!value) return
+ addLog(\`Added: \${value}\`)
+ // TODO: Implement add functionality
+ // ds = ds.add(value)
+ updateVisualization()
+ ;(input as HTMLInputElement).value = ""
+ },
+})
+
+const clearBtn = createButton({
+ text: "Clear",
+ variant: "secondary",
+ onClick: () => {
+ ds = ${camelCase}()
+ addLog("Cleared ${titleCase}")
+ updateVisualization()
+ },
+})
+
+const inputGroup = document.createElement("div")
+inputGroup.className = "flex gap-2 flex-1 min-w-[250px]"
+inputGroup.appendChild(input)
+inputGroup.appendChild(addBtn)
+
+controlsEl.appendChild(inputGroup)
+controlsEl.appendChild(clearBtn)
+
+updateVisualization()
+addLog("${titleCase} initialized")
+`
+
+writeFileSync(join(appsDir, "src", "main.ts"), mainTs)
+
+// App: tests/demo.test.ts
+const appTest = `import { describe, expect, test } from "bun:test"
+
+describe("${titleCase} Demo", () => {
+ test("demo app exists", () => {
+ expect(true).toBe(true)
+ })
+})
+`
+
+writeFileSync(join(appsDir, "tests", "demo.test.ts"), appTest)
+
+console.log("\nSuccessfully created:")
+console.log(` packages/${kebabCase}`)
+console.log(` apps/${kebabCase}-demo`)
+console.log("\nNext steps:")
+console.log(" 1. Run: bun install")
+console.log(` 2. Implement: packages/${kebabCase}/src/index.ts`)
+console.log(` 3. Visualize: apps/${kebabCase}-demo/src/main.ts`)
+console.log(` 4. Start dev: cd apps/${kebabCase}-demo && bun run dev`)
diff --git a/scripts/generateNewDataStructure.ts b/scripts/generateNewDataStructure.ts
new file mode 100755
index 0000000..1fa326a
--- /dev/null
+++ b/scripts/generateNewDataStructure.ts
@@ -0,0 +1,184 @@
+#!/usr/bin/env bun
+
+import Anthropic from "@anthropic-ai/sdk"
+import { readFile, writeFile } from "fs/promises"
+import { join } from "path"
+
+interface DataStructureChallenge {
+ name: string
+ title: string
+ description: string
+ difficulty: "easy" | "medium" | "hard"
+ operations: string[]
+ timeComplexity: Record
+ spaceComplexity: string
+ hints: string[]
+ useCases: string[]
+ typescript: {
+ interface: string
+ factoryFunction: string
+ }
+}
+
+const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY
+
+if (!ANTHROPIC_API_KEY) {
+ console.error("Error: ANTHROPIC_API_KEY environment variable is required")
+ process.exit(1)
+}
+
+const client = new Anthropic({ apiKey: ANTHROPIC_API_KEY })
+
+async function loadExistingChallenges(): Promise {
+ try {
+ const challengesFile = await readFile(
+ join(process.cwd(), "challenges.json"),
+ "utf-8"
+ )
+ const data = JSON.parse(challengesFile)
+ return data.challenges.map((c: any) => c.name)
+ } catch {
+ return []
+ }
+}
+
+async function generateChallenge(): Promise {
+ const existingChallenges = await loadExistingChallenges()
+
+ console.log("Asking Claude to generate a new data structure challenge...\n")
+
+ const message = await client.messages.create({
+ model: "claude-sonnet-4-20250514",
+ max_tokens: 4000,
+ messages: [
+ {
+ role: "user",
+ content: `Generate a new data structure challenge for a biweekly coding practice project.
+
+Existing data structures: ${existingChallenges.join(", ")}
+
+Requirements:
+- Choose an interesting data structure not in the existing list
+- Vary difficulty (easy/medium/hard) to keep it engaging
+- Include clear description, operations, hints, and complexity analysis
+- Provide TypeScript type definitions and factory function pattern
+- Focus on immutable, functional implementations
+- Make it educational and fun!
+
+Examples of data structures to consider:
+- Hash Table / Hash Map
+- Binary Heap (Min/Max)
+- Trie (Prefix Tree)
+- Disjoint Set (Union-Find)
+- Binary Search Tree
+- Red-Black Tree
+- B-Tree
+- Skip List
+- Deque (Double-ended Queue)
+- Priority Queue
+- Bloom Filter
+- LRU Cache
+- Segment Tree
+- Fenwick Tree (Binary Indexed Tree)
+
+Respond with a JSON object matching this structure:
+{
+ "name": "kebab-case (e.g., 'hash-table', 'binary-heap')",
+ "title": "Human readable title",
+ "description": "Clear description of the data structure",
+ "difficulty": "easy|medium|hard",
+ "operations": ["operation1", "operation2", "operation3"],
+ "timeComplexity": {
+ "operation1": "O(1)",
+ "operation2": "O(log n)",
+ "operation3": "O(n)"
+ },
+ "spaceComplexity": "O(n)",
+ "hints": ["hint 1", "hint 2", "hint 3"],
+ "useCases": ["use case 1", "use case 2"],
+ "typescript": {
+ "interface": "export type DataStructureName = {\\n operation1: (param: Type) => DataStructureName\\n operation2: () => ReturnType\\n}",
+ "factoryFunction": "export const dataStructureName = (initialState: Type = defaultValue): DataStructureName => ({\\n operation1(param: Type): DataStructureName {\\n // TODO: implement\\n return dataStructureName(initialState)\\n },\\n operation2(): ReturnType {\\n // TODO: implement\\n return result\\n }\\n})"
+ }
+}
+
+Only respond with the JSON object, no other text.`,
+ },
+ ],
+ })
+
+ const content = message.content[0]
+ if (content.type !== "text") {
+ throw new Error("Unexpected response type from Claude")
+ }
+
+ const jsonMatch = content.text.match(/\{[\s\S]*\}/)
+ if (!jsonMatch) {
+ throw new Error("Could not parse JSON from Claude response")
+ }
+
+ return JSON.parse(jsonMatch[0])
+}
+
+async function updateChallengesJson(challenge: DataStructureChallenge) {
+ const challengesPath = join(process.cwd(), "challenges.json")
+ let challengesData
+
+ try {
+ const existing = await readFile(challengesPath, "utf-8")
+ challengesData = JSON.parse(existing)
+ } catch {
+ challengesData = { challenges: [] }
+ }
+
+ challengesData.challenges.push({
+ name: challenge.name,
+ title: challenge.title,
+ description: challenge.description,
+ difficulty: challenge.difficulty,
+ completed: false,
+ })
+
+ await writeFile(challengesPath, JSON.stringify(challengesData, null, 2))
+}
+
+async function main() {
+ try {
+ const challenge = await generateChallenge()
+
+ console.log("\nGenerated Challenge:")
+ console.log(`Title: ${challenge.title}`)
+ console.log(`Name: ${challenge.name}`)
+ console.log(`Difficulty: ${challenge.difficulty}`)
+ console.log(`\nOperations: ${challenge.operations.join(", ")}`)
+
+ console.log("\nCreating data structure with generator script...")
+ console.log(
+ `Run: bun run create ${challenge.name} to scaffold the package\n`
+ )
+
+ await updateChallengesJson(challenge)
+
+ const detailsPath = join(
+ process.cwd(),
+ `challenge-${challenge.name}.json`
+ )
+ await writeFile(detailsPath, JSON.stringify(challenge, null, 2))
+
+ console.log(
+ `Challenge details saved to: challenge-${challenge.name}.json\n`
+ )
+ console.log("Next steps:")
+ console.log(`1. Run: bun run create ${challenge.name}`)
+ console.log(
+ `2. Implement the data structure using the details in challenge-${challenge.name}.json`
+ )
+ console.log("3. Create a visual demo in the app")
+ console.log("\nGood luck!\n")
+ } catch (error) {
+ console.error("Error generating data structure:", error)
+ process.exit(1)
+ }
+}
+
+main()
diff --git a/scripts/package.json b/scripts/package.json
new file mode 100644
index 0000000..0a4b339
--- /dev/null
+++ b/scripts/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "@datastructures/scripts",
+ "version": "0.0.1",
+ "description": "Utility scripts for the datastructures monorepo",
+ "type": "module",
+ "private": true,
+ "bin": {
+ "commit-lint": "./commit-lint.ts",
+ "commit-prompt": "./commit-prompt.ts",
+ "create-datastructure": "./create-datastructure.ts",
+ "generate-challenge": "./generateNewDataStructure.ts",
+ "update-readme": "./updateReadme.ts"
+ },
+ "scripts": {
+ "commit-lint": "bun commit-lint.ts",
+ "commit-prompt": "bun commit-prompt.ts",
+ "create": "bun create-datastructure.ts",
+ "generate-challenge": "bun generateNewDataStructure.ts",
+ "update-readme": "bun updateReadme.ts"
+ },
+ "dependencies": {
+ "@anthropic-ai/sdk": "workspace:*"
+ },
+ "devDependencies": {
+ "@types/bun": "workspace:*",
+ "typescript": "workspace:*"
+ },
+ "author": "Jeff Wainwright (https://jeffry.in)",
+ "license": "MIT"
+}
diff --git a/scripts/setup-hooks.sh b/scripts/setup-hooks.sh
new file mode 100755
index 0000000..babd505
--- /dev/null
+++ b/scripts/setup-hooks.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+# Setup git hooks for datastructures project
+# This script creates git hooks if they don't already exist
+
+set -e
+
+HOOKS_DIR=".git/hooks"
+PRE_COMMIT="$HOOKS_DIR/pre-commit"
+COMMIT_MSG="$HOOKS_DIR/commit-msg"
+
+# Check if we're in a git repository
+if [ ! -d ".git" ]; then
+ echo "Error: Not in a git repository"
+ exit 1
+fi
+
+echo "Setting up git hooks..."
+
+# Create hooks directory if it doesn't exist
+mkdir -p "$HOOKS_DIR"
+
+# Setup pre-commit hook
+if [ -f "$PRE_COMMIT" ]; then
+ echo "pre-commit hook already exists, skipping..."
+else
+ cat > "$PRE_COMMIT" << 'EOF'
+#!/bin/sh
+bun run format
+bun run tsc
+EOF
+ chmod +x "$PRE_COMMIT"
+ echo "✓ Created pre-commit hook"
+fi
+
+# Setup commit-msg hook
+if [ -f "$COMMIT_MSG" ]; then
+ echo "commit-msg hook already exists, skipping..."
+else
+ cat > "$COMMIT_MSG" << 'EOF'
+#!/bin/sh
+bun run scripts/commit-lint.ts "$1"
+EOF
+ chmod +x "$COMMIT_MSG"
+ echo "✓ Created commit-msg hook"
+fi
+
+echo "Git hooks setup complete!"
diff --git a/scripts/updateReadme.ts b/scripts/updateReadme.ts
new file mode 100644
index 0000000..6a53654
--- /dev/null
+++ b/scripts/updateReadme.ts
@@ -0,0 +1,178 @@
+#!/usr/bin/env bun
+
+import { readdir, readFile, writeFile } from "node:fs/promises"
+import { join, basename } from "node:path"
+import { exec } from "node:child_process"
+import { promisify } from "node:util"
+
+const execAsync = promisify(exec)
+
+const STRUCTURES_DIR = join(import.meta.dir, "../structures")
+const README_PATH = join(import.meta.dir, "../README.md")
+
+interface StructureStatus {
+ name: string
+ typescript: boolean
+ go: boolean
+ python: boolean
+ tsTests: string
+ goTests: string
+ pyTests: string
+ bigO: string
+}
+
+async function checkFileExists(path: string): Promise {
+ try {
+ await Bun.file(path).text()
+ return true
+ } catch {
+ return false
+ }
+}
+
+async function runTests(structurePath: string, lang: "ts" | "go" | "python"): Promise {
+ try {
+ let command = ""
+ switch (lang) {
+ case "ts":
+ command = "bun test --bail"
+ break
+ case "go":
+ command = "go test -v"
+ break
+ case "python":
+ command = "python -m pytest -v"
+ break
+ }
+
+ const { stdout, stderr } = await execAsync(command, {
+ cwd: structurePath,
+ timeout: 10000
+ })
+
+ if (lang === "ts") {
+ const match = stdout.match(/(\d+) pass/)
+ return match ? `✅ ${match[1]}` : "❌"
+ } else if (lang === "go") {
+ const match = stdout.match(/PASS/)
+ const testCount = (stdout.match(/--- PASS:/g) || []).length
+ return match ? `✅ ${testCount}` : "❌"
+ } else {
+ const match = stdout.match(/(\d+) passed/)
+ return match ? `✅ ${match[1]}` : "❌"
+ }
+ } catch (error) {
+ return "❌"
+ }
+}
+
+async function extractBigO(structurePath: string): Promise {
+ const readmePath = join(structurePath, "README.md")
+ const hasReadme = await checkFileExists(readmePath)
+
+ if (!hasReadme) return "N/A"
+
+ const content = await Bun.file(readmePath).text()
+ const bigOMatch = content.match(/Big\s*O:?\s*([^\n]+)/i)
+ return bigOMatch ? bigOMatch[1].trim() : "N/A"
+}
+
+async function getStructureStatus(): Promise {
+ const entries = await readdir(STRUCTURES_DIR, { withFileTypes: true })
+ const structures: StructureStatus[] = []
+
+ for (const entry of entries) {
+ if (!entry.isDirectory()) continue
+
+ const structurePath = join(STRUCTURES_DIR, entry.name)
+ const name = entry.name
+
+ const hasTS = await checkFileExists(join(structurePath, "index.ts"))
+ const hasGo = await checkFileExists(join(structurePath, "main.go"))
+ const hasPy = await checkFileExists(join(structurePath, "main.py"))
+
+ let tsTests = "-"
+ let goTests = "-"
+ let pyTests = "-"
+
+ if (hasTS) tsTests = await runTests(structurePath, "ts")
+ if (hasGo) goTests = await runTests(structurePath, "go")
+ if (hasPy) pyTests = await runTests(structurePath, "python")
+
+ const bigO = await extractBigO(structurePath)
+
+ structures.push({
+ name,
+ typescript: hasTS,
+ go: hasGo,
+ python: hasPy,
+ tsTests,
+ goTests,
+ pyTests,
+ bigO,
+ })
+ }
+
+ return structures.sort((a, b) => a.name.localeCompare(b.name))
+}
+
+function generateMarkdownTable(structures: StructureStatus[]): string {
+ const header = `
+| Data Structure | TypeScript | Go | Python | TS Tests | Go Tests | Py Tests | Big O |
+|----------------|------------|----|---------| ---------|----------|----------|-------|`
+
+ const rows = structures.map(s => {
+ const ts = s.typescript ? "✅" : "-"
+ const go = s.go ? "✅" : "-"
+ const py = s.python ? "✅" : "-"
+
+ return `| ${s.name} | ${ts} | ${go} | ${py} | ${s.tsTests} | ${s.goTests} | ${s.pyTests} | ${s.bigO} |`
+ })
+
+ return [header, ...rows].join("\n")
+}
+
+async function updateReadme() {
+ console.log("🔍 Scanning structures directory...")
+ const structures = await getStructureStatus()
+
+ console.log(`📊 Found ${structures.length} data structures`)
+
+ const table = generateMarkdownTable(structures)
+
+ const readme = await Bun.file(README_PATH).text()
+
+ const START_MARKER = ""
+ const END_MARKER = ""
+
+ const startIndex = readme.indexOf(START_MARKER)
+ const endIndex = readme.indexOf(END_MARKER)
+
+ if (startIndex === -1 || endIndex === -1) {
+ console.error("❌ Could not find status table markers in README.md")
+ console.log("Please add the following markers to your README.md:")
+ console.log(START_MARKER)
+ console.log(END_MARKER)
+ process.exit(1)
+ }
+
+ const before = readme.substring(0, startIndex + START_MARKER.length)
+ const after = readme.substring(endIndex)
+
+ const newReadme = `${before}\n${table}\n${after}`
+
+ await writeFile(README_PATH, newReadme)
+
+ console.log("✅ README.md updated successfully!")
+ console.log("\nStatus Summary:")
+ structures.forEach(s => {
+ const langs = [
+ s.typescript && "TS",
+ s.go && "Go",
+ s.python && "Py"
+ ].filter(Boolean).join(", ")
+ console.log(` ${s.name}: ${langs || "none"}`)
+ })
+}
+
+updateReadme().catch(console.error)
diff --git a/packages/avl-tree/LICENSE b/structures/avl-tree/LICENSE
similarity index 100%
rename from packages/avl-tree/LICENSE
rename to structures/avl-tree/LICENSE
diff --git a/packages/avl-tree/README.md b/structures/avl-tree/README.md
similarity index 100%
rename from packages/avl-tree/README.md
rename to structures/avl-tree/README.md
diff --git a/packages/avl-tree/package.json b/structures/avl-tree/package.json
similarity index 88%
rename from packages/avl-tree/package.json
rename to structures/avl-tree/package.json
index 92bbb4c..d6e95f4 100644
--- a/packages/avl-tree/package.json
+++ b/structures/avl-tree/package.json
@@ -14,9 +14,8 @@
"LICENSE"
],
"scripts": {
- "build": "tsc",
- "clean": "rimraf dist",
- "tsc": "tsc --noEmit"
+ "build": "tsc --noEmit",
+ "test": "bun test"
},
"repository": {
"type": "git",
diff --git a/packages/avl-tree/src/index.ts b/structures/avl-tree/src/index.ts
similarity index 100%
rename from packages/avl-tree/src/index.ts
rename to structures/avl-tree/src/index.ts
diff --git a/packages/avl-tree/src/node.ts b/structures/avl-tree/src/node.ts
similarity index 100%
rename from packages/avl-tree/src/node.ts
rename to structures/avl-tree/src/node.ts
diff --git a/packages/avl-tree/src/tree.ts b/structures/avl-tree/src/tree.ts
similarity index 100%
rename from packages/avl-tree/src/tree.ts
rename to structures/avl-tree/src/tree.ts
diff --git a/packages/avl-tree/tests/balance.ts b/structures/avl-tree/tests/balance.ts
similarity index 99%
rename from packages/avl-tree/tests/balance.ts
rename to structures/avl-tree/tests/balance.ts
index 607c8f0..dd15612 100644
--- a/packages/avl-tree/tests/balance.ts
+++ b/structures/avl-tree/tests/balance.ts
@@ -1,4 +1,4 @@
-import { test, expect } from 'vitest'
+import { test, expect } from "bun:test"
import { AvlTree } from '../src'
import { NodeValue } from '../src/node'
diff --git a/packages/avl-tree/tests/index.ts b/structures/avl-tree/tests/index.ts
similarity index 99%
rename from packages/avl-tree/tests/index.ts
rename to structures/avl-tree/tests/index.ts
index 68ec9da..5ce8735 100644
--- a/packages/avl-tree/tests/index.ts
+++ b/structures/avl-tree/tests/index.ts
@@ -1,4 +1,4 @@
-import { test, expect } from 'vitest'
+import { test, expect } from "bun:test"
import { AvlTree, AvlTreeNode } from '../src'
import { NodeValue } from '../src/node'
diff --git a/packages/avl-tree/tsconfig.json b/structures/avl-tree/tsconfig.json
similarity index 100%
rename from packages/avl-tree/tsconfig.json
rename to structures/avl-tree/tsconfig.json
diff --git a/structures/components/package.json b/structures/components/package.json
new file mode 100644
index 0000000..5430b1e
--- /dev/null
+++ b/structures/components/package.json
@@ -0,0 +1,26 @@
+{
+ "name": "@datastructures/components",
+ "version": "0.0.1",
+ "description": "Vanilla TypeScript UI components",
+ "type": "module",
+ "main": "./src/index.ts",
+ "module": "./src/index.ts",
+ "types": "./src/index.ts",
+ "exports": {
+ ".": {
+ "import": "./src/index.ts",
+ "types": "./src/index.ts"
+ }
+ },
+ "scripts": {
+ "build": "tsc --noEmit",
+ "test": "bun test"
+ },
+ "keywords": [
+ "components",
+ "vanilla",
+ "typescript"
+ ],
+ "author": "Jeff Wainwright (https://jeffry.in)",
+ "license": "MIT"
+}
diff --git a/structures/components/src/button.ts b/structures/components/src/button.ts
new file mode 100644
index 0000000..5428b58
--- /dev/null
+++ b/structures/components/src/button.ts
@@ -0,0 +1,28 @@
+export type ButtonVariant = "primary" | "secondary" | "danger"
+
+export interface ButtonOptions {
+ text: string
+ onClick: () => void
+ variant?: ButtonVariant
+ disabled?: boolean
+}
+
+const variantClasses: Record = {
+ primary:
+ "bg-indigo-600 text-white hover:bg-indigo-700 disabled:bg-indigo-400",
+ secondary: "bg-slate-600 text-white hover:bg-slate-500 disabled:bg-slate-400",
+ danger: "bg-red-600 text-white hover:bg-red-700 disabled:bg-red-400",
+}
+
+export const createButton = (options: ButtonOptions): HTMLButtonElement => {
+ const button = document.createElement("button")
+ const variant = options.variant || "primary"
+
+ button.textContent = options.text
+ button.disabled = options.disabled || false
+ button.className = `px-6 py-3 rounded-lg font-semibold transition-all hover:-translate-y-0.5 disabled:cursor-not-allowed disabled:opacity-50 ${variantClasses[variant]}`
+
+ button.addEventListener("click", options.onClick)
+
+ return button
+}
diff --git a/structures/components/src/index.ts b/structures/components/src/index.ts
new file mode 100644
index 0000000..827ed72
--- /dev/null
+++ b/structures/components/src/index.ts
@@ -0,0 +1,7 @@
+/**
+ * @datastructures/components
+ * Vanilla TypeScript UI components for data structure visualizations
+ */
+
+export * from "./button"
+export * from "./input"
diff --git a/structures/components/src/input.ts b/structures/components/src/input.ts
new file mode 100644
index 0000000..ddb45b6
--- /dev/null
+++ b/structures/components/src/input.ts
@@ -0,0 +1,35 @@
+export interface InputOptions {
+ placeholder?: string
+ value?: string
+ onEnter?: (value: string) => void
+ onChange?: (value: string) => void
+}
+
+export const createInput = (options: InputOptions = {}): HTMLInputElement => {
+ const input = document.createElement("input")
+
+ input.type = "text"
+ input.placeholder = options.placeholder || ""
+ input.value = options.value || ""
+ input.autocomplete = "off"
+ input.className =
+ "flex-1 px-4 py-3 border-2 border-slate-600 bg-slate-900 text-slate-100 rounded-lg text-base outline-none focus:border-indigo-500 transition-colors"
+
+ if (options.onChange) {
+ input.addEventListener("input", (e) => {
+ const target = e.target as HTMLInputElement
+ options.onChange?.(target.value)
+ })
+ }
+
+ if (options.onEnter) {
+ input.addEventListener("keypress", (e) => {
+ if (e.key === "Enter") {
+ const target = e.target as HTMLInputElement
+ options.onEnter?.(target.value)
+ }
+ })
+ }
+
+ return input
+}
diff --git a/structures/components/tsconfig.json b/structures/components/tsconfig.json
new file mode 100644
index 0000000..81545fb
--- /dev/null
+++ b/structures/components/tsconfig.json
@@ -0,0 +1,14 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "lib": ["esnext", "dom"],
+ "outDir": "./dist",
+ "rootDir": "./src",
+ "declaration": true,
+ "declarationMap": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler"
+ },
+ "include": ["src/**/*"],
+ "exclude": ["node_modules", "dist", "tests"]
+}
diff --git a/packages/graph/LICENSE b/structures/graph/LICENSE
similarity index 100%
rename from packages/graph/LICENSE
rename to structures/graph/LICENSE
diff --git a/packages/graph/README.md b/structures/graph/README.md
similarity index 100%
rename from packages/graph/README.md
rename to structures/graph/README.md
diff --git a/packages/graph/package.json b/structures/graph/package.json
similarity index 89%
rename from packages/graph/package.json
rename to structures/graph/package.json
index c4fc870..0d5a947 100644
--- a/packages/graph/package.json
+++ b/structures/graph/package.json
@@ -11,9 +11,8 @@
"LICENSE"
],
"scripts": {
- "build": "tsc",
- "clean": "rimraf dist",
- "tsc": "tsc --noEmit"
+ "build": "tsc --noEmit",
+ "test": "bun test"
},
"publishConfig": {
"access": "public"
diff --git a/packages/graph/src/index.ts b/structures/graph/src/index.ts
similarity index 100%
rename from packages/graph/src/index.ts
rename to structures/graph/src/index.ts
diff --git a/packages/graph/tests/index.test.ts b/structures/graph/tests/index.test.ts
similarity index 92%
rename from packages/graph/tests/index.test.ts
rename to structures/graph/tests/index.test.ts
index d48438f..67754d9 100644
--- a/packages/graph/tests/index.test.ts
+++ b/structures/graph/tests/index.test.ts
@@ -1,5 +1,5 @@
-import { describe, test, expect } from 'vitest'
-import { vertex, graph } from '../src/index'
+import { describe, test, expect } from "bun:test"
+import { vertex, graph } from "../src/index"
describe('graph', () => {
describe('vertex', () => {
diff --git a/packages/graph/tsconfig.json b/structures/graph/tsconfig.json
similarity index 100%
rename from packages/graph/tsconfig.json
rename to structures/graph/tsconfig.json
diff --git a/packages/linked-list/LICENSE b/structures/linked-list/LICENSE
similarity index 100%
rename from packages/linked-list/LICENSE
rename to structures/linked-list/LICENSE
diff --git a/packages/linked-list/README.md b/structures/linked-list/README.md
similarity index 100%
rename from packages/linked-list/README.md
rename to structures/linked-list/README.md
diff --git a/structures/linked-list/index.test.ts b/structures/linked-list/index.test.ts
new file mode 100644
index 0000000..a0cfc98
--- /dev/null
+++ b/structures/linked-list/index.test.ts
@@ -0,0 +1,329 @@
+import { describe, test, expect } from "bun:test"
+import {
+ constructArray,
+ create,
+ item,
+ list,
+ toArray,
+ prepend,
+ append,
+ insertAt,
+ removeFirst,
+ removeLast,
+ removeByName,
+ removeAt,
+ find,
+ findIndex,
+ getAt,
+ length,
+ isEmpty,
+ clear,
+ reverse
+} from "./index"
+
+describe('LinkedList', () => {
+ describe('Basic Operations', () => {
+ test('item creation', () => {
+ const result = item('foo', { foo: 'bar' })
+ expect(typeof result).toBe('object')
+ expect(result?.name).toBe('foo')
+ expect(result?.data).toEqual({ foo: 'bar' })
+ })
+
+ test('create list from array', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const result = create([a, b])
+
+ const expected = {
+ item: { name: 'foo', data: { foo: 'bar' } },
+ nextItem: {
+ item: { name: 'bar', data: { biz: 'baz' } },
+ nextItem: null,
+ },
+ }
+ expect(result).toEqual(expected)
+ })
+
+ test('constructArray', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const arraylist = constructArray(testList)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ expect(arraylist).toEqual(expected)
+ })
+
+ test('toArray', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const arraylist = toArray(testList)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ expect(arraylist).toEqual(expected)
+ })
+ })
+
+ describe('List Factory', () => {
+ test('list.create', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const result = list().create([a, b])
+
+ const expected = {
+ item: { name: 'foo', data: { foo: 'bar' } },
+ nextItem: {
+ item: { name: 'bar', data: { biz: 'baz' } },
+ nextItem: null,
+ },
+ }
+ expect(result).toEqual(expected)
+ })
+
+ test('list.toArray', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testlist = list()
+ const linkedlist = testlist.create([a, b])
+ const arraylist = testlist.toArray(linkedlist)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ expect(arraylist).toEqual(expected)
+ })
+ })
+
+ describe('Advanced Operations', () => {
+ test('prepend', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([b])
+ const result = prepend(initialList, a)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('append', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([a])
+ const result = append(initialList, b)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('insertAt', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('middle', { middle: 'value' })
+ const initialList = create([a, b])
+ const result = insertAt(initialList, 1, c)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { middle: 'value' }, name: 'middle' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('removeFirst', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([a, b])
+ const result = removeFirst(initialList)
+
+ const expected = [{ data: { biz: 'baz' }, name: 'bar' }]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('removeLast', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([a, b])
+ const result = removeLast(initialList)
+
+ const expected = [{ data: { foo: 'bar' }, name: 'foo' }]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('removeByName', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const initialList = create([a, b, c])
+ const result = removeByName(initialList, 'bar')
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { test: 'data' }, name: 'baz' },
+ ]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('removeAt', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const initialList = create([a, b, c])
+ const result = removeAt(initialList, 1)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { test: 'data' }, name: 'baz' },
+ ]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('find', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const result = find(testList, 'bar')
+
+ expect(result).toEqual({ data: { biz: 'baz' }, name: 'bar' })
+ })
+
+ test('find non-existent item', () => {
+ const a = item('foo', { foo: 'bar' })
+ const testList = create([a])
+ const result = find(testList, 'nonexistent')
+
+ expect(result).toBe(null)
+ })
+
+ test('findIndex', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const result = findIndex(testList, 'bar')
+
+ expect(result).toBe(1)
+ })
+
+ test('findIndex non-existent item', () => {
+ const a = item('foo', { foo: 'bar' })
+ const testList = create([a])
+ const result = findIndex(testList, 'nonexistent')
+
+ expect(result).toBe(-1)
+ })
+
+ test('getAt', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const result = getAt(testList, 1)
+
+ expect(result).toEqual({ data: { biz: 'baz' }, name: 'bar' })
+ })
+
+ test('getAt out of bounds', () => {
+ const a = item('foo', { foo: 'bar' })
+ const testList = create([a])
+ const result = getAt(testList, 5)
+
+ expect(result).toBe(null)
+ })
+
+ test('length', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const testList = create([a, b, c])
+ const result = length(testList)
+
+ expect(result).toBe(3)
+ })
+
+ test('length of empty list', () => {
+ const result = length(null)
+ expect(result).toBe(0)
+ })
+
+ test('isEmpty', () => {
+ const emptyList = null
+ const nonEmptyList = create([item('foo')])
+
+ expect(isEmpty(emptyList)).toBe(true)
+ expect(isEmpty(nonEmptyList)).toBe(false)
+ })
+
+ test('clear', () => {
+ const result = clear()
+ expect(result).toBe(null)
+ expect(isEmpty(result)).toBe(true)
+ })
+
+ test('reverse', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const testList = create([a, b, c])
+ const result = reverse(testList)
+
+ const expected = [
+ { data: { test: 'data' }, name: 'baz' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ { data: { foo: 'bar' }, name: 'foo' },
+ ]
+ expect(toArray(result)).toEqual(expected)
+ })
+
+ test('reverse empty list', () => {
+ const result = reverse(null)
+ expect(result).toBe(null)
+ })
+ })
+
+ describe('Factory Methods', () => {
+ test('factory methods work correctly', () => {
+ const factory = list()
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+
+ let testList = factory.create([a])
+ expect(factory.length(testList)).toBe(1)
+ expect(factory.isEmpty(testList)).toBe(false)
+
+ testList = factory.append(testList, b)
+ expect(factory.length(testList)).toBe(2)
+
+ const foundItem = factory.find(testList, 'bar')
+ expect(foundItem).toEqual({ data: { biz: 'baz' }, name: 'bar' })
+
+ const index = factory.findIndex(testList, 'bar')
+ expect(index).toBe(1)
+
+ const itemAtIndex = factory.getAt(testList, 0)
+ expect(itemAtIndex).toEqual({ data: { foo: 'bar' }, name: 'foo' })
+
+ testList = factory.removeByName(testList, 'foo')
+ expect(factory.length(testList)).toBe(1)
+
+ const reversed = factory.reverse(testList)
+ expect(factory.toArray(reversed)).toEqual([{ data: { biz: 'baz' }, name: 'bar' }])
+
+ const cleared = factory.clear()
+ expect(factory.isEmpty(cleared)).toBe(true)
+ })
+ })
+})
diff --git a/structures/linked-list/index.ts b/structures/linked-list/index.ts
new file mode 100644
index 0000000..6c99e25
--- /dev/null
+++ b/structures/linked-list/index.ts
@@ -0,0 +1,179 @@
+export type NodeObject = {
+ name: string
+ data?: unknown
+} | null
+
+export type List = {
+ item: NodeObject
+ nextItem: List
+} | null
+
+export type ListFactory = {
+ create: (items: NodeObject[]) => List
+ toArray: (list: List) => NodeObject[]
+ prepend: (list: List, item: NodeObject) => List
+ append: (list: List, item: NodeObject) => List
+ insertAt: (list: List, index: number, item: NodeObject) => List
+ removeFirst: (list: List) => List
+ removeLast: (list: List) => List
+ removeByName: (list: List, name: string) => List
+ removeAt: (list: List, index: number) => List
+ find: (list: List, name: string) => NodeObject | null
+ findIndex: (list: List, name: string) => number
+ getAt: (list: List, index: number) => NodeObject | null
+ length: (list: List) => number
+ isEmpty: (list: List) => boolean
+ clear: () => List
+ reverse: (list: List) => List
+}
+
+export const item = (
+ name: string,
+ data: unknown = null
+): NodeObject => ({
+ name,
+ data,
+})
+
+export const link = (
+ nextItem: List,
+ item: NodeObject
+): List => {
+ if (!item) return nextItem
+ return {
+ item: { name: item.name, data: item.data },
+ nextItem,
+ }
+}
+
+export const create = (
+ items: NodeObject[]
+): List => items.reduceRight(link, null)
+
+export const constructArray = (list: List): NodeObject[] => {
+ if (!list || !list.item) return []
+ return [list.item, ...constructArray(list.nextItem)]
+}
+
+export const toArray = (
+ list: List
+): NodeObject[] => constructArray(list)
+
+export const prepend = (list: List, item: NodeObject): List => {
+ if (!item) return list
+ return {
+ item,
+ nextItem: list,
+ }
+}
+
+export const append = (list: List, item: NodeObject): List => {
+ if (!item) return list
+ if (!list) return { item, nextItem: null }
+
+ return {
+ item: list.item,
+ nextItem: append(list.nextItem, item),
+ }
+}
+
+export const insertAt = (list: List, index: number, item: NodeObject): List => {
+ if (!item || index < 0) return list
+ if (index === 0) return prepend(list, item)
+ if (!list) return index === 0 ? { item, nextItem: null } : list
+
+ return {
+ item: list.item,
+ nextItem: insertAt(list.nextItem, index - 1, item),
+ }
+}
+
+export const removeFirst = (list: List): List => {
+ if (!list) return null
+ return list.nextItem
+}
+
+export const removeLast = (list: List): List => {
+ if (!list || !list.nextItem) return null
+ return {
+ item: list.item,
+ nextItem: removeLast(list.nextItem),
+ }
+}
+
+export const removeByName = (list: List, name: string): List => {
+ if (!list) return null
+ if (list.item && list.item.name === name) return list.nextItem
+
+ return {
+ item: list.item,
+ nextItem: removeByName(list.nextItem, name),
+ }
+}
+
+export const removeAt = (list: List, index: number): List => {
+ if (!list || index < 0) return list
+ if (index === 0) return list.nextItem
+
+ return {
+ item: list.item,
+ nextItem: removeAt(list.nextItem, index - 1),
+ }
+}
+
+export const find = (list: List, name: string): NodeObject | null => {
+ if (!list) return null
+ if (list.item && list.item.name === name) return list.item
+ return find(list.nextItem, name)
+}
+
+export const findIndex = (list: List, name: string): number => {
+ const findIndexHelper = (list: List, name: string, index: number): number => {
+ if (!list) return -1
+ if (list.item && list.item.name === name) return index
+ return findIndexHelper(list.nextItem, name, index + 1)
+ }
+ return findIndexHelper(list, name, 0)
+}
+
+export const getAt = (list: List, index: number): NodeObject | null => {
+ if (!list || index < 0) return null
+ if (index === 0) return list.item
+ return getAt(list.nextItem, index - 1)
+}
+
+export const length = (list: List): number => {
+ if (!list) return 0
+ return 1 + length(list.nextItem)
+}
+
+export const isEmpty = (list: List): boolean => list === null
+
+export const clear = (): List => null
+
+export const reverse = (list: List): List => {
+ const reverseHelper = (list: List, acc: List): List => {
+ if (!list) return acc
+ return reverseHelper(list.nextItem, { item: list.item, nextItem: acc })
+ }
+ return reverseHelper(list, null)
+}
+
+export const list = (): ListFactory => ({
+ create,
+ toArray,
+ prepend,
+ append,
+ insertAt,
+ removeFirst,
+ removeLast,
+ removeByName,
+ removeAt,
+ find,
+ findIndex,
+ getAt,
+ length,
+ isEmpty,
+ clear,
+ reverse,
+})
diff --git a/structures/linked-list/main.go b/structures/linked-list/main.go
new file mode 100644
index 0000000..3bb1c63
--- /dev/null
+++ b/structures/linked-list/main.go
@@ -0,0 +1,183 @@
+package linkedlist
+
+type Node struct {
+ Name string
+ Data interface{}
+}
+
+type List struct {
+ Item *Node
+ NextItem *List
+}
+
+func Item(name string, data interface{}) *Node {
+ return &Node{Name: name, Data: data}
+}
+
+func Link(nextItem *List, item *Node) *List {
+ if item == nil {
+ return nextItem
+ }
+ return &List{
+ Item: &Node{Name: item.Name, Data: item.Data},
+ NextItem: nextItem,
+ }
+}
+
+func Create(items []*Node) *List {
+ var result *List
+ for i := len(items) - 1; i >= 0; i-- {
+ result = Link(result, items[i])
+ }
+ return result
+}
+
+func ToArray(list *List) []*Node {
+ if list == nil || list.Item == nil {
+ return []*Node{}
+ }
+ result := []*Node{list.Item}
+ return append(result, ToArray(list.NextItem)...)
+}
+
+func Prepend(list *List, item *Node) *List {
+ if item == nil {
+ return list
+ }
+ return &List{
+ Item: item,
+ NextItem: list,
+ }
+}
+
+func Append(list *List, item *Node) *List {
+ if item == nil {
+ return list
+ }
+ if list == nil {
+ return &List{Item: item, NextItem: nil}
+ }
+ return &List{
+ Item: list.Item,
+ NextItem: Append(list.NextItem, item),
+ }
+}
+
+func InsertAt(list *List, index int, item *Node) *List {
+ if item == nil || index < 0 {
+ return list
+ }
+ if index == 0 {
+ return Prepend(list, item)
+ }
+ if list == nil {
+ return list
+ }
+ return &List{
+ Item: list.Item,
+ NextItem: InsertAt(list.NextItem, index-1, item),
+ }
+}
+
+func RemoveFirst(list *List) *List {
+ if list == nil {
+ return nil
+ }
+ return list.NextItem
+}
+
+func RemoveLast(list *List) *List {
+ if list == nil || list.NextItem == nil {
+ return nil
+ }
+ return &List{
+ Item: list.Item,
+ NextItem: RemoveLast(list.NextItem),
+ }
+}
+
+func RemoveByName(list *List, name string) *List {
+ if list == nil {
+ return nil
+ }
+ if list.Item != nil && list.Item.Name == name {
+ return list.NextItem
+ }
+ return &List{
+ Item: list.Item,
+ NextItem: RemoveByName(list.NextItem, name),
+ }
+}
+
+func RemoveAt(list *List, index int) *List {
+ if list == nil || index < 0 {
+ return list
+ }
+ if index == 0 {
+ return list.NextItem
+ }
+ return &List{
+ Item: list.Item,
+ NextItem: RemoveAt(list.NextItem, index-1),
+ }
+}
+
+func Find(list *List, name string) *Node {
+ if list == nil {
+ return nil
+ }
+ if list.Item != nil && list.Item.Name == name {
+ return list.Item
+ }
+ return Find(list.NextItem, name)
+}
+
+func FindIndex(list *List, name string) int {
+ return findIndexHelper(list, name, 0)
+}
+
+func findIndexHelper(list *List, name string, index int) int {
+ if list == nil {
+ return -1
+ }
+ if list.Item != nil && list.Item.Name == name {
+ return index
+ }
+ return findIndexHelper(list.NextItem, name, index+1)
+}
+
+func GetAt(list *List, index int) *Node {
+ if list == nil || index < 0 {
+ return nil
+ }
+ if index == 0 {
+ return list.Item
+ }
+ return GetAt(list.NextItem, index-1)
+}
+
+func Length(list *List) int {
+ if list == nil {
+ return 0
+ }
+ return 1 + Length(list.NextItem)
+}
+
+func IsEmpty(list *List) bool {
+ return list == nil
+}
+
+func Clear() *List {
+ return nil
+}
+
+func Reverse(list *List) *List {
+ return reverseHelper(list, nil)
+}
+
+func reverseHelper(list *List, acc *List) *List {
+ if list == nil {
+ return acc
+ }
+ return reverseHelper(list.NextItem, &List{Item: list.Item, NextItem: acc})
+}
diff --git a/structures/linked-list/main_test.go b/structures/linked-list/main_test.go
new file mode 100644
index 0000000..5d005a2
--- /dev/null
+++ b/structures/linked-list/main_test.go
@@ -0,0 +1,295 @@
+package linkedlist
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestItemCreation(t *testing.T) {
+ result := Item("foo", map[string]string{"foo": "bar"})
+ if result.Name != "foo" {
+ t.Errorf("Expected name 'foo', got '%s'", result.Name)
+ }
+}
+
+func TestCreate(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ result := Create([]*Node{a, b})
+
+ if result.Item.Name != "foo" {
+ t.Errorf("Expected first item name 'foo', got '%s'", result.Item.Name)
+ }
+ if result.NextItem.Item.Name != "bar" {
+ t.Errorf("Expected second item name 'bar', got '%s'", result.NextItem.Item.Name)
+ }
+}
+
+func TestToArray(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ testList := Create([]*Node{a, b})
+ result := ToArray(testList)
+
+ if len(result) != 2 {
+ t.Errorf("Expected length 2, got %d", len(result))
+ }
+ if result[0].Name != "foo" {
+ t.Errorf("Expected first item 'foo', got '%s'", result[0].Name)
+ }
+ if result[1].Name != "bar" {
+ t.Errorf("Expected second item 'bar', got '%s'", result[1].Name)
+ }
+}
+
+func TestPrepend(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ initialList := Create([]*Node{b})
+ result := Prepend(initialList, a)
+ arr := ToArray(result)
+
+ if len(arr) != 2 {
+ t.Errorf("Expected length 2, got %d", len(arr))
+ }
+ if arr[0].Name != "foo" {
+ t.Errorf("Expected first item 'foo', got '%s'", arr[0].Name)
+ }
+}
+
+func TestAppend(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ initialList := Create([]*Node{a})
+ result := Append(initialList, b)
+ arr := ToArray(result)
+
+ if len(arr) != 2 {
+ t.Errorf("Expected length 2, got %d", len(arr))
+ }
+ if arr[1].Name != "bar" {
+ t.Errorf("Expected second item 'bar', got '%s'", arr[1].Name)
+ }
+}
+
+func TestInsertAt(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ c := Item("middle", map[string]string{"middle": "value"})
+ initialList := Create([]*Node{a, b})
+ result := InsertAt(initialList, 1, c)
+ arr := ToArray(result)
+
+ if len(arr) != 3 {
+ t.Errorf("Expected length 3, got %d", len(arr))
+ }
+ if arr[1].Name != "middle" {
+ t.Errorf("Expected middle item 'middle', got '%s'", arr[1].Name)
+ }
+}
+
+func TestRemoveFirst(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ initialList := Create([]*Node{a, b})
+ result := RemoveFirst(initialList)
+ arr := ToArray(result)
+
+ if len(arr) != 1 {
+ t.Errorf("Expected length 1, got %d", len(arr))
+ }
+ if arr[0].Name != "bar" {
+ t.Errorf("Expected item 'bar', got '%s'", arr[0].Name)
+ }
+}
+
+func TestRemoveLast(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ initialList := Create([]*Node{a, b})
+ result := RemoveLast(initialList)
+ arr := ToArray(result)
+
+ if len(arr) != 1 {
+ t.Errorf("Expected length 1, got %d", len(arr))
+ }
+ if arr[0].Name != "foo" {
+ t.Errorf("Expected item 'foo', got '%s'", arr[0].Name)
+ }
+}
+
+func TestRemoveByName(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ c := Item("baz", map[string]string{"test": "data"})
+ initialList := Create([]*Node{a, b, c})
+ result := RemoveByName(initialList, "bar")
+ arr := ToArray(result)
+
+ if len(arr) != 2 {
+ t.Errorf("Expected length 2, got %d", len(arr))
+ }
+ if arr[0].Name != "foo" || arr[1].Name != "baz" {
+ t.Errorf("Expected items 'foo' and 'baz', got '%s' and '%s'", arr[0].Name, arr[1].Name)
+ }
+}
+
+func TestRemoveAt(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ c := Item("baz", map[string]string{"test": "data"})
+ initialList := Create([]*Node{a, b, c})
+ result := RemoveAt(initialList, 1)
+ arr := ToArray(result)
+
+ if len(arr) != 2 {
+ t.Errorf("Expected length 2, got %d", len(arr))
+ }
+ if arr[0].Name != "foo" || arr[1].Name != "baz" {
+ t.Errorf("Expected items 'foo' and 'baz', got '%s' and '%s'", arr[0].Name, arr[1].Name)
+ }
+}
+
+func TestFind(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ testList := Create([]*Node{a, b})
+ result := Find(testList, "bar")
+
+ if result == nil {
+ t.Error("Expected to find item, got nil")
+ } else if result.Name != "bar" {
+ t.Errorf("Expected name 'bar', got '%s'", result.Name)
+ }
+}
+
+func TestFindNonExistent(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ testList := Create([]*Node{a})
+ result := Find(testList, "nonexistent")
+
+ if result != nil {
+ t.Error("Expected nil for non-existent item")
+ }
+}
+
+func TestFindIndex(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ testList := Create([]*Node{a, b})
+ result := FindIndex(testList, "bar")
+
+ if result != 1 {
+ t.Errorf("Expected index 1, got %d", result)
+ }
+}
+
+func TestFindIndexNonExistent(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ testList := Create([]*Node{a})
+ result := FindIndex(testList, "nonexistent")
+
+ if result != -1 {
+ t.Errorf("Expected index -1, got %d", result)
+ }
+}
+
+func TestGetAt(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ testList := Create([]*Node{a, b})
+ result := GetAt(testList, 1)
+
+ if result == nil {
+ t.Error("Expected to get item, got nil")
+ } else if result.Name != "bar" {
+ t.Errorf("Expected name 'bar', got '%s'", result.Name)
+ }
+}
+
+func TestGetAtOutOfBounds(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ testList := Create([]*Node{a})
+ result := GetAt(testList, 5)
+
+ if result != nil {
+ t.Error("Expected nil for out of bounds index")
+ }
+}
+
+func TestLength(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ c := Item("baz", map[string]string{"test": "data"})
+ testList := Create([]*Node{a, b, c})
+ result := Length(testList)
+
+ if result != 3 {
+ t.Errorf("Expected length 3, got %d", result)
+ }
+}
+
+func TestLengthEmpty(t *testing.T) {
+ result := Length(nil)
+ if result != 0 {
+ t.Errorf("Expected length 0, got %d", result)
+ }
+}
+
+func TestIsEmpty(t *testing.T) {
+ emptyList := (*List)(nil)
+ nonEmptyList := Create([]*Node{Item("foo", nil)})
+
+ if !IsEmpty(emptyList) {
+ t.Error("Expected empty list to be empty")
+ }
+ if IsEmpty(nonEmptyList) {
+ t.Error("Expected non-empty list to not be empty")
+ }
+}
+
+func TestClear(t *testing.T) {
+ result := Clear()
+ if result != nil {
+ t.Error("Expected cleared list to be nil")
+ }
+ if !IsEmpty(result) {
+ t.Error("Expected cleared list to be empty")
+ }
+}
+
+func TestReverse(t *testing.T) {
+ a := Item("foo", map[string]string{"foo": "bar"})
+ b := Item("bar", map[string]string{"biz": "baz"})
+ c := Item("baz", map[string]string{"test": "data"})
+ testList := Create([]*Node{a, b, c})
+ result := Reverse(testList)
+ arr := ToArray(result)
+
+ expected := []string{"baz", "bar", "foo"}
+ if len(arr) != len(expected) {
+ t.Errorf("Expected length %d, got %d", len(expected), len(arr))
+ }
+ for i, name := range expected {
+ if arr[i].Name != name {
+ t.Errorf("Expected item %d to be '%s', got '%s'", i, name, arr[i].Name)
+ }
+ }
+}
+
+func TestReverseEmpty(t *testing.T) {
+ result := Reverse(nil)
+ if result != nil {
+ t.Error("Expected reversed empty list to be nil")
+ }
+}
+
+func nodesEqual(a, b *Node) bool {
+ if a == nil && b == nil {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Name == b.Name && reflect.DeepEqual(a.Data, b.Data)
+}
diff --git a/packages/linked-list/package.json b/structures/linked-list/package.json
similarity index 78%
rename from packages/linked-list/package.json
rename to structures/linked-list/package.json
index 5daa5ae..9650d3f 100644
--- a/packages/linked-list/package.json
+++ b/structures/linked-list/package.json
@@ -1,7 +1,7 @@
{
"name": "@datastructures/linked-list",
"version": "1.0.0",
- "description": "A minimal functional typed implementation of Linked List ⛓",
+ "description": "A minimal typed implementation of Linked List ⛓",
"main": "dist/index.js",
"unpkg": "dist/index.js",
"module": "dist/index.js",
@@ -11,9 +11,8 @@
"LICENSE"
],
"scripts": {
- "build": "tsc",
- "clean": "rimraf dist",
- "tsc": "tsc --noEmit"
+ "build": "tsc --noEmit",
+ "test": "bun test"
},
"publishConfig": {
"access": "public"
diff --git a/structures/linked-list/src/index.ts b/structures/linked-list/src/index.ts
new file mode 100644
index 0000000..345a6ba
--- /dev/null
+++ b/structures/linked-list/src/index.ts
@@ -0,0 +1,137 @@
+import {
+ List,
+ ListFactory,
+ NodeObject
+} from './types'
+
+export const item = (name: string, data: unknown = null): NodeObject => ({
+ name,
+ data,
+})
+
+export const link = (nextItem: List, item: NodeObject): List => {
+ if (!item) return nextItem
+ return {
+ item: { name: item.name, data: item.data },
+ nextItem,
+ }
+}
+
+export const create = (items: NodeObject[]): List => items.reduceRight(link, null)
+
+export const toArray = (list: List): NodeObject[] => {
+ if (!list || !list.item) return []
+ return [list.item, ...toArray(list.nextItem)]
+}
+
+export const prepend = (list: List, item: NodeObject): List => {
+ if (!item) return list
+ return { item, nextItem: list }
+}
+
+export const append = (list: List, item: NodeObject): List => {
+ if (!item) return list
+ if (!list) return { item, nextItem: null }
+ return {
+ item: list.item,
+ nextItem: append(list.nextItem, item),
+ }
+}
+
+export const insertAt = (list: List, index: number, item: NodeObject): List => {
+ if (!item || index < 0) return list
+ if (index === 0) return prepend(list, item)
+ if (!list) return index === 0 ? { item, nextItem: null } : list
+ return {
+ item: list.item,
+ nextItem: insertAt(list.nextItem, index - 1, item),
+ }
+}
+
+export const removeFirst = (list: List): List => {
+ if (!list) return null
+ return list.nextItem
+}
+
+export const removeLast = (list: List): List => {
+ if (!list || !list.nextItem) return null
+ return {
+ item: list.item,
+ nextItem: removeLast(list.nextItem),
+ }
+}
+
+export const removeByName = (list: List, name: string): List => {
+ if (!list) return null
+ if (list.item && list.item.name === name) return list.nextItem
+ return {
+ item: list.item,
+ nextItem: removeByName(list.nextItem, name),
+ }
+}
+
+export const removeAt = (list: List, index: number): List => {
+ if (!list || index < 0) return list
+ if (index === 0) return list.nextItem
+ return {
+ item: list.item,
+ nextItem: removeAt(list.nextItem, index - 1),
+ }
+}
+
+export const find = (list: List, name: string): NodeObject | null => {
+ if (!list) return null
+ if (list.item && list.item.name === name) return list.item
+ return find(list.nextItem, name)
+}
+
+export const findIndex = (list: List, name: string): number => {
+ const findIndexHelper = (list: List, name: string, index: number): number => {
+ if (!list) return -1
+ if (list.item && list.item.name === name) return index
+ return findIndexHelper(list.nextItem, name, index + 1)
+ }
+ return findIndexHelper(list, name, 0)
+}
+
+export const getAt = (list: List, index: number): NodeObject | null => {
+ if (!list || index < 0) return null
+ if (index === 0) return list.item
+ return getAt(list.nextItem, index - 1)
+}
+
+export const length = (list: List): number => {
+ if (!list) return 0
+ return 1 + length(list.nextItem)
+}
+
+export const isEmpty = (list: List): boolean => list === null
+
+export const clear = (): List => null
+
+export const reverse = (list: List): List => {
+ const reverseHelper = (list: List, acc: List): List => {
+ if (!list) return acc
+ return reverseHelper(list.nextItem, { item: list.item, nextItem: acc })
+ }
+ return reverseHelper(list, null)
+}
+
+export const list = (): ListFactory => ({
+ create,
+ toArray,
+ prepend,
+ append,
+ insertAt,
+ removeFirst,
+ removeLast,
+ removeByName,
+ removeAt,
+ find,
+ findIndex,
+ getAt,
+ length,
+ isEmpty,
+ clear,
+ reverse,
+})
diff --git a/structures/linked-list/src/types.ts b/structures/linked-list/src/types.ts
new file mode 100644
index 0000000..12ae68f
--- /dev/null
+++ b/structures/linked-list/src/types.ts
@@ -0,0 +1,28 @@
+export type NodeObject = {
+ name: string
+ data?: unknown
+} | null
+
+export type List = {
+ item: NodeObject
+ nextItem: List
+} | null
+
+export type ListFactory = {
+ create: (items: NodeObject[]) => List
+ toArray: (list: List) => NodeObject[]
+ prepend: (list: List, item: NodeObject) => List
+ append: (list: List, item: NodeObject) => List
+ insertAt: (list: List, index: number, item: NodeObject) => List
+ removeFirst: (list: List) => List
+ removeLast: (list: List) => List
+ removeByName: (list: List, name: string) => List
+ removeAt: (list: List, index: number) => List
+ find: (list: List, name: string) => NodeObject | null
+ findIndex: (list: List, name: string) => number
+ getAt: (list: List, index: number) => NodeObject | null
+ length: (list: List) => number
+ isEmpty: (list: List) => boolean
+ clear: () => List
+ reverse: (list: List) => List
+}
\ No newline at end of file
diff --git a/structures/linked-list/tests/index.test.ts b/structures/linked-list/tests/index.test.ts
new file mode 100644
index 0000000..5dbafb1
--- /dev/null
+++ b/structures/linked-list/tests/index.test.ts
@@ -0,0 +1,317 @@
+import { test, describe } from 'node:test'
+import assert from 'node:assert'
+import {
+ create,
+ item,
+ list,
+ toArray,
+ prepend,
+ append,
+ insertAt,
+ removeFirst,
+ removeLast,
+ removeByName,
+ removeAt,
+ find,
+ findIndex,
+ getAt,
+ length,
+ isEmpty,
+ clear,
+ reverse
+} from '../src/index'
+
+describe('LinkedList', () => {
+ describe('Basic Operations', () => {
+ test('item creation', () => {
+ const result = item('foo', { foo: 'bar' })
+ assert.strictEqual(typeof result, 'object')
+ assert.strictEqual(result?.name, 'foo')
+ assert.deepStrictEqual(result?.data, { foo: 'bar' })
+ })
+
+ test('create list from array', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const result = create([a, b])
+
+ const expected = {
+ item: { name: 'foo', data: { foo: 'bar' } },
+ nextItem: {
+ item: { name: 'bar', data: { biz: 'baz' } },
+ nextItem: null,
+ },
+ }
+ assert.deepStrictEqual(result, expected)
+ })
+
+ test('toArray', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const arraylist = toArray(testList)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ assert.deepStrictEqual(arraylist, expected)
+ })
+ })
+
+ describe('List Factory', () => {
+ test('list.create', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const result = list().create([a, b])
+
+ const expected = {
+ item: { name: 'foo', data: { foo: 'bar' } },
+ nextItem: {
+ item: { name: 'bar', data: { biz: 'baz' } },
+ nextItem: null,
+ },
+ }
+ assert.deepStrictEqual(result, expected)
+ })
+
+ test('list.toArray', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testlist = list()
+ const linkedlist = testlist.create([a, b])
+ const arraylist = testlist.toArray(linkedlist)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ assert.deepStrictEqual(arraylist, expected)
+ })
+ })
+
+ describe('Advanced Operations', () => {
+ test('prepend', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([b])
+ const result = prepend(initialList, a)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('append', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([a])
+ const result = append(initialList, b)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('insertAt', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('middle', { middle: 'value' })
+ const initialList = create([a, b])
+ const result = insertAt(initialList, 1, c)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { middle: 'value' }, name: 'middle' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ ]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('removeFirst', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([a, b])
+ const result = removeFirst(initialList)
+
+ const expected = [{ data: { biz: 'baz' }, name: 'bar' }]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('removeLast', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const initialList = create([a, b])
+ const result = removeLast(initialList)
+
+ const expected = [{ data: { foo: 'bar' }, name: 'foo' }]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('removeByName', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const initialList = create([a, b, c])
+ const result = removeByName(initialList, 'bar')
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { test: 'data' }, name: 'baz' },
+ ]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('removeAt', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const initialList = create([a, b, c])
+ const result = removeAt(initialList, 1)
+
+ const expected = [
+ { data: { foo: 'bar' }, name: 'foo' },
+ { data: { test: 'data' }, name: 'baz' },
+ ]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('find', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const result = find(testList, 'bar')
+
+ assert.deepStrictEqual(result, { data: { biz: 'baz' }, name: 'bar' })
+ })
+
+ test('find non-existent item', () => {
+ const a = item('foo', { foo: 'bar' })
+ const testList = create([a])
+ const result = find(testList, 'nonexistent')
+
+ assert.strictEqual(result, null)
+ })
+
+ test('findIndex', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const result = findIndex(testList, 'bar')
+
+ assert.strictEqual(result, 1)
+ })
+
+ test('findIndex non-existent item', () => {
+ const a = item('foo', { foo: 'bar' })
+ const testList = create([a])
+ const result = findIndex(testList, 'nonexistent')
+
+ assert.strictEqual(result, -1)
+ })
+
+ test('getAt', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const testList = create([a, b])
+ const result = getAt(testList, 1)
+
+ assert.deepStrictEqual(result, { data: { biz: 'baz' }, name: 'bar' })
+ })
+
+ test('getAt out of bounds', () => {
+ const a = item('foo', { foo: 'bar' })
+ const testList = create([a])
+ const result = getAt(testList, 5)
+
+ assert.strictEqual(result, null)
+ })
+
+ test('length', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const testList = create([a, b, c])
+ const result = length(testList)
+
+ assert.strictEqual(result, 3)
+ })
+
+ test('length of empty list', () => {
+ const result = length(null)
+ assert.strictEqual(result, 0)
+ })
+
+ test('isEmpty', () => {
+ const emptyList = null
+ const nonEmptyList = create([item('foo')])
+
+ assert.strictEqual(isEmpty(emptyList), true)
+ assert.strictEqual(isEmpty(nonEmptyList), false)
+ })
+
+ test('clear', () => {
+ const result = clear()
+ assert.strictEqual(result, null)
+ assert.strictEqual(isEmpty(result), true)
+ })
+
+ test('reverse', () => {
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+ const c = item('baz', { test: 'data' })
+ const testList = create([a, b, c])
+ const result = reverse(testList)
+
+ const expected = [
+ { data: { test: 'data' }, name: 'baz' },
+ { data: { biz: 'baz' }, name: 'bar' },
+ { data: { foo: 'bar' }, name: 'foo' },
+ ]
+ assert.deepStrictEqual(toArray(result), expected)
+ })
+
+ test('reverse empty list', () => {
+ const result = reverse(null)
+ assert.strictEqual(result, null)
+ })
+ })
+
+ describe('Factory Methods', () => {
+ test('factory methods work correctly', () => {
+ const factory = list()
+ const a = item('foo', { foo: 'bar' })
+ const b = item('bar', { biz: 'baz' })
+
+ // Test all factory methods
+ let testList = factory.create([a])
+ assert.strictEqual(factory.length(testList), 1)
+ assert.strictEqual(factory.isEmpty(testList), false)
+
+ testList = factory.append(testList, b)
+ assert.strictEqual(factory.length(testList), 2)
+
+ const foundItem = factory.find(testList, 'bar')
+ assert.deepStrictEqual(foundItem, { data: { biz: 'baz' }, name: 'bar' })
+
+ const index = factory.findIndex(testList, 'bar')
+ assert.strictEqual(index, 1)
+
+ const itemAtIndex = factory.getAt(testList, 0)
+ assert.deepStrictEqual(itemAtIndex, { data: { foo: 'bar' }, name: 'foo' })
+
+ testList = factory.removeByName(testList, 'foo')
+ assert.strictEqual(factory.length(testList), 1)
+
+ const reversed = factory.reverse(testList)
+ assert.deepStrictEqual(factory.toArray(reversed), [{ data: { biz: 'baz' }, name: 'bar' }])
+
+ const cleared = factory.clear()
+ assert.strictEqual(factory.isEmpty(cleared), true)
+ })
+ })
+})
diff --git a/packages/linked-list/tsconfig.json b/structures/linked-list/tsconfig.json
similarity index 100%
rename from packages/linked-list/tsconfig.json
rename to structures/linked-list/tsconfig.json
diff --git a/packages/queue/LICENSE b/structures/queue/LICENSE
similarity index 100%
rename from packages/queue/LICENSE
rename to structures/queue/LICENSE
diff --git a/packages/queue/README.md b/structures/queue/README.md
similarity index 100%
rename from packages/queue/README.md
rename to structures/queue/README.md
diff --git a/structures/queue/go.mod b/structures/queue/go.mod
new file mode 100644
index 0000000..cd75f9f
--- /dev/null
+++ b/structures/queue/go.mod
@@ -0,0 +1,3 @@
+module github.com/yowainwright/datastructures/packages/queue
+
+go 1.24.5
diff --git a/packages/queue/tests/index.test.ts b/structures/queue/index.test.ts
similarity index 88%
rename from packages/queue/tests/index.test.ts
rename to structures/queue/index.test.ts
index dfa80d4..97bcf50 100644
--- a/packages/queue/tests/index.test.ts
+++ b/structures/queue/index.test.ts
@@ -1,5 +1,5 @@
-import { describe, test, expect } from 'vitest'
-import { queue } from '../src/index'
+import { describe, test, expect } from "bun:test"
+import { queue } from "./index"
describe('queue', () => {
test('init', () => {
diff --git a/structures/queue/index.ts b/structures/queue/index.ts
new file mode 100644
index 0000000..7a1a997
--- /dev/null
+++ b/structures/queue/index.ts
@@ -0,0 +1,13 @@
+export type Queue = {
+ add: (item: T) => Queue
+ remove: () => Queue
+ length: () => number
+ print: () => T[]
+}
+
+export const queue = (list: T[] = []): Queue => ({
+ add: (item) => queue([item, ...list]),
+ remove: () => queue(list.slice(0, -1)),
+ length: () => list.length,
+ print: () => list,
+})
diff --git a/structures/queue/main.go b/structures/queue/main.go
new file mode 100644
index 0000000..440f718
--- /dev/null
+++ b/structures/queue/main.go
@@ -0,0 +1,35 @@
+package queue
+
+type Queue[T any] struct {
+ items []T
+}
+
+func New[T any]() *Queue[T] {
+ return &Queue[T]{items: []T{}}
+}
+
+func (q *Queue[T]) Add(item T) *Queue[T] {
+ newItems := make([]T, len(q.items)+1)
+ newItems[0] = item
+ copy(newItems[1:], q.items)
+ return &Queue[T]{items: newItems}
+}
+
+func (q *Queue[T]) Remove() *Queue[T] {
+ if len(q.items) == 0 {
+ return q
+ }
+ newItems := make([]T, len(q.items)-1)
+ copy(newItems, q.items[:len(q.items)-1])
+ return &Queue[T]{items: newItems}
+}
+
+func (q *Queue[T]) Length() int {
+ return len(q.items)
+}
+
+func (q *Queue[T]) Print() []T {
+ result := make([]T, len(q.items))
+ copy(result, q.items)
+ return result
+}
diff --git a/structures/queue/main.py b/structures/queue/main.py
new file mode 100644
index 0000000..7cd2afa
--- /dev/null
+++ b/structures/queue/main.py
@@ -0,0 +1,25 @@
+from typing import TypeVar, Generic
+from dataclasses import dataclass
+
+T = TypeVar("T")
+
+
+@dataclass(frozen=True)
+class Queue(Generic[T]):
+ _items: tuple[T, ...]
+
+ def add(self, item: T) -> "Queue[T]":
+ return Queue((item,) + self._items)
+
+ def remove(self) -> "Queue[T]":
+ return Queue(self._items[:-1]) if self._items else self
+
+ def length(self) -> int:
+ return len(self._items)
+
+ def print(self) -> list[T]:
+ return list(self._items)
+
+
+def queue(items: list[T] | None = None) -> Queue[T]:
+ return Queue(tuple(items) if items else ())
diff --git a/structures/queue/main_test.go b/structures/queue/main_test.go
new file mode 100644
index 0000000..f4ea513
--- /dev/null
+++ b/structures/queue/main_test.go
@@ -0,0 +1,44 @@
+package queue
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestInit(t *testing.T) {
+ q := New[string]()
+ if q.Length() != 0 {
+ t.Errorf("Expected length 0, got %d", q.Length())
+ }
+}
+
+func TestAdd(t *testing.T) {
+ q := New[string]().Add("foo")
+ expected := []string{"foo"}
+ if !reflect.DeepEqual(q.Print(), expected) {
+ t.Errorf("Expected %v, got %v", expected, q.Print())
+ }
+}
+
+func TestRemove(t *testing.T) {
+ q := New[string]().Add("foo").Add("bar").Remove()
+ expected := []string{"bar"}
+ if !reflect.DeepEqual(q.Print(), expected) {
+ t.Errorf("Expected %v, got %v", expected, q.Print())
+ }
+}
+
+func TestLength(t *testing.T) {
+ q := New[string]().Add("foo").Add("bar")
+ if q.Length() != 2 {
+ t.Errorf("Expected length 2, got %d", q.Length())
+ }
+}
+
+func TestPrint(t *testing.T) {
+ q := New[string]().Add("foo").Add("bar")
+ expected := []string{"bar", "foo"}
+ if !reflect.DeepEqual(q.Print(), expected) {
+ t.Errorf("Expected %v, got %v", expected, q.Print())
+ }
+}
diff --git a/packages/queue/package.json b/structures/queue/package.json
similarity index 67%
rename from packages/queue/package.json
rename to structures/queue/package.json
index 350e24a..29f6915 100644
--- a/packages/queue/package.json
+++ b/structures/queue/package.json
@@ -2,17 +2,21 @@
"name": "@datastructures/queue",
"version": "0.0.1",
"description": "A minimal functional typed implementation of Linked List ➡️|➡️|",
- "main": "dist/",
- "unpkg": "dist/index.js",
- "module": "dist/index.js",
- "types": "index.ts",
+ "main": "./index.ts",
+ "module": "./index.ts",
+ "types": "./index.ts",
+ "exports": {
+ ".": {
+ "import": "./index.ts",
+ "types": "./index.ts"
+ }
+ },
"publishConfig": {
"access": "public"
},
"scripts": {
- "build": "tsc",
- "clean": "rimraf dist",
- "tsc": "tsc --noEmit"
+ "build": "tsc --noEmit",
+ "test": "bun test"
},
"repository": {
"type": "git",
diff --git a/structures/queue/test_main.py b/structures/queue/test_main.py
new file mode 100644
index 0000000..d5de7a8
--- /dev/null
+++ b/structures/queue/test_main.py
@@ -0,0 +1,26 @@
+from main import queue
+
+
+def test_init():
+ q = queue()
+ assert q.length() == 0
+
+
+def test_add():
+ q = queue().add("foo")
+ assert q.print() == ["foo"]
+
+
+def test_remove():
+ q = queue().add("foo").add("bar").remove()
+ assert q.print() == ["bar"]
+
+
+def test_length():
+ q = queue().add("foo").add("bar")
+ assert q.length() == 2
+
+
+def test_print():
+ q = queue().add("foo").add("bar")
+ assert q.print() == ["bar", "foo"]
diff --git a/packages/queue/tsconfig.json b/structures/queue/tsconfig.json
similarity index 100%
rename from packages/queue/tsconfig.json
rename to structures/queue/tsconfig.json
diff --git a/packages/stack/LICENSE b/structures/stack/LICENSE
similarity index 100%
rename from packages/stack/LICENSE
rename to structures/stack/LICENSE
diff --git a/packages/stack/README.md b/structures/stack/README.md
similarity index 100%
rename from packages/stack/README.md
rename to structures/stack/README.md
diff --git a/structures/stack/go.mod b/structures/stack/go.mod
new file mode 100644
index 0000000..a8d5105
--- /dev/null
+++ b/structures/stack/go.mod
@@ -0,0 +1,3 @@
+module github.com/yowainwright/datastructures/packages/stack
+
+go 1.24.5
diff --git a/packages/stack/tests/index.test.ts b/structures/stack/index.test.ts
similarity index 88%
rename from packages/stack/tests/index.test.ts
rename to structures/stack/index.test.ts
index ff77b85..e91010d 100644
--- a/packages/stack/tests/index.test.ts
+++ b/structures/stack/index.test.ts
@@ -1,5 +1,5 @@
-import { describe, test, expect } from 'vitest'
-import { stack } from '../src/index'
+import { describe, test, expect } from "bun:test"
+import { stack } from "./index"
describe('stack', () => {
test('init', () => {
diff --git a/structures/stack/index.ts b/structures/stack/index.ts
new file mode 100644
index 0000000..1912bda
--- /dev/null
+++ b/structures/stack/index.ts
@@ -0,0 +1,13 @@
+export type Stack = {
+ add: (item: T) => Stack
+ remove: () => Stack
+ length: () => number
+ print: () => T[]
+}
+
+export const stack = (list: T[] = []): Stack => ({
+ add: (item) => stack([...list, item]),
+ remove: () => stack(list.slice(0, -1)),
+ length: () => list.length,
+ print: () => list,
+})
diff --git a/structures/stack/main.go b/structures/stack/main.go
new file mode 100644
index 0000000..41397ee
--- /dev/null
+++ b/structures/stack/main.go
@@ -0,0 +1,35 @@
+package stack
+
+type Stack[T any] struct {
+ items []T
+}
+
+func New[T any]() *Stack[T] {
+ return &Stack[T]{items: []T{}}
+}
+
+func (s *Stack[T]) Add(item T) *Stack[T] {
+ newItems := make([]T, len(s.items)+1)
+ copy(newItems, s.items)
+ newItems[len(s.items)] = item
+ return &Stack[T]{items: newItems}
+}
+
+func (s *Stack[T]) Remove() *Stack[T] {
+ if len(s.items) == 0 {
+ return s
+ }
+ newItems := make([]T, len(s.items)-1)
+ copy(newItems, s.items[:len(s.items)-1])
+ return &Stack[T]{items: newItems}
+}
+
+func (s *Stack[T]) Length() int {
+ return len(s.items)
+}
+
+func (s *Stack[T]) Print() []T {
+ result := make([]T, len(s.items))
+ copy(result, s.items)
+ return result
+}
diff --git a/structures/stack/main.py b/structures/stack/main.py
new file mode 100644
index 0000000..cb19126
--- /dev/null
+++ b/structures/stack/main.py
@@ -0,0 +1,25 @@
+from typing import TypeVar, Generic
+from dataclasses import dataclass
+
+T = TypeVar("T")
+
+
+@dataclass(frozen=True)
+class Stack(Generic[T]):
+ _items: tuple[T, ...]
+
+ def add(self, item: T) -> "Stack[T]":
+ return Stack(self._items + (item,))
+
+ def remove(self) -> "Stack[T]":
+ return Stack(self._items[:-1]) if self._items else self
+
+ def length(self) -> int:
+ return len(self._items)
+
+ def print(self) -> list[T]:
+ return list(self._items)
+
+
+def stack(items: list[T] | None = None) -> Stack[T]:
+ return Stack(tuple(items) if items else ())
diff --git a/structures/stack/main_test.go b/structures/stack/main_test.go
new file mode 100644
index 0000000..741ae7d
--- /dev/null
+++ b/structures/stack/main_test.go
@@ -0,0 +1,44 @@
+package stack
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestInit(t *testing.T) {
+ s := New[string]()
+ if s.Length() != 0 {
+ t.Errorf("Expected length 0, got %d", s.Length())
+ }
+}
+
+func TestAdd(t *testing.T) {
+ s := New[string]().Add("foo")
+ expected := []string{"foo"}
+ if !reflect.DeepEqual(s.Print(), expected) {
+ t.Errorf("Expected %v, got %v", expected, s.Print())
+ }
+}
+
+func TestRemove(t *testing.T) {
+ s := New[string]().Add("foo").Add("bar").Remove()
+ expected := []string{"foo"}
+ if !reflect.DeepEqual(s.Print(), expected) {
+ t.Errorf("Expected %v, got %v", expected, s.Print())
+ }
+}
+
+func TestLength(t *testing.T) {
+ s := New[string]().Add("foo").Add("bar")
+ if s.Length() != 2 {
+ t.Errorf("Expected length 2, got %d", s.Length())
+ }
+}
+
+func TestPrint(t *testing.T) {
+ s := New[string]().Add("foo").Add("bar")
+ expected := []string{"foo", "bar"}
+ if !reflect.DeepEqual(s.Print(), expected) {
+ t.Errorf("Expected %v, got %v", expected, s.Print())
+ }
+}
diff --git a/packages/stack/package.json b/structures/stack/package.json
similarity index 69%
rename from packages/stack/package.json
rename to structures/stack/package.json
index ac0b63b..6dbfd28 100644
--- a/packages/stack/package.json
+++ b/structures/stack/package.json
@@ -2,17 +2,21 @@
"name": "@datastructures/stack",
"version": "0.0.1",
"description": "A minimal functional typed implementation of Stack 🥞",
- "main": "dist/",
- "unpkg": "dist/index.js",
- "module": "dist/index.js",
- "types": "index.ts",
+ "main": "./index.ts",
+ "module": "./index.ts",
+ "types": "./index.ts",
+ "exports": {
+ ".": {
+ "import": "./index.ts",
+ "types": "./index.ts"
+ }
+ },
"publishConfig": {
"access": "public"
},
"scripts": {
- "build": "tsc",
- "clean": "rimraf dist",
- "tsc": "tsc --noEmit"
+ "build": "tsc --noEmit",
+ "test": "bun test"
},
"repository": {
"type": "git",
diff --git a/structures/stack/test_main.py b/structures/stack/test_main.py
new file mode 100644
index 0000000..f8e02f9
--- /dev/null
+++ b/structures/stack/test_main.py
@@ -0,0 +1,26 @@
+from main import stack
+
+
+def test_init():
+ s = stack()
+ assert s.length() == 0
+
+
+def test_add():
+ s = stack().add("foo")
+ assert s.print() == ["foo"]
+
+
+def test_remove():
+ s = stack().add("foo").add("bar").remove()
+ assert s.print() == ["foo"]
+
+
+def test_length():
+ s = stack().add("foo").add("bar")
+ assert s.length() == 2
+
+
+def test_print():
+ s = stack().add("foo").add("bar")
+ assert s.print() == ["foo", "bar"]
diff --git a/packages/stack/tsconfig.json b/structures/stack/tsconfig.json
similarity index 100%
rename from packages/stack/tsconfig.json
rename to structures/stack/tsconfig.json
diff --git a/tsconfig.json b/tsconfig.json
index 87f8893..5362b2b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -5,22 +5,20 @@
"allowJs": false,
"declaration": true,
"esModuleInterop": true,
- "importHelpers": true,
- "jsx": "react",
- "lib": ["esnext", "dom"],
- "module": "commonjs",
- "moduleResolution": "node",
+ "lib": ["esnext"],
+ "module": "NodeNext",
+ "moduleResolution": "nodenext",
"noEmit": false,
"noImplicitReturns": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"outDir": "./dist",
- "preserveConstEnums": true,
- "removeComments": false,
+ "preserveConstEnums": false,
+ "removeComments": true,
"resolveJsonModule": true,
"skipLibCheck": true,
"sourceMap": true,
- "target": "es5"
+ "target": "esnext"
},
- "exclude": ["**/*.test.ts", "**/*.test.tsx", "packages/*/dist/**", "**/__tests__/**", "*.js"]
+ "exclude": ["*.js", "**/dist"]
}
diff --git a/turbo.json b/turbo.json
index 9b61515..07252a4 100644
--- a/turbo.json
+++ b/turbo.json
@@ -1,11 +1,8 @@
{
"$schema": "https://turbo.build/schema.json",
- "pipeline": {
+ "tasks": {
"build": {
- "outputs": ["dist/**"]
- },
- "test": {
- "outputs": []
+ "dependsOn": ["^build"]
}
}
}