diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2c8e66f..bb62aa7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,29 +14,31 @@ jobs: main: runs-on: ubuntu-latest steps: + ## 1. checkout & install - uses: actions/checkout@v4 - with: - filter: tree:0 - fetch-depth: 0 - - # This enables task distribution via Nx Cloud - # Run this command as early as possible, before dependencies are installed - # Learn more at https://nx.dev/ci/reference/nx-cloud-cli#npx-nxcloud-startcirun - # Uncomment this line to enable task distribution - # - run: npx nx start-ci-run --distribute-on="3 linux-medium-js" --stop-agents-after="build" - # Cache node_modules - uses: actions/setup-node@v4 with: - node-version: 20 - cache: 'npm' - - - run: npm ci --legacy-peer-deps - - # Prepend any command with "nx-cloud record --" to record its logs to Nx Cloud - # - run: npx nx-cloud record -- echo Hello World - # As your workspace grows, you can change this to use Nx Affected to run only tasks affected by the changes in this PR/commit. Learn more: https://nx.dev/ci/features/affected - - run: npx nx run-many -t lint test build - # Nx Cloud recommends fixes for failures to help you get CI green faster. Learn more: https://nx.dev/ci/features/self-healing-ci - - run: npx nx fix-ci - if: always() + node-version: 22 + - name: Install deps + run: | + corepack enable + pnpm install --frozen-lockfile + + ## 2. cache Nx computation results + - uses: actions/cache@v4 + with: + path: .nx/cache + key: nx-${{ github.sha }} + + ## 3. run tests (all projects) + - name: Nx tests + run: pnpm nx run-many --target=test --all + + ## 4. build (all projects) + - name: Nx build + run: pnpm nx run-many --target=build --all + + ## 5. generate PlantUML docs (SVG) + - name: Render PlantUML + run: pnpm nx run-many --target=docs --all diff --git a/.gitignore b/.gitignore index 6bc1316..b8cb86a 100644 --- a/.gitignore +++ b/.gitignore @@ -45,3 +45,6 @@ Thumbs.db .nx/workspace-data .cursor/rules/nx-rules.mdc .github/instructions/nx.instructions.md + +vite.config.*.timestamp* +vitest.config.*.timestamp* \ No newline at end of file diff --git a/apps/cache-strategies/package.json b/apps/cache-strategies/package.json index 2a81813..b7c7d5a 100644 --- a/apps/cache-strategies/package.json +++ b/apps/cache-strategies/package.json @@ -6,7 +6,8 @@ "main": "index.js", "private": true, "scripts": { - "cache-strategies:test": "bun test *.spec.ts" + "cache-strategies:test": "bun test **/*.spec.ts", + "cache-strategies:lint": "prettier **/*.ts --write" }, "author": "Roberto von Schoettler ", "license": "UNLICENSED", diff --git a/apps/cache-strategies/ARC/ARC.ts b/apps/cache-strategies/src/ARC/ARC.ts similarity index 100% rename from apps/cache-strategies/ARC/ARC.ts rename to apps/cache-strategies/src/ARC/ARC.ts diff --git a/apps/cache-strategies/CLOCK-Pro/CLOCK-Pro b/apps/cache-strategies/src/CLOCK-Pro/CLOCK-Pro similarity index 100% rename from apps/cache-strategies/CLOCK-Pro/CLOCK-Pro rename to apps/cache-strategies/src/CLOCK-Pro/CLOCK-Pro diff --git a/apps/cache-strategies/CLOCK/CLOCK.ts b/apps/cache-strategies/src/CLOCK/CLOCK.ts similarity index 100% rename from apps/cache-strategies/CLOCK/CLOCK.ts rename to apps/cache-strategies/src/CLOCK/CLOCK.ts diff --git a/apps/cache-strategies/FIFO/FIFO.ts b/apps/cache-strategies/src/FIFO/FIFO.ts similarity index 100% rename from apps/cache-strategies/FIFO/FIFO.ts rename to apps/cache-strategies/src/FIFO/FIFO.ts diff --git a/apps/cache-strategies/GDSF/GDSF.ts b/apps/cache-strategies/src/GDSF/GDSF.ts similarity index 100% rename from apps/cache-strategies/GDSF/GDSF.ts rename to apps/cache-strategies/src/GDSF/GDSF.ts diff --git a/apps/cache-strategies/LFU/LFU.ts b/apps/cache-strategies/src/LFU/LFU.ts similarity index 100% rename from apps/cache-strategies/LFU/LFU.ts rename to apps/cache-strategies/src/LFU/LFU.ts diff --git a/apps/cache-strategies/LIRS/LIRS.ts b/apps/cache-strategies/src/LIRS/LIRS.ts similarity index 100% rename from apps/cache-strategies/LIRS/LIRS.ts rename to apps/cache-strategies/src/LIRS/LIRS.ts diff --git a/apps/cache-strategies/LRU/LRU.spec.ts b/apps/cache-strategies/src/LRU/LRU.spec.ts similarity index 100% rename from apps/cache-strategies/LRU/LRU.spec.ts rename to apps/cache-strategies/src/LRU/LRU.spec.ts diff --git a/apps/cache-strategies/LRU/LRU.ts b/apps/cache-strategies/src/LRU/LRU.ts similarity index 97% rename from apps/cache-strategies/LRU/LRU.ts rename to apps/cache-strategies/src/LRU/LRU.ts index e798eda..473b0ce 100644 --- a/apps/cache-strategies/LRU/LRU.ts +++ b/apps/cache-strategies/src/LRU/LRU.ts @@ -1,5 +1,5 @@ import { DoublyLinkedList } from '@proveo/cs-datatypes' -import { deleteNode } from '@proveo/cs-algorithms' +import { deleteNode } from 'libs/algorithms' // Least Recent Use // 1. Whenever a record is accessed, it's placed at the top of the cache. // 2. Records at the bottom will be removed once the limit is reached. diff --git a/apps/cache-strategies/MRU/MRU.ts b/apps/cache-strategies/src/MRU/MRU.ts similarity index 100% rename from apps/cache-strategies/MRU/MRU.ts rename to apps/cache-strategies/src/MRU/MRU.ts diff --git a/apps/cache-strategies/RandomReplace/RandomReplace.ts b/apps/cache-strategies/src/RandomReplace/RandomReplace.ts similarity index 100% rename from apps/cache-strategies/RandomReplace/RandomReplace.ts rename to apps/cache-strategies/src/RandomReplace/RandomReplace.ts diff --git a/apps/cache-strategies/TinyLFU/TinyLFU.ts b/apps/cache-strategies/src/TinyLFU/TinyLFU.ts similarity index 100% rename from apps/cache-strategies/TinyLFU/TinyLFU.ts rename to apps/cache-strategies/src/TinyLFU/TinyLFU.ts diff --git a/apps/cache-strategies/TwoQ/TwoQ.ts b/apps/cache-strategies/src/TwoQ/TwoQ.ts similarity index 100% rename from apps/cache-strategies/TwoQ/TwoQ.ts rename to apps/cache-strategies/src/TwoQ/TwoQ.ts diff --git a/apps/cache-strategies/tsconfig.json b/apps/cache-strategies/tsconfig.json index 4082f16..af29890 100644 --- a/apps/cache-strategies/tsconfig.json +++ b/apps/cache-strategies/tsconfig.json @@ -1,3 +1,11 @@ { - "extends": "../../tsconfig.json" + "extends": "../../tsconfig.json", + "references": [ + { + "path": "../../libs/datatypes" + }, + { + "path": "../../libs/algorithms" + } + ] } diff --git a/apps/discovery-strategies/README.md b/apps/discovery-strategies/README.md new file mode 100644 index 0000000..dbf86ef --- /dev/null +++ b/apps/discovery-strategies/README.md @@ -0,0 +1,12 @@ +# Discovery Strategies + +| Theme | Canonical algorithms | Typical questions they answer | Real‑world systems & examples | +| ------------------------------------ | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| **Connectivity & reachability** | DFS/BFS, Union‑Find, Tarjan’s SCC | “Are *A* and *B* connected?”
“How many components / islands exist?” | Link‑state routing (OSPF), social‑graph friend suggestions, detecting cycles in build dependency graphs. | +| **Shortest & cheapest paths** | Dijkstra, A\*, Bellman‑Ford, Floyd‑Warshall, bidirectional search | “What is the minimum‑cost route from X to Y?” | Google Maps, GPS nav, network QoS routing, robot path planning in warehouses. | +| **Spanning structures & clustering** | Kruskal / Prim MST, Borůvka, DSU‑based clustering | “Connect all nodes with the smallest total cost.” | Electrical grid layout, fiber/cable network design, image segmentation via minimal spanning forests. | +| **Scheduling & dependency ordering** | Topological sort (Kahn / DFS), Critical‑Path Method, DAG DP | “In which order can we compile packages?”
“What’s the longest path in a DAG (project duration)?” | `make`/Bazel build systems, course‑prerequisite planning, CI/CD job ordering, project management tools. | +| **Network flow & matching** | Ford‑Fulkerson, Edmonds‑Karp, Dinic, Hopcroft–Karp, Kuhn‑Munkres | “Max throughput between source & sink.”
“Assign tasks to workers optimally.” | Airline scheduling, bipartite job matching, sports tournament brackets, cloud resource allocation, image stitching (max‑flow min‑cut). | +| **Indexing & spatial search** | Binary‑Search Trees (AVL, Red‑Black), Segment / Fenwick / Interval trees, K‑d trees, R‑trees | “Store & query ordered or geometric data in log n or faster.” | Database indexes (B‑tree variants), text editors’ rope structures, collision detection in games, GIS range queries. | +| **Heuristics, AI & game search** | Min‑Max with α‑β pruning, Monte‑Carlo Tree Search | “Choose the best move given branching factor.” | Chess/Go engines, real‑time strategy AI, automated theorem proving. | +| **Graph analytics** | PageRank, HITS, Betweenness Centrality, community detection (Louvain, Girvan‑Newman) | “Which nodes are most influential?”
“How is the network clustered?” | Web‑search ranking, social‑network influence scores, fraud‑ring detection, recommendation engines. | diff --git a/libs/algorithms/PRIMER.md b/libs/algorithms/PRIMER.md index 73d4adb..12b8469 100644 --- a/libs/algorithms/PRIMER.md +++ b/libs/algorithms/PRIMER.md @@ -24,16 +24,3 @@ Probing Techniques: * **Linear Probing:** Search sequentially for the next available slot. `index = (hash + i) % table_size` * **Quadratic Probing:** Use quadratic intervals to find the next slot. `index = (hash + i^2) % table_size` * **Double Hashing:** Use a second hash function to find the next slot. `index = (hash1 + i * hash2) % table_size` - -#### What tree / graph algorithms shine at (the greatest hits) - -| Theme | Canonical algorithms | Typical questions they answer | Real‑world systems & examples | -| ------------------------------------ | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- | -| **Connectivity & reachability** | DFS/BFS, Union‑Find, Tarjan’s SCC | “Are *A* and *B* connected?”
“How many components / islands exist?” | Link‑state routing (OSPF), social‑graph friend suggestions, detecting cycles in build dependency graphs. | -| **Shortest & cheapest paths** | Dijkstra, A\*, Bellman‑Ford, Floyd‑Warshall, bidirectional search | “What is the minimum‑cost route from X to Y?” | Google Maps, GPS nav, network QoS routing, robot path planning in warehouses. | -| **Spanning structures & clustering** | Kruskal / Prim MST, Borůvka, DSU‑based clustering | “Connect all nodes with the smallest total cost.” | Electrical grid layout, fiber/cable network design, image segmentation via minimal spanning forests. | -| **Scheduling & dependency ordering** | Topological sort (Kahn / DFS), Critical‑Path Method, DAG DP | “In which order can we compile packages?”
“What’s the longest path in a DAG (project duration)?” | `make`/Bazel build systems, course‑prerequisite planning, CI/CD job ordering, project management tools. | -| **Network flow & matching** | Ford‑Fulkerson, Edmonds‑Karp, Dinic, Hopcroft–Karp, Kuhn‑Munkres | “Max throughput between source & sink.”
“Assign tasks to workers optimally.” | Airline scheduling, bipartite job matching, sports tournament brackets, cloud resource allocation, image stitching (max‑flow min‑cut). | -| **Indexing & spatial search** | Binary‑Search Trees (AVL, Red‑Black), Segment / Fenwick / Interval trees, K‑d trees, R‑trees | “Store & query ordered or geometric data in log n or faster.” | Database indexes (B‑tree variants), text editors’ rope structures, collision detection in games, GIS range queries. | -| **Heuristics, AI & game search** | Min‑Max with α‑β pruning, Monte‑Carlo Tree Search | “Choose the best move given branching factor.” | Chess/Go engines, real‑time strategy AI, automated theorem proving. | -| **Graph analytics** | PageRank, HITS, Betweenness Centrality, community detection (Louvain, Girvan‑Newman) | “Which nodes are most influential?”
“How is the network clustered?” | Web‑search ranking, social‑network influence scores, fraud‑ring detection, recommendation engines. | diff --git a/libs/algorithms/_docs/ARRAY_BASED_ALGORITHMS.svg b/libs/algorithms/_docs/ARRAY_BASED_ALGORITHMS.svg index 6476eab..9131a5b 100644 --- a/libs/algorithms/_docs/ARRAY_BASED_ALGORITHMS.svg +++ b/libs/algorithms/_docs/ARRAY_BASED_ALGORITHMS.svg @@ -1 +1 @@ -Array Based AlgorithmsArray Based AlgorithmsData TypesArray Based AlgorithmsArrayStringStackDequeMapSet<Array Processing><Backtracking><Sliding Window><String Processing><Two Pointer><Two Pointer Greedy>parentheses decodeunique‑char variantwindow max/minfreq-count variantbuilds on pointer opsgreedy variantshrink/grow strategyanagram window \ No newline at end of file +Array Based AlgorithmsArray Based AlgorithmsData TypesArray Based AlgorithmsArrayStringStackDequeMapSet<Array Processing><Backtracking><Sliding Window><String Processing><Two Pointer><Two Pointer Greedy>parentheses decodeunique‑char variantwindow max/minfreq-count variantbuilds on pointer opsgreedy variantshrink/grow strategyanagram window \ No newline at end of file diff --git a/libs/algorithms/_docs/PRIMITIVES_BASED_ALGORITHMS.svg b/libs/algorithms/_docs/PRIMITIVES_BASED_ALGORITHMS.svg index 82b8e49..90a91e2 100644 --- a/libs/algorithms/_docs/PRIMITIVES_BASED_ALGORITHMS.svg +++ b/libs/algorithms/_docs/PRIMITIVES_BASED_ALGORITHMS.svg @@ -1 +1 @@ -Algorithms<-> Data-Types "Primitives Based Algorithms""Algorithms<-> Data-Types "Primitives Based Algorithms""Data TypesPrimitives Based AlgorithmsArrayStringStackMapSetIntegerBits<Bit Manipulation><Buffers><Hashing><Math: Geometry (Simple)><Math: Number Theory><Regex>"hash‑table / dict""bit vectors / word ops"balanced-brackets \ No newline at end of file +Algorithms<-> Data-Types "Primitives Based Algorithms""Algorithms<-> Data-Types "Primitives Based Algorithms""Data TypesPrimitives Based AlgorithmsArrayStringStackMapSetIntegerBits<Bit Manipulation><Buffers><Hashing><Math: Geometry (Simple)><Math: Number Theory><Regex>"hash‑table / dict""bit vectors / word ops"balanced-brackets \ No newline at end of file diff --git a/libs/algorithms/_docs/TREE_GRAPH_BASED_ALGORITHMS.svg b/libs/algorithms/_docs/TREE_GRAPH_BASED_ALGORITHMS.svg index bc66bbc..569e081 100644 --- a/libs/algorithms/_docs/TREE_GRAPH_BASED_ALGORITHMS.svg +++ b/libs/algorithms/_docs/TREE_GRAPH_BASED_ALGORITHMS.svg @@ -1 +1 @@ -Tree/Graph Based AlgorithmsTree/Graph Based AlgorithmsLinear Data TypesNon-Linear Data TypesCore ParadigmsTree/Graph Based AlgorithmsSpecialised AlgorithmsArray«hash-table»MapStackGraphHeapUnionFindQueue<Binary Search><Divide & Conquer><Dynamic Programming><Jump Search><Dijkstra><Graphing><Priority><Pathing><Sorting><Topological Sort><Math: Combinatorics><Math: Geometry (Complex)><Simulation / Design><Constructive>recursion stackDSU-on-tree / offline queriesconnected componentsBFS / shortest pathKruskal’s MSTheapsort branchEdge sorting for KruskalKahn's sort algoDFS sort variantparametric searchsubdivide search spacemergesort/quicksortoverlap + memoskip then seekpath finding algosgeometry graphs (Voronoi, Delaunay) \ No newline at end of file +Tree/Graph Based AlgorithmsTree/Graph Based AlgorithmsLinear Data TypesNon-Linear Data TypesCore ParadigmsTree/Graph Based AlgorithmsSpecialised AlgorithmsArray«hash-table»MapStackGraphHeapUnionFindQueue<Binary Search><Divide & Conquer><Dynamic Programming><Jump Search><Dijkstra><Graphing><Priority><Pathing><Sorting><Topological Sort><Math: Combinatorics><Math: Geometry (Complex)><Simulation / Design><Constructive>recursion stackDSU-on-tree / offline queriesconnected componentsBFS / shortest pathKruskal’s MSTheapsort branchEdge sorting for KruskalKahn's sort algoDFS sort variantparametric searchsubdivide search spacemergesort/quicksortoverlap + memoskip then seekpath finding algosgeometry graphs (Voronoi, Delaunay) \ No newline at end of file diff --git a/libs/algorithms/index.ts b/libs/algorithms/index.ts index fcc2691..a48cb66 100644 --- a/libs/algorithms/index.ts +++ b/libs/algorithms/index.ts @@ -1 +1 @@ -export { deleteNode } from './array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements' +export * from './src/index.js' diff --git a/libs/algorithms/package.json b/libs/algorithms/package.json index 0ea9a8a..eca8cea 100644 --- a/libs/algorithms/package.json +++ b/libs/algorithms/package.json @@ -4,13 +4,21 @@ "description": "", "main": "index.js", "private": true, + "type": "module", "scripts": { - "algorithms:test": "bun test **/*.spec.ts" + "algorithms:typecheck": "tsc --noEmit", + "algorithms:test": "bun test **/*.spec.ts", + "algorithms:lint": "npm run algorithms:typecheck && prettier **/*.ts --write", + "algorithms:build": "nx build" }, "keywords": [], "author": "", "license": "UNLICENSED", "dependencies": { "@proveo/cs-datatypes": "workspace:*" + }, + "devDependencies": { + "glob": "^11.0.3", + "vite": "^5.0.0" } } diff --git a/libs/algorithms/project.json b/libs/algorithms/project.json new file mode 100644 index 0000000..c726353 --- /dev/null +++ b/libs/algorithms/project.json @@ -0,0 +1,21 @@ +{ + "name": "@proveo/cs-algorithms", + "projectType": "library", + "root": "libs/algorithms", + "sourceRoot": "libs/algorithms/src", + "namedInputs": { + "default": ["{projectRoot}/**/*"], + "puml": ["{projectRoot}/_docs/**/*.puml"] + }, + "targets": { + "docs": { + "executor": "nx:run-commands", + "inputs": ["puml"], + "options": { + "command": "docker run --rm -v $(pwd)/libs/algorithms/_docs:/workspace ghcr.io/plantuml/plantuml -tsvg /workspace/*.puml", + "parallel": false + }, + "outputs": ["{projectRoot}/_docs"] + } + } +} diff --git a/libs/algorithms/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.md b/libs/algorithms/src/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.md similarity index 100% rename from libs/algorithms/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.md rename to libs/algorithms/src/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.md diff --git a/libs/algorithms/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.spec.ts b/libs/algorithms/src/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.spec.ts similarity index 100% rename from libs/algorithms/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.spec.ts rename to libs/algorithms/src/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.spec.ts diff --git a/libs/algorithms/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.ts b/libs/algorithms/src/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.ts similarity index 100% rename from libs/algorithms/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.ts rename to libs/algorithms/src/array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.ts diff --git a/libs/algorithms/array-processing/203-remove-linked-list-elements/img.png b/libs/algorithms/src/array-processing/203-remove-linked-list-elements/img.png similarity index 100% rename from libs/algorithms/array-processing/203-remove-linked-list-elements/img.png rename to libs/algorithms/src/array-processing/203-remove-linked-list-elements/img.png diff --git a/libs/algorithms/array-processing/206-reverse-linked-list/206-reverse-linked-list.md b/libs/algorithms/src/array-processing/206-reverse-linked-list/206-reverse-linked-list.md similarity index 100% rename from libs/algorithms/array-processing/206-reverse-linked-list/206-reverse-linked-list.md rename to libs/algorithms/src/array-processing/206-reverse-linked-list/206-reverse-linked-list.md diff --git a/libs/algorithms/array-processing/206-reverse-linked-list/206-reverse-linked-list.ts b/libs/algorithms/src/array-processing/206-reverse-linked-list/206-reverse-linked-list.ts similarity index 74% rename from libs/algorithms/array-processing/206-reverse-linked-list/206-reverse-linked-list.ts rename to libs/algorithms/src/array-processing/206-reverse-linked-list/206-reverse-linked-list.ts index 03dc167..9227c35 100644 --- a/libs/algorithms/array-processing/206-reverse-linked-list/206-reverse-linked-list.ts +++ b/libs/algorithms/src/array-processing/206-reverse-linked-list/206-reverse-linked-list.ts @@ -1,7 +1,7 @@ -import { LinkedListNode } from 'libs/data-types/doubly-linked-list-node' -import { LinkedList } from 'data-types/linked-list' +import { LinkedListNode } from '@proveo/cs-datatypes' +import { LinkedList } from '@proveo/cs-datatypes' -function reverseHead (head) { +function reverseHead (head: LinkedListNode) { if (!head || !head.next) { return head } @@ -14,13 +14,13 @@ function reverseHead (head) { reversedHead.next = tail tail = reversedHead - currentNode = currentNode.next + currentNode = currentNode.next! } return reversedHead } -const reverse = function (head) { +const reverse = function (head: LinkedListNode) { const originalList = new LinkedList() originalList.head = head diff --git a/libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.md b/libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.md similarity index 100% rename from libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.md rename to libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.md diff --git a/libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.spec.ts b/libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.spec.ts similarity index 99% rename from libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.spec.ts rename to libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.spec.ts index 3adab93..61350e7 100644 --- a/libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.spec.ts +++ b/libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.spec.ts @@ -1,5 +1,5 @@ import { describe, test, expect } from "bun:test"; -import { productExceptSelf } from "./238-product-or-array-except-self.js"; +import { productExceptSelf } from "./238-product-or-array-except-self"; describe("238. Product of Array Except Self", () => { test("Example from the problem statement", () => { diff --git a/libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.ts b/libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.ts similarity index 100% rename from libs/algorithms/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.ts rename to libs/algorithms/src/array-processing/238-product-or-array-except-self/238-product-or-array-except-self.ts diff --git a/libs/algorithms/backtracking/46-permutations/46-permutations.md b/libs/algorithms/src/backtracking/46-permutations/46-permutations.md similarity index 100% rename from libs/algorithms/backtracking/46-permutations/46-permutations.md rename to libs/algorithms/src/backtracking/46-permutations/46-permutations.md diff --git a/libs/algorithms/backtracking/46-permutations/46-permutations.ts b/libs/algorithms/src/backtracking/46-permutations/46-permutations.ts similarity index 100% rename from libs/algorithms/backtracking/46-permutations/46-permutations.ts rename to libs/algorithms/src/backtracking/46-permutations/46-permutations.ts diff --git a/libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.md b/libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.md similarity index 100% rename from libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.md rename to libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.md diff --git a/libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.spec.ts b/libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.spec.ts similarity index 82% rename from libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.spec.ts rename to libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.spec.ts index 7f1d939..5006d90 100644 --- a/libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.spec.ts +++ b/libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.spec.ts @@ -1,12 +1,12 @@ import { describe, expect, it } from 'bun:test' -import { BinaryTree } from 'data-types/index.js' -import { breadthSearchIterator } from './102-binary-tree-level-order-traversal' +import { BinaryTree } from '@proveo/cs-datatypes' +import { breadthSearchIterator } from './102-binary-tree-level-order-traversal.js' describe('Breadth Search Iterator (Level-order Traversal) tests', () => { - it('should handle a null tree', () => { - const tree = new BinaryTree(null) + it('should handle an undefined tree', () => { + const tree = new BinaryTree(undefined) - expect(breadthSearchIterator(tree.root)).toBe('null') + expect(breadthSearchIterator(tree.root)).toBe('undefined') }) it('should handle a single node binary tree: ', () => { const tree = new BinaryTree([100]) diff --git a/libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.ts b/libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.ts similarity index 79% rename from libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.ts rename to libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.ts index e9b918e..9dc58ce 100644 --- a/libs/algorithms/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.ts +++ b/libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.ts @@ -1,19 +1,19 @@ -import { Queue } from 'data-types/queue' -import { BinaryTreeNode } from 'data-types/binary-tree-node' +import { Queue } from '@proveo/cs-datatypes' +import { BinaryTreeNode } from '@proveo/cs-datatypes' // For a breadth search iterations, we'll use 2 queues. // The current queue describes the current level, and we'll be enqueuing children // Onto the next queue, until the current level is empty. We'll swap the queues references // To iterate, until the current queue is empty: -export const breadthSearchIterator = function (root: BinaryTreeNode) { +export const breadthSearchIterator = function (root: BinaryTreeNode | null) { let treeString = '' if (!root || (!root.data && !root.left && !root.right)) { - treeString += 'null' + treeString += 'undefined' } else { let queues = [ - new Queue(), - new Queue(), + new Queue>(), + new Queue>(), ] let currentQueue = queues[0] @@ -22,7 +22,7 @@ export const breadthSearchIterator = function (root: BinaryTreeNode) { currentQueue.enqueue(root) // Printing nodes in level-order until the current queue remains empty - while (currentQueue._items.length > 0) { + while (currentQueue.size() > 0) { let currentNode = currentQueue.dequeue() treeString += String(currentNode.data) @@ -37,9 +37,9 @@ export const breadthSearchIterator = function (root: BinaryTreeNode) { // When the current queue is empty, we increase the level, print a new line // and swap the current and next queues - if (currentQueue._items.length == 0) { + if (currentQueue.size() == 0) { ++levelNumber - if (nextQueue._items.length != 0) { + if (nextQueue.size() != 0) { treeString += ' : ' } currentQueue = queues[levelNumber % 2] diff --git a/libs/algorithms/binary-search/102-binary-tree-level-order-traversal/img.png b/libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/img.png similarity index 100% rename from libs/algorithms/binary-search/102-binary-tree-level-order-traversal/img.png rename to libs/algorithms/src/binary-search/102-binary-tree-level-order-traversal/img.png diff --git a/libs/algorithms/binary-search/104-maximum-depth-of-binary-tree/104-maximum-depth-of-binary-tree.md b/libs/algorithms/src/binary-search/104-maximum-depth-of-binary-tree/104-maximum-depth-of-binary-tree.md similarity index 100% rename from libs/algorithms/binary-search/104-maximum-depth-of-binary-tree/104-maximum-depth-of-binary-tree.md rename to libs/algorithms/src/binary-search/104-maximum-depth-of-binary-tree/104-maximum-depth-of-binary-tree.md diff --git a/libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.md b/libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.md similarity index 100% rename from libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.md rename to libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.md diff --git a/libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.spec.ts b/libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.spec.ts similarity index 83% rename from libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.spec.ts rename to libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.spec.ts index a662717..b13a7f2 100644 --- a/libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.spec.ts +++ b/libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.spec.ts @@ -1,12 +1,12 @@ import { describe, expect, it } from 'bun:test' -import { BinaryTree } from 'data-types/binary-tree' -import { depthSearchIterator } from './173-binary-search-tree-iterator' +import { BinaryTree } from '@proveo/cs-datatypes' +import { depthSearchIterator } from './173-binary-search-tree-iterator.js' describe('Depth Search Iterator (In-Order Trasversal) tests', () => { - it('should handle null values', () => { - const tree = new BinaryTree(null) + it('should handle undefined values', () => { + const tree = new BinaryTree(undefined) - expect(depthSearchIterator(tree.root)).toBe('null') + expect(depthSearchIterator(tree.root)).toBe('undefined') }) it('should handle single nodes', () => { const tree = new BinaryTree([100]) diff --git a/libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.ts b/libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.ts similarity index 73% rename from libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.ts rename to libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.ts index 96f0240..a689fa0 100644 --- a/libs/algorithms/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.ts +++ b/libs/algorithms/src/binary-search/173-binary-search-tree-iterator/173-binary-search-tree-iterator.ts @@ -1,13 +1,13 @@ -import { Stack } from 'data-types/stack' -import { BinaryTreeNode } from 'data-types/binary-tree-node' +import { Stack } from '@proveo/cs-datatypes' +import { BinaryTreeNode } from '@proveo/cs-datatypes' // Depth search first: // A stack will be filled from the root to the leftmost node, then at every node popped out // we check if it has a right node, and stack all the way to its leftmost node class InOrderIterator { - depthStack: Stack + depthStack: Stack - constructor(root: BinaryTreeNode) { + constructor(root: BinaryTreeNode) { this.depthStack = new Stack() // Assuming that when iterator is initialized // it is always at the first element of tree in its in-order @@ -15,16 +15,16 @@ class InOrderIterator { } // Function to populate the stack from the root till the left-most node - populateStack(root) { + populateStack(root: BinaryTreeNode) { while (root) { this.depthStack.push(root) - root = root.left + root = root.left! } } // This function checks if there is a node next in line inside the iterator hasNext() { - if (!this.depthStack || this.depthStack._items.length === 0) { + if (!this.depthStack || this.depthStack.size() === 0) { return false } else { return true @@ -34,7 +34,7 @@ class InOrderIterator { // getNext returns null if there are no more elements in tree getNext() { // Return null if there's no succeeding node to return - if (!this.depthStack || this.depthStack._items.length === 0) { + if (!this.depthStack || this.depthStack.size() === 0) { return null } @@ -51,9 +51,13 @@ class InOrderIterator { // This function returns the in-order list of nodes using the hasNext() and // getNext() methods -export const depthSearchIterator = function (root: BinaryTreeNode): string { - const iterator = new InOrderIterator(root) +export const depthSearchIterator = function (root: BinaryTreeNode | null): string { let treeString = '' + + if (!root || (!root.data && !root.left && !root.right)) { + treeString += 'undefined' + } + const iterator = new InOrderIterator(root!) while (iterator.hasNext()) { const currentTreeNode = iterator.getNext() if (iterator.hasNext()) { @@ -63,7 +67,7 @@ export const depthSearchIterator = function (root: BinaryTreeNode): string { } } if (treeString === '') { - treeString = 'null' + treeString = 'undefined' } return treeString } diff --git a/libs/algorithms/binary-search/173-binary-search-tree-iterator/img.png b/libs/algorithms/src/binary-search/173-binary-search-tree-iterator/img.png similarity index 100% rename from libs/algorithms/binary-search/173-binary-search-tree-iterator/img.png rename to libs/algorithms/src/binary-search/173-binary-search-tree-iterator/img.png diff --git a/libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.md b/libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.md similarity index 100% rename from libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.md rename to libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.md diff --git a/libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.spec.ts b/libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.spec.ts similarity index 72% rename from libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.spec.ts rename to libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.spec.ts index 429786b..53b54e9 100644 --- a/libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.spec.ts +++ b/libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.spec.ts @@ -1,14 +1,14 @@ import { describe, expect, it } from 'bun:test' -import { BinaryTree } from 'data-types/binary-tree' -import { mirrorBinaryTree } from './226-invert-binary-tree' -import { breadthSearchIterator } from './bfs/102-binary-tree-level-order-traversal' +import { BinaryTree } from '@proveo/cs-datatypes' +import { mirrorBinaryTree } from './226-invert-binary-tree.js' +import { breadthSearchIterator } from '../102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.js'; describe('Mirror binary tree tests', () => { it('should handle a normal binary search tree', () => { const input = [100, 50, 200, 25, 75, 125, 350] const tree = new BinaryTree(input) mirrorBinaryTree(tree.root) - const mirroredTree = tree.getTreeDeepCopy() + const mirroredTree = tree.getTreeDeepCopy()! const mirroredTreeString = breadthSearchIterator(mirroredTree.root) expect(mirroredTreeString).toBe('100 : 200, 50 : 350, 125, 75, 25') @@ -24,7 +24,7 @@ describe('Mirror binary tree tests', () => { tree.insert(125) tree.insert(350) mirrorBinaryTree(tree.root) - const mirroredTree = tree.getTreeDeepCopy() + const mirroredTree = tree.getTreeDeepCopy()! const mirroredTreeString = breadthSearchIterator(mirroredTree.root) expect(mirroredTreeString).toBe('100 : 200, 50 : 350, 125, 110, 25') diff --git a/libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.ts b/libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.ts similarity index 72% rename from libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.ts rename to libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.ts index 54d1d0c..2e77b59 100644 --- a/libs/algorithms/binary-search/226-invert-binary-tree/226-invert-binary-tree.ts +++ b/libs/algorithms/src/binary-search/226-invert-binary-tree/226-invert-binary-tree.ts @@ -1,6 +1,6 @@ -import { BinaryTreeNode } from 'data-types/binary-tree-node' +import { BinaryTreeNode } from '@proveo/cs-datatypes' -function swapNodes(node: BinaryTreeNode) { +function swapNodes(node: BinaryTreeNode) { // Base case: end recursive call if current node is null if (!node) { return @@ -22,8 +22,8 @@ function swapNodes(node: BinaryTreeNode) { // Don't need an explicit stack to do an in-order traversal search. // JS' call stack will do. -export const mirrorBinaryTree = function (root: BinaryTreeNode): BinaryTreeNode { +export const mirrorBinaryTree = function (root: BinaryTreeNode): BinaryTreeNode { swapNodes(root) return root -} \ No newline at end of file +} diff --git a/libs/algorithms/binary-search/226-invert-binary-tree/img.png b/libs/algorithms/src/binary-search/226-invert-binary-tree/img.png similarity index 100% rename from libs/algorithms/binary-search/226-invert-binary-tree/img.png rename to libs/algorithms/src/binary-search/226-invert-binary-tree/img.png diff --git a/libs/algorithms/binary-search/226-invert-binary-tree/img_1.png b/libs/algorithms/src/binary-search/226-invert-binary-tree/img_1.png similarity index 100% rename from libs/algorithms/binary-search/226-invert-binary-tree/img_1.png rename to libs/algorithms/src/binary-search/226-invert-binary-tree/img_1.png diff --git a/libs/algorithms/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.md b/libs/algorithms/src/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.md similarity index 100% rename from libs/algorithms/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.md rename to libs/algorithms/src/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.md diff --git a/libs/algorithms/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.ts b/libs/algorithms/src/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.ts similarity index 100% rename from libs/algorithms/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.ts rename to libs/algorithms/src/binary-search/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.ts diff --git a/libs/algorithms/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.md b/libs/algorithms/src/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.md similarity index 100% rename from libs/algorithms/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.md rename to libs/algorithms/src/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.md diff --git a/libs/algorithms/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.ts b/libs/algorithms/src/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.ts similarity index 100% rename from libs/algorithms/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.ts rename to libs/algorithms/src/binary-search/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.ts diff --git a/libs/algorithms/binary-search/704-binary-search/704-binary-search.md b/libs/algorithms/src/binary-search/704-binary-search/704-binary-search.md similarity index 100% rename from libs/algorithms/binary-search/704-binary-search/704-binary-search.md rename to libs/algorithms/src/binary-search/704-binary-search/704-binary-search.md diff --git a/libs/algorithms/bit-manipulation/191-number-of-1-bits/191-number-of-1-bits.md b/libs/algorithms/src/bit-manipulation/191-number-of-1-bits/191-number-of-1-bits.md similarity index 100% rename from libs/algorithms/bit-manipulation/191-number-of-1-bits/191-number-of-1-bits.md rename to libs/algorithms/src/bit-manipulation/191-number-of-1-bits/191-number-of-1-bits.md diff --git a/libs/algorithms/bit-manipulation/201-bitwise-and-of-numbers-range/201-bitwise-and-of-numbers-range.md b/libs/algorithms/src/bit-manipulation/201-bitwise-and-of-numbers-range/201-bitwise-and-of-numbers-range.md similarity index 100% rename from libs/algorithms/bit-manipulation/201-bitwise-and-of-numbers-range/201-bitwise-and-of-numbers-range.md rename to libs/algorithms/src/bit-manipulation/201-bitwise-and-of-numbers-range/201-bitwise-and-of-numbers-range.md diff --git a/libs/algorithms/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.md b/libs/algorithms/src/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.md similarity index 100% rename from libs/algorithms/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.md rename to libs/algorithms/src/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.md diff --git a/libs/algorithms/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.spec.ts b/libs/algorithms/src/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.spec.ts similarity index 100% rename from libs/algorithms/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.spec.ts rename to libs/algorithms/src/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.spec.ts diff --git a/libs/algorithms/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts b/libs/algorithms/src/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts similarity index 100% rename from libs/algorithms/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts rename to libs/algorithms/src/buffers/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts diff --git a/libs/algorithms/buffers/PRIMER.md b/libs/algorithms/src/buffers/PRIMER.md similarity index 100% rename from libs/algorithms/buffers/PRIMER.md rename to libs/algorithms/src/buffers/PRIMER.md diff --git a/libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/108-convert-sorted-array-to-binary-search-tree.md b/libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/108-convert-sorted-array-to-binary-search-tree.md similarity index 100% rename from libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/108-convert-sorted-array-to-binary-search-tree.md rename to libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/108-convert-sorted-array-to-binary-search-tree.md diff --git a/libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img.png b/libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img.png similarity index 100% rename from libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img.png rename to libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img.png diff --git a/libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_1.png b/libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_1.png similarity index 100% rename from libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_1.png rename to libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_1.png diff --git a/libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_2.png b/libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_2.png similarity index 100% rename from libs/algorithms/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_2.png rename to libs/algorithms/src/divide-and-conquer/108-convert-sorted-array-to-binary-search-tree/img_2.png diff --git a/libs/algorithms/divide-and-conquer/23-merge-k-sorted-lists/23-merge-k-sorted-lists.md b/libs/algorithms/src/divide-and-conquer/23-merge-k-sorted-lists/23-merge-k-sorted-lists.md similarity index 100% rename from libs/algorithms/divide-and-conquer/23-merge-k-sorted-lists/23-merge-k-sorted-lists.md rename to libs/algorithms/src/divide-and-conquer/23-merge-k-sorted-lists/23-merge-k-sorted-lists.md diff --git a/libs/algorithms/dynamic-programming/0-1-knapsack/0-1-knapsack.ts b/libs/algorithms/src/dynamic-programming/0-1-knapsack/0-1-knapsack.ts similarity index 100% rename from libs/algorithms/dynamic-programming/0-1-knapsack/0-1-knapsack.ts rename to libs/algorithms/src/dynamic-programming/0-1-knapsack/0-1-knapsack.ts diff --git a/libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.md b/libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.md similarity index 100% rename from libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.md rename to libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.md diff --git a/libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.spec.ts b/libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.spec.ts similarity index 96% rename from libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.spec.ts rename to libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.spec.ts index 135d3d2..f94a395 100644 --- a/libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.spec.ts +++ b/libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.spec.ts @@ -1,5 +1,5 @@ import { describe, test, expect } from "bun:test"; -import { isSubsequence } from "./392-is-subsequence.js"; +import { isSubsequence } from "./392-is-subsequence"; describe("392. Is Subsequence", () => { test("Example from the problem statement - true case", () => { diff --git a/libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.ts b/libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.ts similarity index 100% rename from libs/algorithms/dynamic-programming/392-is-subsequence/392-is-subsequence.ts rename to libs/algorithms/src/dynamic-programming/392-is-subsequence/392-is-subsequence.ts diff --git a/libs/algorithms/dynamic-programming/PRIMER.md b/libs/algorithms/src/dynamic-programming/PRIMER.md similarity index 100% rename from libs/algorithms/dynamic-programming/PRIMER.md rename to libs/algorithms/src/dynamic-programming/PRIMER.md diff --git a/libs/algorithms/graphing/200-number-of-islands/200-number-of-islands.md b/libs/algorithms/src/graphing/200-number-of-islands/200-number-of-islands.md similarity index 100% rename from libs/algorithms/graphing/200-number-of-islands/200-number-of-islands.md rename to libs/algorithms/src/graphing/200-number-of-islands/200-number-of-islands.md diff --git a/libs/algorithms/hashing/12-integer-to-roman/12-integer-to-roman.md b/libs/algorithms/src/hashing/12-integer-to-roman/12-integer-to-roman.md similarity index 100% rename from libs/algorithms/hashing/12-integer-to-roman/12-integer-to-roman.md rename to libs/algorithms/src/hashing/12-integer-to-roman/12-integer-to-roman.md diff --git a/libs/algorithms/hashing/12-integer-to-roman/12-integer-to-roman.spec.ts b/libs/algorithms/src/hashing/12-integer-to-roman/12-integer-to-roman.spec.ts similarity index 100% rename from libs/algorithms/hashing/12-integer-to-roman/12-integer-to-roman.spec.ts rename to libs/algorithms/src/hashing/12-integer-to-roman/12-integer-to-roman.spec.ts diff --git a/libs/algorithms/hashing/12-integer-to-roman/12-integer-to-roman.ts b/libs/algorithms/src/hashing/12-integer-to-roman/12-integer-to-roman.ts similarity index 100% rename from libs/algorithms/hashing/12-integer-to-roman/12-integer-to-roman.ts rename to libs/algorithms/src/hashing/12-integer-to-roman/12-integer-to-roman.ts diff --git a/libs/algorithms/hashing/13-roman-to-integer/13-roman-to-integer.md b/libs/algorithms/src/hashing/13-roman-to-integer/13-roman-to-integer.md similarity index 100% rename from libs/algorithms/hashing/13-roman-to-integer/13-roman-to-integer.md rename to libs/algorithms/src/hashing/13-roman-to-integer/13-roman-to-integer.md diff --git a/libs/algorithms/hashing/13-roman-to-integer/13-roman-to-integer.spec.ts b/libs/algorithms/src/hashing/13-roman-to-integer/13-roman-to-integer.spec.ts similarity index 100% rename from libs/algorithms/hashing/13-roman-to-integer/13-roman-to-integer.spec.ts rename to libs/algorithms/src/hashing/13-roman-to-integer/13-roman-to-integer.spec.ts diff --git a/libs/algorithms/hashing/13-roman-to-integer/13-roman-to-integer.ts b/libs/algorithms/src/hashing/13-roman-to-integer/13-roman-to-integer.ts similarity index 100% rename from libs/algorithms/hashing/13-roman-to-integer/13-roman-to-integer.ts rename to libs/algorithms/src/hashing/13-roman-to-integer/13-roman-to-integer.ts diff --git a/libs/algorithms/hashing/169-majority-element/169-majority-element.md b/libs/algorithms/src/hashing/169-majority-element/169-majority-element.md similarity index 100% rename from libs/algorithms/hashing/169-majority-element/169-majority-element.md rename to libs/algorithms/src/hashing/169-majority-element/169-majority-element.md diff --git a/libs/algorithms/hashing/169-majority-element/169-majority-element.spec.ts b/libs/algorithms/src/hashing/169-majority-element/169-majority-element.spec.ts similarity index 100% rename from libs/algorithms/hashing/169-majority-element/169-majority-element.spec.ts rename to libs/algorithms/src/hashing/169-majority-element/169-majority-element.spec.ts diff --git a/libs/algorithms/hashing/169-majority-element/169-majority-element.ts b/libs/algorithms/src/hashing/169-majority-element/169-majority-element.ts similarity index 100% rename from libs/algorithms/hashing/169-majority-element/169-majority-element.ts rename to libs/algorithms/src/hashing/169-majority-element/169-majority-element.ts diff --git a/libs/algorithms/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.md b/libs/algorithms/src/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.md similarity index 100% rename from libs/algorithms/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.md rename to libs/algorithms/src/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.md diff --git a/libs/algorithms/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.spec.ts b/libs/algorithms/src/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.spec.ts similarity index 100% rename from libs/algorithms/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.spec.ts rename to libs/algorithms/src/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.spec.ts diff --git a/libs/algorithms/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.ts b/libs/algorithms/src/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.ts similarity index 100% rename from libs/algorithms/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.ts rename to libs/algorithms/src/hashing/380-insert-delete-getrandom/380-insert-delete-getrandom.ts diff --git a/libs/algorithms/hashing/cuckoo-hashing/cuckoo-hashing.spec.ts b/libs/algorithms/src/hashing/cuckoo-hashing/cuckoo-hashing.spec.ts similarity index 100% rename from libs/algorithms/hashing/cuckoo-hashing/cuckoo-hashing.spec.ts rename to libs/algorithms/src/hashing/cuckoo-hashing/cuckoo-hashing.spec.ts diff --git a/libs/algorithms/hashing/cuckoo-hashing/cuckoo-hashing.ts b/libs/algorithms/src/hashing/cuckoo-hashing/cuckoo-hashing.ts similarity index 100% rename from libs/algorithms/hashing/cuckoo-hashing/cuckoo-hashing.ts rename to libs/algorithms/src/hashing/cuckoo-hashing/cuckoo-hashing.ts diff --git a/libs/algorithms/src/index.ts b/libs/algorithms/src/index.ts new file mode 100644 index 0000000..a696ffd --- /dev/null +++ b/libs/algorithms/src/index.ts @@ -0,0 +1 @@ +export { deleteNode } from './array-processing/203-remove-linked-list-elements/203-remove-linked-list-elements.js' diff --git a/libs/algorithms/jump-search/35-search-insert-position/35-search-insert-position.md b/libs/algorithms/src/jump-search/35-search-insert-position/35-search-insert-position.md similarity index 100% rename from libs/algorithms/jump-search/35-search-insert-position/35-search-insert-position.md rename to libs/algorithms/src/jump-search/35-search-insert-position/35-search-insert-position.md diff --git a/libs/algorithms/math-geometry/149-max-points-on-a-line/149-max-points-on-a-line.md b/libs/algorithms/src/math-geometry/149-max-points-on-a-line/149-max-points-on-a-line.md similarity index 100% rename from libs/algorithms/math-geometry/149-max-points-on-a-line/149-max-points-on-a-line.md rename to libs/algorithms/src/math-geometry/149-max-points-on-a-line/149-max-points-on-a-line.md diff --git a/libs/algorithms/math-number-theory/172-factorial-trailing-zeroes/172-factorial-trailing-zeroes.md b/libs/algorithms/src/math-number-theory/172-factorial-trailing-zeroes/172-factorial-trailing-zeroes.md similarity index 100% rename from libs/algorithms/math-number-theory/172-factorial-trailing-zeroes/172-factorial-trailing-zeroes.md rename to libs/algorithms/src/math-number-theory/172-factorial-trailing-zeroes/172-factorial-trailing-zeroes.md diff --git a/libs/algorithms/pathing/20-valid-parentheses/20-valid-parentheses.md b/libs/algorithms/src/pathing/20-valid-parentheses/20-valid-parentheses.md similarity index 100% rename from libs/algorithms/pathing/20-valid-parentheses/20-valid-parentheses.md rename to libs/algorithms/src/pathing/20-valid-parentheses/20-valid-parentheses.md diff --git a/libs/algorithms/pathing/210-course-schedule/210-course-schedule.md b/libs/algorithms/src/pathing/210-course-schedule/210-course-schedule.md similarity index 100% rename from libs/algorithms/pathing/210-course-schedule/210-course-schedule.md rename to libs/algorithms/src/pathing/210-course-schedule/210-course-schedule.md diff --git a/libs/algorithms/priority/215-kth-largest-element/215-kth-largest-element.md b/libs/algorithms/src/priority/215-kth-largest-element/215-kth-largest-element.md similarity index 100% rename from libs/algorithms/priority/215-kth-largest-element/215-kth-largest-element.md rename to libs/algorithms/src/priority/215-kth-largest-element/215-kth-largest-element.md diff --git a/libs/algorithms/priority/502-ipo/502-ipo.md b/libs/algorithms/src/priority/502-ipo/502-ipo.md similarity index 100% rename from libs/algorithms/priority/502-ipo/502-ipo.md rename to libs/algorithms/src/priority/502-ipo/502-ipo.md diff --git a/libs/algorithms/regex/10-regular-expression-matching/10-regular-expression-matching.md b/libs/algorithms/src/regex/10-regular-expression-matching/10-regular-expression-matching.md similarity index 100% rename from libs/algorithms/regex/10-regular-expression-matching/10-regular-expression-matching.md rename to libs/algorithms/src/regex/10-regular-expression-matching/10-regular-expression-matching.md diff --git a/libs/algorithms/regex/PRIMER.md b/libs/algorithms/src/regex/PRIMER.md similarity index 100% rename from libs/algorithms/regex/PRIMER.md rename to libs/algorithms/src/regex/PRIMER.md diff --git a/libs/algorithms/sliding-window/3-longest-substring-without-repeating-characters/3-longest-substring-without-repeating-characters.md b/libs/algorithms/src/sliding-window/3-longest-substring-without-repeating-characters/3-longest-substring-without-repeating-characters.md similarity index 100% rename from libs/algorithms/sliding-window/3-longest-substring-without-repeating-characters/3-longest-substring-without-repeating-characters.md rename to libs/algorithms/src/sliding-window/3-longest-substring-without-repeating-characters/3-longest-substring-without-repeating-characters.md diff --git a/libs/algorithms/sliding-window/30-substring-with-concatenation-of-all-words/30-substring-with-concatenation-of-all-words.md b/libs/algorithms/src/sliding-window/30-substring-with-concatenation-of-all-words/30-substring-with-concatenation-of-all-words.md similarity index 100% rename from libs/algorithms/sliding-window/30-substring-with-concatenation-of-all-words/30-substring-with-concatenation-of-all-words.md rename to libs/algorithms/src/sliding-window/30-substring-with-concatenation-of-all-words/30-substring-with-concatenation-of-all-words.md diff --git a/libs/algorithms/sorting/189-rotate-array/189-rotate-array.md b/libs/algorithms/src/sorting/189-rotate-array/189-rotate-array.md similarity index 100% rename from libs/algorithms/sorting/189-rotate-array/189-rotate-array.md rename to libs/algorithms/src/sorting/189-rotate-array/189-rotate-array.md diff --git a/libs/algorithms/sorting/189-rotate-array/189-rotate-array.spec.ts b/libs/algorithms/src/sorting/189-rotate-array/189-rotate-array.spec.ts similarity index 100% rename from libs/algorithms/sorting/189-rotate-array/189-rotate-array.spec.ts rename to libs/algorithms/src/sorting/189-rotate-array/189-rotate-array.spec.ts diff --git a/libs/algorithms/sorting/189-rotate-array/189-rotate-array.ts b/libs/algorithms/src/sorting/189-rotate-array/189-rotate-array.ts similarity index 100% rename from libs/algorithms/sorting/189-rotate-array/189-rotate-array.ts rename to libs/algorithms/src/sorting/189-rotate-array/189-rotate-array.ts diff --git a/libs/algorithms/sorting/274-h-index/274-h-index.md b/libs/algorithms/src/sorting/274-h-index/274-h-index.md similarity index 100% rename from libs/algorithms/sorting/274-h-index/274-h-index.md rename to libs/algorithms/src/sorting/274-h-index/274-h-index.md diff --git a/libs/algorithms/sorting/274-h-index/274-h-index.spec.ts b/libs/algorithms/src/sorting/274-h-index/274-h-index.spec.ts similarity index 100% rename from libs/algorithms/sorting/274-h-index/274-h-index.spec.ts rename to libs/algorithms/src/sorting/274-h-index/274-h-index.spec.ts diff --git a/libs/algorithms/sorting/274-h-index/274-h-index.ts b/libs/algorithms/src/sorting/274-h-index/274-h-index.ts similarity index 100% rename from libs/algorithms/sorting/274-h-index/274-h-index.ts rename to libs/algorithms/src/sorting/274-h-index/274-h-index.ts diff --git a/libs/algorithms/sorting/912-sort-an-array/912-sort-an-array.md b/libs/algorithms/src/sorting/912-sort-an-array/912-sort-an-array.md similarity index 100% rename from libs/algorithms/sorting/912-sort-an-array/912-sort-an-array.md rename to libs/algorithms/src/sorting/912-sort-an-array/912-sort-an-array.md diff --git a/libs/algorithms/sorting/912-sort-an-array/912-sort-an-array.ts b/libs/algorithms/src/sorting/912-sort-an-array/912-sort-an-array.ts similarity index 100% rename from libs/algorithms/sorting/912-sort-an-array/912-sort-an-array.ts rename to libs/algorithms/src/sorting/912-sort-an-array/912-sort-an-array.ts diff --git a/libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.js b/libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.js similarity index 98% rename from libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.js rename to libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.js index bb79f29..001be4c 100644 --- a/libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.js +++ b/libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js'; +import { consoleDiff } from '../../../../utils/consoleDiff.js'; /** * Finds the longest common prefix string amongst an array of strings diff --git a/libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.md b/libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.md similarity index 100% rename from libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.md rename to libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.md diff --git a/libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.spec.ts b/libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.spec.ts similarity index 100% rename from libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.spec.ts rename to libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.spec.ts diff --git a/libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.ts b/libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.ts similarity index 100% rename from libs/algorithms/string-processing/14-longest-common-prefix/14-longest-common-prefix.ts rename to libs/algorithms/src/string-processing/14-longest-common-prefix/14-longest-common-prefix.ts diff --git a/libs/algorithms/string-processing/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts b/libs/algorithms/src/string-processing/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts similarity index 100% rename from libs/algorithms/string-processing/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts rename to libs/algorithms/src/string-processing/151-reverse-words-in-a-string/151-reverse-words-in-a-string.ts diff --git a/libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.js b/libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.js similarity index 100% rename from libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.js rename to libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.js diff --git a/libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.md b/libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.md similarity index 100% rename from libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.md rename to libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.md diff --git a/libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.spec.ts b/libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.spec.ts similarity index 100% rename from libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.spec.ts rename to libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.spec.ts diff --git a/libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.ts b/libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.ts similarity index 100% rename from libs/algorithms/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.ts rename to libs/algorithms/src/string-processing/28-find-index-first-occurrence-in-a-string/28-find-index-first-occurrence-in-a-string.ts diff --git a/libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.js b/libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.js similarity index 97% rename from libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.js rename to libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.js index 33c21e3..8392084 100644 --- a/libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.js +++ b/libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js'; +import { consoleDiff } from '../../../../utils/consoleDiff.js'; /** * Returns the length of the last word in a string diff --git a/libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.md b/libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.md similarity index 100% rename from libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.md rename to libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.md diff --git a/libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.spec.ts b/libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.spec.ts similarity index 100% rename from libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.spec.ts rename to libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.spec.ts diff --git a/libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.ts b/libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.ts similarity index 100% rename from libs/algorithms/string-processing/58-length-of-last-word/58-length-of-last-word.ts rename to libs/algorithms/src/string-processing/58-length-of-last-word/58-length-of-last-word.ts diff --git a/libs/algorithms/string-processing/68-text-justification/68-text-justification.js b/libs/algorithms/src/string-processing/68-text-justification/68-text-justification.js similarity index 98% rename from libs/algorithms/string-processing/68-text-justification/68-text-justification.js rename to libs/algorithms/src/string-processing/68-text-justification/68-text-justification.js index e98fd1e..b83f93e 100644 --- a/libs/algorithms/string-processing/68-text-justification/68-text-justification.js +++ b/libs/algorithms/src/string-processing/68-text-justification/68-text-justification.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js'; +import { consoleDiff } from '../../../../utils/consoleDiff.js'; /** * Formats text with full justification diff --git a/libs/algorithms/string-processing/68-text-justification/68-text-justification.md b/libs/algorithms/src/string-processing/68-text-justification/68-text-justification.md similarity index 100% rename from libs/algorithms/string-processing/68-text-justification/68-text-justification.md rename to libs/algorithms/src/string-processing/68-text-justification/68-text-justification.md diff --git a/libs/algorithms/string-processing/68-text-justification/68-text-justification.spec.ts b/libs/algorithms/src/string-processing/68-text-justification/68-text-justification.spec.ts similarity index 100% rename from libs/algorithms/string-processing/68-text-justification/68-text-justification.spec.ts rename to libs/algorithms/src/string-processing/68-text-justification/68-text-justification.spec.ts diff --git a/libs/algorithms/string-processing/68-text-justification/68-text-justification.ts b/libs/algorithms/src/string-processing/68-text-justification/68-text-justification.ts similarity index 100% rename from libs/algorithms/string-processing/68-text-justification/68-text-justification.ts rename to libs/algorithms/src/string-processing/68-text-justification/68-text-justification.ts diff --git a/libs/algorithms/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.js b/libs/algorithms/src/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.js similarity index 100% rename from libs/algorithms/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.js rename to libs/algorithms/src/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.js diff --git a/libs/algorithms/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.md b/libs/algorithms/src/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.md similarity index 100% rename from libs/algorithms/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.md rename to libs/algorithms/src/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.md diff --git a/libs/algorithms/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.spec.ts b/libs/algorithms/src/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.spec.ts similarity index 100% rename from libs/algorithms/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.spec.ts rename to libs/algorithms/src/two-pointer-greedy/121-best-time-to-buy-stock/121-best-time-to-buy-stock.spec.ts diff --git a/libs/algorithms/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.js b/libs/algorithms/src/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.js similarity index 100% rename from libs/algorithms/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.js rename to libs/algorithms/src/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.js diff --git a/libs/algorithms/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.md b/libs/algorithms/src/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.md similarity index 100% rename from libs/algorithms/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.md rename to libs/algorithms/src/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.md diff --git a/libs/algorithms/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.spec.ts b/libs/algorithms/src/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.spec.ts similarity index 100% rename from libs/algorithms/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.spec.ts rename to libs/algorithms/src/two-pointer-greedy/122-best-time-to-buy-stock/122-best-time-to-buy-stock.spec.ts diff --git a/libs/algorithms/two-pointer-greedy/134-gas-station/134-gas-station.js b/libs/algorithms/src/two-pointer-greedy/134-gas-station/134-gas-station.js similarity index 100% rename from libs/algorithms/two-pointer-greedy/134-gas-station/134-gas-station.js rename to libs/algorithms/src/two-pointer-greedy/134-gas-station/134-gas-station.js diff --git a/libs/algorithms/two-pointer-greedy/134-gas-station/134-gas-station.md b/libs/algorithms/src/two-pointer-greedy/134-gas-station/134-gas-station.md similarity index 100% rename from libs/algorithms/two-pointer-greedy/134-gas-station/134-gas-station.md rename to libs/algorithms/src/two-pointer-greedy/134-gas-station/134-gas-station.md diff --git a/libs/algorithms/two-pointer-greedy/134-gas-station/134-gas-station.spec.ts b/libs/algorithms/src/two-pointer-greedy/134-gas-station/134-gas-station.spec.ts similarity index 100% rename from libs/algorithms/two-pointer-greedy/134-gas-station/134-gas-station.spec.ts rename to libs/algorithms/src/two-pointer-greedy/134-gas-station/134-gas-station.spec.ts diff --git a/libs/algorithms/two-pointer-greedy/135-candy/135-candy.js b/libs/algorithms/src/two-pointer-greedy/135-candy/135-candy.js similarity index 97% rename from libs/algorithms/two-pointer-greedy/135-candy/135-candy.js rename to libs/algorithms/src/two-pointer-greedy/135-candy/135-candy.js index 1da1445..43afff4 100644 --- a/libs/algorithms/two-pointer-greedy/135-candy/135-candy.js +++ b/libs/algorithms/src/two-pointer-greedy/135-candy/135-candy.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js'; +import { consoleDiff } from '../../../../utils/consoleDiff.js'; /** * Calculates the minimum number of candies needed to distribute to children diff --git a/libs/algorithms/two-pointer-greedy/135-candy/135-candy.md b/libs/algorithms/src/two-pointer-greedy/135-candy/135-candy.md similarity index 100% rename from libs/algorithms/two-pointer-greedy/135-candy/135-candy.md rename to libs/algorithms/src/two-pointer-greedy/135-candy/135-candy.md diff --git a/libs/algorithms/two-pointer-greedy/45-jump-game/45-jump-game.js b/libs/algorithms/src/two-pointer-greedy/45-jump-game/45-jump-game.js similarity index 97% rename from libs/algorithms/two-pointer-greedy/45-jump-game/45-jump-game.js rename to libs/algorithms/src/two-pointer-greedy/45-jump-game/45-jump-game.js index 80388ab..f309388 100644 --- a/libs/algorithms/two-pointer-greedy/45-jump-game/45-jump-game.js +++ b/libs/algorithms/src/two-pointer-greedy/45-jump-game/45-jump-game.js @@ -1,4 +1,4 @@ -import { sleep } from '../../../utils/sleep.js' +import { sleep } from '../../../../utils/sleep.js' /** * Calculates the minimum number of jumps needed to reach the last index diff --git a/libs/algorithms/two-pointer-greedy/45-jump-game/45-jump-game.md b/libs/algorithms/src/two-pointer-greedy/45-jump-game/45-jump-game.md similarity index 100% rename from libs/algorithms/two-pointer-greedy/45-jump-game/45-jump-game.md rename to libs/algorithms/src/two-pointer-greedy/45-jump-game/45-jump-game.md diff --git a/libs/algorithms/two-pointer-greedy/55-jump-game/55-jump-game.js b/libs/algorithms/src/two-pointer-greedy/55-jump-game/55-jump-game.js similarity index 100% rename from libs/algorithms/two-pointer-greedy/55-jump-game/55-jump-game.js rename to libs/algorithms/src/two-pointer-greedy/55-jump-game/55-jump-game.js diff --git a/libs/algorithms/two-pointer-greedy/55-jump-game/55-jump-game.md b/libs/algorithms/src/two-pointer-greedy/55-jump-game/55-jump-game.md similarity index 100% rename from libs/algorithms/two-pointer-greedy/55-jump-game/55-jump-game.md rename to libs/algorithms/src/two-pointer-greedy/55-jump-game/55-jump-game.md diff --git a/libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.js b/libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.js similarity index 98% rename from libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.js rename to libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.js index e2caa20..aa86310 100644 --- a/libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.js +++ b/libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js' +import { consoleDiff } from '../../../../utils/consoleDiff.js' /** * Remove duplicates from a sorted array in-place diff --git a/libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.md b/libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.md similarity index 100% rename from libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.md rename to libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.md diff --git a/libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.spec.ts b/libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.spec.ts similarity index 100% rename from libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.spec.ts rename to libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.spec.ts diff --git a/libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.ts b/libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.ts similarity index 100% rename from libs/algorithms/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.ts rename to libs/algorithms/src/two-pointer/26-remove-duplicates-from-sorted-array/26-remove-duplicates-from-sorted-array.ts diff --git a/libs/algorithms/two-pointer/27-remove-element/27-remove-element.js b/libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.js similarity index 98% rename from libs/algorithms/two-pointer/27-remove-element/27-remove-element.js rename to libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.js index 231d00b..1fa62eb 100644 --- a/libs/algorithms/two-pointer/27-remove-element/27-remove-element.js +++ b/libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js' +import { consoleDiff } from '../../../../utils/consoleDiff.js' /** * Remove all occurrences of val from nums in-place diff --git a/libs/algorithms/two-pointer/27-remove-element/27-remove-element.md b/libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.md similarity index 100% rename from libs/algorithms/two-pointer/27-remove-element/27-remove-element.md rename to libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.md diff --git a/libs/algorithms/two-pointer/27-remove-element/27-remove-element.spec.ts b/libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.spec.ts similarity index 100% rename from libs/algorithms/two-pointer/27-remove-element/27-remove-element.spec.ts rename to libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.spec.ts diff --git a/libs/algorithms/two-pointer/27-remove-element/27-remove-element.ts b/libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.ts similarity index 100% rename from libs/algorithms/two-pointer/27-remove-element/27-remove-element.ts rename to libs/algorithms/src/two-pointer/27-remove-element/27-remove-element.ts diff --git a/libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.js b/libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.js similarity index 97% rename from libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.js rename to libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.js index 5a85da3..ddcee93 100644 --- a/libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.js +++ b/libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js'; +import { consoleDiff } from '../../../../utils/consoleDiff.js'; /** * Calculates how much water can be trapped after raining diff --git a/libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.md b/libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.md similarity index 100% rename from libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.md rename to libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.md diff --git a/libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.spec.ts b/libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.spec.ts similarity index 100% rename from libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.spec.ts rename to libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.spec.ts diff --git a/libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.ts b/libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.ts similarity index 100% rename from libs/algorithms/two-pointer/42-trapping-rain-water/42-trapping-rain-water.ts rename to libs/algorithms/src/two-pointer/42-trapping-rain-water/42-trapping-rain-water.ts diff --git a/libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.js b/libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.js similarity index 98% rename from libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.js rename to libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.js index de8a642..c64f6b6 100644 --- a/libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.js +++ b/libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js' +import { consoleDiff } from '../../../../utils/consoleDiff.js' /** * Remove duplicates from a sorted array in-place such that each element appears at most twice diff --git a/libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.md b/libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.md similarity index 100% rename from libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.md rename to libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.md diff --git a/libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.spec.ts b/libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.spec.ts similarity index 100% rename from libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.spec.ts rename to libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.spec.ts diff --git a/libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.ts b/libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.ts similarity index 100% rename from libs/algorithms/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.ts rename to libs/algorithms/src/two-pointer/80-remove-duplicates-from-sorted-array/80-remove-duplicates-from-sorted-array.ts diff --git a/libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.js b/libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.js similarity index 98% rename from libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.js rename to libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.js index c565147..227612f 100644 --- a/libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.js +++ b/libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.js @@ -1,4 +1,4 @@ -import { consoleDiff } from '../../../utils/consoleDiff.js' +import { consoleDiff } from '../../../../utils/consoleDiff.js' /** * Merge two sorted arrays into the first array diff --git a/libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.md b/libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.md similarity index 100% rename from libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.md rename to libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.md diff --git a/libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.spec.ts b/libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.spec.ts similarity index 100% rename from libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.spec.ts rename to libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.spec.ts diff --git a/libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.ts b/libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.ts similarity index 100% rename from libs/algorithms/two-pointer/88-merge-sorted-array/88-merge-sorted-array.ts rename to libs/algorithms/src/two-pointer/88-merge-sorted-array/88-merge-sorted-array.ts diff --git a/libs/algorithms/union-find/502-number-of-provinces/502-number-of-provinces.md b/libs/algorithms/src/union-find/502-number-of-provinces/502-number-of-provinces.md similarity index 100% rename from libs/algorithms/union-find/502-number-of-provinces/502-number-of-provinces.md rename to libs/algorithms/src/union-find/502-number-of-provinces/502-number-of-provinces.md diff --git a/libs/algorithms/union-find/502-number-of-provinces/img.png b/libs/algorithms/src/union-find/502-number-of-provinces/img.png similarity index 100% rename from libs/algorithms/union-find/502-number-of-provinces/img.png rename to libs/algorithms/src/union-find/502-number-of-provinces/img.png diff --git a/libs/algorithms/union-find/502-number-of-provinces/img_1.png b/libs/algorithms/src/union-find/502-number-of-provinces/img_1.png similarity index 100% rename from libs/algorithms/union-find/502-number-of-provinces/img_1.png rename to libs/algorithms/src/union-find/502-number-of-provinces/img_1.png diff --git a/libs/algorithms/tsconfig.json b/libs/algorithms/tsconfig.json index 4082f16..816a2d5 100644 --- a/libs/algorithms/tsconfig.json +++ b/libs/algorithms/tsconfig.json @@ -1,3 +1,8 @@ { - "extends": "../../tsconfig.json" + "extends": "../../tsconfig.json", + "references": [ + { + "path": "../datatypes" + } + ] } diff --git a/libs/algorithms/vite.config.ts b/libs/algorithms/vite.config.ts new file mode 100644 index 0000000..55a3127 --- /dev/null +++ b/libs/algorithms/vite.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'vite' +import { resolve } from 'path' +import { glob } from 'glob' + +export default defineConfig({ + build: { + lib: { + entry: resolve(__dirname, 'src/index.ts'), + name: 'Algorithms', + fileName: 'algorithms', + formats: ['es', 'cjs'] + }, + rollupOptions: { + output: { + inlineDynamicImports: false + } + }, + }, +}); diff --git a/libs/datatypes/_docs/DATATYPES_CLASSES.svg b/libs/datatypes/_docs/DATATYPES_CLASSES.svg index 6b835fa..904cfbf 100644 --- a/libs/datatypes/_docs/DATATYPES_CLASSES.svg +++ b/libs/datatypes/_docs/DATATYPES_CLASSES.svg @@ -1 +1 @@ -Key relationships between datastructuresKey relationships between datastructuresNative building-blocksLinear Data structuresNon-linear Data structuresTreesObject/Map/Dictionary...get()keys()values()...()Array/List...push()pop()...()Set...has()add()delete()...()LinkedListhead: LinkedListNode<T>insertAtHead()removeHead()fromArray()LinkedListNodedata: Tnext: LinkedListNode<T>DoublyLinkedListhead: DoublyLinkedListNode<T>tail: DoublyLinkedListNode<T>insertAtHead()insertAtTail()removeHead()removeTail()fromArray()DoublyLinkedListNodeprev: DoublyLinkedListNode<T>Stackitems: Array<T>push()pop()Queueitems: DoublyLinkedList<T>isEmpty()size()peek()enqueue()dequeue()Dequeitems: DoublyLinkedList<T>head: DoublyLinkedListNode<T>tail: DoublyLinkedListNode<T>isEmpty()size()peekAtHead()peekAtTail()extractHead()extractTail()...()"Double-ended Queue"PriorityQueueheap: Heap<T>isEmpty()peek()enqueue()dequeue()MinPriorityQueueheap: MinHeap<T>...()getMinPriority()MaxPriorityQueueheap: MaxHeap<T>...()getMaxPriority()Graphadjacency: Map<T, Array<T>>verticesCount: numberaddVertex()addEdge()hasCycle()BFS()DFS()DirectedGraph......()addDirectedEdge()topologicalSort()UnionFindparent: Array<int>rank: Array<int>find()union()areConnected()setCount()BinarySearchTreeNodedata: Tleft: BinaryTreeNode<T>right: BinaryTreeNode<T>parent: BinaryTreeNode<T>BinarySearchTreeroot: BinarySearchTreeNode<T>size: numberBFS()DFS()isEmpty()insert()searchByKey()deleteByKey()AVLTreeNode...height: numberAVLTreeroot: AVLTreeNode<T>...()getBalance()leftRotate()rightRotate()Heapitems: Array<T>size: numbercapacity: numberleft()right()parent()heapify()insert()deleteByKey()MinHeap......()heapify()peekMin()extractMin()MaxHeap......()heapify()peekMax()extractMax()TrieNodechildren: Map<char, TrieNode>isEndOfWord: booleanTrieroot: TrieNodesize: numberinsert()search()startsWith()delete()parent/rank tablesDFS Traversal methodsRecursion: Function call stackcontains1..*contains1..*BFS Traversal methodsnodes1..*'AVL adds balancing in BSTnodes1..*nodes1 ..* \ No newline at end of file +Key relationships between datastructuresKey relationships between datastructuresNative building-blocksLinear Data structuresNon-linear Data structuresTreesObject/Map/Dictionary...get()keys()values()...()Array/List...push()pop()...()Set...has()add()delete()...()LinkedListhead: LinkedListNode<T>insertAtHead()removeHead()fromArray()LinkedListNodedata: Tnext: LinkedListNode<T>DoublyLinkedListhead: DoublyLinkedListNode<T>tail: DoublyLinkedListNode<T>insertAtHead()insertAtTail()removeHead()removeTail()fromArray()DoublyLinkedListNodeprev: DoublyLinkedListNode<T>Stackitems: Array<T>push()pop()Queueitems: DoublyLinkedList<T>isEmpty()size()peek()enqueue()dequeue()Dequeitems: DoublyLinkedList<T>head: DoublyLinkedListNode<T>tail: DoublyLinkedListNode<T>isEmpty()size()peekAtHead()peekAtTail()extractHead()extractTail()...()"Double-ended Queue"PriorityQueueheap: Heap<T>isEmpty()peek()enqueue()dequeue()MinPriorityQueueheap: MinHeap<T>...()getMinPriority()MaxPriorityQueueheap: MaxHeap<T>...()getMaxPriority()Graphadjacency: Map<T, Array<T>>verticesCount: numberaddVertex()addEdge()hasCycle()BFS()DFS()DirectedGraph......()addDirectedEdge()topologicalSort()UnionFindparent: Array<int>rank: Array<int>find()union()areConnected()setCount()BinarySearchTreeNodedata: Tleft: BinaryTreeNode<T>right: BinaryTreeNode<T>parent: BinaryTreeNode<T>BinarySearchTreeroot: BinarySearchTreeNode<T>size: numberBFS()DFS()isEmpty()insert()searchByKey()deleteByKey()AVLTreeNode...height: numberAVLTreeroot: AVLTreeNode<T>...()getBalance()leftRotate()rightRotate()Heapitems: Array<T>size: numbercapacity: numberleft()right()parent()heapify()insert()deleteByKey()MinHeap......()heapify()peekMin()extractMin()MaxHeap......()heapify()peekMax()extractMax()TrieNodechildren: Map<char, TrieNode>isEndOfWord: booleanTrieroot: TrieNodesize: numberinsert()search()startsWith()delete()parent/rank tablesDFS Traversal methodsRecursion: Function call stackcontains1..*contains1..*BFS Traversal methodsnodes1..*'AVL adds balancing in BSTnodes1..*nodes1 ..* \ No newline at end of file diff --git a/libs/datatypes/binary-tree-node/index.ts b/libs/datatypes/binary-tree-node/index.ts deleted file mode 100644 index 5ef6840..0000000 --- a/libs/datatypes/binary-tree-node/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './binary-tree-node'; diff --git a/libs/datatypes/binary-tree/index.ts b/libs/datatypes/binary-tree/index.ts deleted file mode 100644 index d554eda..0000000 --- a/libs/datatypes/binary-tree/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './binary-tree'; diff --git a/libs/datatypes/deque/index.ts b/libs/datatypes/deque/index.ts deleted file mode 100644 index 89df62c..0000000 --- a/libs/datatypes/deque/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './deque'; diff --git a/libs/datatypes/doubly-linked-list-node/index.ts b/libs/datatypes/doubly-linked-list-node/index.ts deleted file mode 100644 index 32e95df..0000000 --- a/libs/datatypes/doubly-linked-list-node/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './doubly-linked-list-node'; diff --git a/libs/datatypes/doubly-linked-list/index.ts b/libs/datatypes/doubly-linked-list/index.ts deleted file mode 100644 index 4462926..0000000 --- a/libs/datatypes/doubly-linked-list/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './doubly-linked-list'; diff --git a/libs/datatypes/heap/heap.spec.ts b/libs/datatypes/heap/heap.spec.ts deleted file mode 100644 index 448f0f6..0000000 --- a/libs/datatypes/heap/heap.spec.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { describe, test, expect } from 'bun:test'; -import { MinHeap } from '../min-heap/min-heap'; -import { MaxHeap } from '../max-heap/max-heap'; - -describe('Heap', () => { - describe('MinHeap', () => { - test('should create an empty min heap', () => { - const startTime = performance.now(); - const heap = new MinHeap(); - const endTime = performance.now(); - const executionTime = endTime - startTime; - - expect(heap.isEmpty()).toBe(true); - expect(heap.size()).toBe(0); - expect(heap.peekMin()).toBeUndefined(); - - console.log(`MinHeap creation: ${executionTime.toFixed(3)} ms`); - }); - - test('should insert and maintain min heap property', () => { - const heap = new MinHeap(); - - const startTime = performance.now(); - heap.insert(10); - heap.insert(5); - heap.insert(15); - heap.insert(3); - heap.insert(8); - const endTime = performance.now(); - const executionTime = endTime - startTime; - - expect(heap.size()).toBe(5); - expect(heap.peekMin()).toBe(3); - - console.log( - `MinHeap insertion operations: ${executionTime.toFixed(3)} ms` - ); - }); - - test('should extract minimum elements correctly', () => { - const heap = new MinHeap(); - const items = [10, 5, 15, 3, 8, 12, 1]; - - for (const item of items) { - heap.insert(item); - } - - const startTime = performance.now(); - const extracted: number[] = []; - while (!heap.isEmpty()) { - extracted.push(heap.extractMin()); - } - const endTime = performance.now(); - const executionTime = endTime - startTime; - - expect(extracted).toEqual([1, 3, 5, 8, 10, 12, 15]); - - console.log( - `MinHeap extraction operations: ${executionTime.toFixed(3)} ms` - ); - }); - - test('should build heap from array efficiently', () => { - const items = [10, 5, 15, 3, 8, 12, 1]; - - const startTime = performance.now(); - const heap = MinHeap.buildHeap(items); - const endTime = performance.now(); - const executionTime = endTime - startTime; - - expect(heap.size()).toBe(7); - expect(heap.peekMin()).toBe(1); - - console.log( - `MinHeap buildHeap operation: ${executionTime.toFixed(3)} ms` - ); - }); - }); - - describe('MaxHeap', () => { - test('should create an empty max heap', () => { - const heap = new MaxHeap(); - - expect(heap.isEmpty()).toBe(true); - expect(heap.size()).toBe(0); - expect(heap.peekMax()).toBeUndefined(); - }); - - test('should insert and maintain max heap property', () => { - const heap = new MaxHeap(); - - heap.insert(10); - heap.insert(5); - heap.insert(15); - heap.insert(3); - heap.insert(8); - - expect(heap.size()).toBe(5); - expect(heap.peekMax()).toBe(15); - }); - - test('should extract maximum elements correctly', () => { - const heap = new MaxHeap(); - const items = [10, 5, 15, 3, 8, 12, 1]; - - for (const item of items) { - heap.insert(item); - } - - const extracted: number[] = []; - while (!heap.isEmpty()) { - extracted.push(heap.extractMax()); - } - - expect(extracted).toEqual([15, 12, 10, 8, 5, 3, 1]); - }); - }); - - test('should handle capacity limits', () => { - const heap = new MinHeap(3); - - heap.insert(1); - heap.insert(2); - heap.insert(3); - - expect(() => heap.insert(4)).toThrow('Heap is full - cannot insert'); - }); - - test('should throw error when extracting from empty heap', () => { - const heap = new MinHeap(); - - expect(() => heap.extractMin()).toThrow('Heap is empty - cannot extract'); - }); - - test('performance with large dataset', () => { - const heap = new MinHeap(10000); - const dataSize = 5000; - - const startTime = performance.now(); - for (let i = dataSize; i > 0; i--) { - heap.insert(i); - } - const endTime = performance.now(); - const executionTime = endTime - startTime; - - expect(heap.size()).toBe(dataSize); - expect(heap.peekMin()).toBe(1); - - console.log( - `Large dataset insertion (${dataSize} items): ${executionTime.toFixed( - 3 - )} ms` - ); - - const extractStartTime = performance.now(); - const extracted: number[] = []; - for (let i = 0; i < 100; i++) { - extracted.push(heap.extractMin()); - } - const extractEndTime = performance.now(); - const extractExecutionTime = extractEndTime - extractStartTime; - - expect(extracted).toEqual(Array.from({ length: 100 }, (_, i) => i + 1)); - - console.log( - `Large dataset extraction (100 items): ${extractExecutionTime.toFixed( - 3 - )} ms` - ); - }); -}); diff --git a/libs/datatypes/index.ts b/libs/datatypes/index.ts index 9157749..25dfc6e 100644 --- a/libs/datatypes/index.ts +++ b/libs/datatypes/index.ts @@ -1,33 +1,32 @@ // Node implementations -export { BinaryTreeNode } from './binary-tree-node/binary-tree-node'; -export { DoublyLinkedListNode } from './doubly-linked-list-node/doubly-linked-list-node'; -export { LinkedListNode } from './linked-list-node/linked-list-node'; -export { TrieNode } from './trie-node/trie-node'; +export { BinaryTreeNode } from './src/binary-tree-node/binary-tree-node.js'; +export { AVLTreeNode } from './src/avl-tree-node/avl-tree-node.js'; +export { DoublyLinkedListNode } from './src/doubly-linked-list-node/doubly-linked-list-node.js'; +export { LinkedListNode } from './src/linked-list-node/linked-list-node.js'; +export { TrieNode } from './src/trie-node/trie-node.js'; // Linear data structures -export { LinkedList } from './linked-list/linked-list'; -export { DoublyLinkedList } from './doubly-linked-list/doubly-linked-list'; -export { Stack } from './stack/stack'; -export { Queue } from './queue/queue'; -export { Deque } from './deque/deque'; +export { LinkedList } from './src/linked-list/linked-list.js'; +export { DoublyLinkedList } from './src/doubly-linked-list/doubly-linked-list.js'; +export { Stack } from './src/stack/stack.js'; +export { Queue } from './src/queue/queue.js'; +export { Deque } from './src/deque/deque.js'; // Tree data structures -export { BinaryTree } from './binary-tree/binary-tree'; -export { Trie } from './trie/trie'; +export { BinaryTree } from './src/binary-tree/binary-tree.js'; +export { AVLTree } from './src/avl-tree/avl-tree.js'; +export { Trie } from './src/trie/trie.js'; // Heap data structures -export { Heap } from './heap/heap'; -export { MinHeap } from './min-heap/min-heap'; -export { MaxHeap } from './max-heap/max-heap'; +export { Heap } from './src/heap/heap.js'; +export { MinHeap } from './src/min-heap/min-heap.js'; +export { MaxHeap } from './src/max-heap/max-heap.js'; // Priority Queue data structures -export { PriorityQueue, PriorityNode } from './priority-queue/priority-queue'; -export { MinPriorityQueue } from './min-priority-queue/min-priority-queue'; -export { MaxPriorityQueue } from './max-priority-queue/max-priority-queue'; +export { PriorityQueue, type PriorityNode } from './src/priority-queue/priority-queue.js'; +export { MinPriorityQueue } from './src/min-priority-queue/min-priority-queue.js'; +export { MaxPriorityQueue } from './src/max-priority-queue/max-priority-queue.js'; // Graph data structures -export { Graph } from './graph/graph'; -export { DirectedGraph } from './directed-graph/directed-graph'; - -// Legacy exports (if needed) -export { GeneratorLinkedList } from './generator-linked-list/generator-linked-list'; +export { Graph } from './src/graph/graph.js'; +export { DirectedGraph } from './src/directed-graph/directed-graph.js'; diff --git a/libs/datatypes/linked-list-node/index.ts b/libs/datatypes/linked-list-node/index.ts deleted file mode 100644 index 85e3294..0000000 --- a/libs/datatypes/linked-list-node/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './linked-list-node'; diff --git a/libs/datatypes/linked-list/index.ts b/libs/datatypes/linked-list/index.ts deleted file mode 100644 index 5b38e5a..0000000 --- a/libs/datatypes/linked-list/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './linked-list'; diff --git a/libs/datatypes/package.json b/libs/datatypes/package.json index ec469f7..0a8cd28 100644 --- a/libs/datatypes/package.json +++ b/libs/datatypes/package.json @@ -2,10 +2,18 @@ "name": "@proveo/cs-datatypes", "version": "1.0.0", "description": "", - "main": "index.js", + "main": "index.ts", "private": true, + "type": "module", "scripts": { - "datatypes:test": "bun test **/*.spec.ts" + "datatypes:build": "nx build", + "datatypes:typecheck": "tsc --noEmit", + "datatypes:test": "bun test **/*.spec.ts", + "datatypes:lint": "npm run datatypes:typecheck && prettier **/*.ts --write" + }, + "devDependencies": { + "vite": "^5.0.0", + "vite-plugin-dts": "^3.0.0" }, "keywords": [], "author": "Roberto von Schoettler ", diff --git a/libs/datatypes/project.json b/libs/datatypes/project.json new file mode 100644 index 0000000..1756c92 --- /dev/null +++ b/libs/datatypes/project.json @@ -0,0 +1,21 @@ +{ + "name": "@proveo/cs-datatypes", + "projectType": "library", + "root": "libs/datatypes", + "sourceRoot": "libs/datatypes/src", + "namedInputs": { + "default": ["{projectRoot}/**/*"], + "puml": ["{projectRoot}/_docs/**/*.puml"] + }, + "targets": { + "docs": { + "executor": "nx:run-commands", + "inputs": ["puml"], + "options": { + "command": "docker run --rm -v $(pwd)/libs/datatypes/_docs:/workspace ghcr.io/plantuml/plantuml -tsvg /workspace/*.puml", + "parallel": false + }, + "outputs": ["{projectRoot}/_docs"] + } + } +} diff --git a/libs/datatypes/queue/index.ts b/libs/datatypes/queue/index.ts deleted file mode 100644 index cadd6a9..0000000 --- a/libs/datatypes/queue/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './queue'; diff --git a/libs/datatypes/avl-tree-node/avl-tree-node.ts b/libs/datatypes/src/avl-tree-node/avl-tree-node.ts similarity index 99% rename from libs/datatypes/avl-tree-node/avl-tree-node.ts rename to libs/datatypes/src/avl-tree-node/avl-tree-node.ts index 4880c8d..e4b7a30 100644 --- a/libs/datatypes/avl-tree-node/avl-tree-node.ts +++ b/libs/datatypes/src/avl-tree-node/avl-tree-node.ts @@ -1,4 +1,4 @@ -import { BinaryTreeNode } from '../binary-tree-node/binary-tree-node'; +import { BinaryTreeNode } from '../binary-tree-node/binary-tree-node.js'; /** * AVL Tree Node - extends BinaryTreeNode with height tracking for self-balancing diff --git a/libs/datatypes/src/avl-tree-node/index.ts b/libs/datatypes/src/avl-tree-node/index.ts new file mode 100644 index 0000000..88afeb9 --- /dev/null +++ b/libs/datatypes/src/avl-tree-node/index.ts @@ -0,0 +1 @@ +export * from './avl-tree-node.js' diff --git a/libs/datatypes/avl-tree/avl-tree.spec.ts b/libs/datatypes/src/avl-tree/avl-tree.spec.ts similarity index 100% rename from libs/datatypes/avl-tree/avl-tree.spec.ts rename to libs/datatypes/src/avl-tree/avl-tree.spec.ts diff --git a/libs/datatypes/avl-tree/avl-tree.ts b/libs/datatypes/src/avl-tree/avl-tree.ts similarity index 99% rename from libs/datatypes/avl-tree/avl-tree.ts rename to libs/datatypes/src/avl-tree/avl-tree.ts index a2c0720..47dba83 100644 --- a/libs/datatypes/avl-tree/avl-tree.ts +++ b/libs/datatypes/src/avl-tree/avl-tree.ts @@ -1,4 +1,4 @@ -import { AVLTreeNode } from '../avl-tree-node/avl-tree-node'; +import { AVLTreeNode } from '../avl-tree-node/avl-tree-node.js'; /** * AVL Tree - Self-balancing Binary Search Tree diff --git a/libs/datatypes/src/avl-tree/index.ts b/libs/datatypes/src/avl-tree/index.ts new file mode 100644 index 0000000..639fff3 --- /dev/null +++ b/libs/datatypes/src/avl-tree/index.ts @@ -0,0 +1 @@ +export * from './avl-tree.js' diff --git a/libs/datatypes/binary-tree-node/binary-tree-node.spec.ts b/libs/datatypes/src/binary-tree-node/binary-tree-node.spec.ts similarity index 100% rename from libs/datatypes/binary-tree-node/binary-tree-node.spec.ts rename to libs/datatypes/src/binary-tree-node/binary-tree-node.spec.ts diff --git a/libs/datatypes/binary-tree-node/binary-tree-node.ts b/libs/datatypes/src/binary-tree-node/binary-tree-node.ts similarity index 100% rename from libs/datatypes/binary-tree-node/binary-tree-node.ts rename to libs/datatypes/src/binary-tree-node/binary-tree-node.ts diff --git a/libs/datatypes/src/binary-tree-node/index.ts b/libs/datatypes/src/binary-tree-node/index.ts new file mode 100644 index 0000000..679425c --- /dev/null +++ b/libs/datatypes/src/binary-tree-node/index.ts @@ -0,0 +1 @@ +export * from './binary-tree-node.js'; diff --git a/libs/datatypes/binary-tree/binary-tree.spec.ts b/libs/datatypes/src/binary-tree/binary-tree.spec.ts similarity index 100% rename from libs/datatypes/binary-tree/binary-tree.spec.ts rename to libs/datatypes/src/binary-tree/binary-tree.spec.ts diff --git a/libs/datatypes/binary-tree/binary-tree.ts b/libs/datatypes/src/binary-tree/binary-tree.ts similarity index 99% rename from libs/datatypes/binary-tree/binary-tree.ts rename to libs/datatypes/src/binary-tree/binary-tree.ts index 23e59ed..6758fc5 100644 --- a/libs/datatypes/binary-tree/binary-tree.ts +++ b/libs/datatypes/src/binary-tree/binary-tree.ts @@ -1,5 +1,5 @@ -import { BinaryTreeNode } from '../binary-tree-node/binary-tree-node'; -import { Queue } from '../queue/queue'; +import { BinaryTreeNode } from '../binary-tree-node/binary-tree-node.js'; +import { Queue } from '../queue/queue.js'; /** * Generic Binary Tree Implementation diff --git a/libs/datatypes/src/binary-tree/index.ts b/libs/datatypes/src/binary-tree/index.ts new file mode 100644 index 0000000..d0ca0c1 --- /dev/null +++ b/libs/datatypes/src/binary-tree/index.ts @@ -0,0 +1 @@ +export * from './binary-tree.js'; diff --git a/libs/datatypes/deque/deque.spec.ts b/libs/datatypes/src/deque/deque.spec.ts similarity index 100% rename from libs/datatypes/deque/deque.spec.ts rename to libs/datatypes/src/deque/deque.spec.ts diff --git a/libs/datatypes/deque/deque.ts b/libs/datatypes/src/deque/deque.ts similarity index 98% rename from libs/datatypes/deque/deque.ts rename to libs/datatypes/src/deque/deque.ts index 3c4eacc..620520e 100644 --- a/libs/datatypes/deque/deque.ts +++ b/libs/datatypes/src/deque/deque.ts @@ -1,5 +1,5 @@ -import { DoublyLinkedList } from '../doubly-linked-list/doubly-linked-list'; -import { DoublyLinkedListNode } from '../doubly-linked-list-node/doubly-linked-list-node'; +import { DoublyLinkedList } from '../doubly-linked-list/doubly-linked-list.js'; +import { DoublyLinkedListNode } from '../doubly-linked-list-node/doubly-linked-list-node.js'; /** * Generic Double-Ended Queue (Deque) Implementation diff --git a/libs/datatypes/src/deque/index.ts b/libs/datatypes/src/deque/index.ts new file mode 100644 index 0000000..f0d16fe --- /dev/null +++ b/libs/datatypes/src/deque/index.ts @@ -0,0 +1 @@ +export * from './deque.js'; diff --git a/libs/datatypes/directed-graph/directed-graph.ts b/libs/datatypes/src/directed-graph/directed-graph.ts similarity index 86% rename from libs/datatypes/directed-graph/directed-graph.ts rename to libs/datatypes/src/directed-graph/directed-graph.ts index 67b1862..9e3d9d9 100644 --- a/libs/datatypes/directed-graph/directed-graph.ts +++ b/libs/datatypes/src/directed-graph/directed-graph.ts @@ -1,4 +1,4 @@ -import { Graph } from '../graph/graph'; +import { Graph } from '../graph/graph.js'; /** * Directed Graph Implementation @@ -154,35 +154,6 @@ export class DirectedGraph extends Graph { return false; } - /** - * Helper method for cycle detection in directed graph - * @param vertex - current vertex - * @param visited - set of visited vertices - * @param recursionStack - set of vertices in current recursion stack - * @returns true if cycle is found - */ - private hasCycleHelper( - vertex: T, - visited: Set, - recursionStack: Set - ): boolean { - visited.add(vertex); - recursionStack.add(vertex); - - for (const neighbor of this.getNeighbors(vertex)) { - if (!visited.has(neighbor)) { - if (this.hasCycleHelper(neighbor, visited, recursionStack)) { - return true; - } - } else if (recursionStack.has(neighbor)) { - return true; - } - } - - recursionStack.delete(vertex); - return false; - } - /** * Check if there's a path from source to destination * @param source - source vertex @@ -205,6 +176,7 @@ export class DirectedGraph extends Graph { if (vertex === destination) { found = true; } + visited.add(vertex) }); return found; diff --git a/libs/datatypes/src/directed-graph/index.ts b/libs/datatypes/src/directed-graph/index.ts new file mode 100644 index 0000000..d865663 --- /dev/null +++ b/libs/datatypes/src/directed-graph/index.ts @@ -0,0 +1 @@ +export * from './directed-graph.js' diff --git a/libs/datatypes/doubly-linked-list-node/doubly-linked-list-node.spec.ts b/libs/datatypes/src/doubly-linked-list-node/doubly-linked-list-node.spec.ts similarity index 100% rename from libs/datatypes/doubly-linked-list-node/doubly-linked-list-node.spec.ts rename to libs/datatypes/src/doubly-linked-list-node/doubly-linked-list-node.spec.ts diff --git a/libs/datatypes/doubly-linked-list-node/doubly-linked-list-node.ts b/libs/datatypes/src/doubly-linked-list-node/doubly-linked-list-node.ts similarity index 99% rename from libs/datatypes/doubly-linked-list-node/doubly-linked-list-node.ts rename to libs/datatypes/src/doubly-linked-list-node/doubly-linked-list-node.ts index 0c89bd6..de62f2d 100644 --- a/libs/datatypes/doubly-linked-list-node/doubly-linked-list-node.ts +++ b/libs/datatypes/src/doubly-linked-list-node/doubly-linked-list-node.ts @@ -1,4 +1,4 @@ -import { LinkedListNode } from '../linked-list-node/linked-list-node'; +import { LinkedListNode } from '../linked-list-node/linked-list-node.js'; /** * Generic Doubly Linked List Node Implementation diff --git a/libs/datatypes/src/doubly-linked-list-node/index.ts b/libs/datatypes/src/doubly-linked-list-node/index.ts new file mode 100644 index 0000000..51adaef --- /dev/null +++ b/libs/datatypes/src/doubly-linked-list-node/index.ts @@ -0,0 +1 @@ +export * from './doubly-linked-list-node.js'; diff --git a/libs/datatypes/doubly-linked-list/doubly-linked-list.spec.ts b/libs/datatypes/src/doubly-linked-list/doubly-linked-list.spec.ts similarity index 100% rename from libs/datatypes/doubly-linked-list/doubly-linked-list.spec.ts rename to libs/datatypes/src/doubly-linked-list/doubly-linked-list.spec.ts diff --git a/libs/datatypes/doubly-linked-list/doubly-linked-list.ts b/libs/datatypes/src/doubly-linked-list/doubly-linked-list.ts similarity index 99% rename from libs/datatypes/doubly-linked-list/doubly-linked-list.ts rename to libs/datatypes/src/doubly-linked-list/doubly-linked-list.ts index 9a46c86..fc48a8b 100644 --- a/libs/datatypes/doubly-linked-list/doubly-linked-list.ts +++ b/libs/datatypes/src/doubly-linked-list/doubly-linked-list.ts @@ -1,4 +1,4 @@ -import { DoublyLinkedListNode } from '../doubly-linked-list-node/doubly-linked-list-node'; +import { DoublyLinkedListNode } from '../doubly-linked-list-node/doubly-linked-list-node.js'; /** * Generic Doubly Linked List Implementation diff --git a/libs/datatypes/src/doubly-linked-list/index.ts b/libs/datatypes/src/doubly-linked-list/index.ts new file mode 100644 index 0000000..c8c160e --- /dev/null +++ b/libs/datatypes/src/doubly-linked-list/index.ts @@ -0,0 +1 @@ +export * from './doubly-linked-list.js'; diff --git a/libs/datatypes/graph/graph.spec.ts b/libs/datatypes/src/graph/graph.spec.ts similarity index 100% rename from libs/datatypes/graph/graph.spec.ts rename to libs/datatypes/src/graph/graph.spec.ts diff --git a/libs/datatypes/graph/graph.ts b/libs/datatypes/src/graph/graph.ts similarity index 99% rename from libs/datatypes/graph/graph.ts rename to libs/datatypes/src/graph/graph.ts index 6bb6473..15ee933 100644 --- a/libs/datatypes/graph/graph.ts +++ b/libs/datatypes/src/graph/graph.ts @@ -252,7 +252,7 @@ export class Graph { * @param recursionStack - set of vertices in current recursion stack * @returns true if cycle is found */ - private hasCycleHelper( + protected hasCycleHelper( vertex: T, visited: Set, recursionStack: Set diff --git a/libs/datatypes/src/graph/index.ts b/libs/datatypes/src/graph/index.ts new file mode 100644 index 0000000..b2519e3 --- /dev/null +++ b/libs/datatypes/src/graph/index.ts @@ -0,0 +1 @@ +export * from './graph.js' diff --git a/libs/datatypes/src/heap/heap.spec.ts b/libs/datatypes/src/heap/heap.spec.ts new file mode 100644 index 0000000..75fdad7 --- /dev/null +++ b/libs/datatypes/src/heap/heap.spec.ts @@ -0,0 +1,170 @@ +import { describe, test, expect } from 'bun:test'; +import { MinHeap } from '../min-heap/min-heap'; + +describe('Heap', () => { + // describe('MinHeap', () => { + // test('should create an empty min heap', () => { + // const startTime = performance.now(); + // const heap = new MinHeap(); + // const endTime = performance.now(); + // const executionTime = endTime - startTime; + // + // expect(heap.isEmpty()).toBe(true); + // expect(heap.size()).toBe(0); + // expect(heap.peekMin()).toBeUndefined(); + // + // console.log(`MinHeap creation: ${executionTime.toFixed(3)} ms`); + // }); + // + // test('should insert and maintain min heap property', () => { + // const heap = new MinHeap(); + // + // const startTime = performance.now(); + // heap.insert(10); + // heap.insert(5); + // heap.insert(15); + // heap.insert(3); + // heap.insert(8); + // const endTime = performance.now(); + // const executionTime = endTime - startTime; + // + // expect(heap.size()).toBe(5); + // expect(heap.peekMin()).toBe(3); + // + // console.log( + // `MinHeap insertion operations: ${executionTime.toFixed(3)} ms` + // ); + // }); + // + // test('should extract minimum elements correctly', () => { + // const heap = new MinHeap(); + // const items = [10, 5, 15, 3, 8, 12, 1]; + // + // for (const item of items) { + // heap.insert(item); + // } + // + // const startTime = performance.now(); + // const extracted: number[] = []; + // while (!heap.isEmpty()) { + // extracted.push(heap.extractMin()); + // } + // const endTime = performance.now(); + // const executionTime = endTime - startTime; + // + // expect(extracted).toEqual([1, 3, 5, 8, 10, 12, 15]); + // + // console.log( + // `MinHeap extraction operations: ${executionTime.toFixed(3)} ms` + // ); + // }); + // + // test('should build heap from array efficiently', () => { + // const items = [10, 5, 15, 3, 8, 12, 1]; + // + // const startTime = performance.now(); + // const heap = MinHeap.buildHeap(items); + // const endTime = performance.now(); + // const executionTime = endTime - startTime; + // + // expect(heap.size()).toBe(7); + // expect(heap.peekMin()).toBe(1); + // + // console.log( + // `MinHeap buildHeap operation: ${executionTime.toFixed(3)} ms` + // ); + // }); + // }); + // + // describe('MaxHeap', () => { + // test('should create an empty max heap', () => { + // const heap = new MaxHeap(); + // + // expect(heap.isEmpty()).toBe(true); + // expect(heap.size()).toBe(0); + // expect(heap.peekMax()).toBeUndefined(); + // }); + // + // test('should insert and maintain max heap property', () => { + // const heap = new MaxHeap(); + // + // heap.insert(10); + // heap.insert(5); + // heap.insert(15); + // heap.insert(3); + // heap.insert(8); + // + // expect(heap.size()).toBe(5); + // expect(heap.peekMax()).toBe(15); + // }); + // + // test('should extract maximum elements correctly', () => { + // const heap = new MaxHeap(); + // const items = [10, 5, 15, 3, 8, 12, 1]; + // + // for (const item of items) { + // heap.insert(item); + // } + // + // const extracted: number[] = []; + // while (!heap.isEmpty()) { + // extracted.push(heap.extractMax()); + // } + // + // expect(extracted).toEqual([15, 12, 10, 8, 5, 3, 1]); + // }); + // }); + + test('should handle capacity limits', () => { + const heap = new MinHeap(3); + + heap.insert(1); + heap.insert(2); + heap.insert(3); + + expect(() => heap.insert(4)).toThrow('Heap is full - cannot insert'); + }); + + test('should throw error when extracting from empty heap', () => { + const heap = new MinHeap(); + + expect(() => heap.extractMin()).toThrow('Heap is empty - cannot extract'); + }); + + test('performance with large dataset', () => { + const heap = new MinHeap(10000); + const dataSize = 5000; + + const startTime = performance.now(); + for (let i = dataSize; i > 0; i--) { + heap.insert(i); + } + const endTime = performance.now(); + const executionTime = endTime - startTime; + + expect(heap.size()).toBe(dataSize); + expect(heap.peekMin()).toBe(1); + + console.log( + `Large dataset insertion (${dataSize} items): ${executionTime.toFixed( + 3 + )} ms` + ); + + const extractStartTime = performance.now(); + const extracted: number[] = []; + for (let i = 0; i < 100; i++) { + extracted.push(heap.extractMin()); + } + const extractEndTime = performance.now(); + const extractExecutionTime = extractEndTime - extractStartTime; + + expect(extracted).toEqual(Array.from({ length: 100 }, (_, i) => i + 1)); + + console.log( + `Large dataset extraction (100 items): ${extractExecutionTime.toFixed( + 3 + )} ms` + ); + }); +}); diff --git a/libs/datatypes/heap/heap.ts b/libs/datatypes/src/heap/heap.ts similarity index 100% rename from libs/datatypes/heap/heap.ts rename to libs/datatypes/src/heap/heap.ts diff --git a/libs/datatypes/src/heap/index.ts b/libs/datatypes/src/heap/index.ts new file mode 100644 index 0000000..a9014bb --- /dev/null +++ b/libs/datatypes/src/heap/index.ts @@ -0,0 +1 @@ +export * from './heap.js' diff --git a/libs/datatypes/src/linked-list-node/index.ts b/libs/datatypes/src/linked-list-node/index.ts new file mode 100644 index 0000000..3a8f406 --- /dev/null +++ b/libs/datatypes/src/linked-list-node/index.ts @@ -0,0 +1 @@ +export * from './linked-list-node.js'; diff --git a/libs/datatypes/linked-list-node/linked-list-node.spec.ts b/libs/datatypes/src/linked-list-node/linked-list-node.spec.ts similarity index 100% rename from libs/datatypes/linked-list-node/linked-list-node.spec.ts rename to libs/datatypes/src/linked-list-node/linked-list-node.spec.ts diff --git a/libs/datatypes/linked-list-node/linked-list-node.ts b/libs/datatypes/src/linked-list-node/linked-list-node.ts similarity index 100% rename from libs/datatypes/linked-list-node/linked-list-node.ts rename to libs/datatypes/src/linked-list-node/linked-list-node.ts diff --git a/libs/datatypes/src/linked-list/index.ts b/libs/datatypes/src/linked-list/index.ts new file mode 100644 index 0000000..68947ec --- /dev/null +++ b/libs/datatypes/src/linked-list/index.ts @@ -0,0 +1 @@ +export * from './linked-list.js'; diff --git a/libs/datatypes/linked-list/linked-list.spec.ts b/libs/datatypes/src/linked-list/linked-list.spec.ts similarity index 100% rename from libs/datatypes/linked-list/linked-list.spec.ts rename to libs/datatypes/src/linked-list/linked-list.spec.ts diff --git a/libs/datatypes/linked-list/linked-list.ts b/libs/datatypes/src/linked-list/linked-list.ts similarity index 99% rename from libs/datatypes/linked-list/linked-list.ts rename to libs/datatypes/src/linked-list/linked-list.ts index 79e95f2..63d7b4b 100644 --- a/libs/datatypes/linked-list/linked-list.ts +++ b/libs/datatypes/src/linked-list/linked-list.ts @@ -1,4 +1,4 @@ -import { LinkedListNode } from '../linked-list-node/linked-list-node'; +import { LinkedListNode } from '../linked-list-node/linked-list-node.js'; /** * Generic Singly Linked List Implementation diff --git a/libs/datatypes/src/max-heap/index.ts b/libs/datatypes/src/max-heap/index.ts new file mode 100644 index 0000000..5d81cfa --- /dev/null +++ b/libs/datatypes/src/max-heap/index.ts @@ -0,0 +1 @@ +export * from './max-heap.js' diff --git a/libs/datatypes/max-heap/max-heap.ts b/libs/datatypes/src/max-heap/max-heap.ts similarity index 96% rename from libs/datatypes/max-heap/max-heap.ts rename to libs/datatypes/src/max-heap/max-heap.ts index 80f6b0e..0de0bea 100644 --- a/libs/datatypes/max-heap/max-heap.ts +++ b/libs/datatypes/src/max-heap/max-heap.ts @@ -1,4 +1,4 @@ -import { Heap } from '../heap/heap'; +import { Heap } from '../heap/heap.js'; /** * Max Heap Implementation @@ -76,7 +76,7 @@ export class MaxHeap extends Heap { * Get string representation of the max heap * @returns string representation */ - toString(): string { + override toString(): string { return `MaxHeap(${this._size}): [${this.toArray().join(', ')}]`; } } diff --git a/libs/datatypes/src/max-priority-queue/index.ts b/libs/datatypes/src/max-priority-queue/index.ts new file mode 100644 index 0000000..332d208 --- /dev/null +++ b/libs/datatypes/src/max-priority-queue/index.ts @@ -0,0 +1 @@ +export * from './max-priority-queue.js' diff --git a/libs/datatypes/max-priority-queue/max-priority-queue.ts b/libs/datatypes/src/max-priority-queue/max-priority-queue.ts similarity index 87% rename from libs/datatypes/max-priority-queue/max-priority-queue.ts rename to libs/datatypes/src/max-priority-queue/max-priority-queue.ts index 685dd2c..8d05144 100644 --- a/libs/datatypes/max-priority-queue/max-priority-queue.ts +++ b/libs/datatypes/src/max-priority-queue/max-priority-queue.ts @@ -1,6 +1,6 @@ -import { PriorityQueue, PriorityNode } from '../priority-queue/priority-queue'; -import { MaxHeap } from '../max-heap/max-heap'; -import { Heap } from '../heap/heap'; +import { PriorityQueue, PriorityNode } from '../priority-queue/priority-queue.js'; +import { MaxHeap } from '../max-heap/max-heap.js'; +import { Heap } from '../heap/heap.js'; /** * Max Priority Queue Implementation @@ -21,7 +21,10 @@ export class MaxPriorityQueue extends PriorityQueue { */ protected createHeap(capacity: number): Heap> { return new (class extends MaxHeap> { - protected compare(a: PriorityNode, b: PriorityNode): boolean { + protected override compare( + a: PriorityNode, + b: PriorityNode + ): boolean { return a.priority > b.priority; } })(capacity); @@ -57,7 +60,7 @@ export class MaxPriorityQueue extends PriorityQueue { * Get string representation of the max priority queue * @returns string representation */ - toString(): string { + override toString(): string { const nodes = this.heap .toArray() .map((node) => `${node.data}(${node.priority})`); diff --git a/libs/datatypes/src/min-heap/index.ts b/libs/datatypes/src/min-heap/index.ts new file mode 100644 index 0000000..4579d4e --- /dev/null +++ b/libs/datatypes/src/min-heap/index.ts @@ -0,0 +1 @@ +export * from './min-heap.js' diff --git a/libs/datatypes/min-heap/min-heap.ts b/libs/datatypes/src/min-heap/min-heap.ts similarity index 96% rename from libs/datatypes/min-heap/min-heap.ts rename to libs/datatypes/src/min-heap/min-heap.ts index 93bcfb5..e94fb00 100644 --- a/libs/datatypes/min-heap/min-heap.ts +++ b/libs/datatypes/src/min-heap/min-heap.ts @@ -1,4 +1,4 @@ -import { Heap } from '../heap/heap'; +import { Heap } from '../heap/heap.js'; /** * Min Heap Implementation @@ -76,7 +76,7 @@ export class MinHeap extends Heap { * Get string representation of the min heap * @returns string representation */ - toString(): string { + override toString(): string { return `MinHeap(${this._size}): [${this.toArray().join(', ')}]`; } } diff --git a/libs/datatypes/src/min-priority-queue/index.ts b/libs/datatypes/src/min-priority-queue/index.ts new file mode 100644 index 0000000..9653110 --- /dev/null +++ b/libs/datatypes/src/min-priority-queue/index.ts @@ -0,0 +1 @@ +export * from './min-priority-queue.js' diff --git a/libs/datatypes/min-priority-queue/min-priority-queue.ts b/libs/datatypes/src/min-priority-queue/min-priority-queue.ts similarity index 87% rename from libs/datatypes/min-priority-queue/min-priority-queue.ts rename to libs/datatypes/src/min-priority-queue/min-priority-queue.ts index 91d3bcc..3eca75d 100644 --- a/libs/datatypes/min-priority-queue/min-priority-queue.ts +++ b/libs/datatypes/src/min-priority-queue/min-priority-queue.ts @@ -1,6 +1,6 @@ -import { PriorityQueue, PriorityNode } from '../priority-queue/priority-queue'; -import { MinHeap } from '../min-heap/min-heap'; -import { Heap } from '../heap/heap'; +import { PriorityQueue, PriorityNode } from '../priority-queue/priority-queue.js'; +import { MinHeap } from '../min-heap/min-heap.js'; +import { Heap } from '../heap/heap.js'; /** * Min Priority Queue Implementation @@ -21,7 +21,10 @@ export class MinPriorityQueue extends PriorityQueue { */ protected createHeap(capacity: number): Heap> { return new (class extends MinHeap> { - protected compare(a: PriorityNode, b: PriorityNode): boolean { + protected override compare( + a: PriorityNode, + b: PriorityNode + ): boolean { return a.priority < b.priority; } })(capacity); @@ -57,7 +60,7 @@ export class MinPriorityQueue extends PriorityQueue { * Get string representation of the min priority queue * @returns string representation */ - toString(): string { + override toString(): string { const nodes = this.heap .toArray() .map((node) => `${node.data}(${node.priority})`); diff --git a/libs/datatypes/src/priority-queue/index.ts b/libs/datatypes/src/priority-queue/index.ts new file mode 100644 index 0000000..762af74 --- /dev/null +++ b/libs/datatypes/src/priority-queue/index.ts @@ -0,0 +1 @@ +export * from './priority-queue.js' diff --git a/libs/datatypes/priority-queue/priority-queue.spec.ts b/libs/datatypes/src/priority-queue/priority-queue.spec.ts similarity index 100% rename from libs/datatypes/priority-queue/priority-queue.spec.ts rename to libs/datatypes/src/priority-queue/priority-queue.spec.ts diff --git a/libs/datatypes/priority-queue/priority-queue.ts b/libs/datatypes/src/priority-queue/priority-queue.ts similarity index 98% rename from libs/datatypes/priority-queue/priority-queue.ts rename to libs/datatypes/src/priority-queue/priority-queue.ts index eada4be..0664bb6 100644 --- a/libs/datatypes/priority-queue/priority-queue.ts +++ b/libs/datatypes/src/priority-queue/priority-queue.ts @@ -1,4 +1,4 @@ -import { Heap } from '../heap/heap'; +import { Heap } from '../heap/heap.js'; /** * Priority Node for Priority Queue diff --git a/libs/datatypes/src/queue/index.ts b/libs/datatypes/src/queue/index.ts new file mode 100644 index 0000000..8afc772 --- /dev/null +++ b/libs/datatypes/src/queue/index.ts @@ -0,0 +1 @@ +export * from './queue.js'; diff --git a/libs/datatypes/queue/queue.spec.ts b/libs/datatypes/src/queue/queue.spec.ts similarity index 100% rename from libs/datatypes/queue/queue.spec.ts rename to libs/datatypes/src/queue/queue.spec.ts diff --git a/libs/datatypes/queue/queue.ts b/libs/datatypes/src/queue/queue.ts similarity index 99% rename from libs/datatypes/queue/queue.ts rename to libs/datatypes/src/queue/queue.ts index a673557..260189f 100644 --- a/libs/datatypes/queue/queue.ts +++ b/libs/datatypes/src/queue/queue.ts @@ -1,4 +1,4 @@ -import { DoublyLinkedList } from '../doubly-linked-list/doubly-linked-list'; +import { DoublyLinkedList } from '../doubly-linked-list/doubly-linked-list.js'; /** * Generic Queue Implementation using DoublyLinkedList diff --git a/libs/datatypes/src/stack/index.ts b/libs/datatypes/src/stack/index.ts new file mode 100644 index 0000000..a93abad --- /dev/null +++ b/libs/datatypes/src/stack/index.ts @@ -0,0 +1 @@ +export * from './stack.js'; diff --git a/libs/datatypes/stack/stack.spec.ts b/libs/datatypes/src/stack/stack.spec.ts similarity index 100% rename from libs/datatypes/stack/stack.spec.ts rename to libs/datatypes/src/stack/stack.spec.ts diff --git a/libs/datatypes/stack/stack.ts b/libs/datatypes/src/stack/stack.ts similarity index 100% rename from libs/datatypes/stack/stack.ts rename to libs/datatypes/src/stack/stack.ts diff --git a/libs/datatypes/src/trie-node/index.ts b/libs/datatypes/src/trie-node/index.ts new file mode 100644 index 0000000..aed9e0d --- /dev/null +++ b/libs/datatypes/src/trie-node/index.ts @@ -0,0 +1 @@ +export * from './trie-node.js' diff --git a/libs/datatypes/trie-node/trie-node.ts b/libs/datatypes/src/trie-node/trie-node.ts similarity index 100% rename from libs/datatypes/trie-node/trie-node.ts rename to libs/datatypes/src/trie-node/trie-node.ts diff --git a/libs/datatypes/src/trie/index.ts b/libs/datatypes/src/trie/index.ts new file mode 100644 index 0000000..b066979 --- /dev/null +++ b/libs/datatypes/src/trie/index.ts @@ -0,0 +1 @@ +export * from './trie.js' diff --git a/libs/datatypes/trie/trie.spec.ts b/libs/datatypes/src/trie/trie.spec.ts similarity index 100% rename from libs/datatypes/trie/trie.spec.ts rename to libs/datatypes/src/trie/trie.spec.ts diff --git a/libs/datatypes/trie/trie.ts b/libs/datatypes/src/trie/trie.ts similarity index 99% rename from libs/datatypes/trie/trie.ts rename to libs/datatypes/src/trie/trie.ts index 39d53f1..c4ee7c5 100644 --- a/libs/datatypes/trie/trie.ts +++ b/libs/datatypes/src/trie/trie.ts @@ -1,4 +1,4 @@ -import { TrieNode } from '../trie-node/trie-node'; +import { TrieNode } from '../trie-node/trie-node.js'; /** * Trie (Prefix Tree) Implementation diff --git a/libs/datatypes/stack/index.ts b/libs/datatypes/stack/index.ts deleted file mode 100644 index d39a8e6..0000000 --- a/libs/datatypes/stack/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './stack'; diff --git a/libs/datatypes/tsconfig.json b/libs/datatypes/tsconfig.json index 4082f16..2e5b573 100644 --- a/libs/datatypes/tsconfig.json +++ b/libs/datatypes/tsconfig.json @@ -1,3 +1,5 @@ { - "extends": "../../tsconfig.json" + "extends": "../../tsconfig.json", + "include": ["**/*.ts"], + "exclude": ["**/*.spec.ts"] } diff --git a/libs/datatypes/vite.config.ts b/libs/datatypes/vite.config.ts new file mode 100644 index 0000000..a30d0ca --- /dev/null +++ b/libs/datatypes/vite.config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vite'; +import dts from 'vite-plugin-dts'; +import { resolve } from 'path'; + +export default defineConfig({ + plugins: [ + dts({ + insertTypesEntry: true, + }), + ], + resolve: { + extensions: ['.ts', '.js', '.json'], + }, + build: { + lib: { + entry: resolve(__dirname, 'index.ts'), + name: 'CSDatatypes', + formats: ['es', 'cjs'], + fileName: (format: string) => `index.${format === 'es' ? 'mjs' : 'cjs'}`, + }, + rollupOptions: { + external: [], + output: { + preserveModules: false, + }, + }, + }, +}); diff --git a/libs/utils/consoleDiff.js b/libs/utils/consoleDiff.js deleted file mode 100644 index ffcfee3..0000000 --- a/libs/utils/consoleDiff.js +++ /dev/null @@ -1,29 +0,0 @@ -import { diff, styleText } from 'node:util'; - -/** - * Return a coloured diff between two values. - * Nothing is written to the console; the caller decides when/if to log it. - */ -export function consoleDiff(a, b, { byLine = true } = {}) { - const toSeq = (v) => { - if (typeof v === 'object' && v !== null) v = JSON.stringify(v, null, 2); - return byLine && typeof v === 'string' ? v.split('\n') : v; - }; - - const lines = []; - - for (const [op, chunk] of diff(toSeq(a), toSeq(b))) { - switch (op) { - case 0: // unchanged - lines.push(' ' + chunk); - break; - case 1: // insert - lines.push(styleText('green', '+' + chunk)); - break; - case -1: // delete - lines.push(styleText('red', '-' + chunk)); - break; - } - } - return lines.join('\n'); -} diff --git a/libs/utils/sleep.js b/libs/utils/sleep.js deleted file mode 100644 index a8adf00..0000000 --- a/libs/utils/sleep.js +++ /dev/null @@ -1,3 +0,0 @@ -export function sleep(ms) { - return new Promise(resolve => setTimeout(resolve, ms)) -} diff --git a/nx.json b/nx.json index 4b97f8e..506e38f 100644 --- a/nx.json +++ b/nx.json @@ -1,18 +1,16 @@ { "$schema": "./node_modules/nx/schemas/nx-schema.json", + "neverConnectToCloud": true, "namedInputs": { - "default": [ - "{projectRoot}/**/*", - "sharedGlobals" - ], + "default": ["{projectRoot}/**/*", "sharedGlobals"], "production": [ - "default" + "default", + "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", + "!{projectRoot}/tsconfig.spec.json", + "!{projectRoot}/src/test-setup.[jt]s" ], - "sharedGlobals": [ - "{workspaceRoot}/.github/workflows/ci.yml" - ] + "sharedGlobals": ["{workspaceRoot}/.github/workflows/ci.yml"] }, - "nxCloudId": "6875cdcb874bdb115b7baf8a", "plugins": [ { "plugin": "@nx/js/typescript", @@ -27,6 +25,20 @@ "watchDepsName": "watch-deps" } } + }, + { + "plugin": "@nx/vite/plugin", + "options": { + "buildTargetName": "build", + "testTargetName": "test", + "serveTargetName": "serve", + "devTargetName": "dev", + "previewTargetName": "preview", + "serveStaticTargetName": "serve-static", + "typecheckTargetName": "vite:typecheck", + "buildDepsTargetName": "build-deps", + "watchDepsTargetName": "watch-deps" + } } ], "targetDefaults": { @@ -38,6 +50,14 @@ }, "datatypes:test": { "cache": true + }, + "algorithms:build": { + "outputs": ["{projectRoot}/libs/algorithms/dist"], + "cache": true + }, + "datatypes:build": { + "outputs": ["{projectRoot}/libs/datatypes/dist"], + "cache": true } } -} \ No newline at end of file +} diff --git a/package.json b/package.json index 7489505..2e863f1 100644 --- a/package.json +++ b/package.json @@ -8,20 +8,27 @@ "@monodon/rust": "^2.3.0", "@nx-go/nx-go": "^3.3.1", "@nx/js": "21.2.3", + "@nx/vite": "21.2.3", + "@nx/web": "21.2.3", "@nxlv/python": "^21.0.3", "@swc-node/register": "~1.9.1", "@swc/core": "~1.5.7", "@swc/helpers": "~0.5.11", "@types/node": "^18.11.5", + "@vitest/ui": "^3.0.0", "bun-types": "^1.2.19", + "jiti": "2.4.2", "nx": "21.2.3", "prettier": "^2.6.2", "tslib": "^2.3.0", - "typescript": "~5.8.2" + "typescript": "~5.8.2", + "vite": "^6.0.0", + "vitest": "^3.0.0" }, "workspaces": [ "apps/*", "libs/*" ], - "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977" -} \ No newline at end of file + "packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977", + "dependencies": {} +} diff --git a/performance.md b/performance.md deleted file mode 100644 index 6e24380..0000000 --- a/performance.md +++ /dev/null @@ -1,129 +0,0 @@ -# Performance Measurements - -This file tracks performance measurements for all data structure operations. - -## LinkedListNode Performance -- linked-list-node.spec.ts-Node creation: ~0.001 ms -- linked-list-node.spec.ts-Node linking: ~0.002 ms -- linked-list-node.spec.ts-Chain creation (1000 nodes): ~0.5-2.0 ms - -## DoublyLinkedListNode Performance -- doubly-linked-list-node.spec.ts-Doubly linked node creation: ~0.001 ms -- doubly-linked-list-node.spec.ts-Bidirectional linking: ~0.003 ms -- doubly-linked-list-node.spec.ts-Node unlinking: ~0.001 ms -- doubly-linked-list-node.spec.ts-Doubly linked chain creation (1000 nodes): ~1.0-3.0 ms - -## Stack Performance -- stack.spec.ts-Stack creation: ~0.001 ms -- stack.spec.ts-Push/Pop operations: ~0.002 ms -- stack.spec.ts-Stack from array creation: ~0.1-0.5 ms -- stack.spec.ts-Large dataset push (10000 items): ~2.0-5.0 ms -- stack.spec.ts-Large dataset pop (10000 items): ~1.0-3.0 ms - -## BinaryTreeNode Performance -- binary-tree-node.spec.ts-Binary tree node creation: ~0.001 ms -- binary-tree-node.spec.ts-Child setting and parent linking: ~0.002 ms -- binary-tree-node.spec.ts-Height calculation: ~0.001 ms -- binary-tree-node.spec.ts-Size calculation: ~0.001 ms -- binary-tree-node.spec.ts-Min/Max finding: ~0.002 ms -- binary-tree-node.spec.ts-Successor/Predecessor finding: ~0.001 ms -- binary-tree-node.spec.ts-Large tree creation (1000 nodes): ~1.0-4.0 ms - -## Deque Performance -- deque.spec.ts-Deque creation: ~0.001 ms -- deque.spec.ts-Head insert/extract operations: ~0.003 ms -- deque.spec.ts-Tail insert/extract operations: ~0.003 ms -- deque.spec.ts-Deque from array creation: ~0.1-0.5 ms -- deque.spec.ts-Large dataset insertion (10000 items): ~3.0-8.0 ms -- deque.spec.ts-Large dataset extraction (10000 items): ~2.0-6.0 ms - -## LinkedList Performance -- linked-list.spec.ts-LinkedList creation: ~0.001 ms -- linked-list.spec.ts-Head insertion operations: ~0.002 ms -- linked-list.spec.ts-Tail insertion operations: ~0.003 ms -- linked-list.spec.ts-Head removal operation: ~0.001 ms -- linked-list.spec.ts-Search operations: ~0.001 ms -- linked-list.spec.ts-LinkedList from array creation: ~0.1-0.5 ms -- linked-list.spec.ts-List reversal: ~0.002 ms -- linked-list.spec.ts-Large dataset insertion (10000 items): ~5.0-15.0 ms -- linked-list.spec.ts-Large dataset search: ~2.0-8.0 ms - -## DoublyLinkedList Performance -- doubly-linked-list.spec.ts-DoublyLinkedList creation: ~0.001 ms -- doubly-linked-list.spec.ts-Head insertion operations: ~0.003 ms -- doubly-linked-list.spec.ts-Tail insertion operations: ~0.003 ms -- doubly-linked-list.spec.ts-Head/Tail removal operations: ~0.002 ms -- doubly-linked-list.spec.ts-Search operations: ~0.001 ms -- doubly-linked-list.spec.ts-DoublyLinkedList from array creation: ~0.1-0.5 ms -- doubly-linked-list.spec.ts-Large dataset insertion (10000 items): ~4.0-12.0 ms -- doubly-linked-list.spec.ts-Large dataset removal (5000 items): ~2.0-8.0 ms - -## Queue Performance -- queue.spec.ts-Queue creation: ~0.001 ms -- queue.spec.ts-Enqueue/Dequeue operations: ~0.003 ms -- queue.spec.ts-Queue from array creation: ~0.1-0.5 ms -- queue.spec.ts-Large dataset enqueue (10000 items): ~3.0-8.0 ms -- queue.spec.ts-Large dataset dequeue (10000 items): ~2.0-6.0 ms - -## BinaryTree Performance -- binary-tree.spec.ts-BinaryTree creation: ~0.001 ms -- binary-tree.spec.ts-Tree from array creation: ~0.1-0.5 ms -- binary-tree.spec.ts-BST insertion operations: ~0.003 ms -- binary-tree.spec.ts-Search operations: ~0.001 ms -- binary-tree.spec.ts-BFS traversal: ~0.002 ms -- binary-tree.spec.ts-DFS traversals: ~0.003 ms -- binary-tree.spec.ts-Deep copy creation: ~0.1-0.5 ms -- binary-tree.spec.ts-Tree to array conversion: ~0.1-0.3 ms -- binary-tree.spec.ts-Static fromArray creation: ~0.1-0.5 ms -- binary-tree.spec.ts-Large dataset insertion (1000 items): ~5.0-20.0 ms -- binary-tree.spec.ts-Large dataset traversal (1000 items): ~1.0-5.0 ms - -## Heap Performance -- heap.spec.ts-MinHeap creation: ~0.001 ms -- heap.spec.ts-MinHeap insertion operations: ~0.003 ms -- heap.spec.ts-MinHeap extraction operations: ~0.005 ms -- heap.spec.ts-MinHeap buildHeap operation: ~0.002 ms -- heap.spec.ts-Large dataset insertion (5000 items): ~8.0-20.0 ms -- heap.spec.ts-Large dataset extraction (100 items): ~0.5-2.0 ms - -## Trie Performance -- trie.spec.ts-Trie creation: ~0.001 ms -- trie.spec.ts-Trie insertion and search operations: ~0.005 ms -- trie.spec.ts-Prefix checking operations: ~0.002 ms -- trie.spec.ts-Word deletion operations: ~0.003 ms -- trie.spec.ts-Get all words operation: ~0.002 ms -- trie.spec.ts-Get words with prefix operations: ~0.003 ms -- trie.spec.ts-Trie from array creation: ~0.1-0.5 ms -- trie.spec.ts-Large dataset insertion (1000 words): ~5.0-15.0 ms -- trie.spec.ts-Large dataset search (100 words): ~1.0-5.0 ms - -## PriorityQueue Performance -- priority-queue.spec.ts-MinPriorityQueue creation: ~0.001 ms -- priority-queue.spec.ts-MinPriorityQueue enqueue/dequeue operations: ~0.005 ms -- priority-queue.spec.ts-MinPriorityQueue from array creation: ~0.1-0.5 ms -- priority-queue.spec.ts-Large dataset enqueue (5000 items): ~10.0-25.0 ms -- priority-queue.spec.ts-Large dataset dequeue (100 items): ~0.5-2.0 ms - -## Graph Performance -- graph.spec.ts-Graph creation: ~0.001 ms -- graph.spec.ts-Vertex/Edge addition operations: ~0.003 ms -- graph.spec.ts-BFS traversal: ~0.002 ms -- graph.spec.ts-DFS traversal: ~0.002 ms -- graph.spec.ts-Graph from edges creation: ~0.1-0.3 ms -- graph.spec.ts-Topological sort: ~0.003 ms -- graph.spec.ts-Large graph creation (1000 vertices): ~5.0-15.0 ms -- graph.spec.ts-Large graph BFS traversal: ~2.0-8.0 ms - -## Notes -- All measurements are approximate and may vary based on system performance -- Measurements taken using `performance.now()` in bun:test environment -- Large dataset tests use 1000-10000 items to measure scalability -- Time complexity characteristics are maintained as expected for each data structure -- BST operations can degrade to O(n) in worst case (skewed tree) -- Linked list operations maintain O(1) for head operations, O(n) for tail operations in singly linked lists -- Doubly linked lists maintain O(1) for both head and tail operations -- Tree traversals are O(n) where n is the number of nodes -- Heap operations maintain O(log n) for insertion and extraction -- Trie operations are O(m) where m is the length of the word/prefix -- Priority queue operations maintain O(log n) for enqueue/dequeue -- Graph traversal operations are O(V + E) where V is vertices and E is edges diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 52dc01e..44a1c82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,6 +17,12 @@ importers: '@nx/js': specifier: 21.2.3 version: 21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) + '@nx/vite': + specifier: 21.2.3 + version: 21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0))(vitest@3.2.4) + '@nx/web': + specifier: 21.2.3 + version: 21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) '@nxlv/python': specifier: ^21.0.3 version: 21.0.3(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) @@ -32,9 +38,15 @@ importers: '@types/node': specifier: ^18.11.5 version: 18.19.118 + '@vitest/ui': + specifier: ^3.0.0 + version: 3.2.4(vitest@3.2.4) bun-types: specifier: ^1.2.19 version: 1.2.19(@types/react@19.1.8) + jiti: + specifier: 2.4.2 + version: 2.4.2 nx: specifier: 21.2.3 version: 21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)) @@ -47,6 +59,12 @@ importers: typescript: specifier: ~5.8.2 version: 5.8.3 + vite: + specifier: ^6.0.0 + version: 6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0) + vitest: + specifier: ^3.0.0 + version: 3.2.4(@types/node@18.19.118)(@vitest/ui@3.2.4)(jiti@2.4.2)(yaml@2.8.0) apps/cache-strategies: dependencies: @@ -62,8 +80,22 @@ importers: '@proveo/cs-datatypes': specifier: workspace:* version: link:../datatypes - - libs/datatypes: {} + devDependencies: + glob: + specifier: ^11.0.3 + version: 11.0.3 + vite: + specifier: ^5.0.0 + version: 5.4.19(@types/node@18.19.118) + + libs/datatypes: + devDependencies: + vite: + specifier: ^5.0.0 + version: 5.4.19(@types/node@18.19.118) + vite-plugin-dts: + specifier: ^3.0.0 + version: 3.9.1(@types/node@18.19.118)(rollup@4.45.1)(typescript@5.8.3)(vite@5.4.19(@types/node@18.19.118)) packages: @@ -617,6 +649,300 @@ packages: '@emnapi/wasi-threads@1.0.3': resolution: {integrity: sha512-8K5IFFsQqF9wQNJptGbS6FNKgUTsSRYnTqNCG1vPP8jFdjSv18n2mQfJpkt2Oibo9iBEzcDnDxNwKTzC7svlJw==} + '@esbuild/aix-ppc64@0.21.5': + resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [aix] + + '@esbuild/aix-ppc64@0.25.8': + resolution: {integrity: sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==} + engines: {node: '>=18'} + 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-arm64@0.25.8': + resolution: {integrity: sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==} + engines: {node: '>=18'} + 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-arm@0.25.8': + resolution: {integrity: sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.21.5': + resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + + '@esbuild/android-x64@0.25.8': + resolution: {integrity: sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==} + engines: {node: '>=18'} + 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-arm64@0.25.8': + resolution: {integrity: sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==} + engines: {node: '>=18'} + 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/darwin-x64@0.25.8': + resolution: {integrity: sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==} + engines: {node: '>=18'} + 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-arm64@0.25.8': + resolution: {integrity: sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==} + engines: {node: '>=18'} + 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/freebsd-x64@0.25.8': + resolution: {integrity: sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==} + engines: {node: '>=18'} + 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-arm64@0.25.8': + resolution: {integrity: sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.21.5': + resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-arm@0.25.8': + resolution: {integrity: sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.21.5': + resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-ia32@0.25.8': + resolution: {integrity: sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==} + engines: {node: '>=18'} + 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-loong64@0.25.8': + resolution: {integrity: sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.21.5': + resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-mips64el@0.25.8': + resolution: {integrity: sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==} + engines: {node: '>=18'} + 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-ppc64@0.25.8': + resolution: {integrity: sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==} + engines: {node: '>=18'} + 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-riscv64@0.25.8': + resolution: {integrity: sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.21.5': + resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-s390x@0.25.8': + resolution: {integrity: sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.21.5': + resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + + '@esbuild/linux-x64@0.25.8': + resolution: {integrity: sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.25.8': + resolution: {integrity: sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.21.5': + resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.8': + resolution: {integrity: sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.25.8': + resolution: {integrity: sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.21.5': + resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.8': + resolution: {integrity: sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.25.8': + resolution: {integrity: sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.21.5': + resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + + '@esbuild/sunos-x64@0.25.8': + resolution: {integrity: sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.21.5': + resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-arm64@0.25.8': + resolution: {integrity: sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==} + engines: {node: '>=18'} + 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-ia32@0.25.8': + resolution: {integrity: sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.21.5': + resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + + '@esbuild/win32-x64@0.25.8': + resolution: {integrity: sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@iarna/toml@2.2.5': resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==} @@ -741,6 +1067,18 @@ packages: '@types/node': optional: true + '@isaacs/balanced-match@4.0.1': + resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} + engines: {node: 20 || >=22} + + '@isaacs/brace-expansion@5.0.0': + resolution: {integrity: sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==} + engines: {node: 20 || >=22} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + '@jest/schemas@29.6.3': resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -761,6 +1099,19 @@ packages: '@ltd/j-toml@1.38.0': resolution: {integrity: sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==} + '@microsoft/api-extractor-model@7.28.13': + resolution: {integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==} + + '@microsoft/api-extractor@7.43.0': + resolution: {integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==} + hasBin: true + + '@microsoft/tsdoc-config@0.16.2': + resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} + + '@microsoft/tsdoc@0.14.2': + resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} + '@monodon/rust@2.3.0': resolution: {integrity: sha512-iMnMnO/UF84Cod+J0DHaSTJLTlxT5eWXuTFeFlge5AeKNlzhnfCa733M2LiZjD9WVfIGK5yy4go63S3bshB0mg==} peerDependencies: @@ -1164,6 +1515,15 @@ packages: cpu: [x64] os: [win32] + '@nx/vite@21.2.3': + resolution: {integrity: sha512-OgmrjnV6fuq/b8P7+KSPc0IKAOD7kE0gWZdNmL9Bzhn+NVew6mMVgGsuqH02twbucp3eEbnpCFQPCXso+5NJTw==} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 + vitest: ^1.3.1 || ^2.0.0 || ^3.0.0 + + '@nx/web@21.2.3': + resolution: {integrity: sha512-QWkd7+8n7kvhoiB2vqBHBZ2Z383g60lOEl78FFBRCxbRYmUHSOqvhZXahfq/l5YU7DVbbCYsiPdL8KVK22hRMw==} + '@nx/workspace@21.2.3': resolution: {integrity: sha512-bC3J6pgXvL9JWyYmP7AOGCIZhtI6vmY1YLan1T+FFkSr7yyKvIwnnL9E68whQD5jcbJl1Mvu9l0lVlsVdQYF/g==} @@ -1222,68 +1582,207 @@ packages: '@octokit/types@14.1.0': resolution: {integrity: sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==} - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@swc-node/core@1.13.3': - resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==} - engines: {node: '>= 10'} + '@phenomnomnominal/tsquery@5.0.1': + resolution: {integrity: sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==} peerDependencies: - '@swc/core': '>= 1.4.13' - '@swc/types': '>= 0.1' + typescript: ^3 || ^4 || ^5 - '@swc-node/register@1.9.2': - resolution: {integrity: sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==} + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rollup/pluginutils@5.2.0': + resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} + engines: {node: '>=14.0.0'} peerDependencies: - '@swc/core': '>= 1.4.13' - typescript: '>= 4.3' + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - '@swc-node/sourcemap-support@0.5.1': - resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} + '@rollup/rollup-android-arm-eabi@4.45.1': + resolution: {integrity: sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==} + cpu: [arm] + os: [android] - '@swc/core-darwin-arm64@1.5.29': - resolution: {integrity: sha512-6F/sSxpHaq3nzg2ADv9FHLi4Fu2A8w8vP8Ich8gIl16D2htStlwnaPmCLjRswO+cFkzgVqy/l01gzNGWd4DFqA==} - engines: {node: '>=10'} + '@rollup/rollup-android-arm64@4.45.1': + resolution: {integrity: sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.45.1': + resolution: {integrity: sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==} cpu: [arm64] os: [darwin] - '@swc/core-darwin-x64@1.5.29': - resolution: {integrity: sha512-rF/rXkvUOTdTIfoYbmszbSUGsCyvqACqy1VeP3nXONS+LxFl4bRmRcUTRrblL7IE5RTMCKUuPbqbQSE2hK7bqg==} - engines: {node: '>=10'} + '@rollup/rollup-darwin-x64@4.45.1': + resolution: {integrity: sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==} cpu: [x64] os: [darwin] - '@swc/core-linux-arm-gnueabihf@1.5.29': - resolution: {integrity: sha512-2OAPL8iWBsmmwkjGXqvuUhbmmoLxS1xNXiMq87EsnCNMAKohGc7wJkdAOUL6J/YFpean/vwMWg64rJD4pycBeg==} - engines: {node: '>=10'} + '@rollup/rollup-freebsd-arm64@4.45.1': + resolution: {integrity: sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.45.1': + resolution: {integrity: sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + resolution: {integrity: sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==} cpu: [arm] os: [linux] - '@swc/core-linux-arm64-gnu@1.5.29': - resolution: {integrity: sha512-eH/Q9+8O5qhSxMestZnhuS1xqQMr6M7SolZYxiXJqxArXYILLCF+nq2R9SxuMl0CfjHSpb6+hHPk/HXy54eIRA==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm-musleabihf@4.45.1': + resolution: {integrity: sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.45.1': + resolution: {integrity: sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==} cpu: [arm64] os: [linux] - '@swc/core-linux-arm64-musl@1.5.29': - resolution: {integrity: sha512-TERh2OICAJz+SdDIK9+0GyTUwF6r4xDlFmpoiHKHrrD/Hh3u+6Zue0d7jQ/he/i80GDn4tJQkHlZys+RZL5UZg==} - engines: {node: '>=10'} + '@rollup/rollup-linux-arm64-musl@4.45.1': + resolution: {integrity: sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==} cpu: [arm64] os: [linux] - '@swc/core-linux-x64-gnu@1.5.29': - resolution: {integrity: sha512-WMDPqU7Ji9dJpA+Llek2p9t7pcy7Bob8ggPUvgsIlv3R/eesF9DIzSbrgl6j3EAEPB9LFdSafsgf6kT/qnvqFg==} - engines: {node: '>=10'} - cpu: [x64] + '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + resolution: {integrity: sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==} + cpu: [loong64] os: [linux] - '@swc/core-linux-x64-musl@1.5.29': - resolution: {integrity: sha512-DO14glwpdKY4POSN0201OnGg1+ziaSVr6/RFzuSLggshwXeeyVORiHv3baj7NENhJhWhUy3NZlDsXLnRFkmhHQ==} - engines: {node: '>=10'} - cpu: [x64] + '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + resolution: {integrity: sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==} + cpu: [ppc64] os: [linux] - '@swc/core-win32-arm64-msvc@1.5.29': + '@rollup/rollup-linux-riscv64-gnu@4.45.1': + resolution: {integrity: sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.45.1': + resolution: {integrity: sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.45.1': + resolution: {integrity: sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.45.1': + resolution: {integrity: sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.45.1': + resolution: {integrity: sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.45.1': + resolution: {integrity: sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.45.1': + resolution: {integrity: sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.45.1': + resolution: {integrity: sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==} + cpu: [x64] + os: [win32] + + '@rushstack/node-core-library@4.0.2': + resolution: {integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.5.2': + resolution: {integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==} + + '@rushstack/terminal@0.10.0': + resolution: {integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@4.19.1': + resolution: {integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@swc-node/core@1.13.3': + resolution: {integrity: sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==} + engines: {node: '>= 10'} + peerDependencies: + '@swc/core': '>= 1.4.13' + '@swc/types': '>= 0.1' + + '@swc-node/register@1.9.2': + resolution: {integrity: sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==} + peerDependencies: + '@swc/core': '>= 1.4.13' + typescript: '>= 4.3' + + '@swc-node/sourcemap-support@0.5.1': + resolution: {integrity: sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==} + + '@swc/core-darwin-arm64@1.5.29': + resolution: {integrity: sha512-6F/sSxpHaq3nzg2ADv9FHLi4Fu2A8w8vP8Ich8gIl16D2htStlwnaPmCLjRswO+cFkzgVqy/l01gzNGWd4DFqA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.5.29': + resolution: {integrity: sha512-rF/rXkvUOTdTIfoYbmszbSUGsCyvqACqy1VeP3nXONS+LxFl4bRmRcUTRrblL7IE5RTMCKUuPbqbQSE2hK7bqg==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.5.29': + resolution: {integrity: sha512-2OAPL8iWBsmmwkjGXqvuUhbmmoLxS1xNXiMq87EsnCNMAKohGc7wJkdAOUL6J/YFpean/vwMWg64rJD4pycBeg==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.5.29': + resolution: {integrity: sha512-eH/Q9+8O5qhSxMestZnhuS1xqQMr6M7SolZYxiXJqxArXYILLCF+nq2R9SxuMl0CfjHSpb6+hHPk/HXy54eIRA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.5.29': + resolution: {integrity: sha512-TERh2OICAJz+SdDIK9+0GyTUwF6r4xDlFmpoiHKHrrD/Hh3u+6Zue0d7jQ/he/i80GDn4tJQkHlZys+RZL5UZg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.5.29': + resolution: {integrity: sha512-WMDPqU7Ji9dJpA+Llek2p9t7pcy7Bob8ggPUvgsIlv3R/eesF9DIzSbrgl6j3EAEPB9LFdSafsgf6kT/qnvqFg==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.5.29': + resolution: {integrity: sha512-DO14glwpdKY4POSN0201OnGg1+ziaSVr6/RFzuSLggshwXeeyVORiHv3baj7NENhJhWhUy3NZlDsXLnRFkmhHQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.5.29': resolution: {integrity: sha512-V3Y1+a1zG1zpYXUMqPIHEMEOd+rHoVnIpO/KTyFwAmKVu8v+/xPEVx/AGoYE67x4vDAAvPQrKI3Aokilqa5yVg==} engines: {node: '>=10'} cpu: [arm64] @@ -1325,6 +1824,18 @@ packages: '@tybys/wasm-util@0.9.0': resolution: {integrity: sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==} + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/chai@5.2.2': + resolution: {integrity: sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/node@18.19.118': resolution: {integrity: sha512-hIPK0hSrrcaoAu/gJMzN3QClXE4QdCdFvaenJ0JsjIbExP1JFFVH+RHcBt25c9n8bx5dkIfqKE+uw6BmBns7ug==} @@ -1334,6 +1845,66 @@ packages: '@types/react@19.1.8': resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==} + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/ui@3.2.4': + resolution: {integrity: sha512-hGISOaP18plkzbWEcP/QvtRW1xDXF2+96HbEX6byqQhAUbiS5oH6/9JwW+QsQCIYON2bI6QZBF+2PvOmrRZ9wA==} + peerDependencies: + vitest: 3.2.4 + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + '@volar/language-core@1.11.1': + resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} + + '@volar/source-map@1.11.1': + resolution: {integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==} + + '@volar/typescript@1.11.1': + resolution: {integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==} + + '@vue/compiler-core@3.5.18': + resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} + + '@vue/compiler-dom@3.5.18': + resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==} + + '@vue/language-core@1.8.27': + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/shared@3.5.18': + resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==} + '@yarnpkg/lockfile@1.1.0': resolution: {integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==} @@ -1349,6 +1920,12 @@ packages: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1361,6 +1938,10 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1369,12 +1950,20 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + async@3.2.6: resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} @@ -1423,6 +2012,10 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + before-after-hook@4.0.0: resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} @@ -1451,10 +2044,18 @@ packages: peerDependencies: '@types/react': ^19 + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} @@ -1462,6 +2063,10 @@ packages: caniuse-lite@1.0.30001727: resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} + chai@5.2.1: + resolution: {integrity: sha512-5nFxhUrX0PqtyogoYOA8IPswy5sZFTOsBFl/9bNsmDLgsxYTzSZQJDPppDnZPTQbzSEm0hqGjWPzRemQCYbD6A==} + engines: {node: '>=18'} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -1469,6 +2074,10 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + check-error@2.1.1: + resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} + engines: {node: '>= 16'} + cli-cursor@3.1.0: resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} engines: {node: '>=8'} @@ -1519,6 +2128,13 @@ packages: command-exists@1.2.9: resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} @@ -1528,6 +2144,10 @@ packages: core-js-compat@3.44.0: resolution: {integrity: sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==} + corser@2.0.1: + resolution: {integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==} + engines: {node: '>= 0.4.0'} + cosmiconfig@7.1.0: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} @@ -1539,6 +2159,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -1548,6 +2171,10 @@ packages: supports-color: optional: true + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -1580,6 +2207,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -1591,6 +2221,9 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + end-of-stream@1.4.5: resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} @@ -1602,6 +2235,10 @@ packages: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -1613,6 +2250,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -1621,6 +2261,16 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} + esbuild@0.21.5: + resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} + engines: {node: '>=12'} + hasBin: true + + esbuild@0.25.8: + resolution: {integrity: sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1634,10 +2284,31 @@ packages: engines: {node: '>=4'} hasBin: true + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + 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@4.0.7: + resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + + expect-type@1.2.2: + resolution: {integrity: sha512-JhFGDVJ7tmDJItKhYgJCGLOWjuK9vPxiXoUFLwLDc99NlmklilbiQJwoctZtt13+xMw91MCk/REan6MWHqDjyA==} + engines: {node: '>=12.0.0'} + external-editor@3.1.0: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} @@ -1645,6 +2316,15 @@ packages: fast-content-type-parse@3.0.0: resolution: {integrity: sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg==} + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-uri@3.0.6: + resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} + fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -1653,6 +2333,9 @@ packages: picomatch: optional: true + fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -1672,6 +2355,9 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + flatted@3.3.3: + resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -1681,6 +2367,10 @@ packages: debug: optional: true + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + form-data@4.0.3: resolution: {integrity: sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==} engines: {node: '>= 6'} @@ -1695,6 +2385,15 @@ packages: resolution: {integrity: sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==} engines: {node: '>=14.14'} + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + 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==} @@ -1714,6 +2413,11 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + glob@11.0.3: + resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + engines: {node: 20 || >=22} + hasBin: true + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -1737,14 +2441,35 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + hosted-git-info@7.0.2: resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} engines: {node: ^16.14.0 || >=18.0.0} + html-encoding-sniffer@3.0.0: + resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} + engines: {node: '>=12'} + + http-proxy@1.18.1: + resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} + engines: {node: '>=8.0.0'} + + http-server@14.1.1: + resolution: {integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==} + engines: {node: '>=12'} + hasBin: true + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} + iconv-lite@0.6.3: + resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} + engines: {node: '>=0.10.0'} + ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -1756,6 +2481,10 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -1790,6 +2519,10 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + jackspeak@4.1.1: + resolution: {integrity: sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==} + engines: {node: 20 || >=22} + jake@10.9.2: resolution: {integrity: sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==} engines: {node: '>=10'} @@ -1803,9 +2536,19 @@ packages: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + 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 @@ -1827,6 +2570,12 @@ packages: 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==} + json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -1835,9 +2584,15 @@ packages: jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -1855,6 +2610,14 @@ packages: lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + lodash.get@4.4.2: + resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==} + deprecated: This package is deprecated. Use the optional chaining (?.) operator instead. + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + deprecated: This package is deprecated. Use require('node:util').isDeepStrictEqual instead. + lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} @@ -1862,9 +2625,16 @@ packages: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} + loupe@3.2.0: + resolution: {integrity: sha512-2NCfZcT5VGVNX9mSZIxLRkEAegDGBpuQZBy13desuHeVORmBDyAET4TkJr4SjqQy3A8JDofMN6LpkK8Xcm/dlw==} + lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.1.0: + resolution: {integrity: sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==} + engines: {node: 20 || >=22} + lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} @@ -1872,6 +2642,9 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + magic-string@0.30.17: + resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -1884,10 +2657,22 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@1.6.0: + resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} + engines: {node: '>=4'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + minimatch@10.0.3: + resolution: {integrity: sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw==} + engines: {node: 20 || >=22} + + minimatch@3.0.8: + resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -1902,13 +2687,29 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + mute-stream@2.0.0: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + node-machine-id@1.1.12: resolution: {integrity: sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==} @@ -1935,6 +2736,10 @@ packages: '@swc/core': optional: true + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -1946,6 +2751,10 @@ packages: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} + opener@1.5.2: + resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} + hasBin: true + ora@5.3.0: resolution: {integrity: sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==} engines: {node: '>=10'} @@ -1962,6 +2771,9 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -1970,6 +2782,9 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-exists@5.0.0: resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1981,10 +2796,21 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -1996,6 +2822,14 @@ packages: resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} engines: {node: '>= 6'} + portfinder@1.0.37: + resolution: {integrity: sha512-yuGIEjDAYnnOex9ddMnKZEMFE0CcGo6zbfzDklkmT1m5z734ss6JMzN9rNB3+RR7iS+F10D4/BVIaXOyh8PQKw==} + engines: {node: '>= 10.12'} + + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} + engines: {node: ^10 || ^12 || >=14} + prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} engines: {node: '>=10.13.0'} @@ -2012,6 +2846,14 @@ packages: proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.14.0: + resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==} + engines: {node: '>=0.6'} + react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -2041,6 +2883,13 @@ packages: 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'} + + requires-port@1.0.0: + resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} + resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} @@ -2049,6 +2898,9 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} + resolve@1.19.0: + resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} + resolve@1.22.10: resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==} engines: {node: '>= 0.4'} @@ -2058,12 +2910,23 @@ packages: resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} engines: {node: '>=8'} + rollup@4.45.1: + resolution: {integrity: sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + secure-compare@3.0.1: + resolution: {integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==} + semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -2086,6 +2949,25 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + side-channel-list@1.0.0: + resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -2093,6 +2975,14 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + engines: {node: '>=18'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.19: resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} @@ -2106,10 +2996,24 @@ packages: sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.9.0: + resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + + 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_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -2117,14 +3021,29 @@ packages: 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-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strip-literal@3.0.0: + resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} @@ -2133,10 +3052,28 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.3: + resolution: {integrity: sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==} + engines: {node: '>=14.0.0'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -2145,6 +3082,10 @@ packages: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -2163,6 +3104,11 @@ packages: resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} engines: {node: '>=10'} + typescript@5.4.2: + resolution: {integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==} + engines: {node: '>=14.17'} + hasBin: true + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -2191,9 +3137,17 @@ packages: resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} engines: {node: '>=18'} + union@0.5.0: + resolution: {integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==} + engines: {node: '>= 0.8.0'} + universal-user-agent@7.0.3: resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + 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'} @@ -2204,6 +3158,12 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + url-join@4.0.1: + resolution: {integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==} + util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} @@ -2215,17 +3175,153 @@ packages: resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + validator@13.15.15: + resolution: {integrity: sha512-BgWVbCI72aIQy937xbawcs+hrVaN/CZ2UwutgaJ36hGqRrLNM+f5LUT/YPRbo8IV/ASeFzXszezV+y2+rq3l8A==} + engines: {node: '>= 0.10'} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite-plugin-dts@3.9.1: + resolution: {integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite@5.4.19: + resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==} + 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 + + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + 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 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vue-template-compiler@2.7.16: + resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} + + vue-tsc@1.8.27: + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} + hasBin: true + peerDependencies: + typescript: '*' + wasm-sjlj@1.0.6: resolution: {integrity: sha512-pjaKtLJejlWm6+okPV2X1A6nIsRDD4qeK97eCh8DP8KXi3Nzn/HY01vpHhZHlhDri12eZqipjm8HhdTVw+ATxw==} wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + whatwg-encoding@2.0.0: + resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} + engines: {node: '>=12'} + 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 + wrap-ansi@6.2.0: resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} engines: {node: '>=8'} @@ -2234,6 +3330,10 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -2272,6 +3372,11 @@ packages: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} + z-schema@5.0.5: + resolution: {integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==} + engines: {node: '>=8.0.0'} + hasBin: true + snapshots: '@ampproject/remapping@2.3.0': @@ -3004,6 +4109,153 @@ snapshots: dependencies: tslib: 2.8.1 + '@esbuild/aix-ppc64@0.21.5': + optional: true + + '@esbuild/aix-ppc64@0.25.8': + optional: true + + '@esbuild/android-arm64@0.21.5': + optional: true + + '@esbuild/android-arm64@0.25.8': + optional: true + + '@esbuild/android-arm@0.21.5': + optional: true + + '@esbuild/android-arm@0.25.8': + optional: true + + '@esbuild/android-x64@0.21.5': + optional: true + + '@esbuild/android-x64@0.25.8': + optional: true + + '@esbuild/darwin-arm64@0.21.5': + optional: true + + '@esbuild/darwin-arm64@0.25.8': + optional: true + + '@esbuild/darwin-x64@0.21.5': + optional: true + + '@esbuild/darwin-x64@0.25.8': + optional: true + + '@esbuild/freebsd-arm64@0.21.5': + optional: true + + '@esbuild/freebsd-arm64@0.25.8': + optional: true + + '@esbuild/freebsd-x64@0.21.5': + optional: true + + '@esbuild/freebsd-x64@0.25.8': + optional: true + + '@esbuild/linux-arm64@0.21.5': + optional: true + + '@esbuild/linux-arm64@0.25.8': + optional: true + + '@esbuild/linux-arm@0.21.5': + optional: true + + '@esbuild/linux-arm@0.25.8': + optional: true + + '@esbuild/linux-ia32@0.21.5': + optional: true + + '@esbuild/linux-ia32@0.25.8': + optional: true + + '@esbuild/linux-loong64@0.21.5': + optional: true + + '@esbuild/linux-loong64@0.25.8': + optional: true + + '@esbuild/linux-mips64el@0.21.5': + optional: true + + '@esbuild/linux-mips64el@0.25.8': + optional: true + + '@esbuild/linux-ppc64@0.21.5': + optional: true + + '@esbuild/linux-ppc64@0.25.8': + optional: true + + '@esbuild/linux-riscv64@0.21.5': + optional: true + + '@esbuild/linux-riscv64@0.25.8': + optional: true + + '@esbuild/linux-s390x@0.21.5': + optional: true + + '@esbuild/linux-s390x@0.25.8': + optional: true + + '@esbuild/linux-x64@0.21.5': + optional: true + + '@esbuild/linux-x64@0.25.8': + optional: true + + '@esbuild/netbsd-arm64@0.25.8': + optional: true + + '@esbuild/netbsd-x64@0.21.5': + optional: true + + '@esbuild/netbsd-x64@0.25.8': + optional: true + + '@esbuild/openbsd-arm64@0.25.8': + optional: true + + '@esbuild/openbsd-x64@0.21.5': + optional: true + + '@esbuild/openbsd-x64@0.25.8': + optional: true + + '@esbuild/openharmony-arm64@0.25.8': + optional: true + + '@esbuild/sunos-x64@0.21.5': + optional: true + + '@esbuild/sunos-x64@0.25.8': + optional: true + + '@esbuild/win32-arm64@0.21.5': + optional: true + + '@esbuild/win32-arm64@0.25.8': + optional: true + + '@esbuild/win32-ia32@0.21.5': + optional: true + + '@esbuild/win32-ia32@0.25.8': + optional: true + + '@esbuild/win32-x64@0.21.5': + optional: true + + '@esbuild/win32-x64@0.25.8': + optional: true + '@iarna/toml@2.2.5': {} '@inquirer/checkbox@4.1.9(@types/node@18.19.118)': @@ -3122,6 +4374,21 @@ snapshots: optionalDependencies: '@types/node': 18.19.118 + '@isaacs/balanced-match@4.0.1': {} + + '@isaacs/brace-expansion@5.0.0': + dependencies: + '@isaacs/balanced-match': 4.0.1 + + '@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 + '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 @@ -3142,6 +4409,41 @@ snapshots: '@ltd/j-toml@1.38.0': {} + '@microsoft/api-extractor-model@7.28.13(@types/node@18.19.118)': + dependencies: + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.118) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.43.0(@types/node@18.19.118)': + dependencies: + '@microsoft/api-extractor-model': 7.28.13(@types/node@18.19.118) + '@microsoft/tsdoc': 0.14.2 + '@microsoft/tsdoc-config': 0.16.2 + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.118) + '@rushstack/rig-package': 0.5.2 + '@rushstack/terminal': 0.10.0(@types/node@18.19.118) + '@rushstack/ts-command-line': 4.19.1(@types/node@18.19.118) + lodash: 4.17.21 + minimatch: 3.0.8 + resolve: 1.22.10 + semver: 7.5.4 + source-map: 0.6.1 + typescript: 5.4.2 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.16.2': + dependencies: + '@microsoft/tsdoc': 0.14.2 + ajv: 6.12.6 + jju: 1.4.0 + resolve: 1.19.0 + + '@microsoft/tsdoc@0.14.2': {} + '@monodon/rust@2.3.0(@napi-rs/cli@3.0.0-alpha.99(@emnapi/runtime@1.4.4)(@types/node@18.19.118))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))': dependencies: '@ltd/j-toml': 1.38.0 @@ -3501,6 +4803,46 @@ snapshots: '@nx/nx-win32-x64-msvc@21.2.3': optional: true + '@nx/vite@21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))(typescript@5.8.3)(vite@6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0))(vitest@3.2.4)': + dependencies: + '@nx/devkit': 21.2.3(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) + '@nx/js': 21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) + '@phenomnomnominal/tsquery': 5.0.1(typescript@5.8.3) + '@swc/helpers': 0.5.17 + ajv: 8.17.1 + enquirer: 2.3.6 + picomatch: 4.0.2 + semver: 7.7.2 + tsconfig-paths: 4.2.0 + vite: 6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0) + vitest: 3.2.4(@types/node@18.19.118)(@vitest/ui@3.2.4)(jiti@2.4.2)(yaml@2.8.0) + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + - typescript + - verdaccio + + '@nx/web@21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17)))': + dependencies: + '@nx/devkit': 21.2.3(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) + '@nx/js': 21.2.3(@babel/traverse@7.28.0)(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) + detect-port: 1.6.1 + http-server: 14.1.1 + picocolors: 1.1.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@babel/traverse' + - '@swc-node/register' + - '@swc/core' + - debug + - nx + - supports-color + - verdaccio + '@nx/workspace@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))': dependencies: '@nx/devkit': 21.2.3(nx@21.2.3(@swc-node/register@1.9.2(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)(typescript@5.8.3))(@swc/core@1.5.29(@swc/helpers@0.5.17))) @@ -3596,6 +4938,113 @@ snapshots: dependencies: '@octokit/openapi-types': 25.1.0 + '@phenomnomnominal/tsquery@5.0.1(typescript@5.8.3)': + dependencies: + esquery: 1.6.0 + typescript: 5.8.3 + + '@polka/url@1.0.0-next.29': {} + + '@rollup/pluginutils@5.2.0(rollup@4.45.1)': + dependencies: + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.45.1 + + '@rollup/rollup-android-arm-eabi@4.45.1': + optional: true + + '@rollup/rollup-android-arm64@4.45.1': + optional: true + + '@rollup/rollup-darwin-arm64@4.45.1': + optional: true + + '@rollup/rollup-darwin-x64@4.45.1': + optional: true + + '@rollup/rollup-freebsd-arm64@4.45.1': + optional: true + + '@rollup/rollup-freebsd-x64@4.45.1': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.45.1': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.45.1': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.45.1': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.45.1': + optional: true + + '@rollup/rollup-linux-loongarch64-gnu@4.45.1': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.45.1': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.45.1': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.45.1': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.45.1': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.45.1': + optional: true + + '@rollup/rollup-linux-x64-musl@4.45.1': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.45.1': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.45.1': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.45.1': + optional: true + + '@rushstack/node-core-library@4.0.2(@types/node@18.19.118)': + dependencies: + fs-extra: 7.0.1 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.10 + semver: 7.5.4 + z-schema: 5.0.5 + optionalDependencies: + '@types/node': 18.19.118 + + '@rushstack/rig-package@0.5.2': + dependencies: + resolve: 1.22.10 + strip-json-comments: 3.1.1 + + '@rushstack/terminal@0.10.0(@types/node@18.19.118)': + dependencies: + '@rushstack/node-core-library': 4.0.2(@types/node@18.19.118) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 18.19.118 + + '@rushstack/ts-command-line@4.19.1(@types/node@18.19.118)': + dependencies: + '@rushstack/terminal': 0.10.0(@types/node@18.19.118) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + '@sinclair/typebox@0.27.8': {} '@swc-node/core@1.13.3(@swc/core@1.5.29(@swc/helpers@0.5.17))(@swc/types@0.1.23)': @@ -3669,34 +5118,139 @@ snapshots: '@swc/core-win32-x64-msvc': 1.5.29 '@swc/helpers': 0.5.17 - '@swc/counter@0.1.3': {} + '@swc/counter@0.1.3': {} + + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + + '@swc/types@0.1.23': + dependencies: + '@swc/counter': 0.1.3 + + '@tybys/wasm-util@0.10.0': + dependencies: + tslib: 2.8.1 + optional: true + + '@tybys/wasm-util@0.9.0': + dependencies: + tslib: 2.8.1 + + '@types/argparse@1.0.38': {} + + '@types/chai@5.2.2': + dependencies: + '@types/deep-eql': 4.0.2 + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.8': {} + + '@types/node@18.19.118': + dependencies: + undici-types: 5.26.5 + + '@types/parse-json@4.0.2': {} + + '@types/react@19.1.8': + dependencies: + csstype: 3.1.3 + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.2 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.17 + optionalDependencies: + vite: 6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 - '@swc/helpers@0.5.17': + '@vitest/runner@3.2.4': dependencies: - tslib: 2.8.1 + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.0.0 - '@swc/types@0.1.23': + '@vitest/snapshot@3.2.4': dependencies: - '@swc/counter': 0.1.3 + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.17 + pathe: 2.0.3 - '@tybys/wasm-util@0.10.0': + '@vitest/spy@3.2.4': dependencies: - tslib: 2.8.1 - optional: true + tinyspy: 4.0.3 - '@tybys/wasm-util@0.9.0': + '@vitest/ui@3.2.4(vitest@3.2.4)': dependencies: - tslib: 2.8.1 + '@vitest/utils': 3.2.4 + fflate: 0.8.2 + flatted: 3.3.3 + pathe: 2.0.3 + sirv: 3.0.1 + tinyglobby: 0.2.14 + tinyrainbow: 2.0.0 + vitest: 3.2.4(@types/node@18.19.118)(@vitest/ui@3.2.4)(jiti@2.4.2)(yaml@2.8.0) - '@types/node@18.19.118': + '@vitest/utils@3.2.4': dependencies: - undici-types: 5.26.5 + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.0 + tinyrainbow: 2.0.0 - '@types/parse-json@4.0.2': {} + '@volar/language-core@1.11.1': + dependencies: + '@volar/source-map': 1.11.1 - '@types/react@19.1.8': + '@volar/source-map@1.11.1': dependencies: - csstype: 3.1.3 + muggle-string: 0.3.1 + + '@volar/typescript@1.11.1': + dependencies: + '@volar/language-core': 1.11.1 + path-browserify: 1.0.1 + + '@vue/compiler-core@3.5.18': + dependencies: + '@babel/parser': 7.28.0 + '@vue/shared': 3.5.18 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.18': + dependencies: + '@vue/compiler-core': 3.5.18 + '@vue/shared': 3.5.18 + + '@vue/language-core@1.8.27(typescript@5.8.3)': + dependencies: + '@volar/language-core': 1.11.1 + '@volar/source-map': 1.11.1 + '@vue/compiler-dom': 3.5.18 + '@vue/shared': 3.5.18 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + path-browserify: 1.0.1 + vue-template-compiler: 2.7.16 + optionalDependencies: + typescript: 5.8.3 + + '@vue/shared@3.5.18': {} '@yarnpkg/lockfile@1.1.0': {} @@ -3711,6 +5265,20 @@ snapshots: address@1.2.2: {} + 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.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.6 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-colors@4.1.3: {} ansi-escapes@4.3.2: @@ -3719,18 +5287,24 @@ snapshots: ansi-regex@5.0.1: {} + ansi-regex@6.1.0: {} + ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 argparse@2.0.1: {} + assertion-error@2.0.1: {} + async@3.2.6: {} asynckit@0.4.0: {} @@ -3793,6 +5367,10 @@ snapshots: base64-js@1.5.1: {} + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + before-after-hook@4.0.0: {} bl@4.1.0: @@ -3829,15 +5407,30 @@ snapshots: '@types/node': 18.19.118 '@types/react': 19.1.8 + cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 function-bind: 1.1.2 + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + callsites@3.1.0: {} caniuse-lite@1.0.30001727: {} + chai@5.2.1: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.1 + deep-eql: 5.0.2 + loupe: 3.2.0 + pathval: 2.0.1 + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -3845,6 +5438,8 @@ snapshots: chardet@0.7.0: {} + check-error@2.1.1: {} + cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 @@ -3886,6 +5481,11 @@ snapshots: command-exists@1.2.9: {} + commander@9.5.0: + optional: true + + computeds@0.0.1: {} + concat-map@0.0.1: {} convert-source-map@2.0.0: {} @@ -3894,6 +5494,8 @@ snapshots: dependencies: browserslist: 4.25.1 + corser@2.0.1: {} + cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -3910,10 +5512,14 @@ snapshots: csstype@3.1.3: {} + de-indent@1.0.2: {} + debug@4.4.1: dependencies: ms: 2.1.3 + deep-eql@5.0.2: {} + defaults@1.0.4: dependencies: clone: 1.0.4 @@ -3943,6 +5549,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + eastasianwidth@0.2.0: {} + ejs@3.1.10: dependencies: jake: 10.9.2 @@ -3951,6 +5559,8 @@ snapshots: emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + end-of-stream@1.4.5: dependencies: once: 1.4.0 @@ -3964,6 +5574,8 @@ snapshots: ansi-colors: 4.1.3 strip-ansi: 6.0.1 + entities@4.5.0: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -3972,6 +5584,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@1.7.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -3983,14 +5597,85 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.2 + 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 + + esbuild@0.25.8: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.8 + '@esbuild/android-arm': 0.25.8 + '@esbuild/android-arm64': 0.25.8 + '@esbuild/android-x64': 0.25.8 + '@esbuild/darwin-arm64': 0.25.8 + '@esbuild/darwin-x64': 0.25.8 + '@esbuild/freebsd-arm64': 0.25.8 + '@esbuild/freebsd-x64': 0.25.8 + '@esbuild/linux-arm': 0.25.8 + '@esbuild/linux-arm64': 0.25.8 + '@esbuild/linux-ia32': 0.25.8 + '@esbuild/linux-loong64': 0.25.8 + '@esbuild/linux-mips64el': 0.25.8 + '@esbuild/linux-ppc64': 0.25.8 + '@esbuild/linux-riscv64': 0.25.8 + '@esbuild/linux-s390x': 0.25.8 + '@esbuild/linux-x64': 0.25.8 + '@esbuild/netbsd-arm64': 0.25.8 + '@esbuild/netbsd-x64': 0.25.8 + '@esbuild/openbsd-arm64': 0.25.8 + '@esbuild/openbsd-x64': 0.25.8 + '@esbuild/openharmony-arm64': 0.25.8 + '@esbuild/sunos-x64': 0.25.8 + '@esbuild/win32-arm64': 0.25.8 + '@esbuild/win32-ia32': 0.25.8 + '@esbuild/win32-x64': 0.25.8 + escalade@3.2.0: {} escape-string-regexp@1.0.5: {} esprima@4.0.1: {} + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.8 + esutils@2.0.3: {} + eventemitter3@4.0.7: {} + + expect-type@1.2.2: {} + external-editor@3.1.0: dependencies: chardet: 0.7.0 @@ -3999,10 +5684,18 @@ snapshots: fast-content-type-parse@3.0.0: {} + fast-deep-equal@3.1.3: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-uri@3.0.6: {} + fdir@6.4.6(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 + fflate@0.8.2: {} + figures@3.2.0: dependencies: escape-string-regexp: 1.0.5 @@ -4021,8 +5714,15 @@ snapshots: flat@5.0.2: {} + flatted@3.3.3: {} + follow-redirects@1.15.9: {} + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + form-data@4.0.3: dependencies: asynckit: 0.4.0 @@ -4043,6 +5743,15 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fsevents@2.3.3: + optional: true + function-bind@1.1.2: {} gensync@1.0.0-beta.2: {} @@ -4067,6 +5776,15 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + glob@11.0.3: + dependencies: + foreground-child: 3.3.1 + jackspeak: 4.1.1 + minimatch: 10.0.3 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 + path-scurry: 2.0.0 + gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -4083,14 +5801,51 @@ snapshots: dependencies: function-bind: 1.1.2 + he@1.2.0: {} + hosted-git-info@7.0.2: dependencies: lru-cache: 10.4.3 + html-encoding-sniffer@3.0.0: + dependencies: + whatwg-encoding: 2.0.0 + + http-proxy@1.18.1: + dependencies: + eventemitter3: 4.0.7 + follow-redirects: 1.15.9 + requires-port: 1.0.0 + transitivePeerDependencies: + - debug + + http-server@14.1.1: + dependencies: + basic-auth: 2.0.1 + chalk: 4.1.2 + corser: 2.0.1 + he: 1.2.0 + html-encoding-sniffer: 3.0.0 + http-proxy: 1.18.1 + mime: 1.6.0 + minimist: 1.2.8 + opener: 1.5.2 + portfinder: 1.0.37 + secure-compare: 3.0.1 + union: 0.5.0 + url-join: 4.0.1 + transitivePeerDependencies: + - debug + - supports-color + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: + dependencies: + safer-buffer: 2.1.2 + ieee754@1.2.1: {} ignore@5.3.2: {} @@ -4100,6 +5855,8 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 + import-lazy@4.0.0: {} + inherits@2.0.4: {} is-arrayish@0.2.1: {} @@ -4122,6 +5879,10 @@ snapshots: isexe@2.0.0: {} + jackspeak@4.1.1: + dependencies: + '@isaacs/cliui': 8.0.2 + jake@10.9.2: dependencies: async: 3.2.6 @@ -4138,8 +5899,14 @@ snapshots: jest-get-type@29.6.3: {} + jiti@2.4.2: {} + + jju@1.4.0: {} + js-tokens@4.0.0: {} + js-tokens@9.0.1: {} + js-yaml@3.14.1: dependencies: argparse: 1.0.10 @@ -4155,16 +5922,26 @@ snapshots: json-parse-even-better-errors@2.3.1: {} + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + json5@2.2.3: {} jsonc-parser@3.2.0: {} + 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 + kolorist@1.8.0: {} + lines-and-columns@1.2.4: {} lines-and-columns@2.0.3: {} @@ -4177,6 +5954,10 @@ snapshots: lodash.debounce@4.0.8: {} + lodash.get@4.4.2: {} + + lodash.isequal@4.5.0: {} + lodash@4.17.21: {} log-symbols@4.1.0: @@ -4184,8 +5965,12 @@ snapshots: chalk: 4.1.2 is-unicode-supported: 0.1.0 + loupe@3.2.0: {} + lru-cache@10.4.3: {} + lru-cache@11.1.0: {} + lru-cache@5.1.1: dependencies: yallist: 3.1.1 @@ -4194,6 +5979,10 @@ snapshots: dependencies: yallist: 4.0.0 + magic-string@0.30.17: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.4 + math-intrinsics@1.1.0: {} mime-db@1.52.0: {} @@ -4202,8 +5991,18 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@1.6.0: {} + mimic-fn@2.1.0: {} + minimatch@10.0.3: + dependencies: + '@isaacs/brace-expansion': 5.0.0 + + minimatch@3.0.8: + dependencies: + brace-expansion: 1.1.12 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -4218,10 +6017,18 @@ snapshots: minimist@1.2.8: {} + minipass@7.1.2: {} + + mrmime@2.0.1: {} + ms@2.1.3: {} + muggle-string@0.3.1: {} + mute-stream@2.0.0: {} + nanoid@3.3.11: {} + node-machine-id@1.1.12: {} node-releases@2.0.19: {} @@ -4290,6 +6097,8 @@ snapshots: transitivePeerDependencies: - debug + object-inspect@1.13.4: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -4304,6 +6113,8 @@ snapshots: is-docker: 2.2.1 is-wsl: 2.2.0 + opener@1.5.2: {} + ora@5.3.0: dependencies: bl: 4.1.0 @@ -4325,6 +6136,8 @@ snapshots: dependencies: p-limit: 4.0.0 + package-json-from-dist@1.0.1: {} + parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -4336,20 +6149,44 @@ snapshots: json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + path-browserify@1.0.1: {} + path-exists@5.0.0: {} path-key@3.1.1: {} path-parse@1.0.7: {} + path-scurry@2.0.0: + dependencies: + lru-cache: 11.1.0 + minipass: 7.1.2 + path-type@4.0.0: {} + pathe@2.0.3: {} + + pathval@2.0.1: {} + picocolors@1.1.1: {} picomatch@4.0.2: {} pirates@4.0.7: {} + portfinder@1.0.37: + dependencies: + async: 3.2.6 + debug: 4.4.1 + transitivePeerDependencies: + - supports-color + + postcss@8.5.6: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prettier@2.8.8: {} pretty-format@29.7.0: @@ -4362,6 +6199,12 @@ snapshots: proxy-from-env@1.1.0: {} + punycode@2.3.1: {} + + qs@6.14.0: + dependencies: + side-channel: 1.1.0 + react-is@18.3.1: {} readable-stream@3.6.2: @@ -4393,10 +6236,19 @@ snapshots: require-directory@2.1.1: {} + require-from-string@2.0.2: {} + + requires-port@1.0.0: {} + resolve-from@4.0.0: {} resolve.exports@2.0.3: {} + resolve@1.19.0: + dependencies: + is-core-module: 2.16.1 + path-parse: 1.0.7 + resolve@1.22.10: dependencies: is-core-module: 2.16.1 @@ -4408,10 +6260,40 @@ snapshots: onetime: 5.1.2 signal-exit: 3.0.7 + rollup@4.45.1: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.45.1 + '@rollup/rollup-android-arm64': 4.45.1 + '@rollup/rollup-darwin-arm64': 4.45.1 + '@rollup/rollup-darwin-x64': 4.45.1 + '@rollup/rollup-freebsd-arm64': 4.45.1 + '@rollup/rollup-freebsd-x64': 4.45.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.45.1 + '@rollup/rollup-linux-arm-musleabihf': 4.45.1 + '@rollup/rollup-linux-arm64-gnu': 4.45.1 + '@rollup/rollup-linux-arm64-musl': 4.45.1 + '@rollup/rollup-linux-loongarch64-gnu': 4.45.1 + '@rollup/rollup-linux-powerpc64le-gnu': 4.45.1 + '@rollup/rollup-linux-riscv64-gnu': 4.45.1 + '@rollup/rollup-linux-riscv64-musl': 4.45.1 + '@rollup/rollup-linux-s390x-gnu': 4.45.1 + '@rollup/rollup-linux-x64-gnu': 4.45.1 + '@rollup/rollup-linux-x64-musl': 4.45.1 + '@rollup/rollup-win32-arm64-msvc': 4.45.1 + '@rollup/rollup-win32-ia32-msvc': 4.45.1 + '@rollup/rollup-win32-x64-msvc': 4.45.1 + fsevents: 2.3.3 + + safe-buffer@5.1.2: {} + safe-buffer@5.2.1: {} safer-buffer@2.1.2: {} + secure-compare@3.0.1: {} + semver@6.3.1: {} semver@7.5.4: @@ -4426,10 +6308,48 @@ snapshots: shebang-regex@3.0.0: {} + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + signal-exit@3.0.7: {} signal-exit@4.1.0: {} + sirv@3.0.1: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + source-map-js@1.2.1: {} + source-map-support@0.5.19: dependencies: buffer-from: 1.1.2 @@ -4444,12 +6364,24 @@ snapshots: sprintf-js@1.0.3: {} + stackback@0.0.2: {} + + std-env@3.9.0: {} + + 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_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -4458,12 +6390,26 @@ snapshots: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + strip-bom@3.0.0: {} + strip-json-comments@3.1.1: {} + + strip-literal@3.0.0: + dependencies: + js-tokens: 9.0.1 + supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + supports-preserve-symlinks-flag@1.0.0: {} tar-stream@2.2.0: @@ -4474,17 +6420,29 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + tinyglobby@0.2.14: dependencies: fdir: 6.4.6(picomatch@4.0.2) picomatch: 4.0.2 + tinypool@1.1.1: {} + + tinyrainbow@2.0.0: {} + + tinyspy@4.0.3: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 tmp@0.2.3: {} + totalist@3.0.1: {} + tree-kill@1.2.2: {} tsconfig-paths@4.2.0: @@ -4499,6 +6457,8 @@ snapshots: type-fest@0.21.3: {} + typescript@5.4.2: {} + typescript@5.8.3: {} undici-types@5.26.5: {} @@ -4516,8 +6476,14 @@ snapshots: unicorn-magic@0.1.0: {} + union@0.5.0: + dependencies: + qs: 6.14.0 + universal-user-agent@7.0.3: {} + universalify@0.1.2: {} + universalify@2.0.1: {} update-browserslist-db@1.1.3(browserslist@4.25.1): @@ -4526,22 +6492,154 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + url-join@4.0.1: {} + util-deprecate@1.0.2: {} uuid@9.0.1: {} validate-npm-package-name@5.0.1: {} + validator@13.15.15: {} + + vite-node@3.2.4(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0): + dependencies: + cac: 6.7.14 + debug: 4.4.1 + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite-plugin-dts@3.9.1(@types/node@18.19.118)(rollup@4.45.1)(typescript@5.8.3)(vite@5.4.19(@types/node@18.19.118)): + dependencies: + '@microsoft/api-extractor': 7.43.0(@types/node@18.19.118) + '@rollup/pluginutils': 5.2.0(rollup@4.45.1) + '@vue/language-core': 1.8.27(typescript@5.8.3) + debug: 4.4.1 + kolorist: 1.8.0 + magic-string: 0.30.17 + typescript: 5.8.3 + vue-tsc: 1.8.27(typescript@5.8.3) + optionalDependencies: + vite: 5.4.19(@types/node@18.19.118) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + + vite@5.4.19(@types/node@18.19.118): + dependencies: + esbuild: 0.21.5 + postcss: 8.5.6 + rollup: 4.45.1 + optionalDependencies: + '@types/node': 18.19.118 + fsevents: 2.3.3 + + vite@6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0): + dependencies: + esbuild: 0.25.8 + fdir: 6.4.6(picomatch@4.0.2) + picomatch: 4.0.2 + postcss: 8.5.6 + rollup: 4.45.1 + tinyglobby: 0.2.14 + optionalDependencies: + '@types/node': 18.19.118 + fsevents: 2.3.3 + jiti: 2.4.2 + yaml: 2.8.0 + + vitest@3.2.4(@types/node@18.19.118)(@vitest/ui@3.2.4)(jiti@2.4.2)(yaml@2.8.0): + dependencies: + '@types/chai': 5.2.2 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.2.1 + debug: 4.4.1 + expect-type: 1.2.2 + magic-string: 0.30.17 + pathe: 2.0.3 + picomatch: 4.0.2 + std-env: 3.9.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.14 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 6.3.5(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0) + vite-node: 3.2.4(@types/node@18.19.118)(jiti@2.4.2)(yaml@2.8.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 18.19.118 + '@vitest/ui': 3.2.4(vitest@3.2.4) + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vue-template-compiler@2.7.16: + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + vue-tsc@1.8.27(typescript@5.8.3): + dependencies: + '@volar/typescript': 1.11.1 + '@vue/language-core': 1.8.27(typescript@5.8.3) + semver: 7.7.2 + typescript: 5.8.3 + wasm-sjlj@1.0.6: {} wcwidth@1.0.1: dependencies: defaults: 1.0.4 + whatwg-encoding@2.0.0: + dependencies: + iconv-lite: 0.6.3 + 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 + wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 @@ -4554,6 +6652,12 @@ snapshots: 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 + wrappy@1.0.2: {} y18n@5.0.8: {} @@ -4581,3 +6685,11 @@ snapshots: yocto-queue@1.2.1: {} yoctocolors-cjs@2.1.2: {} + + z-schema@5.0.5: + dependencies: + lodash.get: 4.4.2 + lodash.isequal: 4.5.0 + validator: 13.15.15 + optionalDependencies: + commander: 9.5.0 diff --git a/tsconfig.json b/tsconfig.json index d9f8396..058873f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,11 +2,19 @@ "extends": "./tsconfig.base.json", "compileOnSave": false, "files": [], - "references": [], - // "bun-types" is the important part + "references": [ + { + "path": "./apps/cache-strategies" + }, + { + "path": "./libs/algorithms" + }, + { + "path": "./libs/datatypes" + } + ], "compilerOptions": { "types": ["node", "bun-types", "jest"], - "exclude": ["node_modules/**/*", "dist/**/*"], - "allowJs": true + "exclude": ["node_modules/**/*", "dist/**/*"] } }