├── .github └── workflows │ └── tests.yaml ├── .gitignore ├── LICENSE ├── README.md ├── demo ├── basic │ ├── bundle.js │ ├── index.html │ ├── index.js │ └── style.css ├── coarse │ ├── bundle.js │ ├── index.html │ ├── index.js │ └── style.css └── lib │ ├── getColor.js │ └── getGraph.js ├── index.js ├── lib ├── createCommunity.js └── createCommunityGraph.js ├── package-lock.json ├── package.json └── test ├── index.js └── simple.js /.github/workflows/tests.yaml: -------------------------------------------------------------------------------- 1 | name: Node.js CI 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | 9 | jobs: 10 | build: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | strategy: 15 | matrix: 16 | node-version: [20.x, 18.x] 17 | 18 | steps: 19 | - uses: actions/checkout@v2 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v2 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | - run: npm ci 25 | - run: npm run build --if-present 26 | - run: npm test 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | lib-cov 2 | *.seed 3 | *.log 4 | *.csv 5 | *.dat 6 | *.out 7 | *.pid 8 | *.gz 9 | 10 | .tap 11 | pids 12 | logs 13 | results 14 | build 15 | .nyc_output 16 | 17 | npm-debug.log 18 | node_modules 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016-2025 Andrei Kashcha 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ngraph.louvain 2 | 3 | Given a graph instance detects clusters using the [Louvain Method](https://en.wikipedia.org/wiki/Louvain_Modularity). 4 | [Demo](https://anvaka.github.io/ngraph.louvain/demo/basic/) 5 | 6 | # usage 7 | 8 | ``` js 9 | // Let's say you have an ngraph instance: 10 | var graph = createAGraph(); 11 | 12 | // To detect clusters: 13 | var detectClusters = require('ngraph.louvain'); 14 | var clusters = detectClusters(graph); 15 | 16 | // now you can iterate over each node and get it's community (aka class): 17 | graph.forEachNode(function(node) { 18 | console.log(node.id, clusters.getClass(node.id)); 19 | }); 20 | ``` 21 | 22 | Note: Louvain method is hierarchical. I.e. you should be able to get coarser 23 | graphs based on detected communities. By default `ngraph.louvain` 24 | does not implement hierarchies, yet you can easily achieve it by following: 25 | 26 | ``` js 27 | var coarsen = require('ngraph.coarsen'); 28 | 29 | var detectClusters = require('ngraph.louvain'); 30 | var clusters = detectClusters(graph); 31 | 32 | while(clusters.canCoarse()) { 33 | graph = coarsen(graph, clusters); 34 | clusters = detectClusters(graph); 35 | // this will give you next level in the hierarchy 36 | } 37 | ``` 38 | 39 | # install 40 | 41 | ``` 42 | npm install ngraph.louvain 43 | ``` 44 | 45 | # see also 46 | 47 | * https://github.com/anvaka/ngraph.graph - graph structure 48 | * https://github.com/anvaka/ngraph.cw - label-propagation based community detection 49 | * https://github.com/anvaka/ngraph.coarsen - Graph coarser 50 | 51 | # license 52 | 53 | MIT 54 | -------------------------------------------------------------------------------- /demo/basic/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Modualrity based community detection 9 | 10 | 11 | 12 | 13 | Fork me on GitHub 14 | 15 | 16 | -------------------------------------------------------------------------------- /demo/basic/index.js: -------------------------------------------------------------------------------- 1 | var modularity = require('../../'); 2 | 3 | var getColor = require('../lib/getColor.js'); 4 | var graph = require('../lib/getGraph.js'); 5 | 6 | console.time('cluster'); 7 | var clusters = modularity(graph); 8 | console.timeEnd('cluster'); 9 | 10 | // We use svg renderer, but this could be any renderer 11 | renderGraph(graph); 12 | 13 | function renderGraph(graph) { 14 | var render = require('ngraph.svg'); 15 | var svg = render.svg; 16 | 17 | var renderer = render(graph, { 18 | physics: { 19 | timeStep: 2, 20 | springLength : 55, 21 | springCoefficient : 0.008, 22 | dragCoefficient : 0.9, 23 | gravity : -12 24 | } 25 | }); 26 | 27 | renderer.node(createNode).placeNode(renderNode); 28 | 29 | renderer.run(); 30 | 31 | function renderNode(ui, pos, node) { 32 | var currentClass = clusters.getClass(node.id); 33 | if (ui.label !== currentClass) { 34 | ui.label = currentClass; 35 | ui.labelEl.text(currentClass); 36 | ui.circleEl.attr('fill', getColor(currentClass)); 37 | } 38 | ui.attr('transform', 'translate(' + (pos.x ) + ',' + (pos.y) + ')'); 39 | } 40 | 41 | function createNode() { 42 | var ui = svg('g'); 43 | // Create SVG text element with user id as content 44 | var label = svg('text').attr('y', '-8px'); 45 | var circle = svg('circle', { 46 | r: 7, 47 | stroke: '#fff', 48 | fill: '#ff00ef', 49 | 'stroke-width': '1.5px' 50 | }); 51 | ui.append(label); 52 | ui.append(circle); 53 | 54 | // yeah, ugly. Storing label dom element, so that we can update labels later 55 | ui.labelEl = label; 56 | ui.circleEl = circle; 57 | return ui; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /demo/basic/style.css: -------------------------------------------------------------------------------- 1 | body, svg { 2 | position: absolute; 3 | width: 100%; 4 | height: 100%; 5 | margin: 0; 6 | padding: 0; 7 | } 8 | -------------------------------------------------------------------------------- /demo/coarse/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Modualrity based community detection 9 | 10 | 11 | 12 | 13 | Fork me on GitHub 14 | 15 | 16 | -------------------------------------------------------------------------------- /demo/coarse/index.js: -------------------------------------------------------------------------------- 1 | var detectClusters = require('../../'); 2 | 3 | var getColor = require('../lib/getColor.js'); 4 | var graph = require('../lib/getGraph.js'); 5 | 6 | var coarsen = require('ngraph.coarsen'); 7 | 8 | console.time('cluster'); 9 | var clusters = detectClusters(graph); 10 | console.timeEnd('cluster'); 11 | let clusterGraph = coarsen(graph, clusters); 12 | 13 | // We use svg renderer, but this could be any renderer 14 | renderGraph(clusterGraph); 15 | 16 | function renderGraph(graph) { 17 | var render = require('ngraph.svg'); 18 | var svg = render.svg; 19 | 20 | var springLength = 55; 21 | var renderer = render(graph, { 22 | physics: { 23 | springLength : springLength, 24 | springCoefficient : 0.07, 25 | timeStep: 5, 26 | dragCoefficient : 0.09, 27 | gravity : -10 28 | } 29 | }); 30 | let layout = renderer.layout; 31 | graph.forEachNode(node => { 32 | let body = layout.getBody(node.id); 33 | body.mass = Math.pow(node.data.size, 3); 34 | }); 35 | graph.forEachLink(link => { 36 | let spring = layout.getSpring(link.fromId, link.toId); 37 | let fromR = getNodeRadius(graph.getNode(link.fromId)); 38 | let toR = getNodeRadius(graph.getNode(link.toId)); 39 | spring.length = springLength + fromR + toR; 40 | spring.weight = link.data; 41 | }) 42 | 43 | renderer.node(createNode).placeNode(renderNode); 44 | 45 | renderer.run(); 46 | 47 | function renderNode(ui, pos, node) { 48 | var currentClass = clusters.getClass(node.id); 49 | if (ui.label !== currentClass) { 50 | ui.label = currentClass; 51 | ui.labelEl.text(currentClass); 52 | ui.circleEl.attr('fill', getColor(currentClass)); 53 | } 54 | ui.attr('transform', 'translate(' + (pos.x ) + ',' + (pos.y) + ')'); 55 | } 56 | 57 | function getNodeRadius(node) { 58 | let nodeArea = (14 * 14); 59 | let area = nodeArea * node.data.size; 60 | return Math.sqrt(area / Math.PI); 61 | } 62 | 63 | function createNode(node) { 64 | var ui = svg('g'); 65 | // Create SVG text element with user id as content 66 | var label = svg('text').attr('y', '-8px'); 67 | var circle = svg('circle', { 68 | r: getNodeRadius(node), 69 | stroke: '#fff', 70 | fill: '#ff00ef', 71 | 'stroke-width': '1.5px' 72 | }); 73 | ui.append(label); 74 | ui.append(circle); 75 | 76 | // yeah, ugly. Storing label dom element, so that we can update labels later 77 | ui.labelEl = label; 78 | ui.circleEl = circle; 79 | return ui; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /demo/coarse/style.css: -------------------------------------------------------------------------------- 1 | body, svg { 2 | position: absolute; 3 | width: 100%; 4 | height: 100%; 5 | margin: 0; 6 | padding: 0; 7 | } 8 | -------------------------------------------------------------------------------- /demo/lib/getColor.js: -------------------------------------------------------------------------------- 1 | var colors = [ 2 | '#1f77b4', '#aec7e8', 3 | '#ff7f0e', '#ffbb78', 4 | '#2ca02c', '#98df8a', 5 | '#d62728', '#ff9896', 6 | '#9467bd', '#c5b0d5', 7 | '#8c564b', '#c49c94', 8 | '#e377c2', '#f7b6d2', 9 | '#7f7f7f', '#c7c7c7', 10 | '#bcbd22' 11 | ]; 12 | 13 | var lastUsed = 0; 14 | var idToIndex = Object.create(null); 15 | 16 | function getColor(id) { 17 | var idx = idToIndex[id]; 18 | if (idx === undefined) { 19 | idx = idToIndex[id] = lastUsed; 20 | lastUsed += 1; 21 | } 22 | return colors[idx]; 23 | } 24 | 25 | module.exports = getColor; 26 | -------------------------------------------------------------------------------- /demo/lib/getGraph.js: -------------------------------------------------------------------------------- 1 | var graph = require('miserables') 2 | 3 | 4 | // by default miserables comes with weights. For the pupose of this demo we will 5 | // remove all weights from the graph: 6 | graph.forEachLink(function(link) { 7 | link.data = 1; 8 | }); 9 | 10 | module.exports = graph; 11 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var createCommunityGraph = require('./lib/createCommunityGraph.js'); 2 | var createCommunity = require('./lib/createCommunity.js'); 3 | 4 | module.exports = modularity; 5 | 6 | function modularity(ngraph, options) { 7 | var graph = createCommunityGraph(ngraph); 8 | var community = createCommunity(graph, options); 9 | var originalModularity = community.modularity(); 10 | 11 | var modularityImproved = community.optimizeModularity(); 12 | var newModularity = community.modularity(); 13 | 14 | return { 15 | canCoarse: canCoarse, 16 | originalModularity: originalModularity, 17 | newModularity: newModularity, 18 | 19 | /** 20 | * Given original node id returns its class id (community) 21 | */ 22 | getClass: getClass, 23 | 24 | /** 25 | * Returns a map from community id to array of neighbor ids. 26 | */ 27 | getAllCommunities: getAllCommunities 28 | }; 29 | 30 | function canCoarse() { 31 | // If there was movement last turn - we can coarse graph further. 32 | return modularityImproved; 33 | } 34 | 35 | function getClass(nodeId) { 36 | var node = graph.getNodeIdFromNgraph(nodeId); 37 | return community.getClass(node); 38 | } 39 | 40 | function getAllCommunities() { 41 | var communities = new Map(); 42 | ngraph.forEachNode(function(node) { 43 | var classId = getClass(node.id); 44 | let neighbors = communities.get(classId); 45 | if (!neighbors) { 46 | neighbors = []; 47 | communities.set(classId, neighbors); 48 | } 49 | neighbors.push(node.id); 50 | }); 51 | 52 | return communities; 53 | } 54 | } 55 | 56 | 57 | -------------------------------------------------------------------------------- /lib/createCommunity.js: -------------------------------------------------------------------------------- 1 | var nrandom = require('ngraph.random'); 2 | var randomIterator = nrandom.randomIterator; 3 | 4 | module.exports = createCommunity; 5 | 6 | function createCommunity(graph, options) { 7 | var graphWeight = graph.weight; 8 | var nodeCount = graph.nodeCount; 9 | var seededRandom = nrandom.random(42); 10 | 11 | var totalLinksWeight = new Float32Array(nodeCount); 12 | var internalLinksWeight = new Float32Array(nodeCount); 13 | var nodeToCommunity = new Uint32Array(nodeCount); 14 | 15 | for (var i = 0; i < nodeCount; ++i) { 16 | // each node belongs to it's own community at the start 17 | nodeToCommunity[i] = i; 18 | totalLinksWeight[i] = graph.getWeightedDegree(i); 19 | internalLinksWeight[i] = graph.getSelfLoopsCount(i); 20 | } 21 | 22 | return { 23 | /** 24 | * compute modularity of the current community 25 | */ 26 | modularity: modularity, 27 | 28 | /** 29 | * Attempts to optimize communities of the graph. Returns true if any nodes 30 | * were moved; False otherwise. 31 | */ 32 | optimizeModularity: optimizeModularity, 33 | 34 | /** 35 | * Given a node id returns its "class" (a cluster id); 36 | */ 37 | getClass: getClass 38 | } 39 | 40 | function getClass(id) { 41 | return nodeToCommunity[id]; 42 | } 43 | 44 | function optimizeModularity() { 45 | var epsilon = 0.000001; 46 | if (options && (options.seed !== undefined)) { 47 | seededRandom = nrandom.random(options.seed); 48 | } 49 | 50 | var iterator = getRandomNodeIdIterator(); 51 | var newModularity = modularity(); 52 | var currentModularity, movesCount; 53 | var modularityImproved = false; 54 | 55 | do { 56 | movesCount = 0; 57 | currentModularity = newModularity; 58 | for (var i = 0; i < iterator.length; ++i) { 59 | var node = iterator[i]; 60 | var nodeCommunity = nodeToCommunity[node]; 61 | 62 | var neigboughingCommunities = getNeighbouringCommunities(node); 63 | 64 | var sharedLinksWeight = neigboughingCommunities.get(nodeCommunity); 65 | removeFromCommunity(node, nodeCommunity, sharedLinksWeight); 66 | 67 | var weightedDegree = graph.getWeightedDegree(node); 68 | var bestCommunity = nodeCommunity; 69 | var bestGain = 0; 70 | 71 | neigboughingCommunities.forEach(function(sharedWeight, communityId) { 72 | var gain = getModularityGain(sharedWeight, communityId, weightedDegree); 73 | if (gain <= bestGain) return; 74 | 75 | bestCommunity = communityId; 76 | bestGain = gain; 77 | }); 78 | 79 | var bestSharedWeight = neigboughingCommunities.get(bestCommunity); 80 | insertIntoCommunity(node, bestCommunity, bestSharedWeight); 81 | 82 | if (bestCommunity !== nodeCommunity) movesCount += 1; 83 | } 84 | 85 | newModularity = modularity(); 86 | if (movesCount > 0) modularityImproved = true; 87 | } while (movesCount > 0 && newModularity - currentModularity > epsilon); 88 | 89 | return modularityImproved; 90 | } 91 | 92 | function getNeighbouringCommunities(nodeId) { 93 | // map from community id to total links weight between this node and that community 94 | var map = new Map(); 95 | map.set(nodeToCommunity[nodeId], 0); 96 | 97 | graph.forEachNeigbour(nodeId, function(otherNodeId, edgeWeight) { 98 | var otherCommunity = nodeToCommunity[otherNodeId]; 99 | var currentValue = map.get(otherCommunity) || 0; 100 | map.set(otherCommunity, currentValue + edgeWeight); 101 | }); 102 | 103 | return map; 104 | } 105 | 106 | function getModularityGain(sharedWeight, communityId, degree) { 107 | var totalLinksWeightInThisCommunity = totalLinksWeight[communityId]; 108 | 109 | return sharedWeight - totalLinksWeightInThisCommunity * degree/graphWeight; 110 | } 111 | 112 | function removeFromCommunity(nodeId, communityId, sharedLinksWeight) { 113 | totalLinksWeight[communityId] -= graph.getWeightedDegree(nodeId); 114 | internalLinksWeight[communityId] -= 2 * sharedLinksWeight + graph.getSelfLoopsCount(nodeId); 115 | nodeToCommunity[nodeId] = -1; 116 | } 117 | 118 | function insertIntoCommunity(nodeId, communityId, sharedLinksWeight) { 119 | totalLinksWeight[communityId] += graph.getWeightedDegree(nodeId); 120 | internalLinksWeight[communityId] += 2 * sharedLinksWeight + graph.getSelfLoopsCount(nodeId); 121 | nodeToCommunity[nodeId] = communityId; 122 | } 123 | 124 | function modularity() { 125 | var result = 0; 126 | 127 | for (var communityId = 0; communityId < nodeCount; ++communityId) { 128 | if (totalLinksWeight[communityId] > 0) { 129 | var dw = totalLinksWeight[communityId] / graphWeight; 130 | result += internalLinksWeight[communityId] / graphWeight - dw * dw; 131 | } 132 | } 133 | 134 | return result; 135 | } 136 | 137 | function getRandomNodeIdIterator() { 138 | var iterator = []; 139 | 140 | for (var i = 0; i < nodeCount; ++i) { 141 | iterator[i] = i; 142 | } 143 | 144 | randomIterator(iterator, seededRandom).shuffle(); 145 | 146 | return iterator; 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /lib/createCommunityGraph.js: -------------------------------------------------------------------------------- 1 | module.exports = createCommunityGraph; 2 | 3 | function createCommunityGraph(ngraph) { 4 | var nodeCount = ngraph.getNodesCount(); 5 | var weight = 0; 6 | var nodes = []; 7 | var indexLookup = new Map(); 8 | 9 | ngraph.forEachNode(function(node) { 10 | initNode(node.id); 11 | }); 12 | 13 | ngraph.forEachLink(function(link) { 14 | var fromIdx = getNodeIdFromNgraph(link.fromId); 15 | var toIdx = getNodeIdFromNgraph(link.toId); 16 | 17 | var weight = getWeight(link.data); 18 | var fromNode = nodes[fromIdx]; 19 | var toNode = nodes[toIdx]; 20 | 21 | if (fromIdx === toIdx) { 22 | fromNode.selfLoopsCount += weight; 23 | fromNode.weightedDegree += weight; 24 | } else { 25 | // We do not list self-loops here. 26 | addNeighbour(fromNode, toIdx, weight); 27 | addNeighbour(toNode, fromIdx, weight); 28 | fromNode.weightedDegree += weight; 29 | toNode.weightedDegree += weight; 30 | } 31 | }); 32 | 33 | weight = computeTotalWeight(); 34 | 35 | return { 36 | nodeCount: nodeCount, 37 | weight: weight, 38 | 39 | forEachNeigbour: forEachNeigbour, 40 | 41 | getWeightedDegree: getWeightedDegree, 42 | getSelfLoopsCount: getSelfLoopsCount, 43 | 44 | getNodeIdFromNgraph: getNodeIdFromNgraph 45 | }; 46 | 47 | function getNodeIdFromNgraph(id) { 48 | var idx = indexLookup.get(id); 49 | if (idx === undefined) throw new Error('Unknown node id: ' + id); 50 | 51 | return idx; 52 | } 53 | 54 | function addNeighbour(node, id, weight) { 55 | var info = { 56 | id: id, 57 | weight: weight 58 | }; 59 | if (!node.neighbours) node.neighbours = [info]; 60 | else node.neighbours.push(info); 61 | // PS: We do not init neighbours array unless it's truly needed 62 | } 63 | 64 | function forEachNeigbour(nodeId, cb) { 65 | var node = getNode(nodeId); 66 | if (!node.neighbours) return; 67 | 68 | for (var i = 0; i < node.neighbours.length; ++i) { 69 | var info = node.neighbours[i]; 70 | cb(info.id, info.weight); 71 | } 72 | } 73 | 74 | function computeTotalWeight() { 75 | var weight = 0; 76 | for (var i = 0; i < nodeCount; ++i) { 77 | weight += getWeightedDegree(i); 78 | } 79 | return weight; 80 | } 81 | 82 | function getSelfLoopsCount(nodeId) { 83 | return getNode(nodeId).selfLoopsCount; 84 | } 85 | 86 | function getWeightedDegree(nodeId) { 87 | return getNode(nodeId).weightedDegree; 88 | } 89 | 90 | function getNode(nodeId) { 91 | var node = nodes[nodeId]; 92 | if (!node) throw new Error('cannot find node with id: ' + nodeId); 93 | 94 | return node; 95 | } 96 | 97 | function initNode(id) { 98 | var node = { 99 | selfLoopsCount: 0, 100 | weightedDegree: 0, 101 | neighbours: null 102 | }; 103 | 104 | var idx = nodes.length; 105 | indexLookup.set(id, idx); 106 | nodes.push(node); 107 | 108 | return idx; 109 | } 110 | } 111 | 112 | function getWeight(data) { 113 | if (!data) return 1; 114 | 115 | if (typeof data === 'number') return data; 116 | if (typeof data.weight === 'number') return data.weight; 117 | 118 | return 1; 119 | } 120 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngraph.louvain", 3 | "version": "2.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "ngraph.louvain", 9 | "version": "2.0.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "ngraph.random": "1.0.0" 13 | }, 14 | "devDependencies": { 15 | "miserables": "^2.0.0", 16 | "ngraph.coarsen": "^1.5.0", 17 | "ngraph.graph": "^20.0.0", 18 | "ngraph.svg": "0.0.17", 19 | "tap": "^21.0.1" 20 | } 21 | }, 22 | "node_modules/@alcalzone/ansi-tokenize": { 23 | "version": "0.1.3", 24 | "resolved": "https://registry.npmjs.org/@alcalzone/ansi-tokenize/-/ansi-tokenize-0.1.3.tgz", 25 | "integrity": "sha512-3yWxPTq3UQ/FY9p1ErPxIyfT64elWaMvM9lIHnaqpyft63tkxodF5aUElYHrdisWve5cETkh1+KBw1yJuW0aRw==", 26 | "dev": true, 27 | "dependencies": { 28 | "ansi-styles": "^6.2.1", 29 | "is-fullwidth-code-point": "^4.0.0" 30 | }, 31 | "engines": { 32 | "node": ">=14.13.1" 33 | } 34 | }, 35 | "node_modules/@base2/pretty-print-object": { 36 | "version": "1.0.1", 37 | "resolved": "https://registry.npmjs.org/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz", 38 | "integrity": "sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==", 39 | "dev": true 40 | }, 41 | "node_modules/@bcoe/v8-coverage": { 42 | "version": "0.2.3", 43 | "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", 44 | "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", 45 | "dev": true 46 | }, 47 | "node_modules/@cspotcode/source-map-support": { 48 | "version": "0.8.1", 49 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 50 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 51 | "dev": true, 52 | "dependencies": { 53 | "@jridgewell/trace-mapping": "0.3.9" 54 | }, 55 | "engines": { 56 | "node": ">=12" 57 | } 58 | }, 59 | "node_modules/@isaacs/cliui": { 60 | "version": "8.0.2", 61 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", 62 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", 63 | "dev": true, 64 | "dependencies": { 65 | "string-width": "^5.1.2", 66 | "string-width-cjs": "npm:string-width@^4.2.0", 67 | "strip-ansi": "^7.0.1", 68 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", 69 | "wrap-ansi": "^8.1.0", 70 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" 71 | }, 72 | "engines": { 73 | "node": ">=12" 74 | } 75 | }, 76 | "node_modules/@isaacs/cliui/node_modules/emoji-regex": { 77 | "version": "9.2.2", 78 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", 79 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", 80 | "dev": true 81 | }, 82 | "node_modules/@isaacs/cliui/node_modules/string-width": { 83 | "version": "5.1.2", 84 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", 85 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", 86 | "dev": true, 87 | "dependencies": { 88 | "eastasianwidth": "^0.2.0", 89 | "emoji-regex": "^9.2.2", 90 | "strip-ansi": "^7.0.1" 91 | }, 92 | "engines": { 93 | "node": ">=12" 94 | }, 95 | "funding": { 96 | "url": "https://github.com/sponsors/sindresorhus" 97 | } 98 | }, 99 | "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { 100 | "version": "8.1.0", 101 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", 102 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", 103 | "dev": true, 104 | "dependencies": { 105 | "ansi-styles": "^6.1.0", 106 | "string-width": "^5.0.1", 107 | "strip-ansi": "^7.0.1" 108 | }, 109 | "engines": { 110 | "node": ">=12" 111 | }, 112 | "funding": { 113 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 114 | } 115 | }, 116 | "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009": { 117 | "version": "10.9.7", 118 | "resolved": "https://registry.npmjs.org/@isaacs/ts-node-temp-fork-for-pr-2009/-/ts-node-temp-fork-for-pr-2009-10.9.7.tgz", 119 | "integrity": "sha512-9f0bhUr9TnwwpgUhEpr3FjxSaH/OHaARkE2F9fM0lS4nIs2GNerrvGwQz493dk0JKlTaGYVrKbq36vA/whZ34g==", 120 | "dev": true, 121 | "dependencies": { 122 | "@cspotcode/source-map-support": "^0.8.0", 123 | "@tsconfig/node14": "*", 124 | "@tsconfig/node16": "*", 125 | "@tsconfig/node18": "*", 126 | "@tsconfig/node20": "*", 127 | "acorn": "^8.4.1", 128 | "acorn-walk": "^8.1.1", 129 | "arg": "^4.1.0", 130 | "diff": "^4.0.1", 131 | "make-error": "^1.1.1", 132 | "v8-compile-cache-lib": "^3.0.1" 133 | }, 134 | "bin": { 135 | "ts-node": "dist/bin.js", 136 | "ts-node-cwd": "dist/bin-cwd.js", 137 | "ts-node-esm": "dist/bin-esm.js", 138 | "ts-node-script": "dist/bin-script.js", 139 | "ts-node-transpile-only": "dist/bin-transpile.js" 140 | }, 141 | "peerDependencies": { 142 | "@swc/core": ">=1.2.50", 143 | "@swc/wasm": ">=1.2.50", 144 | "@types/node": "*", 145 | "typescript": ">=4.2" 146 | }, 147 | "peerDependenciesMeta": { 148 | "@swc/core": { 149 | "optional": true 150 | }, 151 | "@swc/wasm": { 152 | "optional": true 153 | } 154 | } 155 | }, 156 | "node_modules/@isaacs/ts-node-temp-fork-for-pr-2009/node_modules/diff": { 157 | "version": "4.0.2", 158 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 159 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 160 | "dev": true, 161 | "engines": { 162 | "node": ">=0.3.1" 163 | } 164 | }, 165 | "node_modules/@istanbuljs/schema": { 166 | "version": "0.1.3", 167 | "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", 168 | "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", 169 | "dev": true, 170 | "engines": { 171 | "node": ">=8" 172 | } 173 | }, 174 | "node_modules/@jridgewell/resolve-uri": { 175 | "version": "3.1.2", 176 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", 177 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", 178 | "dev": true, 179 | "engines": { 180 | "node": ">=6.0.0" 181 | } 182 | }, 183 | "node_modules/@jridgewell/sourcemap-codec": { 184 | "version": "1.5.0", 185 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 186 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 187 | "dev": true 188 | }, 189 | "node_modules/@jridgewell/trace-mapping": { 190 | "version": "0.3.9", 191 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 192 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 193 | "dev": true, 194 | "dependencies": { 195 | "@jridgewell/resolve-uri": "^3.0.3", 196 | "@jridgewell/sourcemap-codec": "^1.4.10" 197 | } 198 | }, 199 | "node_modules/@npmcli/agent": { 200 | "version": "2.2.2", 201 | "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", 202 | "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", 203 | "dev": true, 204 | "dependencies": { 205 | "agent-base": "^7.1.0", 206 | "http-proxy-agent": "^7.0.0", 207 | "https-proxy-agent": "^7.0.1", 208 | "lru-cache": "^10.0.1", 209 | "socks-proxy-agent": "^8.0.3" 210 | }, 211 | "engines": { 212 | "node": "^16.14.0 || >=18.0.0" 213 | } 214 | }, 215 | "node_modules/@npmcli/fs": { 216 | "version": "3.1.1", 217 | "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", 218 | "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", 219 | "dev": true, 220 | "dependencies": { 221 | "semver": "^7.3.5" 222 | }, 223 | "engines": { 224 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 225 | } 226 | }, 227 | "node_modules/@npmcli/git": { 228 | "version": "5.0.8", 229 | "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", 230 | "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", 231 | "dev": true, 232 | "dependencies": { 233 | "@npmcli/promise-spawn": "^7.0.0", 234 | "ini": "^4.1.3", 235 | "lru-cache": "^10.0.1", 236 | "npm-pick-manifest": "^9.0.0", 237 | "proc-log": "^4.0.0", 238 | "promise-inflight": "^1.0.1", 239 | "promise-retry": "^2.0.1", 240 | "semver": "^7.3.5", 241 | "which": "^4.0.0" 242 | }, 243 | "engines": { 244 | "node": "^16.14.0 || >=18.0.0" 245 | } 246 | }, 247 | "node_modules/@npmcli/installed-package-contents": { 248 | "version": "2.1.0", 249 | "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", 250 | "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", 251 | "dev": true, 252 | "dependencies": { 253 | "npm-bundled": "^3.0.0", 254 | "npm-normalize-package-bin": "^3.0.0" 255 | }, 256 | "bin": { 257 | "installed-package-contents": "bin/index.js" 258 | }, 259 | "engines": { 260 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 261 | } 262 | }, 263 | "node_modules/@npmcli/node-gyp": { 264 | "version": "3.0.0", 265 | "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", 266 | "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", 267 | "dev": true, 268 | "engines": { 269 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 270 | } 271 | }, 272 | "node_modules/@npmcli/package-json": { 273 | "version": "5.2.0", 274 | "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", 275 | "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", 276 | "dev": true, 277 | "dependencies": { 278 | "@npmcli/git": "^5.0.0", 279 | "glob": "^10.2.2", 280 | "hosted-git-info": "^7.0.0", 281 | "json-parse-even-better-errors": "^3.0.0", 282 | "normalize-package-data": "^6.0.0", 283 | "proc-log": "^4.0.0", 284 | "semver": "^7.5.3" 285 | }, 286 | "engines": { 287 | "node": "^16.14.0 || >=18.0.0" 288 | } 289 | }, 290 | "node_modules/@npmcli/package-json/node_modules/glob": { 291 | "version": "10.4.5", 292 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 293 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 294 | "dev": true, 295 | "dependencies": { 296 | "foreground-child": "^3.1.0", 297 | "jackspeak": "^3.1.2", 298 | "minimatch": "^9.0.4", 299 | "minipass": "^7.1.2", 300 | "package-json-from-dist": "^1.0.0", 301 | "path-scurry": "^1.11.1" 302 | }, 303 | "bin": { 304 | "glob": "dist/esm/bin.mjs" 305 | }, 306 | "funding": { 307 | "url": "https://github.com/sponsors/isaacs" 308 | } 309 | }, 310 | "node_modules/@npmcli/package-json/node_modules/jackspeak": { 311 | "version": "3.4.3", 312 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 313 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 314 | "dev": true, 315 | "dependencies": { 316 | "@isaacs/cliui": "^8.0.2" 317 | }, 318 | "funding": { 319 | "url": "https://github.com/sponsors/isaacs" 320 | }, 321 | "optionalDependencies": { 322 | "@pkgjs/parseargs": "^0.11.0" 323 | } 324 | }, 325 | "node_modules/@npmcli/package-json/node_modules/minimatch": { 326 | "version": "9.0.5", 327 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 328 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 329 | "dev": true, 330 | "dependencies": { 331 | "brace-expansion": "^2.0.1" 332 | }, 333 | "engines": { 334 | "node": ">=16 || 14 >=14.17" 335 | }, 336 | "funding": { 337 | "url": "https://github.com/sponsors/isaacs" 338 | } 339 | }, 340 | "node_modules/@npmcli/package-json/node_modules/path-scurry": { 341 | "version": "1.11.1", 342 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 343 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 344 | "dev": true, 345 | "dependencies": { 346 | "lru-cache": "^10.2.0", 347 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 348 | }, 349 | "engines": { 350 | "node": ">=16 || 14 >=14.18" 351 | }, 352 | "funding": { 353 | "url": "https://github.com/sponsors/isaacs" 354 | } 355 | }, 356 | "node_modules/@npmcli/promise-spawn": { 357 | "version": "7.0.2", 358 | "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", 359 | "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", 360 | "dev": true, 361 | "dependencies": { 362 | "which": "^4.0.0" 363 | }, 364 | "engines": { 365 | "node": "^16.14.0 || >=18.0.0" 366 | } 367 | }, 368 | "node_modules/@npmcli/redact": { 369 | "version": "2.0.1", 370 | "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-2.0.1.tgz", 371 | "integrity": "sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==", 372 | "dev": true, 373 | "engines": { 374 | "node": "^16.14.0 || >=18.0.0" 375 | } 376 | }, 377 | "node_modules/@npmcli/run-script": { 378 | "version": "8.1.0", 379 | "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-8.1.0.tgz", 380 | "integrity": "sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==", 381 | "dev": true, 382 | "dependencies": { 383 | "@npmcli/node-gyp": "^3.0.0", 384 | "@npmcli/package-json": "^5.0.0", 385 | "@npmcli/promise-spawn": "^7.0.0", 386 | "node-gyp": "^10.0.0", 387 | "proc-log": "^4.0.0", 388 | "which": "^4.0.0" 389 | }, 390 | "engines": { 391 | "node": "^16.14.0 || >=18.0.0" 392 | } 393 | }, 394 | "node_modules/@pkgjs/parseargs": { 395 | "version": "0.11.0", 396 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", 397 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", 398 | "dev": true, 399 | "optional": true, 400 | "engines": { 401 | "node": ">=14" 402 | } 403 | }, 404 | "node_modules/@sigstore/bundle": { 405 | "version": "2.3.2", 406 | "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", 407 | "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", 408 | "dev": true, 409 | "dependencies": { 410 | "@sigstore/protobuf-specs": "^0.3.2" 411 | }, 412 | "engines": { 413 | "node": "^16.14.0 || >=18.0.0" 414 | } 415 | }, 416 | "node_modules/@sigstore/core": { 417 | "version": "1.1.0", 418 | "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", 419 | "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", 420 | "dev": true, 421 | "engines": { 422 | "node": "^16.14.0 || >=18.0.0" 423 | } 424 | }, 425 | "node_modules/@sigstore/protobuf-specs": { 426 | "version": "0.3.2", 427 | "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", 428 | "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", 429 | "dev": true, 430 | "engines": { 431 | "node": "^16.14.0 || >=18.0.0" 432 | } 433 | }, 434 | "node_modules/@sigstore/sign": { 435 | "version": "2.3.2", 436 | "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", 437 | "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", 438 | "dev": true, 439 | "dependencies": { 440 | "@sigstore/bundle": "^2.3.2", 441 | "@sigstore/core": "^1.0.0", 442 | "@sigstore/protobuf-specs": "^0.3.2", 443 | "make-fetch-happen": "^13.0.1", 444 | "proc-log": "^4.2.0", 445 | "promise-retry": "^2.0.1" 446 | }, 447 | "engines": { 448 | "node": "^16.14.0 || >=18.0.0" 449 | } 450 | }, 451 | "node_modules/@sigstore/tuf": { 452 | "version": "2.3.4", 453 | "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", 454 | "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", 455 | "dev": true, 456 | "dependencies": { 457 | "@sigstore/protobuf-specs": "^0.3.2", 458 | "tuf-js": "^2.2.1" 459 | }, 460 | "engines": { 461 | "node": "^16.14.0 || >=18.0.0" 462 | } 463 | }, 464 | "node_modules/@sigstore/verify": { 465 | "version": "1.2.1", 466 | "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", 467 | "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", 468 | "dev": true, 469 | "dependencies": { 470 | "@sigstore/bundle": "^2.3.2", 471 | "@sigstore/core": "^1.1.0", 472 | "@sigstore/protobuf-specs": "^0.3.2" 473 | }, 474 | "engines": { 475 | "node": "^16.14.0 || >=18.0.0" 476 | } 477 | }, 478 | "node_modules/@tapjs/after": { 479 | "version": "3.0.0", 480 | "resolved": "https://registry.npmjs.org/@tapjs/after/-/after-3.0.0.tgz", 481 | "integrity": "sha512-BCGq+YocD0xxeGC4mMym2tg6qtgFJJdCrji8N1HbF55d55nxQrA8R/w6+D9b4N7t/4dfpbI+LW5FgdBATohFPw==", 482 | "dev": true, 483 | "dependencies": { 484 | "is-actual-promise": "^1.0.1" 485 | }, 486 | "engines": { 487 | "node": "20 || >=22" 488 | }, 489 | "peerDependencies": { 490 | "@tapjs/core": "4.0.0" 491 | } 492 | }, 493 | "node_modules/@tapjs/after-each": { 494 | "version": "4.0.0", 495 | "resolved": "https://registry.npmjs.org/@tapjs/after-each/-/after-each-4.0.0.tgz", 496 | "integrity": "sha512-RrkYMB3SpXKFJAijbgNkOexiClX5aygkCIHKHPIfnfqsPozkwjYbtVQs6d1/tG8ytiJtH5rvybuNJMRRNDcfBQ==", 497 | "dev": true, 498 | "dependencies": { 499 | "function-loop": "^4.0.0" 500 | }, 501 | "engines": { 502 | "node": "20 || >=22" 503 | }, 504 | "peerDependencies": { 505 | "@tapjs/core": "4.0.0" 506 | } 507 | }, 508 | "node_modules/@tapjs/asserts": { 509 | "version": "4.0.0", 510 | "resolved": "https://registry.npmjs.org/@tapjs/asserts/-/asserts-4.0.0.tgz", 511 | "integrity": "sha512-V1YmOLMhyITi75e0u8vS+x1S0sDwISWk643C4a9XiY2RDin1nEueE8Nzwp2ZBP+N4HtgzKVfzJ1AYvpwaTKwUA==", 512 | "dev": true, 513 | "dependencies": { 514 | "@tapjs/stack": "4.0.0", 515 | "is-actual-promise": "^1.0.1", 516 | "tcompare": "9.0.0", 517 | "trivial-deferred": "^2.0.0" 518 | }, 519 | "engines": { 520 | "node": "20 || >=22" 521 | }, 522 | "funding": { 523 | "url": "https://github.com/sponsors/isaacs" 524 | }, 525 | "peerDependencies": { 526 | "@tapjs/core": "4.0.0" 527 | } 528 | }, 529 | "node_modules/@tapjs/before": { 530 | "version": "4.0.0", 531 | "resolved": "https://registry.npmjs.org/@tapjs/before/-/before-4.0.0.tgz", 532 | "integrity": "sha512-d1k6lTSzqTcq4pjGsCPUxNP5NFWZBxwHLmgVxy2RHfZwKM20eXXAOPgAw3LgPVgkoehwi+nwWUGTJDcL3AS8YQ==", 533 | "dev": true, 534 | "dependencies": { 535 | "is-actual-promise": "^1.0.1" 536 | }, 537 | "engines": { 538 | "node": "20 || >=22" 539 | }, 540 | "peerDependencies": { 541 | "@tapjs/core": "4.0.0" 542 | } 543 | }, 544 | "node_modules/@tapjs/before-each": { 545 | "version": "4.0.0", 546 | "resolved": "https://registry.npmjs.org/@tapjs/before-each/-/before-each-4.0.0.tgz", 547 | "integrity": "sha512-zJwDLLH+3+qmpE8Pr1fAEeqZNvbok7yYKKKE/7IDMi3zdvM0Rjk7Y4JXGbVI8IreuRK0rXaSL1ZZqbFMsZGHrg==", 548 | "dev": true, 549 | "dependencies": { 550 | "function-loop": "^4.0.0" 551 | }, 552 | "engines": { 553 | "node": "20 || >=22" 554 | }, 555 | "peerDependencies": { 556 | "@tapjs/core": "4.0.0" 557 | } 558 | }, 559 | "node_modules/@tapjs/chdir": { 560 | "version": "3.0.0", 561 | "resolved": "https://registry.npmjs.org/@tapjs/chdir/-/chdir-3.0.0.tgz", 562 | "integrity": "sha512-yljg4CX2/UinFytD50LaRhBVTDaW3vBcUwzYnXzJcuFLoPEpq0svlyIwzcCXfLLGP8/AgkS3MRt58AisBtz4zw==", 563 | "dev": true, 564 | "engines": { 565 | "node": "20 || >=22" 566 | }, 567 | "peerDependencies": { 568 | "@tapjs/core": "4.0.0" 569 | } 570 | }, 571 | "node_modules/@tapjs/config": { 572 | "version": "5.0.0", 573 | "resolved": "https://registry.npmjs.org/@tapjs/config/-/config-5.0.0.tgz", 574 | "integrity": "sha512-AAHbK30FwnGC3FcFACnXEGZ+uFtkpxsF2bwvgAzHND2tIE9ld2LwGMiGq3rM9EwcZ1AAnU8ibbUC0WbnS5FcCQ==", 575 | "dev": true, 576 | "dependencies": { 577 | "@tapjs/core": "4.0.0", 578 | "@tapjs/test": "4.0.0", 579 | "chalk": "^5.2.0", 580 | "jackspeak": "^4.0.1", 581 | "polite-json": "^5.0.0", 582 | "tap-yaml": "4.0.0", 583 | "walk-up-path": "^4.0.0" 584 | }, 585 | "engines": { 586 | "node": "20 || >=22" 587 | }, 588 | "funding": { 589 | "url": "https://github.com/sponsors/isaacs" 590 | }, 591 | "peerDependencies": { 592 | "@tapjs/core": "4.0.0", 593 | "@tapjs/test": "4.0.0" 594 | } 595 | }, 596 | "node_modules/@tapjs/core": { 597 | "version": "4.0.0", 598 | "resolved": "https://registry.npmjs.org/@tapjs/core/-/core-4.0.0.tgz", 599 | "integrity": "sha512-COWMNbGBjf0qbsbKw+2911rrt+oXXOkIXpoMpIsz0/UN2rxqAAvDyrriObVfc4v+O2auabnWfdrxwNm3Vy01yw==", 600 | "dev": true, 601 | "dependencies": { 602 | "@tapjs/processinfo": "^3.1.8", 603 | "@tapjs/stack": "4.0.0", 604 | "@tapjs/test": "4.0.0", 605 | "async-hook-domain": "^4.0.1", 606 | "diff": "^5.2.0", 607 | "is-actual-promise": "^1.0.1", 608 | "minipass": "^7.0.4", 609 | "signal-exit": "4.1", 610 | "tap-parser": "18.0.0", 611 | "tap-yaml": "4.0.0", 612 | "tcompare": "9.0.0", 613 | "trivial-deferred": "^2.0.0" 614 | }, 615 | "engines": { 616 | "node": "20 || >=22" 617 | } 618 | }, 619 | "node_modules/@tapjs/error-serdes": { 620 | "version": "4.0.0", 621 | "resolved": "https://registry.npmjs.org/@tapjs/error-serdes/-/error-serdes-4.0.0.tgz", 622 | "integrity": "sha512-jO0CvhL7lyGcDzyPeumyXirBv/vxRuhg8SdyLwjNqO7aelckxZzY/dCchtov7PfKK7wc/iB55W2++PE9waFaWw==", 623 | "dev": true, 624 | "dependencies": { 625 | "minipass": "^7.0.4" 626 | }, 627 | "engines": { 628 | "node": "20 || >=22" 629 | }, 630 | "funding": { 631 | "url": "https://github.com/sponsors/isaacs" 632 | } 633 | }, 634 | "node_modules/@tapjs/filter": { 635 | "version": "4.0.0", 636 | "resolved": "https://registry.npmjs.org/@tapjs/filter/-/filter-4.0.0.tgz", 637 | "integrity": "sha512-VCqwRB+GJKDavOtoCU6K3skR6b/Qv7vo5YwuwgTUzRDmeNJQwI4S/s0l4cRbaMVJxuXeR3o5JwBsH0Ppjwzgkw==", 638 | "dev": true, 639 | "engines": { 640 | "node": "20 || >=22" 641 | }, 642 | "funding": { 643 | "url": "https://github.com/sponsors/isaacs" 644 | }, 645 | "peerDependencies": { 646 | "@tapjs/core": "4.0.0" 647 | } 648 | }, 649 | "node_modules/@tapjs/fixture": { 650 | "version": "4.0.0", 651 | "resolved": "https://registry.npmjs.org/@tapjs/fixture/-/fixture-4.0.0.tgz", 652 | "integrity": "sha512-h8qZwzQqNd0aLU+oU+0uhBSSlU4+5a8kkFfPrwlNQr9Vde2CyW5vMMVWvX2do+5wFyiFwKHAjbtBS7BSkfH7Kw==", 653 | "dev": true, 654 | "dependencies": { 655 | "mkdirp": "^3.0.0", 656 | "rimraf": "^6.0.0" 657 | }, 658 | "engines": { 659 | "node": "20 || >=22" 660 | }, 661 | "funding": { 662 | "url": "https://github.com/sponsors/isaacs" 663 | }, 664 | "peerDependencies": { 665 | "@tapjs/core": "4.0.0" 666 | } 667 | }, 668 | "node_modules/@tapjs/intercept": { 669 | "version": "4.0.0", 670 | "resolved": "https://registry.npmjs.org/@tapjs/intercept/-/intercept-4.0.0.tgz", 671 | "integrity": "sha512-MSPvOcwVKZjtb2KVY6JB/dBD54mGkzaJHCdzkIAJdcUAAbZQz5pMppQkEwPw/Zs+JFPJjGzZyITrDfh9if7maw==", 672 | "dev": true, 673 | "dependencies": { 674 | "@tapjs/after": "3.0.0", 675 | "@tapjs/stack": "4.0.0" 676 | }, 677 | "engines": { 678 | "node": "20 || >=22" 679 | }, 680 | "peerDependencies": { 681 | "@tapjs/core": "4.0.0" 682 | } 683 | }, 684 | "node_modules/@tapjs/mock": { 685 | "version": "4.0.0", 686 | "resolved": "https://registry.npmjs.org/@tapjs/mock/-/mock-4.0.0.tgz", 687 | "integrity": "sha512-6GyQm61wSCmfxKb7GRY24cdnO92mV7mZ0hmdbOko881FIEmjeAsLQaNKUaatnGWpzBUoqw+JCzbASee4/AfaMQ==", 688 | "dev": true, 689 | "dependencies": { 690 | "@tapjs/after": "3.0.0", 691 | "@tapjs/stack": "4.0.0", 692 | "resolve-import": "^2.0.0", 693 | "walk-up-path": "^4.0.0" 694 | }, 695 | "engines": { 696 | "node": "20 || >=22" 697 | }, 698 | "funding": { 699 | "url": "https://github.com/sponsors/isaacs" 700 | }, 701 | "peerDependencies": { 702 | "@tapjs/core": "4.0.0" 703 | } 704 | }, 705 | "node_modules/@tapjs/node-serialize": { 706 | "version": "4.0.0", 707 | "resolved": "https://registry.npmjs.org/@tapjs/node-serialize/-/node-serialize-4.0.0.tgz", 708 | "integrity": "sha512-cFHcyEZHd4SQPSoZ4tGHfo/p1+4r24G0K0jiAb28WotdE2kbjkf7TVEiKOA5IEOmjQtdJ4+gVcuErZUchjpQZg==", 709 | "dev": true, 710 | "dependencies": { 711 | "@tapjs/error-serdes": "4.0.0", 712 | "@tapjs/stack": "4.0.0", 713 | "tap-parser": "18.0.0" 714 | }, 715 | "engines": { 716 | "node": "20 || >=22" 717 | }, 718 | "funding": { 719 | "url": "https://github.com/sponsors/isaacs" 720 | }, 721 | "peerDependencies": { 722 | "@tapjs/core": "4.0.0" 723 | } 724 | }, 725 | "node_modules/@tapjs/processinfo": { 726 | "version": "3.1.8", 727 | "resolved": "https://registry.npmjs.org/@tapjs/processinfo/-/processinfo-3.1.8.tgz", 728 | "integrity": "sha512-FIriEB+qqArPhmVYc1PZwRHD99myRdl7C9Oe/uts04Q2LOxQ5MEmqP9XOP8vVYzpDOYwmL8OmL6eOYt9eZlQKQ==", 729 | "dev": true, 730 | "dependencies": { 731 | "pirates": "^4.0.5", 732 | "process-on-spawn": "^1.0.0", 733 | "signal-exit": "^4.0.2", 734 | "uuid": "^8.3.2" 735 | }, 736 | "engines": { 737 | "node": ">=16.17" 738 | } 739 | }, 740 | "node_modules/@tapjs/reporter": { 741 | "version": "4.0.1", 742 | "resolved": "https://registry.npmjs.org/@tapjs/reporter/-/reporter-4.0.1.tgz", 743 | "integrity": "sha512-bS7pOGV99GAhYY/LxNxL4Qq0Ldi4k8DZDC25gonVQrNUW2zYpSBerhrnsz1KDXdaD2OKDtSR8oW2FxUyL6n83A==", 744 | "dev": true, 745 | "dependencies": { 746 | "@tapjs/config": "5.0.0", 747 | "@tapjs/stack": "4.0.0", 748 | "chalk": "^5.2.0", 749 | "ink": "^5.0.1", 750 | "minipass": "^7.0.4", 751 | "ms": "^2.1.3", 752 | "patch-console": "^2.0.0", 753 | "prismjs-terminal": "^1.2.3", 754 | "react": "^18.2.0", 755 | "string-length": "^6.0.0", 756 | "tap-parser": "18.0.0", 757 | "tap-yaml": "4.0.0", 758 | "tcompare": "9.0.0" 759 | }, 760 | "engines": { 761 | "node": "20 || >=22" 762 | }, 763 | "funding": { 764 | "url": "https://github.com/sponsors/isaacs" 765 | }, 766 | "peerDependencies": { 767 | "@tapjs/core": "4.0.0" 768 | } 769 | }, 770 | "node_modules/@tapjs/run": { 771 | "version": "4.0.1", 772 | "resolved": "https://registry.npmjs.org/@tapjs/run/-/run-4.0.1.tgz", 773 | "integrity": "sha512-jll1tiMhxFajfHIGBF/eK+Ob0uEqXBnQq/ONNc9heqcCtcXhC4iYGzhoK+sw03MxwrbRtNomQ7dRqiT0IOjS6w==", 774 | "dev": true, 775 | "dependencies": { 776 | "@tapjs/after": "3.0.0", 777 | "@tapjs/before": "4.0.0", 778 | "@tapjs/config": "5.0.0", 779 | "@tapjs/processinfo": "^3.1.8", 780 | "@tapjs/reporter": "4.0.1", 781 | "@tapjs/spawn": "4.0.0", 782 | "@tapjs/stdin": "4.0.0", 783 | "@tapjs/test": "4.0.0", 784 | "c8": "^10.1.2", 785 | "chalk": "^5.3.0", 786 | "chokidar": "^3.6.0", 787 | "foreground-child": "^3.1.1", 788 | "glob": "^11.0.0", 789 | "minipass": "^7.0.4", 790 | "mkdirp": "^3.0.1", 791 | "opener": "^1.5.2", 792 | "pacote": "^18.0.6", 793 | "path-scurry": "^2.0.0", 794 | "resolve-import": "^2.0.0", 795 | "rimraf": "^6.0.0", 796 | "semver": "^7.6.0", 797 | "signal-exit": "^4.1.0", 798 | "tap-parser": "18.0.0", 799 | "tap-yaml": "4.0.0", 800 | "tcompare": "9.0.0", 801 | "trivial-deferred": "^2.0.0", 802 | "which": "^4.0.0" 803 | }, 804 | "bin": { 805 | "tap-run": "dist/esm/index.js" 806 | }, 807 | "engines": { 808 | "node": "20 || >=22" 809 | }, 810 | "funding": { 811 | "url": "https://github.com/sponsors/isaacs" 812 | }, 813 | "peerDependencies": { 814 | "@tapjs/core": "4.0.0" 815 | } 816 | }, 817 | "node_modules/@tapjs/snapshot": { 818 | "version": "4.0.0", 819 | "resolved": "https://registry.npmjs.org/@tapjs/snapshot/-/snapshot-4.0.0.tgz", 820 | "integrity": "sha512-1d2IOOpbra6VMDypft8NGylkIypgk2VgMRrEeSsipOyeku81STlcdzm8mS0COCqVtX6+si+tkERuqFrCVy/xSg==", 821 | "dev": true, 822 | "dependencies": { 823 | "is-actual-promise": "^1.0.1", 824 | "tcompare": "9.0.0", 825 | "trivial-deferred": "^2.0.0" 826 | }, 827 | "engines": { 828 | "node": "20 || >=22" 829 | }, 830 | "funding": { 831 | "url": "https://github.com/sponsors/isaacs" 832 | }, 833 | "peerDependencies": { 834 | "@tapjs/core": "4.0.0" 835 | } 836 | }, 837 | "node_modules/@tapjs/spawn": { 838 | "version": "4.0.0", 839 | "resolved": "https://registry.npmjs.org/@tapjs/spawn/-/spawn-4.0.0.tgz", 840 | "integrity": "sha512-K+kn4wCIMiOfHtjt5lxlxmJMvL4C9txAxapTRyLEm9ul9ZKgzAOQmMD29YEtkKY53v1eAfpJ3agCXnH59uOJ+A==", 841 | "dev": true, 842 | "engines": { 843 | "node": "20 || >=22" 844 | }, 845 | "peerDependencies": { 846 | "@tapjs/core": "4.0.0" 847 | } 848 | }, 849 | "node_modules/@tapjs/stack": { 850 | "version": "4.0.0", 851 | "resolved": "https://registry.npmjs.org/@tapjs/stack/-/stack-4.0.0.tgz", 852 | "integrity": "sha512-uj6BvHXvLf1qILvcpYit9D6JX7pg4eSbaxm1MhWpi8wdhSQyUAOe4gxCMTfJpW0ekB48N4QN3S3vaq7rWtFctw==", 853 | "dev": true, 854 | "engines": { 855 | "node": "20 || >=22" 856 | }, 857 | "funding": { 858 | "url": "https://github.com/sponsors/isaacs" 859 | } 860 | }, 861 | "node_modules/@tapjs/stdin": { 862 | "version": "4.0.0", 863 | "resolved": "https://registry.npmjs.org/@tapjs/stdin/-/stdin-4.0.0.tgz", 864 | "integrity": "sha512-6QcaKEKH+RB5YPVHytclqzrKoh1d0S8i8lEgGwGAhoaShyawB5CoADnKpCXWjHKsRESUvG7CqiPDGsK39BJEaA==", 865 | "dev": true, 866 | "engines": { 867 | "node": "20 || >=22" 868 | }, 869 | "peerDependencies": { 870 | "@tapjs/core": "4.0.0" 871 | } 872 | }, 873 | "node_modules/@tapjs/test": { 874 | "version": "4.0.0", 875 | "resolved": "https://registry.npmjs.org/@tapjs/test/-/test-4.0.0.tgz", 876 | "integrity": "sha512-lOU1N0bFCCjJg2UEb8TlLj6+u754Uxi2CSuv3TSkRU+oHRBTEPZ4nJ6MpUqvgyvKm9ilVZ5FLS9/GwXB/XLH3A==", 877 | "dev": true, 878 | "dependencies": { 879 | "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7", 880 | "@tapjs/after": "3.0.0", 881 | "@tapjs/after-each": "4.0.0", 882 | "@tapjs/asserts": "4.0.0", 883 | "@tapjs/before": "4.0.0", 884 | "@tapjs/before-each": "4.0.0", 885 | "@tapjs/chdir": "3.0.0", 886 | "@tapjs/filter": "4.0.0", 887 | "@tapjs/fixture": "4.0.0", 888 | "@tapjs/intercept": "4.0.0", 889 | "@tapjs/mock": "4.0.0", 890 | "@tapjs/node-serialize": "4.0.0", 891 | "@tapjs/snapshot": "4.0.0", 892 | "@tapjs/spawn": "4.0.0", 893 | "@tapjs/stdin": "4.0.0", 894 | "@tapjs/typescript": "3.0.0", 895 | "@tapjs/worker": "4.0.0", 896 | "glob": "11", 897 | "jackspeak": "^4.0.1", 898 | "mkdirp": "^3.0.0", 899 | "package-json-from-dist": "^1.0.0", 900 | "resolve-import": "^2.0.0", 901 | "rimraf": "^6.0.0", 902 | "sync-content": "^2.0.1", 903 | "tap-parser": "18.0.0", 904 | "tshy": "^3.0.2", 905 | "typescript": "5.5", 906 | "walk-up-path": "^4.0.0" 907 | }, 908 | "bin": { 909 | "generate-tap-test-class": "dist/esm/build.mjs" 910 | }, 911 | "engines": { 912 | "node": "20 || >=22" 913 | }, 914 | "peerDependencies": { 915 | "@tapjs/core": "4.0.0" 916 | } 917 | }, 918 | "node_modules/@tapjs/typescript": { 919 | "version": "3.0.0", 920 | "resolved": "https://registry.npmjs.org/@tapjs/typescript/-/typescript-3.0.0.tgz", 921 | "integrity": "sha512-gKDv+07vdNuplN32sQvkzuEnai9JqJlUX5BuqTrSeWMsoKCoGPdyt8YNwaoebVeyBpt7IgjOBln8YLhfI3AcpA==", 922 | "dev": true, 923 | "dependencies": { 924 | "@isaacs/ts-node-temp-fork-for-pr-2009": "^10.9.7" 925 | }, 926 | "engines": { 927 | "node": "20 || >=22" 928 | }, 929 | "peerDependencies": { 930 | "@tapjs/core": "4.0.0" 931 | } 932 | }, 933 | "node_modules/@tapjs/worker": { 934 | "version": "4.0.0", 935 | "resolved": "https://registry.npmjs.org/@tapjs/worker/-/worker-4.0.0.tgz", 936 | "integrity": "sha512-BI5Ttet5HEABPAll8Ou8oFQGIiglen87PYlwTc9yLEB+g4mj8FCZYTGJNIW981CT7lOZzMJICz3C3VTdC9vzuA==", 937 | "dev": true, 938 | "engines": { 939 | "node": "20 || >=22" 940 | }, 941 | "peerDependencies": { 942 | "@tapjs/core": "4.0.0" 943 | } 944 | }, 945 | "node_modules/@tsconfig/node14": { 946 | "version": "14.1.2", 947 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-14.1.2.tgz", 948 | "integrity": "sha512-1vncsbfCZ3TBLPxesRYz02Rn7SNJfbLoDVkcZ7F/ixOV6nwxwgdhD1mdPcc5YQ413qBJ8CvMxXMFfJ7oawjo7Q==", 949 | "dev": true 950 | }, 951 | "node_modules/@tsconfig/node16": { 952 | "version": "16.1.3", 953 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-16.1.3.tgz", 954 | "integrity": "sha512-9nTOUBn+EMKO6rtSZJk+DcqsfgtlERGT9XPJ5PRj/HNENPCBY1yu/JEj5wT6GLtbCLBO2k46SeXDaY0pjMqypw==", 955 | "dev": true 956 | }, 957 | "node_modules/@tsconfig/node18": { 958 | "version": "18.2.4", 959 | "resolved": "https://registry.npmjs.org/@tsconfig/node18/-/node18-18.2.4.tgz", 960 | "integrity": "sha512-5xxU8vVs9/FNcvm3gE07fPbn9tl6tqGGWA9tSlwsUEkBxtRnTsNmwrV8gasZ9F/EobaSv9+nu8AxUKccw77JpQ==", 961 | "dev": true 962 | }, 963 | "node_modules/@tsconfig/node20": { 964 | "version": "20.1.4", 965 | "resolved": "https://registry.npmjs.org/@tsconfig/node20/-/node20-20.1.4.tgz", 966 | "integrity": "sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==", 967 | "dev": true 968 | }, 969 | "node_modules/@tufjs/canonical-json": { 970 | "version": "2.0.0", 971 | "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", 972 | "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", 973 | "dev": true, 974 | "engines": { 975 | "node": "^16.14.0 || >=18.0.0" 976 | } 977 | }, 978 | "node_modules/@tufjs/models": { 979 | "version": "2.0.1", 980 | "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", 981 | "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", 982 | "dev": true, 983 | "dependencies": { 984 | "@tufjs/canonical-json": "2.0.0", 985 | "minimatch": "^9.0.4" 986 | }, 987 | "engines": { 988 | "node": "^16.14.0 || >=18.0.0" 989 | } 990 | }, 991 | "node_modules/@tufjs/models/node_modules/minimatch": { 992 | "version": "9.0.5", 993 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 994 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 995 | "dev": true, 996 | "dependencies": { 997 | "brace-expansion": "^2.0.1" 998 | }, 999 | "engines": { 1000 | "node": ">=16 || 14 >=14.17" 1001 | }, 1002 | "funding": { 1003 | "url": "https://github.com/sponsors/isaacs" 1004 | } 1005 | }, 1006 | "node_modules/@types/istanbul-lib-coverage": { 1007 | "version": "2.0.6", 1008 | "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", 1009 | "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", 1010 | "dev": true 1011 | }, 1012 | "node_modules/@types/node": { 1013 | "version": "22.4.0", 1014 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.4.0.tgz", 1015 | "integrity": "sha512-49AbMDwYUz7EXxKU/r7mXOsxwFr4BYbvB7tWYxVuLdb2ibd30ijjXINSMAHiEEZk5PCRBmW1gUeisn2VMKt3cQ==", 1016 | "dev": true, 1017 | "peer": true, 1018 | "dependencies": { 1019 | "undici-types": "~6.19.2" 1020 | } 1021 | }, 1022 | "node_modules/abbrev": { 1023 | "version": "2.0.0", 1024 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", 1025 | "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", 1026 | "dev": true, 1027 | "engines": { 1028 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 1029 | } 1030 | }, 1031 | "node_modules/acorn": { 1032 | "version": "8.12.1", 1033 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", 1034 | "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", 1035 | "dev": true, 1036 | "bin": { 1037 | "acorn": "bin/acorn" 1038 | }, 1039 | "engines": { 1040 | "node": ">=0.4.0" 1041 | } 1042 | }, 1043 | "node_modules/acorn-walk": { 1044 | "version": "8.3.3", 1045 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", 1046 | "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", 1047 | "dev": true, 1048 | "dependencies": { 1049 | "acorn": "^8.11.0" 1050 | }, 1051 | "engines": { 1052 | "node": ">=0.4.0" 1053 | } 1054 | }, 1055 | "node_modules/add-event-listener": { 1056 | "version": "0.0.1", 1057 | "resolved": "https://registry.npmjs.org/add-event-listener/-/add-event-listener-0.0.1.tgz", 1058 | "integrity": "sha512-hjRmkeDqFUWEFcDHP/Lp0Pa4MhIJk/oQX8B7lFiNrjBKHjf0q+ivCJrucY8d8UI5d0QkZgV2jGdAGXxEZcm3nA==", 1059 | "dev": true 1060 | }, 1061 | "node_modules/agent-base": { 1062 | "version": "7.1.1", 1063 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", 1064 | "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", 1065 | "dev": true, 1066 | "dependencies": { 1067 | "debug": "^4.3.4" 1068 | }, 1069 | "engines": { 1070 | "node": ">= 14" 1071 | } 1072 | }, 1073 | "node_modules/aggregate-error": { 1074 | "version": "3.1.0", 1075 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", 1076 | "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", 1077 | "dev": true, 1078 | "dependencies": { 1079 | "clean-stack": "^2.0.0", 1080 | "indent-string": "^4.0.0" 1081 | }, 1082 | "engines": { 1083 | "node": ">=8" 1084 | } 1085 | }, 1086 | "node_modules/aggregate-error/node_modules/indent-string": { 1087 | "version": "4.0.0", 1088 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", 1089 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", 1090 | "dev": true, 1091 | "engines": { 1092 | "node": ">=8" 1093 | } 1094 | }, 1095 | "node_modules/ansi-escapes": { 1096 | "version": "7.0.0", 1097 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", 1098 | "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", 1099 | "dev": true, 1100 | "dependencies": { 1101 | "environment": "^1.0.0" 1102 | }, 1103 | "engines": { 1104 | "node": ">=18" 1105 | }, 1106 | "funding": { 1107 | "url": "https://github.com/sponsors/sindresorhus" 1108 | } 1109 | }, 1110 | "node_modules/ansi-regex": { 1111 | "version": "6.0.1", 1112 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", 1113 | "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", 1114 | "dev": true, 1115 | "engines": { 1116 | "node": ">=12" 1117 | }, 1118 | "funding": { 1119 | "url": "https://github.com/chalk/ansi-regex?sponsor=1" 1120 | } 1121 | }, 1122 | "node_modules/ansi-styles": { 1123 | "version": "6.2.1", 1124 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", 1125 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", 1126 | "dev": true, 1127 | "engines": { 1128 | "node": ">=12" 1129 | }, 1130 | "funding": { 1131 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1132 | } 1133 | }, 1134 | "node_modules/anymatch": { 1135 | "version": "3.1.3", 1136 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1137 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1138 | "dev": true, 1139 | "dependencies": { 1140 | "normalize-path": "^3.0.0", 1141 | "picomatch": "^2.0.4" 1142 | }, 1143 | "engines": { 1144 | "node": ">= 8" 1145 | } 1146 | }, 1147 | "node_modules/arg": { 1148 | "version": "4.1.3", 1149 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 1150 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 1151 | "dev": true 1152 | }, 1153 | "node_modules/async-hook-domain": { 1154 | "version": "4.0.1", 1155 | "resolved": "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-4.0.1.tgz", 1156 | "integrity": "sha512-bSktexGodAjfHWIrSrrqxqWzf1hWBZBpmPNZv+TYUMyWa2eoefFc6q6H1+KtdHYSz35lrhWdmXt/XK9wNEZvww==", 1157 | "dev": true, 1158 | "engines": { 1159 | "node": ">=16" 1160 | } 1161 | }, 1162 | "node_modules/auto-bind": { 1163 | "version": "5.0.1", 1164 | "resolved": "https://registry.npmjs.org/auto-bind/-/auto-bind-5.0.1.tgz", 1165 | "integrity": "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==", 1166 | "dev": true, 1167 | "engines": { 1168 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1169 | }, 1170 | "funding": { 1171 | "url": "https://github.com/sponsors/sindresorhus" 1172 | } 1173 | }, 1174 | "node_modules/balanced-match": { 1175 | "version": "1.0.2", 1176 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1177 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1178 | "dev": true 1179 | }, 1180 | "node_modules/binary-extensions": { 1181 | "version": "2.3.0", 1182 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", 1183 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", 1184 | "dev": true, 1185 | "engines": { 1186 | "node": ">=8" 1187 | }, 1188 | "funding": { 1189 | "url": "https://github.com/sponsors/sindresorhus" 1190 | } 1191 | }, 1192 | "node_modules/brace-expansion": { 1193 | "version": "2.0.1", 1194 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 1195 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1196 | "dev": true, 1197 | "dependencies": { 1198 | "balanced-match": "^1.0.0" 1199 | } 1200 | }, 1201 | "node_modules/braces": { 1202 | "version": "3.0.3", 1203 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", 1204 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", 1205 | "dev": true, 1206 | "dependencies": { 1207 | "fill-range": "^7.1.1" 1208 | }, 1209 | "engines": { 1210 | "node": ">=8" 1211 | } 1212 | }, 1213 | "node_modules/c8": { 1214 | "version": "10.1.2", 1215 | "resolved": "https://registry.npmjs.org/c8/-/c8-10.1.2.tgz", 1216 | "integrity": "sha512-Qr6rj76eSshu5CgRYvktW0uM0CFY0yi4Fd5D0duDXO6sYinyopmftUiJVuzBQxQcwQLor7JWDVRP+dUfCmzgJw==", 1217 | "dev": true, 1218 | "dependencies": { 1219 | "@bcoe/v8-coverage": "^0.2.3", 1220 | "@istanbuljs/schema": "^0.1.3", 1221 | "find-up": "^5.0.0", 1222 | "foreground-child": "^3.1.1", 1223 | "istanbul-lib-coverage": "^3.2.0", 1224 | "istanbul-lib-report": "^3.0.1", 1225 | "istanbul-reports": "^3.1.6", 1226 | "test-exclude": "^7.0.1", 1227 | "v8-to-istanbul": "^9.0.0", 1228 | "yargs": "^17.7.2", 1229 | "yargs-parser": "^21.1.1" 1230 | }, 1231 | "bin": { 1232 | "c8": "bin/c8.js" 1233 | }, 1234 | "engines": { 1235 | "node": ">=18" 1236 | }, 1237 | "peerDependencies": { 1238 | "monocart-coverage-reports": "^2" 1239 | }, 1240 | "peerDependenciesMeta": { 1241 | "monocart-coverage-reports": { 1242 | "optional": true 1243 | } 1244 | } 1245 | }, 1246 | "node_modules/cacache": { 1247 | "version": "18.0.4", 1248 | "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", 1249 | "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", 1250 | "dev": true, 1251 | "dependencies": { 1252 | "@npmcli/fs": "^3.1.0", 1253 | "fs-minipass": "^3.0.0", 1254 | "glob": "^10.2.2", 1255 | "lru-cache": "^10.0.1", 1256 | "minipass": "^7.0.3", 1257 | "minipass-collect": "^2.0.1", 1258 | "minipass-flush": "^1.0.5", 1259 | "minipass-pipeline": "^1.2.4", 1260 | "p-map": "^4.0.0", 1261 | "ssri": "^10.0.0", 1262 | "tar": "^6.1.11", 1263 | "unique-filename": "^3.0.0" 1264 | }, 1265 | "engines": { 1266 | "node": "^16.14.0 || >=18.0.0" 1267 | } 1268 | }, 1269 | "node_modules/cacache/node_modules/glob": { 1270 | "version": "10.4.5", 1271 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 1272 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 1273 | "dev": true, 1274 | "dependencies": { 1275 | "foreground-child": "^3.1.0", 1276 | "jackspeak": "^3.1.2", 1277 | "minimatch": "^9.0.4", 1278 | "minipass": "^7.1.2", 1279 | "package-json-from-dist": "^1.0.0", 1280 | "path-scurry": "^1.11.1" 1281 | }, 1282 | "bin": { 1283 | "glob": "dist/esm/bin.mjs" 1284 | }, 1285 | "funding": { 1286 | "url": "https://github.com/sponsors/isaacs" 1287 | } 1288 | }, 1289 | "node_modules/cacache/node_modules/jackspeak": { 1290 | "version": "3.4.3", 1291 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 1292 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 1293 | "dev": true, 1294 | "dependencies": { 1295 | "@isaacs/cliui": "^8.0.2" 1296 | }, 1297 | "funding": { 1298 | "url": "https://github.com/sponsors/isaacs" 1299 | }, 1300 | "optionalDependencies": { 1301 | "@pkgjs/parseargs": "^0.11.0" 1302 | } 1303 | }, 1304 | "node_modules/cacache/node_modules/minimatch": { 1305 | "version": "9.0.5", 1306 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1307 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1308 | "dev": true, 1309 | "dependencies": { 1310 | "brace-expansion": "^2.0.1" 1311 | }, 1312 | "engines": { 1313 | "node": ">=16 || 14 >=14.17" 1314 | }, 1315 | "funding": { 1316 | "url": "https://github.com/sponsors/isaacs" 1317 | } 1318 | }, 1319 | "node_modules/cacache/node_modules/path-scurry": { 1320 | "version": "1.11.1", 1321 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 1322 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 1323 | "dev": true, 1324 | "dependencies": { 1325 | "lru-cache": "^10.2.0", 1326 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 1327 | }, 1328 | "engines": { 1329 | "node": ">=16 || 14 >=14.18" 1330 | }, 1331 | "funding": { 1332 | "url": "https://github.com/sponsors/isaacs" 1333 | } 1334 | }, 1335 | "node_modules/chalk": { 1336 | "version": "5.3.0", 1337 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", 1338 | "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", 1339 | "dev": true, 1340 | "engines": { 1341 | "node": "^12.17.0 || ^14.13 || >=16.0.0" 1342 | }, 1343 | "funding": { 1344 | "url": "https://github.com/chalk/chalk?sponsor=1" 1345 | } 1346 | }, 1347 | "node_modules/chokidar": { 1348 | "version": "3.6.0", 1349 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", 1350 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", 1351 | "dev": true, 1352 | "dependencies": { 1353 | "anymatch": "~3.1.2", 1354 | "braces": "~3.0.2", 1355 | "glob-parent": "~5.1.2", 1356 | "is-binary-path": "~2.1.0", 1357 | "is-glob": "~4.0.1", 1358 | "normalize-path": "~3.0.0", 1359 | "readdirp": "~3.6.0" 1360 | }, 1361 | "engines": { 1362 | "node": ">= 8.10.0" 1363 | }, 1364 | "funding": { 1365 | "url": "https://paulmillr.com/funding/" 1366 | }, 1367 | "optionalDependencies": { 1368 | "fsevents": "~2.3.2" 1369 | } 1370 | }, 1371 | "node_modules/chownr": { 1372 | "version": "2.0.0", 1373 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 1374 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", 1375 | "dev": true, 1376 | "engines": { 1377 | "node": ">=10" 1378 | } 1379 | }, 1380 | "node_modules/clean-stack": { 1381 | "version": "2.2.0", 1382 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", 1383 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", 1384 | "dev": true, 1385 | "engines": { 1386 | "node": ">=6" 1387 | } 1388 | }, 1389 | "node_modules/cli-boxes": { 1390 | "version": "3.0.0", 1391 | "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", 1392 | "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", 1393 | "dev": true, 1394 | "engines": { 1395 | "node": ">=10" 1396 | }, 1397 | "funding": { 1398 | "url": "https://github.com/sponsors/sindresorhus" 1399 | } 1400 | }, 1401 | "node_modules/cli-cursor": { 1402 | "version": "4.0.0", 1403 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", 1404 | "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", 1405 | "dev": true, 1406 | "dependencies": { 1407 | "restore-cursor": "^4.0.0" 1408 | }, 1409 | "engines": { 1410 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1411 | }, 1412 | "funding": { 1413 | "url": "https://github.com/sponsors/sindresorhus" 1414 | } 1415 | }, 1416 | "node_modules/cli-truncate": { 1417 | "version": "4.0.0", 1418 | "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", 1419 | "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", 1420 | "dev": true, 1421 | "dependencies": { 1422 | "slice-ansi": "^5.0.0", 1423 | "string-width": "^7.0.0" 1424 | }, 1425 | "engines": { 1426 | "node": ">=18" 1427 | }, 1428 | "funding": { 1429 | "url": "https://github.com/sponsors/sindresorhus" 1430 | } 1431 | }, 1432 | "node_modules/cli-truncate/node_modules/slice-ansi": { 1433 | "version": "5.0.0", 1434 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", 1435 | "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", 1436 | "dev": true, 1437 | "dependencies": { 1438 | "ansi-styles": "^6.0.0", 1439 | "is-fullwidth-code-point": "^4.0.0" 1440 | }, 1441 | "engines": { 1442 | "node": ">=12" 1443 | }, 1444 | "funding": { 1445 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 1446 | } 1447 | }, 1448 | "node_modules/cliui": { 1449 | "version": "8.0.1", 1450 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1451 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1452 | "dev": true, 1453 | "dependencies": { 1454 | "string-width": "^4.2.0", 1455 | "strip-ansi": "^6.0.1", 1456 | "wrap-ansi": "^7.0.0" 1457 | }, 1458 | "engines": { 1459 | "node": ">=12" 1460 | } 1461 | }, 1462 | "node_modules/cliui/node_modules/ansi-regex": { 1463 | "version": "5.0.1", 1464 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1465 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1466 | "dev": true, 1467 | "engines": { 1468 | "node": ">=8" 1469 | } 1470 | }, 1471 | "node_modules/cliui/node_modules/ansi-styles": { 1472 | "version": "4.3.0", 1473 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1474 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1475 | "dev": true, 1476 | "dependencies": { 1477 | "color-convert": "^2.0.1" 1478 | }, 1479 | "engines": { 1480 | "node": ">=8" 1481 | }, 1482 | "funding": { 1483 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1484 | } 1485 | }, 1486 | "node_modules/cliui/node_modules/emoji-regex": { 1487 | "version": "8.0.0", 1488 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1489 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1490 | "dev": true 1491 | }, 1492 | "node_modules/cliui/node_modules/is-fullwidth-code-point": { 1493 | "version": "3.0.0", 1494 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1495 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1496 | "dev": true, 1497 | "engines": { 1498 | "node": ">=8" 1499 | } 1500 | }, 1501 | "node_modules/cliui/node_modules/string-width": { 1502 | "version": "4.2.3", 1503 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1504 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1505 | "dev": true, 1506 | "dependencies": { 1507 | "emoji-regex": "^8.0.0", 1508 | "is-fullwidth-code-point": "^3.0.0", 1509 | "strip-ansi": "^6.0.1" 1510 | }, 1511 | "engines": { 1512 | "node": ">=8" 1513 | } 1514 | }, 1515 | "node_modules/cliui/node_modules/strip-ansi": { 1516 | "version": "6.0.1", 1517 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1518 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1519 | "dev": true, 1520 | "dependencies": { 1521 | "ansi-regex": "^5.0.1" 1522 | }, 1523 | "engines": { 1524 | "node": ">=8" 1525 | } 1526 | }, 1527 | "node_modules/cliui/node_modules/wrap-ansi": { 1528 | "version": "7.0.0", 1529 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1530 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1531 | "dev": true, 1532 | "dependencies": { 1533 | "ansi-styles": "^4.0.0", 1534 | "string-width": "^4.1.0", 1535 | "strip-ansi": "^6.0.0" 1536 | }, 1537 | "engines": { 1538 | "node": ">=10" 1539 | }, 1540 | "funding": { 1541 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1542 | } 1543 | }, 1544 | "node_modules/code-excerpt": { 1545 | "version": "4.0.0", 1546 | "resolved": "https://registry.npmjs.org/code-excerpt/-/code-excerpt-4.0.0.tgz", 1547 | "integrity": "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==", 1548 | "dev": true, 1549 | "dependencies": { 1550 | "convert-to-spaces": "^2.0.1" 1551 | }, 1552 | "engines": { 1553 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1554 | } 1555 | }, 1556 | "node_modules/color-convert": { 1557 | "version": "2.0.1", 1558 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1559 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1560 | "dev": true, 1561 | "dependencies": { 1562 | "color-name": "~1.1.4" 1563 | }, 1564 | "engines": { 1565 | "node": ">=7.0.0" 1566 | } 1567 | }, 1568 | "node_modules/color-name": { 1569 | "version": "1.1.4", 1570 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1571 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1572 | "dev": true 1573 | }, 1574 | "node_modules/convert-source-map": { 1575 | "version": "2.0.0", 1576 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", 1577 | "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", 1578 | "dev": true 1579 | }, 1580 | "node_modules/convert-to-spaces": { 1581 | "version": "2.0.1", 1582 | "resolved": "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-2.0.1.tgz", 1583 | "integrity": "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==", 1584 | "dev": true, 1585 | "engines": { 1586 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 1587 | } 1588 | }, 1589 | "node_modules/cross-spawn": { 1590 | "version": "7.0.6", 1591 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", 1592 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", 1593 | "dev": true, 1594 | "dependencies": { 1595 | "path-key": "^3.1.0", 1596 | "shebang-command": "^2.0.0", 1597 | "which": "^2.0.1" 1598 | }, 1599 | "engines": { 1600 | "node": ">= 8" 1601 | } 1602 | }, 1603 | "node_modules/cross-spawn/node_modules/isexe": { 1604 | "version": "2.0.0", 1605 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1606 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1607 | "dev": true 1608 | }, 1609 | "node_modules/cross-spawn/node_modules/which": { 1610 | "version": "2.0.2", 1611 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1612 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1613 | "dev": true, 1614 | "dependencies": { 1615 | "isexe": "^2.0.0" 1616 | }, 1617 | "bin": { 1618 | "node-which": "bin/node-which" 1619 | }, 1620 | "engines": { 1621 | "node": ">= 8" 1622 | } 1623 | }, 1624 | "node_modules/debug": { 1625 | "version": "4.3.6", 1626 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", 1627 | "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", 1628 | "dev": true, 1629 | "dependencies": { 1630 | "ms": "2.1.2" 1631 | }, 1632 | "engines": { 1633 | "node": ">=6.0" 1634 | }, 1635 | "peerDependenciesMeta": { 1636 | "supports-color": { 1637 | "optional": true 1638 | } 1639 | } 1640 | }, 1641 | "node_modules/debug/node_modules/ms": { 1642 | "version": "2.1.2", 1643 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1644 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1645 | "dev": true 1646 | }, 1647 | "node_modules/diff": { 1648 | "version": "5.2.0", 1649 | "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", 1650 | "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", 1651 | "dev": true, 1652 | "engines": { 1653 | "node": ">=0.3.1" 1654 | } 1655 | }, 1656 | "node_modules/eastasianwidth": { 1657 | "version": "0.2.0", 1658 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", 1659 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", 1660 | "dev": true 1661 | }, 1662 | "node_modules/emoji-regex": { 1663 | "version": "10.3.0", 1664 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", 1665 | "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", 1666 | "dev": true 1667 | }, 1668 | "node_modules/encoding": { 1669 | "version": "0.1.13", 1670 | "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", 1671 | "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", 1672 | "dev": true, 1673 | "optional": true, 1674 | "dependencies": { 1675 | "iconv-lite": "^0.6.2" 1676 | } 1677 | }, 1678 | "node_modules/env-paths": { 1679 | "version": "2.2.1", 1680 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", 1681 | "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", 1682 | "dev": true, 1683 | "engines": { 1684 | "node": ">=6" 1685 | } 1686 | }, 1687 | "node_modules/environment": { 1688 | "version": "1.1.0", 1689 | "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", 1690 | "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", 1691 | "dev": true, 1692 | "engines": { 1693 | "node": ">=18" 1694 | }, 1695 | "funding": { 1696 | "url": "https://github.com/sponsors/sindresorhus" 1697 | } 1698 | }, 1699 | "node_modules/err-code": { 1700 | "version": "2.0.3", 1701 | "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", 1702 | "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", 1703 | "dev": true 1704 | }, 1705 | "node_modules/escalade": { 1706 | "version": "3.1.2", 1707 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", 1708 | "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", 1709 | "dev": true, 1710 | "engines": { 1711 | "node": ">=6" 1712 | } 1713 | }, 1714 | "node_modules/escape-string-regexp": { 1715 | "version": "2.0.0", 1716 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", 1717 | "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", 1718 | "dev": true, 1719 | "engines": { 1720 | "node": ">=8" 1721 | } 1722 | }, 1723 | "node_modules/events-to-array": { 1724 | "version": "2.0.3", 1725 | "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-2.0.3.tgz", 1726 | "integrity": "sha512-f/qE2gImHRa4Cp2y1stEOSgw8wTFyUdVJX7G//bMwbaV9JqISFxg99NbmVQeP7YLnDUZ2un851jlaDrlpmGehQ==", 1727 | "dev": true, 1728 | "engines": { 1729 | "node": ">=12" 1730 | } 1731 | }, 1732 | "node_modules/exponential-backoff": { 1733 | "version": "3.1.1", 1734 | "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", 1735 | "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", 1736 | "dev": true 1737 | }, 1738 | "node_modules/fill-range": { 1739 | "version": "7.1.1", 1740 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", 1741 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", 1742 | "dev": true, 1743 | "dependencies": { 1744 | "to-regex-range": "^5.0.1" 1745 | }, 1746 | "engines": { 1747 | "node": ">=8" 1748 | } 1749 | }, 1750 | "node_modules/find-up": { 1751 | "version": "5.0.0", 1752 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 1753 | "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 1754 | "dev": true, 1755 | "dependencies": { 1756 | "locate-path": "^6.0.0", 1757 | "path-exists": "^4.0.0" 1758 | }, 1759 | "engines": { 1760 | "node": ">=10" 1761 | }, 1762 | "funding": { 1763 | "url": "https://github.com/sponsors/sindresorhus" 1764 | } 1765 | }, 1766 | "node_modules/foreground-child": { 1767 | "version": "3.3.0", 1768 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", 1769 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", 1770 | "dev": true, 1771 | "dependencies": { 1772 | "cross-spawn": "^7.0.0", 1773 | "signal-exit": "^4.0.1" 1774 | }, 1775 | "engines": { 1776 | "node": ">=14" 1777 | }, 1778 | "funding": { 1779 | "url": "https://github.com/sponsors/isaacs" 1780 | } 1781 | }, 1782 | "node_modules/fromentries": { 1783 | "version": "1.3.2", 1784 | "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", 1785 | "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", 1786 | "dev": true, 1787 | "funding": [ 1788 | { 1789 | "type": "github", 1790 | "url": "https://github.com/sponsors/feross" 1791 | }, 1792 | { 1793 | "type": "patreon", 1794 | "url": "https://www.patreon.com/feross" 1795 | }, 1796 | { 1797 | "type": "consulting", 1798 | "url": "https://feross.org/support" 1799 | } 1800 | ] 1801 | }, 1802 | "node_modules/fs-minipass": { 1803 | "version": "3.0.3", 1804 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", 1805 | "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", 1806 | "dev": true, 1807 | "dependencies": { 1808 | "minipass": "^7.0.3" 1809 | }, 1810 | "engines": { 1811 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 1812 | } 1813 | }, 1814 | "node_modules/fsevents": { 1815 | "version": "2.3.3", 1816 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1817 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1818 | "dev": true, 1819 | "hasInstallScript": true, 1820 | "optional": true, 1821 | "os": [ 1822 | "darwin" 1823 | ], 1824 | "engines": { 1825 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1826 | } 1827 | }, 1828 | "node_modules/function-loop": { 1829 | "version": "4.0.0", 1830 | "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-4.0.0.tgz", 1831 | "integrity": "sha512-f34iQBedYF3XcI93uewZZOnyscDragxgTK/eTvVB74k3fCD0ZorOi5BV9GS4M8rz/JoNi0Kl3qX5Y9MH3S/CLQ==", 1832 | "dev": true 1833 | }, 1834 | "node_modules/get-caller-file": { 1835 | "version": "2.0.5", 1836 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1837 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1838 | "dev": true, 1839 | "engines": { 1840 | "node": "6.* || 8.* || >= 10.*" 1841 | } 1842 | }, 1843 | "node_modules/get-east-asian-width": { 1844 | "version": "1.2.0", 1845 | "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", 1846 | "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", 1847 | "dev": true, 1848 | "engines": { 1849 | "node": ">=18" 1850 | }, 1851 | "funding": { 1852 | "url": "https://github.com/sponsors/sindresorhus" 1853 | } 1854 | }, 1855 | "node_modules/glob": { 1856 | "version": "11.0.0", 1857 | "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.0.tgz", 1858 | "integrity": "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==", 1859 | "dev": true, 1860 | "dependencies": { 1861 | "foreground-child": "^3.1.0", 1862 | "jackspeak": "^4.0.1", 1863 | "minimatch": "^10.0.0", 1864 | "minipass": "^7.1.2", 1865 | "package-json-from-dist": "^1.0.0", 1866 | "path-scurry": "^2.0.0" 1867 | }, 1868 | "bin": { 1869 | "glob": "dist/esm/bin.mjs" 1870 | }, 1871 | "engines": { 1872 | "node": "20 || >=22" 1873 | }, 1874 | "funding": { 1875 | "url": "https://github.com/sponsors/isaacs" 1876 | } 1877 | }, 1878 | "node_modules/glob-parent": { 1879 | "version": "5.1.2", 1880 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1881 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1882 | "dev": true, 1883 | "dependencies": { 1884 | "is-glob": "^4.0.1" 1885 | }, 1886 | "engines": { 1887 | "node": ">= 6" 1888 | } 1889 | }, 1890 | "node_modules/graceful-fs": { 1891 | "version": "4.2.11", 1892 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", 1893 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", 1894 | "dev": true 1895 | }, 1896 | "node_modules/hammerjs": { 1897 | "version": "2.0.8", 1898 | "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", 1899 | "integrity": "sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==", 1900 | "dev": true, 1901 | "engines": { 1902 | "node": ">=0.8.0" 1903 | } 1904 | }, 1905 | "node_modules/has-flag": { 1906 | "version": "4.0.0", 1907 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1908 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1909 | "dev": true, 1910 | "engines": { 1911 | "node": ">=8" 1912 | } 1913 | }, 1914 | "node_modules/hosted-git-info": { 1915 | "version": "7.0.2", 1916 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", 1917 | "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", 1918 | "dev": true, 1919 | "dependencies": { 1920 | "lru-cache": "^10.0.1" 1921 | }, 1922 | "engines": { 1923 | "node": "^16.14.0 || >=18.0.0" 1924 | } 1925 | }, 1926 | "node_modules/html-escaper": { 1927 | "version": "2.0.2", 1928 | "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", 1929 | "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", 1930 | "dev": true 1931 | }, 1932 | "node_modules/http-cache-semantics": { 1933 | "version": "4.1.1", 1934 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", 1935 | "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", 1936 | "dev": true 1937 | }, 1938 | "node_modules/http-proxy-agent": { 1939 | "version": "7.0.2", 1940 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", 1941 | "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", 1942 | "dev": true, 1943 | "dependencies": { 1944 | "agent-base": "^7.1.0", 1945 | "debug": "^4.3.4" 1946 | }, 1947 | "engines": { 1948 | "node": ">= 14" 1949 | } 1950 | }, 1951 | "node_modules/https-proxy-agent": { 1952 | "version": "7.0.5", 1953 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", 1954 | "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", 1955 | "dev": true, 1956 | "dependencies": { 1957 | "agent-base": "^7.0.2", 1958 | "debug": "4" 1959 | }, 1960 | "engines": { 1961 | "node": ">= 14" 1962 | } 1963 | }, 1964 | "node_modules/iconv-lite": { 1965 | "version": "0.6.3", 1966 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", 1967 | "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", 1968 | "dev": true, 1969 | "optional": true, 1970 | "dependencies": { 1971 | "safer-buffer": ">= 2.1.2 < 3.0.0" 1972 | }, 1973 | "engines": { 1974 | "node": ">=0.10.0" 1975 | } 1976 | }, 1977 | "node_modules/ignore-walk": { 1978 | "version": "6.0.5", 1979 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", 1980 | "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", 1981 | "dev": true, 1982 | "dependencies": { 1983 | "minimatch": "^9.0.0" 1984 | }, 1985 | "engines": { 1986 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 1987 | } 1988 | }, 1989 | "node_modules/ignore-walk/node_modules/minimatch": { 1990 | "version": "9.0.5", 1991 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1992 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1993 | "dev": true, 1994 | "dependencies": { 1995 | "brace-expansion": "^2.0.1" 1996 | }, 1997 | "engines": { 1998 | "node": ">=16 || 14 >=14.17" 1999 | }, 2000 | "funding": { 2001 | "url": "https://github.com/sponsors/isaacs" 2002 | } 2003 | }, 2004 | "node_modules/imurmurhash": { 2005 | "version": "0.1.4", 2006 | "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 2007 | "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 2008 | "dev": true, 2009 | "engines": { 2010 | "node": ">=0.8.19" 2011 | } 2012 | }, 2013 | "node_modules/indent-string": { 2014 | "version": "5.0.0", 2015 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", 2016 | "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", 2017 | "dev": true, 2018 | "engines": { 2019 | "node": ">=12" 2020 | }, 2021 | "funding": { 2022 | "url": "https://github.com/sponsors/sindresorhus" 2023 | } 2024 | }, 2025 | "node_modules/ini": { 2026 | "version": "4.1.3", 2027 | "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", 2028 | "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", 2029 | "dev": true, 2030 | "engines": { 2031 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2032 | } 2033 | }, 2034 | "node_modules/ink": { 2035 | "version": "5.0.1", 2036 | "resolved": "https://registry.npmjs.org/ink/-/ink-5.0.1.tgz", 2037 | "integrity": "sha512-ae4AW/t8jlkj/6Ou21H2av0wxTk8vrGzXv+v2v7j4in+bl1M5XRMVbfNghzhBokV++FjF8RBDJvYo+ttR9YVRg==", 2038 | "dev": true, 2039 | "dependencies": { 2040 | "@alcalzone/ansi-tokenize": "^0.1.3", 2041 | "ansi-escapes": "^7.0.0", 2042 | "ansi-styles": "^6.2.1", 2043 | "auto-bind": "^5.0.1", 2044 | "chalk": "^5.3.0", 2045 | "cli-boxes": "^3.0.0", 2046 | "cli-cursor": "^4.0.0", 2047 | "cli-truncate": "^4.0.0", 2048 | "code-excerpt": "^4.0.0", 2049 | "indent-string": "^5.0.0", 2050 | "is-in-ci": "^0.1.0", 2051 | "lodash": "^4.17.21", 2052 | "patch-console": "^2.0.0", 2053 | "react-reconciler": "^0.29.0", 2054 | "scheduler": "^0.23.0", 2055 | "signal-exit": "^3.0.7", 2056 | "slice-ansi": "^7.1.0", 2057 | "stack-utils": "^2.0.6", 2058 | "string-width": "^7.0.0", 2059 | "type-fest": "^4.8.3", 2060 | "widest-line": "^5.0.0", 2061 | "wrap-ansi": "^9.0.0", 2062 | "ws": "^8.15.0", 2063 | "yoga-wasm-web": "~0.3.3" 2064 | }, 2065 | "engines": { 2066 | "node": ">=18" 2067 | }, 2068 | "peerDependencies": { 2069 | "@types/react": ">=18.0.0", 2070 | "react": ">=18.0.0", 2071 | "react-devtools-core": "^4.19.1" 2072 | }, 2073 | "peerDependenciesMeta": { 2074 | "@types/react": { 2075 | "optional": true 2076 | }, 2077 | "react-devtools-core": { 2078 | "optional": true 2079 | } 2080 | } 2081 | }, 2082 | "node_modules/ink/node_modules/signal-exit": { 2083 | "version": "3.0.7", 2084 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 2085 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 2086 | "dev": true 2087 | }, 2088 | "node_modules/ip-address": { 2089 | "version": "9.0.5", 2090 | "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", 2091 | "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", 2092 | "dev": true, 2093 | "dependencies": { 2094 | "jsbn": "1.1.0", 2095 | "sprintf-js": "^1.1.3" 2096 | }, 2097 | "engines": { 2098 | "node": ">= 12" 2099 | } 2100 | }, 2101 | "node_modules/is-actual-promise": { 2102 | "version": "1.0.2", 2103 | "resolved": "https://registry.npmjs.org/is-actual-promise/-/is-actual-promise-1.0.2.tgz", 2104 | "integrity": "sha512-xsFiO1of0CLsQnPZ1iXHNTyR9YszOeWKYv+q6n8oSFW3ipooFJ1j1lbRMgiMCr+pp2gLruESI4zb5Ak6eK5OnQ==", 2105 | "dev": true 2106 | }, 2107 | "node_modules/is-binary-path": { 2108 | "version": "2.1.0", 2109 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 2110 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 2111 | "dev": true, 2112 | "dependencies": { 2113 | "binary-extensions": "^2.0.0" 2114 | }, 2115 | "engines": { 2116 | "node": ">=8" 2117 | } 2118 | }, 2119 | "node_modules/is-extglob": { 2120 | "version": "2.1.1", 2121 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 2122 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 2123 | "dev": true, 2124 | "engines": { 2125 | "node": ">=0.10.0" 2126 | } 2127 | }, 2128 | "node_modules/is-fullwidth-code-point": { 2129 | "version": "4.0.0", 2130 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", 2131 | "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", 2132 | "dev": true, 2133 | "engines": { 2134 | "node": ">=12" 2135 | }, 2136 | "funding": { 2137 | "url": "https://github.com/sponsors/sindresorhus" 2138 | } 2139 | }, 2140 | "node_modules/is-glob": { 2141 | "version": "4.0.3", 2142 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 2143 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 2144 | "dev": true, 2145 | "dependencies": { 2146 | "is-extglob": "^2.1.1" 2147 | }, 2148 | "engines": { 2149 | "node": ">=0.10.0" 2150 | } 2151 | }, 2152 | "node_modules/is-in-ci": { 2153 | "version": "0.1.0", 2154 | "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz", 2155 | "integrity": "sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==", 2156 | "dev": true, 2157 | "bin": { 2158 | "is-in-ci": "cli.js" 2159 | }, 2160 | "engines": { 2161 | "node": ">=18" 2162 | }, 2163 | "funding": { 2164 | "url": "https://github.com/sponsors/sindresorhus" 2165 | } 2166 | }, 2167 | "node_modules/is-lambda": { 2168 | "version": "1.0.1", 2169 | "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", 2170 | "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", 2171 | "dev": true 2172 | }, 2173 | "node_modules/is-number": { 2174 | "version": "7.0.0", 2175 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 2176 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 2177 | "dev": true, 2178 | "engines": { 2179 | "node": ">=0.12.0" 2180 | } 2181 | }, 2182 | "node_modules/is-plain-object": { 2183 | "version": "5.0.0", 2184 | "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", 2185 | "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", 2186 | "dev": true, 2187 | "engines": { 2188 | "node": ">=0.10.0" 2189 | } 2190 | }, 2191 | "node_modules/isexe": { 2192 | "version": "3.1.1", 2193 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", 2194 | "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", 2195 | "dev": true, 2196 | "engines": { 2197 | "node": ">=16" 2198 | } 2199 | }, 2200 | "node_modules/istanbul-lib-coverage": { 2201 | "version": "3.2.2", 2202 | "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", 2203 | "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", 2204 | "dev": true, 2205 | "engines": { 2206 | "node": ">=8" 2207 | } 2208 | }, 2209 | "node_modules/istanbul-lib-report": { 2210 | "version": "3.0.1", 2211 | "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", 2212 | "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", 2213 | "dev": true, 2214 | "dependencies": { 2215 | "istanbul-lib-coverage": "^3.0.0", 2216 | "make-dir": "^4.0.0", 2217 | "supports-color": "^7.1.0" 2218 | }, 2219 | "engines": { 2220 | "node": ">=10" 2221 | } 2222 | }, 2223 | "node_modules/istanbul-reports": { 2224 | "version": "3.1.7", 2225 | "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", 2226 | "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", 2227 | "dev": true, 2228 | "dependencies": { 2229 | "html-escaper": "^2.0.0", 2230 | "istanbul-lib-report": "^3.0.0" 2231 | }, 2232 | "engines": { 2233 | "node": ">=8" 2234 | } 2235 | }, 2236 | "node_modules/jackspeak": { 2237 | "version": "4.0.1", 2238 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.0.1.tgz", 2239 | "integrity": "sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==", 2240 | "dev": true, 2241 | "dependencies": { 2242 | "@isaacs/cliui": "^8.0.2" 2243 | }, 2244 | "engines": { 2245 | "node": "20 || >=22" 2246 | }, 2247 | "funding": { 2248 | "url": "https://github.com/sponsors/isaacs" 2249 | }, 2250 | "optionalDependencies": { 2251 | "@pkgjs/parseargs": "^0.11.0" 2252 | } 2253 | }, 2254 | "node_modules/js-tokens": { 2255 | "version": "4.0.0", 2256 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 2257 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", 2258 | "dev": true 2259 | }, 2260 | "node_modules/jsbn": { 2261 | "version": "1.1.0", 2262 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", 2263 | "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", 2264 | "dev": true 2265 | }, 2266 | "node_modules/json-parse-even-better-errors": { 2267 | "version": "3.0.2", 2268 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", 2269 | "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", 2270 | "dev": true, 2271 | "engines": { 2272 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2273 | } 2274 | }, 2275 | "node_modules/jsonparse": { 2276 | "version": "1.3.1", 2277 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", 2278 | "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", 2279 | "dev": true, 2280 | "engines": [ 2281 | "node >= 0.2.0" 2282 | ] 2283 | }, 2284 | "node_modules/locate-path": { 2285 | "version": "6.0.0", 2286 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 2287 | "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 2288 | "dev": true, 2289 | "dependencies": { 2290 | "p-locate": "^5.0.0" 2291 | }, 2292 | "engines": { 2293 | "node": ">=10" 2294 | }, 2295 | "funding": { 2296 | "url": "https://github.com/sponsors/sindresorhus" 2297 | } 2298 | }, 2299 | "node_modules/lodash": { 2300 | "version": "4.17.21", 2301 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", 2302 | "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", 2303 | "dev": true 2304 | }, 2305 | "node_modules/loose-envify": { 2306 | "version": "1.4.0", 2307 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", 2308 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", 2309 | "dev": true, 2310 | "dependencies": { 2311 | "js-tokens": "^3.0.0 || ^4.0.0" 2312 | }, 2313 | "bin": { 2314 | "loose-envify": "cli.js" 2315 | } 2316 | }, 2317 | "node_modules/lru-cache": { 2318 | "version": "10.4.3", 2319 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", 2320 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", 2321 | "dev": true 2322 | }, 2323 | "node_modules/make-dir": { 2324 | "version": "4.0.0", 2325 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", 2326 | "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", 2327 | "dev": true, 2328 | "dependencies": { 2329 | "semver": "^7.5.3" 2330 | }, 2331 | "engines": { 2332 | "node": ">=10" 2333 | }, 2334 | "funding": { 2335 | "url": "https://github.com/sponsors/sindresorhus" 2336 | } 2337 | }, 2338 | "node_modules/make-error": { 2339 | "version": "1.3.6", 2340 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 2341 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 2342 | "dev": true 2343 | }, 2344 | "node_modules/make-fetch-happen": { 2345 | "version": "13.0.1", 2346 | "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", 2347 | "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", 2348 | "dev": true, 2349 | "dependencies": { 2350 | "@npmcli/agent": "^2.0.0", 2351 | "cacache": "^18.0.0", 2352 | "http-cache-semantics": "^4.1.1", 2353 | "is-lambda": "^1.0.1", 2354 | "minipass": "^7.0.2", 2355 | "minipass-fetch": "^3.0.0", 2356 | "minipass-flush": "^1.0.5", 2357 | "minipass-pipeline": "^1.2.4", 2358 | "negotiator": "^0.6.3", 2359 | "proc-log": "^4.2.0", 2360 | "promise-retry": "^2.0.1", 2361 | "ssri": "^10.0.0" 2362 | }, 2363 | "engines": { 2364 | "node": "^16.14.0 || >=18.0.0" 2365 | } 2366 | }, 2367 | "node_modules/mimic-fn": { 2368 | "version": "2.1.0", 2369 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", 2370 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", 2371 | "dev": true, 2372 | "engines": { 2373 | "node": ">=6" 2374 | } 2375 | }, 2376 | "node_modules/minimatch": { 2377 | "version": "10.0.1", 2378 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", 2379 | "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", 2380 | "dev": true, 2381 | "dependencies": { 2382 | "brace-expansion": "^2.0.1" 2383 | }, 2384 | "engines": { 2385 | "node": "20 || >=22" 2386 | }, 2387 | "funding": { 2388 | "url": "https://github.com/sponsors/isaacs" 2389 | } 2390 | }, 2391 | "node_modules/minipass": { 2392 | "version": "7.1.2", 2393 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", 2394 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", 2395 | "dev": true, 2396 | "engines": { 2397 | "node": ">=16 || 14 >=14.17" 2398 | } 2399 | }, 2400 | "node_modules/minipass-collect": { 2401 | "version": "2.0.1", 2402 | "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", 2403 | "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", 2404 | "dev": true, 2405 | "dependencies": { 2406 | "minipass": "^7.0.3" 2407 | }, 2408 | "engines": { 2409 | "node": ">=16 || 14 >=14.17" 2410 | } 2411 | }, 2412 | "node_modules/minipass-fetch": { 2413 | "version": "3.0.5", 2414 | "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", 2415 | "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", 2416 | "dev": true, 2417 | "dependencies": { 2418 | "minipass": "^7.0.3", 2419 | "minipass-sized": "^1.0.3", 2420 | "minizlib": "^2.1.2" 2421 | }, 2422 | "engines": { 2423 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2424 | }, 2425 | "optionalDependencies": { 2426 | "encoding": "^0.1.13" 2427 | } 2428 | }, 2429 | "node_modules/minipass-flush": { 2430 | "version": "1.0.5", 2431 | "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", 2432 | "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", 2433 | "dev": true, 2434 | "dependencies": { 2435 | "minipass": "^3.0.0" 2436 | }, 2437 | "engines": { 2438 | "node": ">= 8" 2439 | } 2440 | }, 2441 | "node_modules/minipass-flush/node_modules/minipass": { 2442 | "version": "3.3.6", 2443 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 2444 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 2445 | "dev": true, 2446 | "dependencies": { 2447 | "yallist": "^4.0.0" 2448 | }, 2449 | "engines": { 2450 | "node": ">=8" 2451 | } 2452 | }, 2453 | "node_modules/minipass-pipeline": { 2454 | "version": "1.2.4", 2455 | "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", 2456 | "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", 2457 | "dev": true, 2458 | "dependencies": { 2459 | "minipass": "^3.0.0" 2460 | }, 2461 | "engines": { 2462 | "node": ">=8" 2463 | } 2464 | }, 2465 | "node_modules/minipass-pipeline/node_modules/minipass": { 2466 | "version": "3.3.6", 2467 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 2468 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 2469 | "dev": true, 2470 | "dependencies": { 2471 | "yallist": "^4.0.0" 2472 | }, 2473 | "engines": { 2474 | "node": ">=8" 2475 | } 2476 | }, 2477 | "node_modules/minipass-sized": { 2478 | "version": "1.0.3", 2479 | "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", 2480 | "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", 2481 | "dev": true, 2482 | "dependencies": { 2483 | "minipass": "^3.0.0" 2484 | }, 2485 | "engines": { 2486 | "node": ">=8" 2487 | } 2488 | }, 2489 | "node_modules/minipass-sized/node_modules/minipass": { 2490 | "version": "3.3.6", 2491 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 2492 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 2493 | "dev": true, 2494 | "dependencies": { 2495 | "yallist": "^4.0.0" 2496 | }, 2497 | "engines": { 2498 | "node": ">=8" 2499 | } 2500 | }, 2501 | "node_modules/minizlib": { 2502 | "version": "2.1.2", 2503 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 2504 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 2505 | "dev": true, 2506 | "dependencies": { 2507 | "minipass": "^3.0.0", 2508 | "yallist": "^4.0.0" 2509 | }, 2510 | "engines": { 2511 | "node": ">= 8" 2512 | } 2513 | }, 2514 | "node_modules/minizlib/node_modules/minipass": { 2515 | "version": "3.3.6", 2516 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 2517 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 2518 | "dev": true, 2519 | "dependencies": { 2520 | "yallist": "^4.0.0" 2521 | }, 2522 | "engines": { 2523 | "node": ">=8" 2524 | } 2525 | }, 2526 | "node_modules/miserables": { 2527 | "version": "2.0.0", 2528 | "resolved": "https://registry.npmjs.org/miserables/-/miserables-2.0.0.tgz", 2529 | "integrity": "sha512-J+4obMHbesciklE0SoVy4EJFsgeBW2RsRzrhBWGFhpBDcxCSJ3igSzDVz8SUaPx5PQaduImkt5UWus2Yx0a5/A==", 2530 | "dev": true, 2531 | "dependencies": { 2532 | "ngraph.graph": "^19.1.0" 2533 | } 2534 | }, 2535 | "node_modules/miserables/node_modules/ngraph.graph": { 2536 | "version": "19.1.0", 2537 | "resolved": "https://registry.npmjs.org/ngraph.graph/-/ngraph.graph-19.1.0.tgz", 2538 | "integrity": "sha512-9cws84qfPkrYa7BaBtT+KgZfLXrd6pNL9Gl5Do+MBO/0Hm6rOM7qK78MZaO1uEoIK6p2pgUs6lu29zn/6tP59w==", 2539 | "dev": true, 2540 | "dependencies": { 2541 | "ngraph.events": "^1.2.1" 2542 | } 2543 | }, 2544 | "node_modules/mkdirp": { 2545 | "version": "3.0.1", 2546 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", 2547 | "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", 2548 | "dev": true, 2549 | "bin": { 2550 | "mkdirp": "dist/cjs/src/bin.js" 2551 | }, 2552 | "engines": { 2553 | "node": ">=10" 2554 | }, 2555 | "funding": { 2556 | "url": "https://github.com/sponsors/isaacs" 2557 | } 2558 | }, 2559 | "node_modules/ms": { 2560 | "version": "2.1.3", 2561 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 2562 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 2563 | "dev": true 2564 | }, 2565 | "node_modules/negotiator": { 2566 | "version": "0.6.3", 2567 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 2568 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 2569 | "dev": true, 2570 | "engines": { 2571 | "node": ">= 0.6" 2572 | } 2573 | }, 2574 | "node_modules/ngraph.coarsen": { 2575 | "version": "1.5.0", 2576 | "resolved": "https://registry.npmjs.org/ngraph.coarsen/-/ngraph.coarsen-1.5.0.tgz", 2577 | "integrity": "sha512-ciGS6p02fbhvMeDLH4rKTzHe19NoPNahXGN49K33gVo6U0kAH6rr4ej1q+GN5OfVO0Uc6p0lX3bkvNoY5SMChw==", 2578 | "dev": true, 2579 | "dependencies": { 2580 | "ngraph.subgraph": "^1.2.0" 2581 | } 2582 | }, 2583 | "node_modules/ngraph.events": { 2584 | "version": "1.2.2", 2585 | "resolved": "https://registry.npmjs.org/ngraph.events/-/ngraph.events-1.2.2.tgz", 2586 | "integrity": "sha512-JsUbEOzANskax+WSYiAPETemLWYXmixuPAlmZmhIbIj6FH/WDgEGCGnRwUQBK0GjOnVm8Ui+e5IJ+5VZ4e32eQ==", 2587 | "dev": true 2588 | }, 2589 | "node_modules/ngraph.forcelayout": { 2590 | "version": "3.3.0", 2591 | "resolved": "https://registry.npmjs.org/ngraph.forcelayout/-/ngraph.forcelayout-3.3.0.tgz", 2592 | "integrity": "sha512-EWqG8oSEueByuisyFl/c77M0+ts8g+dpNseafXFO71f0PvvZgzQ1zac1yO9CJVK6e94kbkvztgjDX3oQZ/4lVA==", 2593 | "dev": true, 2594 | "dependencies": { 2595 | "ngraph.events": "^1.0.0", 2596 | "ngraph.merge": "^1.0.0", 2597 | "ngraph.random": "^1.0.0" 2598 | } 2599 | }, 2600 | "node_modules/ngraph.forcelayout/node_modules/ngraph.merge": { 2601 | "version": "1.0.0", 2602 | "resolved": "https://registry.npmjs.org/ngraph.merge/-/ngraph.merge-1.0.0.tgz", 2603 | "integrity": "sha512-5J8YjGITUJeapsomtTALYsw7rFveYkM+lBj3QiYZ79EymQcuri65Nw3knQtFxQBU1r5iOaVRXrSwMENUPK62Vg==", 2604 | "dev": true 2605 | }, 2606 | "node_modules/ngraph.graph": { 2607 | "version": "20.0.1", 2608 | "resolved": "https://registry.npmjs.org/ngraph.graph/-/ngraph.graph-20.0.1.tgz", 2609 | "integrity": "sha512-VFsQ+EMkT+7lcJO1QP8Ik3w64WbHJl27Q53EO9hiFU9CRyxJ8HfcXtfWz/U8okuoYKDctbciL6pX3vG5dt1rYA==", 2610 | "dev": true, 2611 | "dependencies": { 2612 | "ngraph.events": "^1.2.1" 2613 | } 2614 | }, 2615 | "node_modules/ngraph.merge": { 2616 | "version": "0.0.1", 2617 | "resolved": "https://registry.npmjs.org/ngraph.merge/-/ngraph.merge-0.0.1.tgz", 2618 | "integrity": "sha512-iXchI5xMjYzA96mee//O7I7gtd4cCakWaSTu11aMTxRDbvBK2qpDDytYg58jO3usAUkjFxBdy1gxYppKmBDuRQ==", 2619 | "dev": true 2620 | }, 2621 | "node_modules/ngraph.random": { 2622 | "version": "1.0.0", 2623 | "resolved": "https://registry.npmjs.org/ngraph.random/-/ngraph.random-1.0.0.tgz", 2624 | "integrity": "sha512-deLYx/kdrchInjD+S7IMCtLAyixWRXC3En9TI0KL2JbWIb8Z9SFv8UfSOLQppMBswy08aiYkoaucfLA7d8Ffcg==" 2625 | }, 2626 | "node_modules/ngraph.subgraph": { 2627 | "version": "1.2.0", 2628 | "resolved": "https://registry.npmjs.org/ngraph.subgraph/-/ngraph.subgraph-1.2.0.tgz", 2629 | "integrity": "sha512-kbTisP2EKxNTA7YkthxbHk23Ucufi6301Ie2+CFpjUx5s5xhvblIEEQEqx3d0P4jobBSR1nLgp9/QlaQwU2//g==", 2630 | "dev": true, 2631 | "dependencies": { 2632 | "ngraph.graph": "^20.0.0" 2633 | } 2634 | }, 2635 | "node_modules/ngraph.svg": { 2636 | "version": "0.0.17", 2637 | "resolved": "https://registry.npmjs.org/ngraph.svg/-/ngraph.svg-0.0.17.tgz", 2638 | "integrity": "sha512-PjClHBOOAlWdmVY6Fh9p2Z9lniGaWBbR+LKUbKgA5dQ2LERW6f9uYJAjDOMpP+6JDy3dWwj+aqtZGiYEWbtGzA==", 2639 | "dev": true, 2640 | "dependencies": { 2641 | "hammerjs": "^2.0.2", 2642 | "ngraph.events": "1.2.1", 2643 | "ngraph.forcelayout": "3.3.0", 2644 | "ngraph.merge": "0.0.1", 2645 | "simplesvg": "0.1.0", 2646 | "wheel": "0.0.1" 2647 | } 2648 | }, 2649 | "node_modules/ngraph.svg/node_modules/ngraph.events": { 2650 | "version": "1.2.1", 2651 | "resolved": "https://registry.npmjs.org/ngraph.events/-/ngraph.events-1.2.1.tgz", 2652 | "integrity": "sha512-D4C+nXH/RFxioGXQdHu8ELDtC6EaCiNsZtih0IvyGN81OZSUby4jXoJ5+RNWasfsd0FnKxxpAROyUMzw64QNsw==", 2653 | "dev": true 2654 | }, 2655 | "node_modules/node-gyp": { 2656 | "version": "10.2.0", 2657 | "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.2.0.tgz", 2658 | "integrity": "sha512-sp3FonBAaFe4aYTcFdZUn2NYkbP7xroPGYvQmP4Nl5PxamznItBnNCgjrVTKrEfQynInMsJvZrdmqUnysCJ8rw==", 2659 | "dev": true, 2660 | "dependencies": { 2661 | "env-paths": "^2.2.0", 2662 | "exponential-backoff": "^3.1.1", 2663 | "glob": "^10.3.10", 2664 | "graceful-fs": "^4.2.6", 2665 | "make-fetch-happen": "^13.0.0", 2666 | "nopt": "^7.0.0", 2667 | "proc-log": "^4.1.0", 2668 | "semver": "^7.3.5", 2669 | "tar": "^6.2.1", 2670 | "which": "^4.0.0" 2671 | }, 2672 | "bin": { 2673 | "node-gyp": "bin/node-gyp.js" 2674 | }, 2675 | "engines": { 2676 | "node": "^16.14.0 || >=18.0.0" 2677 | } 2678 | }, 2679 | "node_modules/node-gyp/node_modules/glob": { 2680 | "version": "10.4.5", 2681 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 2682 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 2683 | "dev": true, 2684 | "dependencies": { 2685 | "foreground-child": "^3.1.0", 2686 | "jackspeak": "^3.1.2", 2687 | "minimatch": "^9.0.4", 2688 | "minipass": "^7.1.2", 2689 | "package-json-from-dist": "^1.0.0", 2690 | "path-scurry": "^1.11.1" 2691 | }, 2692 | "bin": { 2693 | "glob": "dist/esm/bin.mjs" 2694 | }, 2695 | "funding": { 2696 | "url": "https://github.com/sponsors/isaacs" 2697 | } 2698 | }, 2699 | "node_modules/node-gyp/node_modules/jackspeak": { 2700 | "version": "3.4.3", 2701 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 2702 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 2703 | "dev": true, 2704 | "dependencies": { 2705 | "@isaacs/cliui": "^8.0.2" 2706 | }, 2707 | "funding": { 2708 | "url": "https://github.com/sponsors/isaacs" 2709 | }, 2710 | "optionalDependencies": { 2711 | "@pkgjs/parseargs": "^0.11.0" 2712 | } 2713 | }, 2714 | "node_modules/node-gyp/node_modules/minimatch": { 2715 | "version": "9.0.5", 2716 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 2717 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 2718 | "dev": true, 2719 | "dependencies": { 2720 | "brace-expansion": "^2.0.1" 2721 | }, 2722 | "engines": { 2723 | "node": ">=16 || 14 >=14.17" 2724 | }, 2725 | "funding": { 2726 | "url": "https://github.com/sponsors/isaacs" 2727 | } 2728 | }, 2729 | "node_modules/node-gyp/node_modules/path-scurry": { 2730 | "version": "1.11.1", 2731 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 2732 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 2733 | "dev": true, 2734 | "dependencies": { 2735 | "lru-cache": "^10.2.0", 2736 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 2737 | }, 2738 | "engines": { 2739 | "node": ">=16 || 14 >=14.18" 2740 | }, 2741 | "funding": { 2742 | "url": "https://github.com/sponsors/isaacs" 2743 | } 2744 | }, 2745 | "node_modules/nopt": { 2746 | "version": "7.2.1", 2747 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", 2748 | "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", 2749 | "dev": true, 2750 | "dependencies": { 2751 | "abbrev": "^2.0.0" 2752 | }, 2753 | "bin": { 2754 | "nopt": "bin/nopt.js" 2755 | }, 2756 | "engines": { 2757 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2758 | } 2759 | }, 2760 | "node_modules/normalize-package-data": { 2761 | "version": "6.0.2", 2762 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", 2763 | "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", 2764 | "dev": true, 2765 | "dependencies": { 2766 | "hosted-git-info": "^7.0.0", 2767 | "semver": "^7.3.5", 2768 | "validate-npm-package-license": "^3.0.4" 2769 | }, 2770 | "engines": { 2771 | "node": "^16.14.0 || >=18.0.0" 2772 | } 2773 | }, 2774 | "node_modules/normalize-path": { 2775 | "version": "3.0.0", 2776 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 2777 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 2778 | "dev": true, 2779 | "engines": { 2780 | "node": ">=0.10.0" 2781 | } 2782 | }, 2783 | "node_modules/npm-bundled": { 2784 | "version": "3.0.1", 2785 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", 2786 | "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", 2787 | "dev": true, 2788 | "dependencies": { 2789 | "npm-normalize-package-bin": "^3.0.0" 2790 | }, 2791 | "engines": { 2792 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2793 | } 2794 | }, 2795 | "node_modules/npm-install-checks": { 2796 | "version": "6.3.0", 2797 | "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", 2798 | "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", 2799 | "dev": true, 2800 | "dependencies": { 2801 | "semver": "^7.1.1" 2802 | }, 2803 | "engines": { 2804 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2805 | } 2806 | }, 2807 | "node_modules/npm-normalize-package-bin": { 2808 | "version": "3.0.1", 2809 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", 2810 | "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", 2811 | "dev": true, 2812 | "engines": { 2813 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2814 | } 2815 | }, 2816 | "node_modules/npm-package-arg": { 2817 | "version": "11.0.3", 2818 | "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.3.tgz", 2819 | "integrity": "sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==", 2820 | "dev": true, 2821 | "dependencies": { 2822 | "hosted-git-info": "^7.0.0", 2823 | "proc-log": "^4.0.0", 2824 | "semver": "^7.3.5", 2825 | "validate-npm-package-name": "^5.0.0" 2826 | }, 2827 | "engines": { 2828 | "node": "^16.14.0 || >=18.0.0" 2829 | } 2830 | }, 2831 | "node_modules/npm-packlist": { 2832 | "version": "8.0.2", 2833 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", 2834 | "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", 2835 | "dev": true, 2836 | "dependencies": { 2837 | "ignore-walk": "^6.0.4" 2838 | }, 2839 | "engines": { 2840 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 2841 | } 2842 | }, 2843 | "node_modules/npm-pick-manifest": { 2844 | "version": "9.1.0", 2845 | "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.1.0.tgz", 2846 | "integrity": "sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==", 2847 | "dev": true, 2848 | "dependencies": { 2849 | "npm-install-checks": "^6.0.0", 2850 | "npm-normalize-package-bin": "^3.0.0", 2851 | "npm-package-arg": "^11.0.0", 2852 | "semver": "^7.3.5" 2853 | }, 2854 | "engines": { 2855 | "node": "^16.14.0 || >=18.0.0" 2856 | } 2857 | }, 2858 | "node_modules/npm-registry-fetch": { 2859 | "version": "17.1.0", 2860 | "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-17.1.0.tgz", 2861 | "integrity": "sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==", 2862 | "dev": true, 2863 | "dependencies": { 2864 | "@npmcli/redact": "^2.0.0", 2865 | "jsonparse": "^1.3.1", 2866 | "make-fetch-happen": "^13.0.0", 2867 | "minipass": "^7.0.2", 2868 | "minipass-fetch": "^3.0.0", 2869 | "minizlib": "^2.1.2", 2870 | "npm-package-arg": "^11.0.0", 2871 | "proc-log": "^4.0.0" 2872 | }, 2873 | "engines": { 2874 | "node": "^16.14.0 || >=18.0.0" 2875 | } 2876 | }, 2877 | "node_modules/onetime": { 2878 | "version": "5.1.2", 2879 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", 2880 | "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", 2881 | "dev": true, 2882 | "dependencies": { 2883 | "mimic-fn": "^2.1.0" 2884 | }, 2885 | "engines": { 2886 | "node": ">=6" 2887 | }, 2888 | "funding": { 2889 | "url": "https://github.com/sponsors/sindresorhus" 2890 | } 2891 | }, 2892 | "node_modules/opener": { 2893 | "version": "1.5.2", 2894 | "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", 2895 | "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", 2896 | "dev": true, 2897 | "bin": { 2898 | "opener": "bin/opener-bin.js" 2899 | } 2900 | }, 2901 | "node_modules/p-limit": { 2902 | "version": "3.1.0", 2903 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 2904 | "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 2905 | "dev": true, 2906 | "dependencies": { 2907 | "yocto-queue": "^0.1.0" 2908 | }, 2909 | "engines": { 2910 | "node": ">=10" 2911 | }, 2912 | "funding": { 2913 | "url": "https://github.com/sponsors/sindresorhus" 2914 | } 2915 | }, 2916 | "node_modules/p-locate": { 2917 | "version": "5.0.0", 2918 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 2919 | "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 2920 | "dev": true, 2921 | "dependencies": { 2922 | "p-limit": "^3.0.2" 2923 | }, 2924 | "engines": { 2925 | "node": ">=10" 2926 | }, 2927 | "funding": { 2928 | "url": "https://github.com/sponsors/sindresorhus" 2929 | } 2930 | }, 2931 | "node_modules/p-map": { 2932 | "version": "4.0.0", 2933 | "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", 2934 | "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", 2935 | "dev": true, 2936 | "dependencies": { 2937 | "aggregate-error": "^3.0.0" 2938 | }, 2939 | "engines": { 2940 | "node": ">=10" 2941 | }, 2942 | "funding": { 2943 | "url": "https://github.com/sponsors/sindresorhus" 2944 | } 2945 | }, 2946 | "node_modules/package-json-from-dist": { 2947 | "version": "1.0.0", 2948 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", 2949 | "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", 2950 | "dev": true 2951 | }, 2952 | "node_modules/pacote": { 2953 | "version": "18.0.6", 2954 | "resolved": "https://registry.npmjs.org/pacote/-/pacote-18.0.6.tgz", 2955 | "integrity": "sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==", 2956 | "dev": true, 2957 | "dependencies": { 2958 | "@npmcli/git": "^5.0.0", 2959 | "@npmcli/installed-package-contents": "^2.0.1", 2960 | "@npmcli/package-json": "^5.1.0", 2961 | "@npmcli/promise-spawn": "^7.0.0", 2962 | "@npmcli/run-script": "^8.0.0", 2963 | "cacache": "^18.0.0", 2964 | "fs-minipass": "^3.0.0", 2965 | "minipass": "^7.0.2", 2966 | "npm-package-arg": "^11.0.0", 2967 | "npm-packlist": "^8.0.0", 2968 | "npm-pick-manifest": "^9.0.0", 2969 | "npm-registry-fetch": "^17.0.0", 2970 | "proc-log": "^4.0.0", 2971 | "promise-retry": "^2.0.1", 2972 | "sigstore": "^2.2.0", 2973 | "ssri": "^10.0.0", 2974 | "tar": "^6.1.11" 2975 | }, 2976 | "bin": { 2977 | "pacote": "bin/index.js" 2978 | }, 2979 | "engines": { 2980 | "node": "^16.14.0 || >=18.0.0" 2981 | } 2982 | }, 2983 | "node_modules/patch-console": { 2984 | "version": "2.0.0", 2985 | "resolved": "https://registry.npmjs.org/patch-console/-/patch-console-2.0.0.tgz", 2986 | "integrity": "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==", 2987 | "dev": true, 2988 | "engines": { 2989 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 2990 | } 2991 | }, 2992 | "node_modules/path-exists": { 2993 | "version": "4.0.0", 2994 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 2995 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 2996 | "dev": true, 2997 | "engines": { 2998 | "node": ">=8" 2999 | } 3000 | }, 3001 | "node_modules/path-key": { 3002 | "version": "3.1.1", 3003 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 3004 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 3005 | "dev": true, 3006 | "engines": { 3007 | "node": ">=8" 3008 | } 3009 | }, 3010 | "node_modules/path-scurry": { 3011 | "version": "2.0.0", 3012 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", 3013 | "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", 3014 | "dev": true, 3015 | "dependencies": { 3016 | "lru-cache": "^11.0.0", 3017 | "minipass": "^7.1.2" 3018 | }, 3019 | "engines": { 3020 | "node": "20 || >=22" 3021 | }, 3022 | "funding": { 3023 | "url": "https://github.com/sponsors/isaacs" 3024 | } 3025 | }, 3026 | "node_modules/path-scurry/node_modules/lru-cache": { 3027 | "version": "11.0.0", 3028 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", 3029 | "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", 3030 | "dev": true, 3031 | "engines": { 3032 | "node": "20 || >=22" 3033 | } 3034 | }, 3035 | "node_modules/picomatch": { 3036 | "version": "2.3.1", 3037 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 3038 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 3039 | "dev": true, 3040 | "engines": { 3041 | "node": ">=8.6" 3042 | }, 3043 | "funding": { 3044 | "url": "https://github.com/sponsors/jonschlinkert" 3045 | } 3046 | }, 3047 | "node_modules/pirates": { 3048 | "version": "4.0.6", 3049 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", 3050 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", 3051 | "dev": true, 3052 | "engines": { 3053 | "node": ">= 6" 3054 | } 3055 | }, 3056 | "node_modules/polite-json": { 3057 | "version": "5.0.0", 3058 | "resolved": "https://registry.npmjs.org/polite-json/-/polite-json-5.0.0.tgz", 3059 | "integrity": "sha512-OLS/0XeUAcE8a2fdwemNja+udKgXNnY6yKVIXqAD2zVRx1KvY6Ato/rZ2vdzbxqYwPW0u6SCNC/bAMPNzpzxbw==", 3060 | "dev": true, 3061 | "engines": { 3062 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 3063 | }, 3064 | "funding": { 3065 | "url": "https://github.com/sponsors/isaacs" 3066 | } 3067 | }, 3068 | "node_modules/prismjs": { 3069 | "version": "1.30.0", 3070 | "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", 3071 | "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", 3072 | "dev": true, 3073 | "license": "MIT", 3074 | "engines": { 3075 | "node": ">=6" 3076 | } 3077 | }, 3078 | "node_modules/prismjs-terminal": { 3079 | "version": "1.2.3", 3080 | "resolved": "https://registry.npmjs.org/prismjs-terminal/-/prismjs-terminal-1.2.3.tgz", 3081 | "integrity": "sha512-xc0zuJ5FMqvW+DpiRkvxURlz98DdfDsZcFHdO699+oL+ykbFfgI7O4VDEgUyc07BSL2NHl3zdb8m/tZ/aaqUrw==", 3082 | "dev": true, 3083 | "dependencies": { 3084 | "chalk": "^5.2.0", 3085 | "prismjs": "^1.29.0", 3086 | "string-length": "^6.0.0" 3087 | }, 3088 | "engines": { 3089 | "node": ">=16" 3090 | }, 3091 | "funding": { 3092 | "url": "https://github.com/sponsors/isaacs" 3093 | } 3094 | }, 3095 | "node_modules/proc-log": { 3096 | "version": "4.2.0", 3097 | "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", 3098 | "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", 3099 | "dev": true, 3100 | "engines": { 3101 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 3102 | } 3103 | }, 3104 | "node_modules/process-on-spawn": { 3105 | "version": "1.0.0", 3106 | "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", 3107 | "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", 3108 | "dev": true, 3109 | "dependencies": { 3110 | "fromentries": "^1.2.0" 3111 | }, 3112 | "engines": { 3113 | "node": ">=8" 3114 | } 3115 | }, 3116 | "node_modules/promise-inflight": { 3117 | "version": "1.0.1", 3118 | "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", 3119 | "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", 3120 | "dev": true 3121 | }, 3122 | "node_modules/promise-retry": { 3123 | "version": "2.0.1", 3124 | "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", 3125 | "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", 3126 | "dev": true, 3127 | "dependencies": { 3128 | "err-code": "^2.0.2", 3129 | "retry": "^0.12.0" 3130 | }, 3131 | "engines": { 3132 | "node": ">=10" 3133 | } 3134 | }, 3135 | "node_modules/react": { 3136 | "version": "18.3.1", 3137 | "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", 3138 | "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", 3139 | "dev": true, 3140 | "dependencies": { 3141 | "loose-envify": "^1.1.0" 3142 | }, 3143 | "engines": { 3144 | "node": ">=0.10.0" 3145 | } 3146 | }, 3147 | "node_modules/react-dom": { 3148 | "version": "18.3.1", 3149 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", 3150 | "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", 3151 | "dev": true, 3152 | "peer": true, 3153 | "dependencies": { 3154 | "loose-envify": "^1.1.0", 3155 | "scheduler": "^0.23.2" 3156 | }, 3157 | "peerDependencies": { 3158 | "react": "^18.3.1" 3159 | } 3160 | }, 3161 | "node_modules/react-element-to-jsx-string": { 3162 | "version": "15.0.0", 3163 | "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz", 3164 | "integrity": "sha512-UDg4lXB6BzlobN60P8fHWVPX3Kyw8ORrTeBtClmIlGdkOOE+GYQSFvmEU5iLLpwp/6v42DINwNcwOhOLfQ//FQ==", 3165 | "dev": true, 3166 | "dependencies": { 3167 | "@base2/pretty-print-object": "1.0.1", 3168 | "is-plain-object": "5.0.0", 3169 | "react-is": "18.1.0" 3170 | }, 3171 | "peerDependencies": { 3172 | "react": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", 3173 | "react-dom": "^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0" 3174 | } 3175 | }, 3176 | "node_modules/react-is": { 3177 | "version": "18.1.0", 3178 | "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz", 3179 | "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", 3180 | "dev": true 3181 | }, 3182 | "node_modules/react-reconciler": { 3183 | "version": "0.29.2", 3184 | "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.2.tgz", 3185 | "integrity": "sha512-zZQqIiYgDCTP/f1N/mAR10nJGrPD2ZR+jDSEsKWJHYC7Cm2wodlwbR3upZRdC3cjIjSlTLNVyO7Iu0Yy7t2AYg==", 3186 | "dev": true, 3187 | "dependencies": { 3188 | "loose-envify": "^1.1.0", 3189 | "scheduler": "^0.23.2" 3190 | }, 3191 | "engines": { 3192 | "node": ">=0.10.0" 3193 | }, 3194 | "peerDependencies": { 3195 | "react": "^18.3.1" 3196 | } 3197 | }, 3198 | "node_modules/readdirp": { 3199 | "version": "3.6.0", 3200 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 3201 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 3202 | "dev": true, 3203 | "dependencies": { 3204 | "picomatch": "^2.2.1" 3205 | }, 3206 | "engines": { 3207 | "node": ">=8.10.0" 3208 | } 3209 | }, 3210 | "node_modules/require-directory": { 3211 | "version": "2.1.1", 3212 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 3213 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 3214 | "dev": true, 3215 | "engines": { 3216 | "node": ">=0.10.0" 3217 | } 3218 | }, 3219 | "node_modules/resolve-import": { 3220 | "version": "2.0.0", 3221 | "resolved": "https://registry.npmjs.org/resolve-import/-/resolve-import-2.0.0.tgz", 3222 | "integrity": "sha512-jpKjLibLuc8D1XEV2+7zb0aqN7I8d12u89g/v6IsgCzdVlccMQJq4TKkPw5fbhHdxhm7nbVtN+KvOTnjFf+nEA==", 3223 | "dev": true, 3224 | "dependencies": { 3225 | "glob": "^11.0.0", 3226 | "walk-up-path": "^4.0.0" 3227 | }, 3228 | "engines": { 3229 | "node": "20 || >=22" 3230 | }, 3231 | "funding": { 3232 | "url": "https://github.com/sponsors/isaacs" 3233 | } 3234 | }, 3235 | "node_modules/restore-cursor": { 3236 | "version": "4.0.0", 3237 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", 3238 | "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", 3239 | "dev": true, 3240 | "dependencies": { 3241 | "onetime": "^5.1.0", 3242 | "signal-exit": "^3.0.2" 3243 | }, 3244 | "engines": { 3245 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 3246 | }, 3247 | "funding": { 3248 | "url": "https://github.com/sponsors/sindresorhus" 3249 | } 3250 | }, 3251 | "node_modules/restore-cursor/node_modules/signal-exit": { 3252 | "version": "3.0.7", 3253 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", 3254 | "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", 3255 | "dev": true 3256 | }, 3257 | "node_modules/retry": { 3258 | "version": "0.12.0", 3259 | "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", 3260 | "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", 3261 | "dev": true, 3262 | "engines": { 3263 | "node": ">= 4" 3264 | } 3265 | }, 3266 | "node_modules/rimraf": { 3267 | "version": "6.0.1", 3268 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", 3269 | "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", 3270 | "dev": true, 3271 | "dependencies": { 3272 | "glob": "^11.0.0", 3273 | "package-json-from-dist": "^1.0.0" 3274 | }, 3275 | "bin": { 3276 | "rimraf": "dist/esm/bin.mjs" 3277 | }, 3278 | "engines": { 3279 | "node": "20 || >=22" 3280 | }, 3281 | "funding": { 3282 | "url": "https://github.com/sponsors/isaacs" 3283 | } 3284 | }, 3285 | "node_modules/safer-buffer": { 3286 | "version": "2.1.2", 3287 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 3288 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 3289 | "dev": true, 3290 | "optional": true 3291 | }, 3292 | "node_modules/scheduler": { 3293 | "version": "0.23.2", 3294 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", 3295 | "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", 3296 | "dev": true, 3297 | "dependencies": { 3298 | "loose-envify": "^1.1.0" 3299 | } 3300 | }, 3301 | "node_modules/semver": { 3302 | "version": "7.6.3", 3303 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", 3304 | "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", 3305 | "dev": true, 3306 | "bin": { 3307 | "semver": "bin/semver.js" 3308 | }, 3309 | "engines": { 3310 | "node": ">=10" 3311 | } 3312 | }, 3313 | "node_modules/shebang-command": { 3314 | "version": "2.0.0", 3315 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 3316 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 3317 | "dev": true, 3318 | "dependencies": { 3319 | "shebang-regex": "^3.0.0" 3320 | }, 3321 | "engines": { 3322 | "node": ">=8" 3323 | } 3324 | }, 3325 | "node_modules/shebang-regex": { 3326 | "version": "3.0.0", 3327 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 3328 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 3329 | "dev": true, 3330 | "engines": { 3331 | "node": ">=8" 3332 | } 3333 | }, 3334 | "node_modules/signal-exit": { 3335 | "version": "4.1.0", 3336 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", 3337 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", 3338 | "dev": true, 3339 | "engines": { 3340 | "node": ">=14" 3341 | }, 3342 | "funding": { 3343 | "url": "https://github.com/sponsors/isaacs" 3344 | } 3345 | }, 3346 | "node_modules/sigstore": { 3347 | "version": "2.3.1", 3348 | "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", 3349 | "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", 3350 | "dev": true, 3351 | "dependencies": { 3352 | "@sigstore/bundle": "^2.3.2", 3353 | "@sigstore/core": "^1.0.0", 3354 | "@sigstore/protobuf-specs": "^0.3.2", 3355 | "@sigstore/sign": "^2.3.2", 3356 | "@sigstore/tuf": "^2.3.4", 3357 | "@sigstore/verify": "^1.2.1" 3358 | }, 3359 | "engines": { 3360 | "node": "^16.14.0 || >=18.0.0" 3361 | } 3362 | }, 3363 | "node_modules/simplesvg": { 3364 | "version": "0.1.0", 3365 | "resolved": "https://registry.npmjs.org/simplesvg/-/simplesvg-0.1.0.tgz", 3366 | "integrity": "sha512-2YxbDN6ca7FY7WUjVxsFrc84YoCnKRvuaAb5x4UnufSsJ/7YlAUn5H9WdDrTfMSs80zlGboROwezynRaw5oiKw==", 3367 | "dev": true, 3368 | "dependencies": { 3369 | "add-event-listener": "0.0.1" 3370 | } 3371 | }, 3372 | "node_modules/slice-ansi": { 3373 | "version": "7.1.0", 3374 | "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", 3375 | "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", 3376 | "dev": true, 3377 | "dependencies": { 3378 | "ansi-styles": "^6.2.1", 3379 | "is-fullwidth-code-point": "^5.0.0" 3380 | }, 3381 | "engines": { 3382 | "node": ">=18" 3383 | }, 3384 | "funding": { 3385 | "url": "https://github.com/chalk/slice-ansi?sponsor=1" 3386 | } 3387 | }, 3388 | "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { 3389 | "version": "5.0.0", 3390 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", 3391 | "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", 3392 | "dev": true, 3393 | "dependencies": { 3394 | "get-east-asian-width": "^1.0.0" 3395 | }, 3396 | "engines": { 3397 | "node": ">=18" 3398 | }, 3399 | "funding": { 3400 | "url": "https://github.com/sponsors/sindresorhus" 3401 | } 3402 | }, 3403 | "node_modules/smart-buffer": { 3404 | "version": "4.2.0", 3405 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 3406 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", 3407 | "dev": true, 3408 | "engines": { 3409 | "node": ">= 6.0.0", 3410 | "npm": ">= 3.0.0" 3411 | } 3412 | }, 3413 | "node_modules/socks": { 3414 | "version": "2.8.3", 3415 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", 3416 | "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", 3417 | "dev": true, 3418 | "dependencies": { 3419 | "ip-address": "^9.0.5", 3420 | "smart-buffer": "^4.2.0" 3421 | }, 3422 | "engines": { 3423 | "node": ">= 10.0.0", 3424 | "npm": ">= 3.0.0" 3425 | } 3426 | }, 3427 | "node_modules/socks-proxy-agent": { 3428 | "version": "8.0.4", 3429 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", 3430 | "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", 3431 | "dev": true, 3432 | "dependencies": { 3433 | "agent-base": "^7.1.1", 3434 | "debug": "^4.3.4", 3435 | "socks": "^2.8.3" 3436 | }, 3437 | "engines": { 3438 | "node": ">= 14" 3439 | } 3440 | }, 3441 | "node_modules/spdx-correct": { 3442 | "version": "3.2.0", 3443 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", 3444 | "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", 3445 | "dev": true, 3446 | "dependencies": { 3447 | "spdx-expression-parse": "^3.0.0", 3448 | "spdx-license-ids": "^3.0.0" 3449 | } 3450 | }, 3451 | "node_modules/spdx-exceptions": { 3452 | "version": "2.5.0", 3453 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", 3454 | "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", 3455 | "dev": true 3456 | }, 3457 | "node_modules/spdx-expression-parse": { 3458 | "version": "3.0.1", 3459 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", 3460 | "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", 3461 | "dev": true, 3462 | "dependencies": { 3463 | "spdx-exceptions": "^2.1.0", 3464 | "spdx-license-ids": "^3.0.0" 3465 | } 3466 | }, 3467 | "node_modules/spdx-license-ids": { 3468 | "version": "3.0.18", 3469 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", 3470 | "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", 3471 | "dev": true 3472 | }, 3473 | "node_modules/sprintf-js": { 3474 | "version": "1.1.3", 3475 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", 3476 | "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", 3477 | "dev": true 3478 | }, 3479 | "node_modules/ssri": { 3480 | "version": "10.0.6", 3481 | "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", 3482 | "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", 3483 | "dev": true, 3484 | "dependencies": { 3485 | "minipass": "^7.0.3" 3486 | }, 3487 | "engines": { 3488 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 3489 | } 3490 | }, 3491 | "node_modules/stack-utils": { 3492 | "version": "2.0.6", 3493 | "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", 3494 | "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", 3495 | "dev": true, 3496 | "dependencies": { 3497 | "escape-string-regexp": "^2.0.0" 3498 | }, 3499 | "engines": { 3500 | "node": ">=10" 3501 | } 3502 | }, 3503 | "node_modules/string-length": { 3504 | "version": "6.0.0", 3505 | "resolved": "https://registry.npmjs.org/string-length/-/string-length-6.0.0.tgz", 3506 | "integrity": "sha512-1U361pxZHEQ+FeSjzqRpV+cu2vTzYeWeafXFLykiFlv4Vc0n3njgU8HrMbyik5uwm77naWMuVG8fhEF+Ovb1Kg==", 3507 | "dev": true, 3508 | "dependencies": { 3509 | "strip-ansi": "^7.1.0" 3510 | }, 3511 | "engines": { 3512 | "node": ">=16" 3513 | }, 3514 | "funding": { 3515 | "url": "https://github.com/sponsors/sindresorhus" 3516 | } 3517 | }, 3518 | "node_modules/string-width": { 3519 | "version": "7.2.0", 3520 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", 3521 | "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", 3522 | "dev": true, 3523 | "dependencies": { 3524 | "emoji-regex": "^10.3.0", 3525 | "get-east-asian-width": "^1.0.0", 3526 | "strip-ansi": "^7.1.0" 3527 | }, 3528 | "engines": { 3529 | "node": ">=18" 3530 | }, 3531 | "funding": { 3532 | "url": "https://github.com/sponsors/sindresorhus" 3533 | } 3534 | }, 3535 | "node_modules/string-width-cjs": { 3536 | "name": "string-width", 3537 | "version": "4.2.3", 3538 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 3539 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 3540 | "dev": true, 3541 | "dependencies": { 3542 | "emoji-regex": "^8.0.0", 3543 | "is-fullwidth-code-point": "^3.0.0", 3544 | "strip-ansi": "^6.0.1" 3545 | }, 3546 | "engines": { 3547 | "node": ">=8" 3548 | } 3549 | }, 3550 | "node_modules/string-width-cjs/node_modules/ansi-regex": { 3551 | "version": "5.0.1", 3552 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3553 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3554 | "dev": true, 3555 | "engines": { 3556 | "node": ">=8" 3557 | } 3558 | }, 3559 | "node_modules/string-width-cjs/node_modules/emoji-regex": { 3560 | "version": "8.0.0", 3561 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 3562 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 3563 | "dev": true 3564 | }, 3565 | "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { 3566 | "version": "3.0.0", 3567 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 3568 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 3569 | "dev": true, 3570 | "engines": { 3571 | "node": ">=8" 3572 | } 3573 | }, 3574 | "node_modules/string-width-cjs/node_modules/strip-ansi": { 3575 | "version": "6.0.1", 3576 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3577 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3578 | "dev": true, 3579 | "dependencies": { 3580 | "ansi-regex": "^5.0.1" 3581 | }, 3582 | "engines": { 3583 | "node": ">=8" 3584 | } 3585 | }, 3586 | "node_modules/strip-ansi": { 3587 | "version": "7.1.0", 3588 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", 3589 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", 3590 | "dev": true, 3591 | "dependencies": { 3592 | "ansi-regex": "^6.0.1" 3593 | }, 3594 | "engines": { 3595 | "node": ">=12" 3596 | }, 3597 | "funding": { 3598 | "url": "https://github.com/chalk/strip-ansi?sponsor=1" 3599 | } 3600 | }, 3601 | "node_modules/strip-ansi-cjs": { 3602 | "name": "strip-ansi", 3603 | "version": "6.0.1", 3604 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 3605 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 3606 | "dev": true, 3607 | "dependencies": { 3608 | "ansi-regex": "^5.0.1" 3609 | }, 3610 | "engines": { 3611 | "node": ">=8" 3612 | } 3613 | }, 3614 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { 3615 | "version": "5.0.1", 3616 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 3617 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 3618 | "dev": true, 3619 | "engines": { 3620 | "node": ">=8" 3621 | } 3622 | }, 3623 | "node_modules/supports-color": { 3624 | "version": "7.2.0", 3625 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 3626 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 3627 | "dev": true, 3628 | "dependencies": { 3629 | "has-flag": "^4.0.0" 3630 | }, 3631 | "engines": { 3632 | "node": ">=8" 3633 | } 3634 | }, 3635 | "node_modules/sync-content": { 3636 | "version": "2.0.1", 3637 | "resolved": "https://registry.npmjs.org/sync-content/-/sync-content-2.0.1.tgz", 3638 | "integrity": "sha512-NI1mo514yFhr8pV/5Etvgh+pSBUIpoAKoiBIUwALVlQQNAwb40bTw8hhPFaip/dvv0GhpHVOq0vq8iY02ppLTg==", 3639 | "dev": true, 3640 | "dependencies": { 3641 | "glob": "^11.0.0", 3642 | "mkdirp": "^3.0.1", 3643 | "path-scurry": "^2.0.0", 3644 | "rimraf": "^6.0.0", 3645 | "tshy": "^3.0.0" 3646 | }, 3647 | "bin": { 3648 | "sync-content": "dist/esm/bin.mjs" 3649 | }, 3650 | "engines": { 3651 | "node": "20 || >=22" 3652 | }, 3653 | "funding": { 3654 | "url": "https://github.com/sponsors/isaacs" 3655 | } 3656 | }, 3657 | "node_modules/tap": { 3658 | "version": "21.0.1", 3659 | "resolved": "https://registry.npmjs.org/tap/-/tap-21.0.1.tgz", 3660 | "integrity": "sha512-FE8H5Nt2mKU96DX4XgjqBkKzMcxvVkmbKhaNWOk2lUNRpqJNKqBOO5R6q7shr7JoUh1DHwdNWmppg8vWXQh2lQ==", 3661 | "dev": true, 3662 | "dependencies": { 3663 | "@tapjs/after": "3.0.0", 3664 | "@tapjs/after-each": "4.0.0", 3665 | "@tapjs/asserts": "4.0.0", 3666 | "@tapjs/before": "4.0.0", 3667 | "@tapjs/before-each": "4.0.0", 3668 | "@tapjs/chdir": "3.0.0", 3669 | "@tapjs/core": "4.0.0", 3670 | "@tapjs/filter": "4.0.0", 3671 | "@tapjs/fixture": "4.0.0", 3672 | "@tapjs/intercept": "4.0.0", 3673 | "@tapjs/mock": "4.0.0", 3674 | "@tapjs/node-serialize": "4.0.0", 3675 | "@tapjs/run": "4.0.1", 3676 | "@tapjs/snapshot": "4.0.0", 3677 | "@tapjs/spawn": "4.0.0", 3678 | "@tapjs/stdin": "4.0.0", 3679 | "@tapjs/test": "4.0.0", 3680 | "@tapjs/typescript": "3.0.0", 3681 | "@tapjs/worker": "4.0.0", 3682 | "resolve-import": "2" 3683 | }, 3684 | "bin": { 3685 | "tap": "dist/esm/run.mjs" 3686 | }, 3687 | "engines": { 3688 | "node": "20 || >=22" 3689 | }, 3690 | "funding": { 3691 | "url": "https://github.com/sponsors/isaacs" 3692 | } 3693 | }, 3694 | "node_modules/tap-parser": { 3695 | "version": "18.0.0", 3696 | "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-18.0.0.tgz", 3697 | "integrity": "sha512-RM3Lp5LNCYcepRqPMuDFg8S3uYV8MDmgxUOjx2Q7f2z5QuB88u92ViBwyp3MuQ/DVMR7v48HrJfV2scXRQYf5A==", 3698 | "dev": true, 3699 | "dependencies": { 3700 | "events-to-array": "^2.0.3", 3701 | "tap-yaml": "4.0.0" 3702 | }, 3703 | "bin": { 3704 | "tap-parser": "bin/cmd.cjs" 3705 | }, 3706 | "engines": { 3707 | "node": "20 || >=22" 3708 | } 3709 | }, 3710 | "node_modules/tap-yaml": { 3711 | "version": "4.0.0", 3712 | "resolved": "https://registry.npmjs.org/tap-yaml/-/tap-yaml-4.0.0.tgz", 3713 | "integrity": "sha512-CjMbq8hhT5TvzyvHRnzbGp00wmb4TZjSscCRCCJCdCzRb+Pb56HaMlBHNBn1/GZ6UqwUgDKdF18+9VAFnQ4F0g==", 3714 | "dev": true, 3715 | "dependencies": { 3716 | "yaml": "^2.4.1", 3717 | "yaml-types": "^0.4.0" 3718 | }, 3719 | "engines": { 3720 | "node": "20 || >=22" 3721 | } 3722 | }, 3723 | "node_modules/tar": { 3724 | "version": "6.2.1", 3725 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", 3726 | "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", 3727 | "dev": true, 3728 | "dependencies": { 3729 | "chownr": "^2.0.0", 3730 | "fs-minipass": "^2.0.0", 3731 | "minipass": "^5.0.0", 3732 | "minizlib": "^2.1.1", 3733 | "mkdirp": "^1.0.3", 3734 | "yallist": "^4.0.0" 3735 | }, 3736 | "engines": { 3737 | "node": ">=10" 3738 | } 3739 | }, 3740 | "node_modules/tar/node_modules/fs-minipass": { 3741 | "version": "2.1.0", 3742 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 3743 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 3744 | "dev": true, 3745 | "dependencies": { 3746 | "minipass": "^3.0.0" 3747 | }, 3748 | "engines": { 3749 | "node": ">= 8" 3750 | } 3751 | }, 3752 | "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { 3753 | "version": "3.3.6", 3754 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", 3755 | "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", 3756 | "dev": true, 3757 | "dependencies": { 3758 | "yallist": "^4.0.0" 3759 | }, 3760 | "engines": { 3761 | "node": ">=8" 3762 | } 3763 | }, 3764 | "node_modules/tar/node_modules/minipass": { 3765 | "version": "5.0.0", 3766 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", 3767 | "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", 3768 | "dev": true, 3769 | "engines": { 3770 | "node": ">=8" 3771 | } 3772 | }, 3773 | "node_modules/tar/node_modules/mkdirp": { 3774 | "version": "1.0.4", 3775 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 3776 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", 3777 | "dev": true, 3778 | "bin": { 3779 | "mkdirp": "bin/cmd.js" 3780 | }, 3781 | "engines": { 3782 | "node": ">=10" 3783 | } 3784 | }, 3785 | "node_modules/tcompare": { 3786 | "version": "9.0.0", 3787 | "resolved": "https://registry.npmjs.org/tcompare/-/tcompare-9.0.0.tgz", 3788 | "integrity": "sha512-qOliew2xDAqIUbIamIFZ+pz80s9T+8IywzQPIt7YX30ojsBqk86jcD6ouygqt5lHURTxFxWjzbUmIe7Cts4bsA==", 3789 | "dev": true, 3790 | "dependencies": { 3791 | "diff": "^5.2.0", 3792 | "react-element-to-jsx-string": "^15.0.0" 3793 | }, 3794 | "engines": { 3795 | "node": "20 || >=22" 3796 | } 3797 | }, 3798 | "node_modules/test-exclude": { 3799 | "version": "7.0.1", 3800 | "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", 3801 | "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", 3802 | "dev": true, 3803 | "dependencies": { 3804 | "@istanbuljs/schema": "^0.1.2", 3805 | "glob": "^10.4.1", 3806 | "minimatch": "^9.0.4" 3807 | }, 3808 | "engines": { 3809 | "node": ">=18" 3810 | } 3811 | }, 3812 | "node_modules/test-exclude/node_modules/glob": { 3813 | "version": "10.4.5", 3814 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", 3815 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", 3816 | "dev": true, 3817 | "dependencies": { 3818 | "foreground-child": "^3.1.0", 3819 | "jackspeak": "^3.1.2", 3820 | "minimatch": "^9.0.4", 3821 | "minipass": "^7.1.2", 3822 | "package-json-from-dist": "^1.0.0", 3823 | "path-scurry": "^1.11.1" 3824 | }, 3825 | "bin": { 3826 | "glob": "dist/esm/bin.mjs" 3827 | }, 3828 | "funding": { 3829 | "url": "https://github.com/sponsors/isaacs" 3830 | } 3831 | }, 3832 | "node_modules/test-exclude/node_modules/jackspeak": { 3833 | "version": "3.4.3", 3834 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", 3835 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", 3836 | "dev": true, 3837 | "dependencies": { 3838 | "@isaacs/cliui": "^8.0.2" 3839 | }, 3840 | "funding": { 3841 | "url": "https://github.com/sponsors/isaacs" 3842 | }, 3843 | "optionalDependencies": { 3844 | "@pkgjs/parseargs": "^0.11.0" 3845 | } 3846 | }, 3847 | "node_modules/test-exclude/node_modules/minimatch": { 3848 | "version": "9.0.5", 3849 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 3850 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 3851 | "dev": true, 3852 | "dependencies": { 3853 | "brace-expansion": "^2.0.1" 3854 | }, 3855 | "engines": { 3856 | "node": ">=16 || 14 >=14.17" 3857 | }, 3858 | "funding": { 3859 | "url": "https://github.com/sponsors/isaacs" 3860 | } 3861 | }, 3862 | "node_modules/test-exclude/node_modules/path-scurry": { 3863 | "version": "1.11.1", 3864 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", 3865 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", 3866 | "dev": true, 3867 | "dependencies": { 3868 | "lru-cache": "^10.2.0", 3869 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" 3870 | }, 3871 | "engines": { 3872 | "node": ">=16 || 14 >=14.18" 3873 | }, 3874 | "funding": { 3875 | "url": "https://github.com/sponsors/isaacs" 3876 | } 3877 | }, 3878 | "node_modules/to-regex-range": { 3879 | "version": "5.0.1", 3880 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 3881 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 3882 | "dev": true, 3883 | "dependencies": { 3884 | "is-number": "^7.0.0" 3885 | }, 3886 | "engines": { 3887 | "node": ">=8.0" 3888 | } 3889 | }, 3890 | "node_modules/trivial-deferred": { 3891 | "version": "2.0.0", 3892 | "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-2.0.0.tgz", 3893 | "integrity": "sha512-iGbM7X2slv9ORDVj2y2FFUq3cP/ypbtu2nQ8S38ufjL0glBABvmR9pTdsib1XtS2LUhhLMbelaBUaf/s5J3dSw==", 3894 | "dev": true, 3895 | "engines": { 3896 | "node": ">= 8" 3897 | } 3898 | }, 3899 | "node_modules/tshy": { 3900 | "version": "3.0.2", 3901 | "resolved": "https://registry.npmjs.org/tshy/-/tshy-3.0.2.tgz", 3902 | "integrity": "sha512-8GkWnAfmNXxl8iDTZ1o2H4jdaj9H7HeDKkr5qd0ZhQBCNA41D3xqTyg2Ycs51VCfmjJ5e+0v9AUmD6ylAI9Bgw==", 3903 | "dev": true, 3904 | "dependencies": { 3905 | "chalk": "^5.3.0", 3906 | "chokidar": "^3.6.0", 3907 | "foreground-child": "^3.1.1", 3908 | "minimatch": "^10.0.0", 3909 | "mkdirp": "^3.0.1", 3910 | "polite-json": "^5.0.0", 3911 | "resolve-import": "^2.0.0", 3912 | "rimraf": "^6.0.0", 3913 | "sync-content": "^2.0.1", 3914 | "typescript": "^5.5.3", 3915 | "walk-up-path": "^4.0.0" 3916 | }, 3917 | "bin": { 3918 | "tshy": "dist/esm/index.js" 3919 | }, 3920 | "engines": { 3921 | "node": "20 || >=22" 3922 | } 3923 | }, 3924 | "node_modules/tuf-js": { 3925 | "version": "2.2.1", 3926 | "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", 3927 | "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", 3928 | "dev": true, 3929 | "dependencies": { 3930 | "@tufjs/models": "2.0.1", 3931 | "debug": "^4.3.4", 3932 | "make-fetch-happen": "^13.0.1" 3933 | }, 3934 | "engines": { 3935 | "node": "^16.14.0 || >=18.0.0" 3936 | } 3937 | }, 3938 | "node_modules/type-fest": { 3939 | "version": "4.25.0", 3940 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.25.0.tgz", 3941 | "integrity": "sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==", 3942 | "dev": true, 3943 | "engines": { 3944 | "node": ">=16" 3945 | }, 3946 | "funding": { 3947 | "url": "https://github.com/sponsors/sindresorhus" 3948 | } 3949 | }, 3950 | "node_modules/typescript": { 3951 | "version": "5.5.4", 3952 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", 3953 | "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", 3954 | "dev": true, 3955 | "bin": { 3956 | "tsc": "bin/tsc", 3957 | "tsserver": "bin/tsserver" 3958 | }, 3959 | "engines": { 3960 | "node": ">=14.17" 3961 | } 3962 | }, 3963 | "node_modules/undici-types": { 3964 | "version": "6.19.6", 3965 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.6.tgz", 3966 | "integrity": "sha512-e/vggGopEfTKSvj4ihnOLTsqhrKRN3LeO6qSN/GxohhuRv8qH9bNQ4B8W7e/vFL+0XTnmHPB4/kegunZGA4Org==", 3967 | "dev": true, 3968 | "peer": true 3969 | }, 3970 | "node_modules/unique-filename": { 3971 | "version": "3.0.0", 3972 | "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", 3973 | "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", 3974 | "dev": true, 3975 | "dependencies": { 3976 | "unique-slug": "^4.0.0" 3977 | }, 3978 | "engines": { 3979 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 3980 | } 3981 | }, 3982 | "node_modules/unique-slug": { 3983 | "version": "4.0.0", 3984 | "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", 3985 | "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", 3986 | "dev": true, 3987 | "dependencies": { 3988 | "imurmurhash": "^0.1.4" 3989 | }, 3990 | "engines": { 3991 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 3992 | } 3993 | }, 3994 | "node_modules/uuid": { 3995 | "version": "8.3.2", 3996 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 3997 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 3998 | "dev": true, 3999 | "bin": { 4000 | "uuid": "dist/bin/uuid" 4001 | } 4002 | }, 4003 | "node_modules/v8-compile-cache-lib": { 4004 | "version": "3.0.1", 4005 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 4006 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 4007 | "dev": true 4008 | }, 4009 | "node_modules/v8-to-istanbul": { 4010 | "version": "9.3.0", 4011 | "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", 4012 | "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", 4013 | "dev": true, 4014 | "dependencies": { 4015 | "@jridgewell/trace-mapping": "^0.3.12", 4016 | "@types/istanbul-lib-coverage": "^2.0.1", 4017 | "convert-source-map": "^2.0.0" 4018 | }, 4019 | "engines": { 4020 | "node": ">=10.12.0" 4021 | } 4022 | }, 4023 | "node_modules/v8-to-istanbul/node_modules/@jridgewell/trace-mapping": { 4024 | "version": "0.3.25", 4025 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", 4026 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", 4027 | "dev": true, 4028 | "dependencies": { 4029 | "@jridgewell/resolve-uri": "^3.1.0", 4030 | "@jridgewell/sourcemap-codec": "^1.4.14" 4031 | } 4032 | }, 4033 | "node_modules/validate-npm-package-license": { 4034 | "version": "3.0.4", 4035 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", 4036 | "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", 4037 | "dev": true, 4038 | "dependencies": { 4039 | "spdx-correct": "^3.0.0", 4040 | "spdx-expression-parse": "^3.0.0" 4041 | } 4042 | }, 4043 | "node_modules/validate-npm-package-name": { 4044 | "version": "5.0.1", 4045 | "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", 4046 | "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", 4047 | "dev": true, 4048 | "engines": { 4049 | "node": "^14.17.0 || ^16.13.0 || >=18.0.0" 4050 | } 4051 | }, 4052 | "node_modules/walk-up-path": { 4053 | "version": "4.0.0", 4054 | "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-4.0.0.tgz", 4055 | "integrity": "sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==", 4056 | "dev": true, 4057 | "engines": { 4058 | "node": "20 || >=22" 4059 | } 4060 | }, 4061 | "node_modules/wheel": { 4062 | "version": "0.0.1", 4063 | "resolved": "https://registry.npmjs.org/wheel/-/wheel-0.0.1.tgz", 4064 | "integrity": "sha512-Ovkm8o8QYqUO6lyMnSIsf0VgUMmGXDw2v1CHaCjPbLX+OxHiC9PaZSBqNI8d++/oeULUnmjBnRTE4lAFqCUyhw==", 4065 | "dev": true 4066 | }, 4067 | "node_modules/which": { 4068 | "version": "4.0.0", 4069 | "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", 4070 | "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", 4071 | "dev": true, 4072 | "dependencies": { 4073 | "isexe": "^3.1.1" 4074 | }, 4075 | "bin": { 4076 | "node-which": "bin/which.js" 4077 | }, 4078 | "engines": { 4079 | "node": "^16.13.0 || >=18.0.0" 4080 | } 4081 | }, 4082 | "node_modules/widest-line": { 4083 | "version": "5.0.0", 4084 | "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", 4085 | "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", 4086 | "dev": true, 4087 | "dependencies": { 4088 | "string-width": "^7.0.0" 4089 | }, 4090 | "engines": { 4091 | "node": ">=18" 4092 | }, 4093 | "funding": { 4094 | "url": "https://github.com/sponsors/sindresorhus" 4095 | } 4096 | }, 4097 | "node_modules/wrap-ansi": { 4098 | "version": "9.0.0", 4099 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", 4100 | "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", 4101 | "dev": true, 4102 | "dependencies": { 4103 | "ansi-styles": "^6.2.1", 4104 | "string-width": "^7.0.0", 4105 | "strip-ansi": "^7.1.0" 4106 | }, 4107 | "engines": { 4108 | "node": ">=18" 4109 | }, 4110 | "funding": { 4111 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 4112 | } 4113 | }, 4114 | "node_modules/wrap-ansi-cjs": { 4115 | "name": "wrap-ansi", 4116 | "version": "7.0.0", 4117 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 4118 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 4119 | "dev": true, 4120 | "dependencies": { 4121 | "ansi-styles": "^4.0.0", 4122 | "string-width": "^4.1.0", 4123 | "strip-ansi": "^6.0.0" 4124 | }, 4125 | "engines": { 4126 | "node": ">=10" 4127 | }, 4128 | "funding": { 4129 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 4130 | } 4131 | }, 4132 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { 4133 | "version": "5.0.1", 4134 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 4135 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 4136 | "dev": true, 4137 | "engines": { 4138 | "node": ">=8" 4139 | } 4140 | }, 4141 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { 4142 | "version": "4.3.0", 4143 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 4144 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 4145 | "dev": true, 4146 | "dependencies": { 4147 | "color-convert": "^2.0.1" 4148 | }, 4149 | "engines": { 4150 | "node": ">=8" 4151 | }, 4152 | "funding": { 4153 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 4154 | } 4155 | }, 4156 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { 4157 | "version": "8.0.0", 4158 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 4159 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 4160 | "dev": true 4161 | }, 4162 | "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { 4163 | "version": "3.0.0", 4164 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 4165 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 4166 | "dev": true, 4167 | "engines": { 4168 | "node": ">=8" 4169 | } 4170 | }, 4171 | "node_modules/wrap-ansi-cjs/node_modules/string-width": { 4172 | "version": "4.2.3", 4173 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4174 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4175 | "dev": true, 4176 | "dependencies": { 4177 | "emoji-regex": "^8.0.0", 4178 | "is-fullwidth-code-point": "^3.0.0", 4179 | "strip-ansi": "^6.0.1" 4180 | }, 4181 | "engines": { 4182 | "node": ">=8" 4183 | } 4184 | }, 4185 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { 4186 | "version": "6.0.1", 4187 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4188 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4189 | "dev": true, 4190 | "dependencies": { 4191 | "ansi-regex": "^5.0.1" 4192 | }, 4193 | "engines": { 4194 | "node": ">=8" 4195 | } 4196 | }, 4197 | "node_modules/ws": { 4198 | "version": "8.18.0", 4199 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", 4200 | "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", 4201 | "dev": true, 4202 | "engines": { 4203 | "node": ">=10.0.0" 4204 | }, 4205 | "peerDependencies": { 4206 | "bufferutil": "^4.0.1", 4207 | "utf-8-validate": ">=5.0.2" 4208 | }, 4209 | "peerDependenciesMeta": { 4210 | "bufferutil": { 4211 | "optional": true 4212 | }, 4213 | "utf-8-validate": { 4214 | "optional": true 4215 | } 4216 | } 4217 | }, 4218 | "node_modules/y18n": { 4219 | "version": "5.0.8", 4220 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 4221 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 4222 | "dev": true, 4223 | "engines": { 4224 | "node": ">=10" 4225 | } 4226 | }, 4227 | "node_modules/yallist": { 4228 | "version": "4.0.0", 4229 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 4230 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 4231 | "dev": true 4232 | }, 4233 | "node_modules/yaml": { 4234 | "version": "2.5.0", 4235 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz", 4236 | "integrity": "sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==", 4237 | "dev": true, 4238 | "bin": { 4239 | "yaml": "bin.mjs" 4240 | }, 4241 | "engines": { 4242 | "node": ">= 14" 4243 | } 4244 | }, 4245 | "node_modules/yaml-types": { 4246 | "version": "0.4.0", 4247 | "resolved": "https://registry.npmjs.org/yaml-types/-/yaml-types-0.4.0.tgz", 4248 | "integrity": "sha512-XfbA30NUg4/LWUiplMbiufUiwYhgB9jvBhTWel7XQqjV+GaB79c2tROu/8/Tu7jO0HvDvnKWtBk5ksWRrhQ/0g==", 4249 | "dev": true, 4250 | "engines": { 4251 | "node": ">= 16", 4252 | "npm": ">= 7" 4253 | }, 4254 | "peerDependencies": { 4255 | "yaml": "^2.3.0" 4256 | } 4257 | }, 4258 | "node_modules/yargs": { 4259 | "version": "17.7.2", 4260 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 4261 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 4262 | "dev": true, 4263 | "dependencies": { 4264 | "cliui": "^8.0.1", 4265 | "escalade": "^3.1.1", 4266 | "get-caller-file": "^2.0.5", 4267 | "require-directory": "^2.1.1", 4268 | "string-width": "^4.2.3", 4269 | "y18n": "^5.0.5", 4270 | "yargs-parser": "^21.1.1" 4271 | }, 4272 | "engines": { 4273 | "node": ">=12" 4274 | } 4275 | }, 4276 | "node_modules/yargs-parser": { 4277 | "version": "21.1.1", 4278 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 4279 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 4280 | "dev": true, 4281 | "engines": { 4282 | "node": ">=12" 4283 | } 4284 | }, 4285 | "node_modules/yargs/node_modules/ansi-regex": { 4286 | "version": "5.0.1", 4287 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 4288 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 4289 | "dev": true, 4290 | "engines": { 4291 | "node": ">=8" 4292 | } 4293 | }, 4294 | "node_modules/yargs/node_modules/emoji-regex": { 4295 | "version": "8.0.0", 4296 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 4297 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 4298 | "dev": true 4299 | }, 4300 | "node_modules/yargs/node_modules/is-fullwidth-code-point": { 4301 | "version": "3.0.0", 4302 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 4303 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 4304 | "dev": true, 4305 | "engines": { 4306 | "node": ">=8" 4307 | } 4308 | }, 4309 | "node_modules/yargs/node_modules/string-width": { 4310 | "version": "4.2.3", 4311 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 4312 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 4313 | "dev": true, 4314 | "dependencies": { 4315 | "emoji-regex": "^8.0.0", 4316 | "is-fullwidth-code-point": "^3.0.0", 4317 | "strip-ansi": "^6.0.1" 4318 | }, 4319 | "engines": { 4320 | "node": ">=8" 4321 | } 4322 | }, 4323 | "node_modules/yargs/node_modules/strip-ansi": { 4324 | "version": "6.0.1", 4325 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 4326 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 4327 | "dev": true, 4328 | "dependencies": { 4329 | "ansi-regex": "^5.0.1" 4330 | }, 4331 | "engines": { 4332 | "node": ">=8" 4333 | } 4334 | }, 4335 | "node_modules/yocto-queue": { 4336 | "version": "0.1.0", 4337 | "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 4338 | "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 4339 | "dev": true, 4340 | "engines": { 4341 | "node": ">=10" 4342 | }, 4343 | "funding": { 4344 | "url": "https://github.com/sponsors/sindresorhus" 4345 | } 4346 | }, 4347 | "node_modules/yoga-wasm-web": { 4348 | "version": "0.3.3", 4349 | "resolved": "https://registry.npmjs.org/yoga-wasm-web/-/yoga-wasm-web-0.3.3.tgz", 4350 | "integrity": "sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==", 4351 | "dev": true 4352 | } 4353 | } 4354 | } 4355 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ngraph.louvain", 3 | "version": "2.0.0", 4 | "description": "Given a graph instance detects communities using the Louvain Method", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "tap --allow-incomplete-coverage test/*.js", 8 | "demo": "browserify demo/basic/index.js > demo/basic/bundle.js && browserify demo/coarse/index.js > demo/coarse/bundle.js" 9 | }, 10 | "keywords": [ 11 | "modularity", 12 | "graph", 13 | "community", 14 | "structure", 15 | "louvain", 16 | "blondel" 17 | ], 18 | "author": "Andrei Kashcha", 19 | "license": "MIT", 20 | "repository": { 21 | "type": "git", 22 | "url": "https://github.com/anvaka/ngraph.louvain" 23 | }, 24 | "dependencies": { 25 | "ngraph.random": "1.0.0" 26 | }, 27 | "devDependencies": { 28 | "miserables": "^2.0.0", 29 | "ngraph.coarsen": "^1.5.0", 30 | "ngraph.graph": "^20.0.0", 31 | "ngraph.svg": "0.0.17", 32 | "tap": "^21.0.1" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | var modularity = require('../'); 2 | var createMiseablesGraph = require('miserables').create; 3 | var createGraph = require('ngraph.graph'); 4 | var test = require('tap').test; 5 | 6 | test('it can compute modularity for miserables graph', function(t) { 7 | var graph = createMiseablesGraph(); 8 | var community = modularity(graph); 9 | 10 | graph.forEachNode(function(node) { 11 | t.ok(community.getClass(node.id) !== undefined, 'Node ' + node.id + ' has a defined community'); 12 | }) 13 | 14 | t.ok(community.canCoarse(), 'Miserables can be further coarsened'); 15 | t.ok(community.originalModularity < community.newModularity, 'Modularity improved') 16 | 17 | t.end(); 18 | }); 19 | 20 | test('it can handle empty graph', function(t) { 21 | var graph = createGraph(); 22 | var community = modularity(graph); 23 | t.equal(community.originalModularity, 0, 'Modularity of empty graph is 0') 24 | t.equal(community.originalModularity, community.newModularity, 'Modularity cannot be improved') 25 | 26 | t.end(); 27 | }); 28 | -------------------------------------------------------------------------------- /test/simple.js: -------------------------------------------------------------------------------- 1 | var modularity = require('../'); 2 | var createGraph = require('ngraph.graph'); 3 | var test = require('tap').test; 4 | 5 | test('it can compute modularity for graphs with isolated nodes', function(t) { 6 | var graph = createGraph(); 7 | graph.addNode(1); // 1 is isolated 8 | graph.addLink(2, 3); 9 | var community = modularity(graph); 10 | 11 | graph.forEachNode(function(node) { 12 | t.ok(community.getClass(node.id) !== undefined, 'Node ' + node.id + ' has a defined community'); 13 | }) 14 | 15 | t.ok(community.originalModularity < community.newModularity, 'Modularity improved') 16 | 17 | t.end(); 18 | }); 19 | --------------------------------------------------------------------------------