├── .gitignore ├── README.md ├── docs ├── .observablehq │ └── deploy.json ├── components │ └── showCode.js ├── data-files │ ├── birth_statistics.geojson │ └── penguins.csv ├── data │ ├── alt-fuel-stations.parquet.sh │ ├── birth-statistics.png.py │ ├── caltrans-districts.json.sh │ ├── diamonds.jpeg.exe │ ├── earthquakes.zip.py │ ├── magic.json.js │ ├── penguin-kmeans.csv.R │ ├── penguin-logistic.csv.py │ ├── penguin-mlr.zip.R │ ├── penguin.csv.sh │ ├── raven.txt.exe │ ├── tolstoy.json.R │ └── us-electricity.tsv.js ├── exe.md ├── index.md ├── js.md ├── python.md ├── r.md └── shell.md ├── observablehq.config.js ├── package-lock.json ├── package.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | dist/ 3 | docs/.observablehq/cache/ 4 | node_modules/ 5 | yarn-error.log 6 | .Rhistory 7 | .Rdata 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Data loader examples 2 | 3 | This repo contains example data loaders in an Observable Framework project, highlighting a variety of data loader types (*e.g.* Python, R, .exe, JavaScript, etc.) and payloads (*e.g.* CSV, text, images, and more). 4 | 5 | Data loaders are stored in [`docs/data/`](https://github.com/observablehq/data-loader-examples/tree/main/docs/data). Files generated by data loaders are accessed in individual pages named by loader type (*e.g.* `python.md`), each in the [`docs`](https://github.com/observablehq/data-loader-examples/tree/main/docs) directory. 6 | 7 | See copyable code for each data loader, and live outputs, deployed on Observable: https://observablehq.observablehq.cloud/data-loader-examples/ 8 | 9 | This is an [Observable Framework](https://observablehq.com/framework) project. -------------------------------------------------------------------------------- /docs/.observablehq/deploy.json: -------------------------------------------------------------------------------- 1 | { 2 | "projectId": "3d09e5ec21a81243", 3 | "projectSlug": "data-loader-examples", 4 | "workspaceLogin": "observablehq" 5 | } 6 | -------------------------------------------------------------------------------- /docs/components/showCode.js: -------------------------------------------------------------------------------- 1 | import hljs from "https://cdn.jsdelivr.net/npm/highlight.js/+esm"; 2 | 3 | export function showCode(file, {language = file.name.match(/\.(\w+)$/)?.[1], copy = true, open = true} = {}) { 4 | const div = document.createElement("details"); 5 | if (open) div.setAttribute("open", "open"); 6 | div.innerHTML = ` 7 | ${file.name}: 8 |
9 |
loading file…
10 |
`; 11 | file.text().then((code) => { 12 | const pre = div.querySelector("pre"); 13 | pre.innerHTML = hljs.highlight(code, {language}).value; 14 | if (copy) enableCopyButton(pre); 15 | }); 16 | return div; 17 | } 18 | 19 | const copyButton = document.createElement("template"); 20 | copyButton.innerHTML = ''; // prettier-ignore 21 | 22 | function enableCopyButton(pre) { 23 | const parent = pre.parentElement; 24 | const div = parent.insertBefore(document.createElement("div"), pre); 25 | Object.assign(div.dataset, pre.dataset); 26 | div.appendChild(copyButton.content.cloneNode(true).firstChild).addEventListener("click", copy); 27 | div.appendChild(pre); 28 | } 29 | 30 | async function copy({currentTarget}) { 31 | await navigator.clipboard.writeText(currentTarget.parentElement.textContent.trimEnd()); 32 | } 33 | -------------------------------------------------------------------------------- /docs/data-files/penguins.csv: -------------------------------------------------------------------------------- 1 | species,island,culmen_length_mm,culmen_depth_mm,flipper_length_mm,body_mass_g,sex 2 | Adelie,Torgersen,39.1,18.7,181,3750,MALE 3 | Adelie,Torgersen,39.5,17.4,186,3800,FEMALE 4 | Adelie,Torgersen,40.3,18,195,3250,FEMALE 5 | Adelie,Torgersen,NaN,NaN,NaN,NaN, 6 | Adelie,Torgersen,36.7,19.3,193,3450,FEMALE 7 | Adelie,Torgersen,39.3,20.6,190,3650,MALE 8 | Adelie,Torgersen,38.9,17.8,181,3625,FEMALE 9 | Adelie,Torgersen,39.2,19.6,195,4675,MALE 10 | Adelie,Torgersen,34.1,18.1,193,3475, 11 | Adelie,Torgersen,42,20.2,190,4250, 12 | Adelie,Torgersen,37.8,17.1,186,3300, 13 | Adelie,Torgersen,37.8,17.3,180,3700, 14 | Adelie,Torgersen,41.1,17.6,182,3200,FEMALE 15 | Adelie,Torgersen,38.6,21.2,191,3800,MALE 16 | Adelie,Torgersen,34.6,21.1,198,4400,MALE 17 | Adelie,Torgersen,36.6,17.8,185,3700,FEMALE 18 | Adelie,Torgersen,38.7,19,195,3450,FEMALE 19 | Adelie,Torgersen,42.5,20.7,197,4500,MALE 20 | Adelie,Torgersen,34.4,18.4,184,3325,FEMALE 21 | Adelie,Torgersen,46,21.5,194,4200,MALE 22 | Adelie,Biscoe,37.8,18.3,174,3400,FEMALE 23 | Adelie,Biscoe,37.7,18.7,180,3600,MALE 24 | Adelie,Biscoe,35.9,19.2,189,3800,FEMALE 25 | Adelie,Biscoe,38.2,18.1,185,3950,MALE 26 | Adelie,Biscoe,38.8,17.2,180,3800,MALE 27 | Adelie,Biscoe,35.3,18.9,187,3800,FEMALE 28 | Adelie,Biscoe,40.6,18.6,183,3550,MALE 29 | Adelie,Biscoe,40.5,17.9,187,3200,FEMALE 30 | Adelie,Biscoe,37.9,18.6,172,3150,FEMALE 31 | Adelie,Biscoe,40.5,18.9,180,3950,MALE 32 | Adelie,Dream,39.5,16.7,178,3250,FEMALE 33 | Adelie,Dream,37.2,18.1,178,3900,MALE 34 | Adelie,Dream,39.5,17.8,188,3300,FEMALE 35 | Adelie,Dream,40.9,18.9,184,3900,MALE 36 | Adelie,Dream,36.4,17,195,3325,FEMALE 37 | Adelie,Dream,39.2,21.1,196,4150,MALE 38 | Adelie,Dream,38.8,20,190,3950,MALE 39 | Adelie,Dream,42.2,18.5,180,3550,FEMALE 40 | Adelie,Dream,37.6,19.3,181,3300,FEMALE 41 | Adelie,Dream,39.8,19.1,184,4650,MALE 42 | Adelie,Dream,36.5,18,182,3150,FEMALE 43 | Adelie,Dream,40.8,18.4,195,3900,MALE 44 | Adelie,Dream,36,18.5,186,3100,FEMALE 45 | Adelie,Dream,44.1,19.7,196,4400,MALE 46 | Adelie,Dream,37,16.9,185,3000,FEMALE 47 | Adelie,Dream,39.6,18.8,190,4600,MALE 48 | Adelie,Dream,41.1,19,182,3425,MALE 49 | Adelie,Dream,37.5,18.9,179,2975, 50 | Adelie,Dream,36,17.9,190,3450,FEMALE 51 | Adelie,Dream,42.3,21.2,191,4150,MALE 52 | Adelie,Biscoe,39.6,17.7,186,3500,FEMALE 53 | Adelie,Biscoe,40.1,18.9,188,4300,MALE 54 | Adelie,Biscoe,35,17.9,190,3450,FEMALE 55 | Adelie,Biscoe,42,19.5,200,4050,MALE 56 | Adelie,Biscoe,34.5,18.1,187,2900,FEMALE 57 | Adelie,Biscoe,41.4,18.6,191,3700,MALE 58 | Adelie,Biscoe,39,17.5,186,3550,FEMALE 59 | Adelie,Biscoe,40.6,18.8,193,3800,MALE 60 | Adelie,Biscoe,36.5,16.6,181,2850,FEMALE 61 | Adelie,Biscoe,37.6,19.1,194,3750,MALE 62 | Adelie,Biscoe,35.7,16.9,185,3150,FEMALE 63 | Adelie,Biscoe,41.3,21.1,195,4400,MALE 64 | Adelie,Biscoe,37.6,17,185,3600,FEMALE 65 | Adelie,Biscoe,41.1,18.2,192,4050,MALE 66 | Adelie,Biscoe,36.4,17.1,184,2850,FEMALE 67 | Adelie,Biscoe,41.6,18,192,3950,MALE 68 | Adelie,Biscoe,35.5,16.2,195,3350,FEMALE 69 | Adelie,Biscoe,41.1,19.1,188,4100,MALE 70 | Adelie,Torgersen,35.9,16.6,190,3050,FEMALE 71 | Adelie,Torgersen,41.8,19.4,198,4450,MALE 72 | Adelie,Torgersen,33.5,19,190,3600,FEMALE 73 | Adelie,Torgersen,39.7,18.4,190,3900,MALE 74 | Adelie,Torgersen,39.6,17.2,196,3550,FEMALE 75 | Adelie,Torgersen,45.8,18.9,197,4150,MALE 76 | Adelie,Torgersen,35.5,17.5,190,3700,FEMALE 77 | Adelie,Torgersen,42.8,18.5,195,4250,MALE 78 | Adelie,Torgersen,40.9,16.8,191,3700,FEMALE 79 | Adelie,Torgersen,37.2,19.4,184,3900,MALE 80 | Adelie,Torgersen,36.2,16.1,187,3550,FEMALE 81 | Adelie,Torgersen,42.1,19.1,195,4000,MALE 82 | Adelie,Torgersen,34.6,17.2,189,3200,FEMALE 83 | Adelie,Torgersen,42.9,17.6,196,4700,MALE 84 | Adelie,Torgersen,36.7,18.8,187,3800,FEMALE 85 | Adelie,Torgersen,35.1,19.4,193,4200,MALE 86 | Adelie,Dream,37.3,17.8,191,3350,FEMALE 87 | Adelie,Dream,41.3,20.3,194,3550,MALE 88 | Adelie,Dream,36.3,19.5,190,3800,MALE 89 | Adelie,Dream,36.9,18.6,189,3500,FEMALE 90 | Adelie,Dream,38.3,19.2,189,3950,MALE 91 | Adelie,Dream,38.9,18.8,190,3600,FEMALE 92 | Adelie,Dream,35.7,18,202,3550,FEMALE 93 | Adelie,Dream,41.1,18.1,205,4300,MALE 94 | Adelie,Dream,34,17.1,185,3400,FEMALE 95 | Adelie,Dream,39.6,18.1,186,4450,MALE 96 | Adelie,Dream,36.2,17.3,187,3300,FEMALE 97 | Adelie,Dream,40.8,18.9,208,4300,MALE 98 | Adelie,Dream,38.1,18.6,190,3700,FEMALE 99 | Adelie,Dream,40.3,18.5,196,4350,MALE 100 | Adelie,Dream,33.1,16.1,178,2900,FEMALE 101 | Adelie,Dream,43.2,18.5,192,4100,MALE 102 | Adelie,Biscoe,35,17.9,192,3725,FEMALE 103 | Adelie,Biscoe,41,20,203,4725,MALE 104 | Adelie,Biscoe,37.7,16,183,3075,FEMALE 105 | Adelie,Biscoe,37.8,20,190,4250,MALE 106 | Adelie,Biscoe,37.9,18.6,193,2925,FEMALE 107 | Adelie,Biscoe,39.7,18.9,184,3550,MALE 108 | Adelie,Biscoe,38.6,17.2,199,3750,FEMALE 109 | Adelie,Biscoe,38.2,20,190,3900,MALE 110 | Adelie,Biscoe,38.1,17,181,3175,FEMALE 111 | Adelie,Biscoe,43.2,19,197,4775,MALE 112 | Adelie,Biscoe,38.1,16.5,198,3825,FEMALE 113 | Adelie,Biscoe,45.6,20.3,191,4600,MALE 114 | Adelie,Biscoe,39.7,17.7,193,3200,FEMALE 115 | Adelie,Biscoe,42.2,19.5,197,4275,MALE 116 | Adelie,Biscoe,39.6,20.7,191,3900,FEMALE 117 | Adelie,Biscoe,42.7,18.3,196,4075,MALE 118 | Adelie,Torgersen,38.6,17,188,2900,FEMALE 119 | Adelie,Torgersen,37.3,20.5,199,3775,MALE 120 | Adelie,Torgersen,35.7,17,189,3350,FEMALE 121 | Adelie,Torgersen,41.1,18.6,189,3325,MALE 122 | Adelie,Torgersen,36.2,17.2,187,3150,FEMALE 123 | Adelie,Torgersen,37.7,19.8,198,3500,MALE 124 | Adelie,Torgersen,40.2,17,176,3450,FEMALE 125 | Adelie,Torgersen,41.4,18.5,202,3875,MALE 126 | Adelie,Torgersen,35.2,15.9,186,3050,FEMALE 127 | Adelie,Torgersen,40.6,19,199,4000,MALE 128 | Adelie,Torgersen,38.8,17.6,191,3275,FEMALE 129 | Adelie,Torgersen,41.5,18.3,195,4300,MALE 130 | Adelie,Torgersen,39,17.1,191,3050,FEMALE 131 | Adelie,Torgersen,44.1,18,210,4000,MALE 132 | Adelie,Torgersen,38.5,17.9,190,3325,FEMALE 133 | Adelie,Torgersen,43.1,19.2,197,3500,MALE 134 | Adelie,Dream,36.8,18.5,193,3500,FEMALE 135 | Adelie,Dream,37.5,18.5,199,4475,MALE 136 | Adelie,Dream,38.1,17.6,187,3425,FEMALE 137 | Adelie,Dream,41.1,17.5,190,3900,MALE 138 | Adelie,Dream,35.6,17.5,191,3175,FEMALE 139 | Adelie,Dream,40.2,20.1,200,3975,MALE 140 | Adelie,Dream,37,16.5,185,3400,FEMALE 141 | Adelie,Dream,39.7,17.9,193,4250,MALE 142 | Adelie,Dream,40.2,17.1,193,3400,FEMALE 143 | Adelie,Dream,40.6,17.2,187,3475,MALE 144 | Adelie,Dream,32.1,15.5,188,3050,FEMALE 145 | Adelie,Dream,40.7,17,190,3725,MALE 146 | Adelie,Dream,37.3,16.8,192,3000,FEMALE 147 | Adelie,Dream,39,18.7,185,3650,MALE 148 | Adelie,Dream,39.2,18.6,190,4250,MALE 149 | Adelie,Dream,36.6,18.4,184,3475,FEMALE 150 | Adelie,Dream,36,17.8,195,3450,FEMALE 151 | Adelie,Dream,37.8,18.1,193,3750,MALE 152 | Adelie,Dream,36,17.1,187,3700,FEMALE 153 | Adelie,Dream,41.5,18.5,201,4000,MALE 154 | Chinstrap,Dream,46.5,17.9,192,3500,FEMALE 155 | Chinstrap,Dream,50,19.5,196,3900,MALE 156 | Chinstrap,Dream,51.3,19.2,193,3650,MALE 157 | Chinstrap,Dream,45.4,18.7,188,3525,FEMALE 158 | Chinstrap,Dream,52.7,19.8,197,3725,MALE 159 | Chinstrap,Dream,45.2,17.8,198,3950,FEMALE 160 | Chinstrap,Dream,46.1,18.2,178,3250,FEMALE 161 | Chinstrap,Dream,51.3,18.2,197,3750,MALE 162 | Chinstrap,Dream,46,18.9,195,4150,FEMALE 163 | Chinstrap,Dream,51.3,19.9,198,3700,MALE 164 | Chinstrap,Dream,46.6,17.8,193,3800,FEMALE 165 | Chinstrap,Dream,51.7,20.3,194,3775,MALE 166 | Chinstrap,Dream,47,17.3,185,3700,FEMALE 167 | Chinstrap,Dream,52,18.1,201,4050,MALE 168 | Chinstrap,Dream,45.9,17.1,190,3575,FEMALE 169 | Chinstrap,Dream,50.5,19.6,201,4050,MALE 170 | Chinstrap,Dream,50.3,20,197,3300,MALE 171 | Chinstrap,Dream,58,17.8,181,3700,FEMALE 172 | Chinstrap,Dream,46.4,18.6,190,3450,FEMALE 173 | Chinstrap,Dream,49.2,18.2,195,4400,MALE 174 | Chinstrap,Dream,42.4,17.3,181,3600,FEMALE 175 | Chinstrap,Dream,48.5,17.5,191,3400,MALE 176 | Chinstrap,Dream,43.2,16.6,187,2900,FEMALE 177 | Chinstrap,Dream,50.6,19.4,193,3800,MALE 178 | Chinstrap,Dream,46.7,17.9,195,3300,FEMALE 179 | Chinstrap,Dream,52,19,197,4150,MALE 180 | Chinstrap,Dream,50.5,18.4,200,3400,FEMALE 181 | Chinstrap,Dream,49.5,19,200,3800,MALE 182 | Chinstrap,Dream,46.4,17.8,191,3700,FEMALE 183 | Chinstrap,Dream,52.8,20,205,4550,MALE 184 | Chinstrap,Dream,40.9,16.6,187,3200,FEMALE 185 | Chinstrap,Dream,54.2,20.8,201,4300,MALE 186 | Chinstrap,Dream,42.5,16.7,187,3350,FEMALE 187 | Chinstrap,Dream,51,18.8,203,4100,MALE 188 | Chinstrap,Dream,49.7,18.6,195,3600,MALE 189 | Chinstrap,Dream,47.5,16.8,199,3900,FEMALE 190 | Chinstrap,Dream,47.6,18.3,195,3850,FEMALE 191 | Chinstrap,Dream,52,20.7,210,4800,MALE 192 | Chinstrap,Dream,46.9,16.6,192,2700,FEMALE 193 | Chinstrap,Dream,53.5,19.9,205,4500,MALE 194 | Chinstrap,Dream,49,19.5,210,3950,MALE 195 | Chinstrap,Dream,46.2,17.5,187,3650,FEMALE 196 | Chinstrap,Dream,50.9,19.1,196,3550,MALE 197 | Chinstrap,Dream,45.5,17,196,3500,FEMALE 198 | Chinstrap,Dream,50.9,17.9,196,3675,FEMALE 199 | Chinstrap,Dream,50.8,18.5,201,4450,MALE 200 | Chinstrap,Dream,50.1,17.9,190,3400,FEMALE 201 | Chinstrap,Dream,49,19.6,212,4300,MALE 202 | Chinstrap,Dream,51.5,18.7,187,3250,MALE 203 | Chinstrap,Dream,49.8,17.3,198,3675,FEMALE 204 | Chinstrap,Dream,48.1,16.4,199,3325,FEMALE 205 | Chinstrap,Dream,51.4,19,201,3950,MALE 206 | Chinstrap,Dream,45.7,17.3,193,3600,FEMALE 207 | Chinstrap,Dream,50.7,19.7,203,4050,MALE 208 | Chinstrap,Dream,42.5,17.3,187,3350,FEMALE 209 | Chinstrap,Dream,52.2,18.8,197,3450,MALE 210 | Chinstrap,Dream,45.2,16.6,191,3250,FEMALE 211 | Chinstrap,Dream,49.3,19.9,203,4050,MALE 212 | Chinstrap,Dream,50.2,18.8,202,3800,MALE 213 | Chinstrap,Dream,45.6,19.4,194,3525,FEMALE 214 | Chinstrap,Dream,51.9,19.5,206,3950,MALE 215 | Chinstrap,Dream,46.8,16.5,189,3650,FEMALE 216 | Chinstrap,Dream,45.7,17,195,3650,FEMALE 217 | Chinstrap,Dream,55.8,19.8,207,4000,MALE 218 | Chinstrap,Dream,43.5,18.1,202,3400,FEMALE 219 | Chinstrap,Dream,49.6,18.2,193,3775,MALE 220 | Chinstrap,Dream,50.8,19,210,4100,MALE 221 | Chinstrap,Dream,50.2,18.7,198,3775,FEMALE 222 | Gentoo,Biscoe,46.1,13.2,211,4500,FEMALE 223 | Gentoo,Biscoe,50,16.3,230,5700,MALE 224 | Gentoo,Biscoe,48.7,14.1,210,4450,FEMALE 225 | Gentoo,Biscoe,50,15.2,218,5700,MALE 226 | Gentoo,Biscoe,47.6,14.5,215,5400,MALE 227 | Gentoo,Biscoe,46.5,13.5,210,4550,FEMALE 228 | Gentoo,Biscoe,45.4,14.6,211,4800,FEMALE 229 | Gentoo,Biscoe,46.7,15.3,219,5200,MALE 230 | Gentoo,Biscoe,43.3,13.4,209,4400,FEMALE 231 | Gentoo,Biscoe,46.8,15.4,215,5150,MALE 232 | Gentoo,Biscoe,40.9,13.7,214,4650,FEMALE 233 | Gentoo,Biscoe,49,16.1,216,5550,MALE 234 | Gentoo,Biscoe,45.5,13.7,214,4650,FEMALE 235 | Gentoo,Biscoe,48.4,14.6,213,5850,MALE 236 | Gentoo,Biscoe,45.8,14.6,210,4200,FEMALE 237 | Gentoo,Biscoe,49.3,15.7,217,5850,MALE 238 | Gentoo,Biscoe,42,13.5,210,4150,FEMALE 239 | Gentoo,Biscoe,49.2,15.2,221,6300,MALE 240 | Gentoo,Biscoe,46.2,14.5,209,4800,FEMALE 241 | Gentoo,Biscoe,48.7,15.1,222,5350,MALE 242 | Gentoo,Biscoe,50.2,14.3,218,5700,MALE 243 | Gentoo,Biscoe,45.1,14.5,215,5000,FEMALE 244 | Gentoo,Biscoe,46.5,14.5,213,4400,FEMALE 245 | Gentoo,Biscoe,46.3,15.8,215,5050,MALE 246 | Gentoo,Biscoe,42.9,13.1,215,5000,FEMALE 247 | Gentoo,Biscoe,46.1,15.1,215,5100,MALE 248 | Gentoo,Biscoe,44.5,14.3,216,4100, 249 | Gentoo,Biscoe,47.8,15,215,5650,MALE 250 | Gentoo,Biscoe,48.2,14.3,210,4600,FEMALE 251 | Gentoo,Biscoe,50,15.3,220,5550,MALE 252 | Gentoo,Biscoe,47.3,15.3,222,5250,MALE 253 | Gentoo,Biscoe,42.8,14.2,209,4700,FEMALE 254 | Gentoo,Biscoe,45.1,14.5,207,5050,FEMALE 255 | Gentoo,Biscoe,59.6,17,230,6050,MALE 256 | Gentoo,Biscoe,49.1,14.8,220,5150,FEMALE 257 | Gentoo,Biscoe,48.4,16.3,220,5400,MALE 258 | Gentoo,Biscoe,42.6,13.7,213,4950,FEMALE 259 | Gentoo,Biscoe,44.4,17.3,219,5250,MALE 260 | Gentoo,Biscoe,44,13.6,208,4350,FEMALE 261 | Gentoo,Biscoe,48.7,15.7,208,5350,MALE 262 | Gentoo,Biscoe,42.7,13.7,208,3950,FEMALE 263 | Gentoo,Biscoe,49.6,16,225,5700,MALE 264 | Gentoo,Biscoe,45.3,13.7,210,4300,FEMALE 265 | Gentoo,Biscoe,49.6,15,216,4750,MALE 266 | Gentoo,Biscoe,50.5,15.9,222,5550,MALE 267 | Gentoo,Biscoe,43.6,13.9,217,4900,FEMALE 268 | Gentoo,Biscoe,45.5,13.9,210,4200,FEMALE 269 | Gentoo,Biscoe,50.5,15.9,225,5400,MALE 270 | Gentoo,Biscoe,44.9,13.3,213,5100,FEMALE 271 | Gentoo,Biscoe,45.2,15.8,215,5300,MALE 272 | Gentoo,Biscoe,46.6,14.2,210,4850,FEMALE 273 | Gentoo,Biscoe,48.5,14.1,220,5300,MALE 274 | Gentoo,Biscoe,45.1,14.4,210,4400,FEMALE 275 | Gentoo,Biscoe,50.1,15,225,5000,MALE 276 | Gentoo,Biscoe,46.5,14.4,217,4900,FEMALE 277 | Gentoo,Biscoe,45,15.4,220,5050,MALE 278 | Gentoo,Biscoe,43.8,13.9,208,4300,FEMALE 279 | Gentoo,Biscoe,45.5,15,220,5000,MALE 280 | Gentoo,Biscoe,43.2,14.5,208,4450,FEMALE 281 | Gentoo,Biscoe,50.4,15.3,224,5550,MALE 282 | Gentoo,Biscoe,45.3,13.8,208,4200,FEMALE 283 | Gentoo,Biscoe,46.2,14.9,221,5300,MALE 284 | Gentoo,Biscoe,45.7,13.9,214,4400,FEMALE 285 | Gentoo,Biscoe,54.3,15.7,231,5650,MALE 286 | Gentoo,Biscoe,45.8,14.2,219,4700,FEMALE 287 | Gentoo,Biscoe,49.8,16.8,230,5700,MALE 288 | Gentoo,Biscoe,46.2,14.4,214,4650, 289 | Gentoo,Biscoe,49.5,16.2,229,5800,MALE 290 | Gentoo,Biscoe,43.5,14.2,220,4700,FEMALE 291 | Gentoo,Biscoe,50.7,15,223,5550,MALE 292 | Gentoo,Biscoe,47.7,15,216,4750,FEMALE 293 | Gentoo,Biscoe,46.4,15.6,221,5000,MALE 294 | Gentoo,Biscoe,48.2,15.6,221,5100,MALE 295 | Gentoo,Biscoe,46.5,14.8,217,5200,FEMALE 296 | Gentoo,Biscoe,46.4,15,216,4700,FEMALE 297 | Gentoo,Biscoe,48.6,16,230,5800,MALE 298 | Gentoo,Biscoe,47.5,14.2,209,4600,FEMALE 299 | Gentoo,Biscoe,51.1,16.3,220,6000,MALE 300 | Gentoo,Biscoe,45.2,13.8,215,4750,FEMALE 301 | Gentoo,Biscoe,45.2,16.4,223,5950,MALE 302 | Gentoo,Biscoe,49.1,14.5,212,4625,FEMALE 303 | Gentoo,Biscoe,52.5,15.6,221,5450,MALE 304 | Gentoo,Biscoe,47.4,14.6,212,4725,FEMALE 305 | Gentoo,Biscoe,50,15.9,224,5350,MALE 306 | Gentoo,Biscoe,44.9,13.8,212,4750,FEMALE 307 | Gentoo,Biscoe,50.8,17.3,228,5600,MALE 308 | Gentoo,Biscoe,43.4,14.4,218,4600,FEMALE 309 | Gentoo,Biscoe,51.3,14.2,218,5300,MALE 310 | Gentoo,Biscoe,47.5,14,212,4875,FEMALE 311 | Gentoo,Biscoe,52.1,17,230,5550,MALE 312 | Gentoo,Biscoe,47.5,15,218,4950,FEMALE 313 | Gentoo,Biscoe,52.2,17.1,228,5400,MALE 314 | Gentoo,Biscoe,45.5,14.5,212,4750,FEMALE 315 | Gentoo,Biscoe,49.5,16.1,224,5650,MALE 316 | Gentoo,Biscoe,44.5,14.7,214,4850,FEMALE 317 | Gentoo,Biscoe,50.8,15.7,226,5200,MALE 318 | Gentoo,Biscoe,49.4,15.8,216,4925,MALE 319 | Gentoo,Biscoe,46.9,14.6,222,4875,FEMALE 320 | Gentoo,Biscoe,48.4,14.4,203,4625,FEMALE 321 | Gentoo,Biscoe,51.1,16.5,225,5250,MALE 322 | Gentoo,Biscoe,48.5,15,219,4850,FEMALE 323 | Gentoo,Biscoe,55.9,17,228,5600,MALE 324 | Gentoo,Biscoe,47.2,15.5,215,4975,FEMALE 325 | Gentoo,Biscoe,49.1,15,228,5500,MALE 326 | Gentoo,Biscoe,47.3,13.8,216,4725, 327 | Gentoo,Biscoe,46.8,16.1,215,5500,MALE 328 | Gentoo,Biscoe,41.7,14.7,210,4700,FEMALE 329 | Gentoo,Biscoe,53.4,15.8,219,5500,MALE 330 | Gentoo,Biscoe,43.3,14,208,4575,FEMALE 331 | Gentoo,Biscoe,48.1,15.1,209,5500,MALE 332 | Gentoo,Biscoe,50.5,15.2,216,5000,FEMALE 333 | Gentoo,Biscoe,49.8,15.9,229,5950,MALE 334 | Gentoo,Biscoe,43.5,15.2,213,4650,FEMALE 335 | Gentoo,Biscoe,51.5,16.3,230,5500,MALE 336 | Gentoo,Biscoe,46.2,14.1,217,4375,FEMALE 337 | Gentoo,Biscoe,55.1,16,230,5850,MALE 338 | Gentoo,Biscoe,44.5,15.7,217,4875, 339 | Gentoo,Biscoe,48.8,16.2,222,6000,MALE 340 | Gentoo,Biscoe,47.2,13.7,214,4925,FEMALE 341 | Gentoo,Biscoe,NaN,NaN,NaN,NaN, 342 | Gentoo,Biscoe,46.8,14.3,215,4850,FEMALE 343 | Gentoo,Biscoe,50.4,15.7,222,5750,MALE 344 | Gentoo,Biscoe,45.2,14.8,212,5200,FEMALE 345 | Gentoo,Biscoe,49.9,16.1,213,5400,MALE -------------------------------------------------------------------------------- /docs/data/alt-fuel-stations.parquet.sh: -------------------------------------------------------------------------------- 1 | duckdb -csv :memory: << EOF 2 | 3 | CREATE TABLE allp AS ( 4 | FROM 'https://data.openei.org/files/106/alt_fuel_stations%20%28Jul%2029%202021%29.csv' 5 | ); 6 | 7 | CREATE TABLE cafuelstations AS ( 8 | SELECT "Fuel Type Code" as Type, 9 | State, 10 | ZIP, 11 | Latitude, 12 | Longitude 13 | FROM allp 14 | WHERE State = 'CA' 15 | ); 16 | 17 | COPY cafuelstations TO '$TMPDIR/cafuelstations.parquet' (FORMAT 'parquet', COMPRESSION 'GZIP'); 18 | 19 | EOF 20 | 21 | # isatty 22 | if [ -t 1 ]; then 23 | echo parquet file output at: $TMPDIR/cafuelstations.parquet 24 | echo "duckdb -csv :memory: \"SELECT * FROM '$TMPDIR/cafuelstations.parquet'\"" 25 | else 26 | cat $TMPDIR/cafuelstations.parquet 27 | rm $TMPDIR/cafuelstations.parquet 28 | fi -------------------------------------------------------------------------------- /docs/data/birth-statistics.png.py: -------------------------------------------------------------------------------- 1 | # Import libraries (must be installed and available in environment) 2 | import geopandas as gpd 3 | import matplotlib.pyplot as plt 4 | import io 5 | import sys 6 | 7 | # Read in data: 8 | birth_statistics = gpd.read_file("docs/data-files/birth_statistics.geojson") 9 | 10 | # Create a basic choropleth map 11 | birth_statistics.plot(column="Birth_Rate", legend=True) 12 | plt.axis("off") 13 | 14 | # Save plot to a virtual file, then write binary PNG data to stdout 15 | img_buffer = io.BytesIO() 16 | plt.savefig(img_buffer, format="png") 17 | img_buffer.seek(0) 18 | 19 | sys.stdout.buffer.write(img_buffer.getvalue()) 20 | -------------------------------------------------------------------------------- /docs/data/caltrans-districts.json.sh: -------------------------------------------------------------------------------- 1 | curl 'https://gis.data.ca.gov/datasets/0144574f750f4ccc88749004aca6eb0c_0.geojson?outSR=%7B%22latestWkid%22%3A3857%2C%22wkid%22%3A102100%7D' \ 2 | --compressed -------------------------------------------------------------------------------- /docs/data/diamonds.jpeg.exe: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env Rscript 2 | 3 | # Load ggplot2 4 | library(ggplot2) 5 | 6 | # Create a scatterplot with built-in diamonds dataset 7 | my_plot <- ggplot(diamonds, aes(x = carat, y = price, color = cut)) + 8 | geom_point(alpha = 0.6) + 9 | labs( 10 | title = "Diamonds Dataset: Carat vs Price by Cut", 11 | x = "Carat", 12 | y = "Price", 13 | color = "Cut" 14 | ) 15 | 16 | # Save jpeg and write to standard output 17 | ggsave(plot = my_plot, filename = "/dev/stdout", device = "jpeg") 18 | -------------------------------------------------------------------------------- /docs/data/earthquakes.zip.py: -------------------------------------------------------------------------------- 1 | # Import libraries (must be installed) 2 | import requests 3 | import pandas as pd 4 | import json 5 | import zipfile 6 | import io 7 | import sys 8 | 9 | # Access earthquake data as JSON from URL: 10 | url = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_day.geojson" 11 | response = requests.get(url) 12 | geojson_data = response.json() 13 | 14 | # Get quakes metadata in JSON format: 15 | earthquake_metadata = geojson_data["metadata"] 16 | earthquake_meta_json = json.dumps(earthquake_metadata) 17 | 18 | # Create a pandas data frame with only earthquake magnitude, longitude, and latitude: 19 | earthquakes = [] 20 | 21 | for i in geojson_data["features"]: 22 | mag = i["properties"]["mag"] 23 | longitude = i["geometry"]["coordinates"][0] 24 | latitude = i["geometry"]["coordinates"][1] 25 | earthquakes.append({"mag": mag, "longitude": longitude, "latitude": latitude}) 26 | 27 | earthquakes_df = pd.DataFrame(earthquakes) 28 | 29 | # Create a buffer 30 | zip_buffer = io.BytesIO() 31 | 32 | # Write JSON string to the zip file 33 | with zipfile.ZipFile(zip_buffer, "w") as zip_file: 34 | zip_file.writestr("quakes_metadata.json", earthquake_meta_json) 35 | 36 | # Write DataFrame to a CSV file in the zip file 37 | with zipfile.ZipFile(zip_buffer, "a") as zip_file: 38 | df_csv_string = earthquakes_df.to_csv(index=False) 39 | zip_file.writestr("quakes.csv", df_csv_string) 40 | 41 | # Write the zip file to standard output 42 | sys.stdout.buffer.write(zip_buffer.getvalue()) 43 | -------------------------------------------------------------------------------- /docs/data/magic.json.js: -------------------------------------------------------------------------------- 1 | // Import d3 functions: 2 | import * as d3 from "d3"; 3 | 4 | // Access and wrangle data 5 | const url = "https://api.scryfall.com/cards/search?order=cmc&q=c:red%20pow=3"; 6 | 7 | const magicCards = await d3.json(url); 8 | 9 | const magicCardsData = magicCards.data.map((d) => ({ 10 | name: d.name, 11 | release: d.released_at, 12 | mana_cost: d.mana_cost, 13 | type: d.type_line, 14 | set: d.set_name, 15 | rarity: d.rarity 16 | })); 17 | 18 | // Write as JSON to standard output: 19 | process.stdout.write(JSON.stringify(magicCardsData)); 20 | -------------------------------------------------------------------------------- /docs/data/penguin-kmeans.csv.R: -------------------------------------------------------------------------------- 1 | # Attach libraries (must be installed) 2 | library(readr) 3 | library(dplyr) 4 | library(tidyr) 5 | 6 | # Data access, wrangling and analysis 7 | penguins <- read_csv("docs/data-files/penguins.csv") |> 8 | drop_na(culmen_depth_mm, culmen_length_mm) 9 | 10 | penguin_kmeans <- penguins |> 11 | select(culmen_depth_mm, culmen_length_mm) |> 12 | scale() |> 13 | kmeans(centers = 3) 14 | 15 | penguin_clusters <- penguins |> 16 | mutate(cluster = penguin_kmeans$cluster) 17 | 18 | # Convert data frame to delimited string, then write to standard output 19 | cat(format_csv(penguin_clusters)) 20 | -------------------------------------------------------------------------------- /docs/data/penguin-logistic.csv.py: -------------------------------------------------------------------------------- 1 | # Import libraries (must be installed) 2 | import pandas as pd 3 | from sklearn.linear_model import LogisticRegression 4 | import sys 5 | 6 | # Data access, wrangling and analysis 7 | df = pd.read_csv("docs/data-files/penguins.csv") 8 | df_complete = df.dropna( 9 | subset=["culmen_length_mm", "culmen_depth_mm", "flipper_length_mm", "body_mass_g"] 10 | ) 11 | 12 | X = df_complete.iloc[:, [2, 3, 4, 5]] 13 | Y = df_complete.iloc[:, 0] 14 | 15 | logreg = LogisticRegression() 16 | logreg.fit(X, Y) 17 | 18 | results = df_complete.copy() 19 | results["predicted_species"] = logreg.predict(X) 20 | 21 | df_out = df.merge( 22 | results[["predicted_species"]], how="left", left_index=True, right_index=True 23 | ) 24 | 25 | # Write the data frame to CSV, and to standard output 26 | df_out.to_csv(sys.stdout) 27 | -------------------------------------------------------------------------------- /docs/data/penguin-mlr.zip.R: -------------------------------------------------------------------------------- 1 | # Attach required packages (must be installed) 2 | library(readr) 3 | library(tidyr) 4 | library(dplyr) 5 | library(broom) 6 | 7 | # Data access, wrangling and analysis 8 | penguins <- read_csv("docs/data-files/penguins.csv") |> 9 | drop_na(body_mass_g, species, sex, flipper_length_mm, culmen_depth_mm) 10 | 11 | penguins_mlr <- lm(body_mass_g ~ species + sex + flipper_length_mm + culmen_depth_mm, data = penguins) 12 | 13 | mlr_est <- tidy(penguins_mlr) 14 | 15 | mlr_fit <- penguins |> 16 | mutate( 17 | body_mass_g_predict = penguins_mlr$fitted.values, 18 | body_mass_g_residual = penguins_mlr$residuals 19 | ) 20 | 21 | # Write the data frames as CSVs to a temporary directory 22 | setwd(tempdir()) 23 | write_csv(mlr_est, "estimates.csv") 24 | write_csv(mlr_fit, "predictions.csv") 25 | 26 | # Zip the contents of the temporary directory 27 | system("zip - -r .") 28 | -------------------------------------------------------------------------------- /docs/data/penguin.csv.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Start a Python script 4 | python3 << END_PYTHON 5 | 6 | # Import libraries 7 | import sys 8 | import pandas as pd 9 | from sklearn.linear_model import LinearRegression 10 | 11 | # Data access and wrangling 12 | penguins = pd.read_csv("docs/data-files/penguins.csv") 13 | penguins_size = penguins[["species", "body_mass_g", "flipper_length_mm", "sex"]] 14 | penguins_complete = penguins_size.dropna(subset=["flipper_length_mm","body_mass_g"]) 15 | 16 | # Write pandas df as a CSV to standard output 17 | penguins_complete.to_csv(sys.stdout) 18 | END_PYTHON -------------------------------------------------------------------------------- /docs/data/raven.txt.exe: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env julia 2 | 3 | # Load Julia packages (must be installed) 4 | using HTTP 5 | using Gumbo 6 | using TextAnalysis 7 | 8 | # Function to fetch text 9 | function fetch_text_from_url(url::String) 10 | response = HTTP.get(url) 11 | text = String(response.body) 12 | text = replace(text, "\r" => "") 13 | return text 14 | end 15 | 16 | # Split into paragraphs 17 | function split_into_paragraphs(text::String) 18 | paragraphs = split(text, "\n\n") 19 | return paragraphs 20 | end 21 | 22 | # Return a paragraph by number 23 | function get_paragraph_by_number(text::String, paragraph_number::Int) 24 | paragraphs = split_into_paragraphs(text) 25 | return paragraphs[paragraph_number] 26 | end 27 | 28 | # Text URL 29 | url = "https://www.gutenberg.org/cache/epub/1065/pg1065.txt" 30 | 31 | # Fetch text and access a paragraph by number 32 | text = fetch_text_from_url(url) 33 | paragraph_number = 29 34 | result_paragraph = get_paragraph_by_number(text, paragraph_number) 35 | 36 | # Print text to standard output 37 | println(result_paragraph) -------------------------------------------------------------------------------- /docs/data/tolstoy.json.R: -------------------------------------------------------------------------------- 1 | # Attach libraries (must be installed) 2 | library(tidytext) 3 | library(readr) 4 | library(dplyr) 5 | library(stringr) 6 | library(jsonlite) 7 | 8 | # Access and wrangle data 9 | tolstoy <- read_csv("https://www.gutenberg.org/cache/epub/2600/pg2600.txt") |> 10 | rename(text = 1) 11 | booktext <- tolstoy[-(1:400), ] 12 | booktext <- booktext[-(51477:51770), ] 13 | 14 | tidy_tolstoy <- booktext |> 15 | mutate(book = cumsum(str_detect(text, "BOOK | EPILOGUE"))) |> 16 | mutate(book = case_when( 17 | book < 16 ~ paste("Book", book), 18 | book == 16 ~ "Epilogue 1", 19 | book == 17 ~ "Epilogue 2" 20 | )) |> 21 | group_by(book) |> 22 | mutate(chapter = cumsum(str_detect(text, regex("CHAPTER", ignore_case = FALSE)))) |> 23 | ungroup() |> 24 | filter(!str_detect(text, regex("BOOK", ignore_case = FALSE))) |> 25 | filter(!str_detect(text, regex("CHAPTER", ignore_case = FALSE))) |> 26 | unnest_tokens(word, text) |> 27 | anti_join(stop_words) 28 | 29 | # Find top 10 words (by count) for each chapter 30 | tolstoy_word_counts <- tidy_tolstoy |> 31 | group_by(book, chapter) |> 32 | count(word) |> 33 | top_n(10, n) |> 34 | arrange(desc(n), .by_group = TRUE) 35 | 36 | # Create JSON and write to standard output 37 | cat(toJSON(tolstoy_word_counts, pretty = TRUE)) 38 | -------------------------------------------------------------------------------- /docs/data/us-electricity.tsv.js: -------------------------------------------------------------------------------- 1 | // Import d3 functions: 2 | import * as d3 from "d3"; 3 | 4 | // Time endpoints and conversion to EIA API expected format 5 | const end = d3.timeDay.offset(d3.timeHour(new Date()), 1); 6 | const start = d3.timeHour(d3.utcDay.offset(end, -7)); 7 | const convertDate = d3.timeFormat("%m%d%Y %H:%M:%S"); 8 | 9 | // Access and wrangle data 10 | const url = `https://www.eia.gov/electricity/930-api/region_data/series_data?type[0]=D&type[1]=DF&type[2]=NG&type[3]=TI&start=${convertDate( 11 | start 12 | )}&end=${convertDate(end)}&frequency=hourly&timezone=Eastern&limit=10000&respondent[0]=US48`; 13 | 14 | const tidySeries = (response, id, name) => { 15 | let series = response[0].data; 16 | return series.flatMap((s) => { 17 | return s.VALUES.DATES.map((d, i) => { 18 | return { 19 | id: s[id], 20 | name: s[name], 21 | date: d, 22 | value: s.VALUES.DATA[i] 23 | }; 24 | }); 25 | }); 26 | }; 27 | 28 | const usElectricity = await d3.json(url).then((response) => { 29 | return tidySeries(response, "TYPE_ID", "TYPE_NAME"); 30 | }); 31 | 32 | // Write to stdout as TSV 33 | process.stdout.write(d3.tsvFormat(usElectricity)); 34 | -------------------------------------------------------------------------------- /docs/exe.md: -------------------------------------------------------------------------------- 1 | # Executable data loader examples 2 | 3 | Observable Framework supports arbitrary executable (.exe) data loaders, which _can_ be any arbitrary executable (_e.g._ compiled from C) but often specify another interpreter using a shebang as shown in the examples below. Unlike interpreted data loaders (_e.g._ Python, R), executable data loaders require that you make the loader executable, typically done via `chmod`. For example: 4 | 5 | ```sh 6 | chmod +x docs/quakes.csv.exe 7 | ``` 8 | 9 | ## JPEG 10 | 11 | The data loader below specifies the R interpreter, `Rscript`, to execute the file (`#!/usr/bin/env Rscript`). A scatterplot chart built with [`ggplot2`](https://ggplot2.tidyverse.org/) using the built-in diamonds dataset is returned as a JPEG to standard output. 12 | 13 | Create a file in your project source root with the .jpeg.exe double extension (for example, `docs/data/my-chart.jpeg.exe`). Remember to make the script executable, for example using: 14 | 15 | ```sh 16 | chmod +x docs/data/my-chart.jpeg.exe 17 | ``` 18 | 19 | Then, paste the code below to get started. 20 | 21 | ```js 22 | showCode(FileAttachment("data/diamonds.jpeg.exe"), {language: "R"}) 23 | ``` 24 | 25 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 26 | 27 | ```js echo 28 | const diamonds = FileAttachment("data/diamonds.jpeg").image({width: 500}); 29 | ``` 30 | 31 |

The file attachment name does not include the .exe extension. We rely on Framework’s routing to run the appropriate data loader. 32 | 33 | We can now view the image: 34 | 35 | ```js echo 36 | diamonds 37 | ``` 38 | 39 | ## TXT 40 | 41 | The data loader below specifies the Julia language interpreter using the shebang (`#!/usr/bin/env julia`). Text of Edgar Allen Poe's _The Raven_ is accessed from [Project Gutenberg](https://www.gutenberg.org/cache/epub/1065/pg1065.txt). The text is parsed and single paragraph (specified by number) is returned as text. 42 | 43 | Create a file in your project source root with the .txt.exe double extension (for example, `docs/data/my-chart.txt.exe`). Remember to make the script executable, for example using: 44 | 45 | ```sh 46 | chmod +x docs/data/my-chart.txt.exe 47 | ``` 48 | 49 | Then, paste the code below to get started. 50 | 51 | ```js 52 | showCode(FileAttachment("data/raven.txt.exe"), {language: "Julia"}) 53 | ``` 54 | 55 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 56 | 57 | ```js echo 58 | const ravenParagraph = FileAttachment("data/raven.txt").text(); 59 | ``` 60 | 61 |

The file attachment name does not include the .exe extension. We rely on Framework’s routing to run the appropriate data loader. 62 | 63 | We can now view the paragraph text: 64 | 65 | ```js echo 66 | ravenParagraph 67 | ``` 68 | 69 | ```js 70 | import {showCode} from "./components/showCode.js"; 71 | ``` 72 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | toc: false 3 | theme: dashboard 4 | --- 5 | 6 | # Data loader examples 7 | 8 | This project is a collection of data loaders ready to be quickly explored and reused. 9 | 10 | Each page gathers examples of data loaders written in a given language (Python, shell script, JavaScript, etc.). It includes both their code and how to access their outputs. 11 | 12 | Or, view the whole collection [on GitHub](https://github.com/observablehq/data-loader-examples). 13 | 14 | ### Python data loaders 15 | 16 | - **[`penguin-logistic.csv.py`](./python#csv)**: Accesses penguins data from a local file, performs logistic regression for species classification, and returns a CSV. 17 | - **[`birth_statistics.png.py`](./python#png)**: Accesses birth statistics for Lake County, Indiana from a geojson, creates a basic choropleth with matplotlib, and returns a PNG. 18 | - **[`earthquakes.zip.py`](./python#zip)**: Accesses USGS earthquake data, then returns metadata (in JSON format) and quake attributes (as a CSV) in a Zip archive. 19 | 20 | ### JavaScript data loaders 21 | 22 | - **[`us-electricity.tsv.js`](./js#tsv)**: Accesses U.S. electricity data, performs basic wrangling, then returns a TSV file. 23 | - **[`magic.json.js`](./js#json)**: Accesses Magic card data from an API, perform basic wrangling, then returns a JSON. 24 | 25 | ### R data loaders 26 | 27 | - **[`penguin-kmeans.csv.R`](./r#csv)**: Accesses penguins data from a local file, performs k-means clustering, and returns a CSV. 28 | - **[`tolstoy.json.R`](./r#json)**: Wrangles text of _War and Peace_, finds the most common words by chapter, then returns a JSON. 29 | - **[`penguin-mlr.zip.R`](./r#zip)**: Accesses penguins data from a local file, performs multiple linear regression, and returns model estimates and predictions in two separate CSV files added to a Zip archive. 30 | 31 | ### Shell script data loaders 32 | 33 | - **[`penguin.csv.sh`](./shell#csv)**: Starts a Python script within a shell script to access and wrangle penguins data from a local file, then returns a CSV. 34 | - **[`alt-fuel-stations.parquet.sh`](./shell#parquet)**: Accesses U.S. alternative fuel station data, performs basic data wrangling in SQL with DuckDB, and returns an Apache Parquet file. 35 | - **[`caltrans-districts.json.sh`](./shell#json)**: Accesses CalTrans district spatial data from a remote geojson with `curl`, and returns a JSON. 36 | 37 | ### Executable data loaders 38 | 39 | - **[`diamonds.jpeg.exe`](./exe#jpeg)**: Specifies R interpreter with a shebang, then creates a scatterplot in ggplot2 and returns the chart as a JPEG. 40 | - **[`raven.txt.exe`](./exe#txt)**: Specifies Julia interpreter with a shebang, then accesses _The Raven_ text and returns a single paragraph from the poem as text. 41 | -------------------------------------------------------------------------------- /docs/js.md: -------------------------------------------------------------------------------- 1 | # JavaScript data loader examples 2 | 3 | Observable Framework supports [data loaders](../loaders) written in JavaScript. These data loaders run in the most standard way—using `node --no-warnings=ExperimentalWarning {script-name}` for JavaScript (.js) data loaders, and `tsx {script-name}` for TypeScript (.ts) data loaders. To test a data loader, you can run the relevant command directly in a shell. 4 | 5 | Because data loaders run in this standard environment, they have to be written as standard node (or tsx) scripts. For instance, they have to import explicitly every library that they use. 6 | 7 | ## TSV 8 | 9 | The data loader below accesses data on US hourly electricity demand and generation from the [Energy Information Administration](https://www.eia.gov/opendata/), does some basic wrangling, and returns a tab-separated value file. 10 | 11 | Create a file in your project source root with the .tsv.js double extension (for example, `docs/data/my-data.tsv.js`), then paste the JavaScript code below to get started. 12 | 13 | ```js 14 | showCode(FileAttachment("data/us-electricity.tsv.js")) 15 | ``` 16 | 17 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 18 | 19 | ```js echo 20 | const usElectricity = FileAttachment("data/us-electricity.tsv").tsv(); 21 | ``` 22 | 23 |

The file attachment name does not include the .js extension. We rely on Framework’s routing to run the appropriate data loader. 24 | 25 | We can now display the attached dataset: 26 | 27 | ```js echo 28 | Inputs.table(usElectricity) 29 | ``` 30 | 31 | ## JSON 32 | 33 | The data loader below accesses Magic the Gathering card data from the [Scryfall API](https://scryfall.com/docs/api), does some basic wrangling, and returns a JSON. 34 | 35 | Create a file in your project source root with the .json.js double extension (for example, `docs/data/my-data.json.js`), then paste the JavaScript code below to get started. 36 | 37 | ```js 38 | showCode(FileAttachment("data/magic.json.js")) 39 | ``` 40 | 41 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 42 | 43 | ```js echo 44 | const magicCards = FileAttachment("data/magic.json").json(); 45 | ``` 46 | 47 |

The file attachment name does not include the .js extension. We rely on Framework’s routing to run the appropriate data loader. 48 | 49 | We can now display the attached dataset: 50 | 51 | ```js echo 52 | Inputs.table(magicCards) 53 | ``` 54 | 55 | ```js 56 | import {showCode} from "./components/showCode.js"; 57 | ``` 58 | -------------------------------------------------------------------------------- /docs/python.md: -------------------------------------------------------------------------------- 1 | # Python data loaders 2 | 3 | Observable Framework supports [data loaders](https://observablehq.com/framework/loaders) written in Python by passing them to the [python3](https://www.python.org/) command. The latter must be available on your `$PATH`. Any library used by your scripts must also be installed. 4 | 5 | ## CSV 6 | 7 | The data loader below reads in the penguins data from a local file, performs [logistic regression](https://en.wikipedia.org/wiki/Logistic_regression), then outputs a single CSV with the original penguin data enriched with species classifications. 8 | 9 | Create a file in your project source root with the .csv.py double extension (for example, `docs/data/my-data.csv.py`), then paste the Python code below to get started. 10 | 11 | 12 | 13 | ```js 14 | showCode(FileAttachment("data/penguin-logistic.csv.py")) 15 | ``` 16 | 17 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 18 | 19 | ```js echo 20 | const penguinClassification = FileAttachment("data/penguin-logistic.csv").csv({typed: true}); 21 | ``` 22 | 23 |

The file attachment name does not include the .py extension. We rely on Framework’s routing to run the appropriate data loader. 24 | 25 | We can now display the dataset with the predictions: 26 | 27 | ```js echo 28 | Inputs.table(penguinClassification) 29 | ``` 30 | 31 | 32 | 33 | ## PNG 34 | 35 | The data loader below accesses [birth data for Lake County, Illinois](https://data-lakecountyil.opendata.arcgis.com/datasets/lakecountyil::birth-statistics/explore) from a local geoJSON file. A simple choropleth of birth rates is created using `matplotlib`, and output as a PNG file. 36 | 37 | Create a file in your project source root with the .png.py double extension (for example, `docs/data/my-png.png.py`), then paste the Python code below to get started. 38 | 39 | ```js 40 | showCode(FileAttachment("data/birth-statistics.png.py")) 41 | ``` 42 | 43 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 44 | 45 | ```js echo 46 | const birthRateMap = FileAttachment("data/birth-statistics.png").image(); 47 | ``` 48 | 49 |

The file attachment name does not include the .py extension. We rely on Framework’s routing to run the appropriate data loader. 50 | 51 | ```js echo 52 | birthRateMap 53 | ``` 54 | 55 | ## Zip 56 | 57 | The data loader below accesses data on [earthquakes from the USGS](https://www.usgs.gov/programs/earthquake-hazards/earthquakes), then combines metadata (as JSON) and selected earthquake magnitude and location (as a CSV) in a zip archive. 58 | 59 | Create a file in your project source root with the .zip.py double extension (for example, `docs/data/my-data.zip.py`), then paste the Python code below to get started. 60 | 61 | ```js 62 | showCode(FileAttachment("data/earthquakes.zip.py")) 63 | ``` 64 | 65 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 66 | 67 | ```js echo 68 | const quakeMetadata = FileAttachment("data/earthquakes/quakes_metadata.json").json() 69 | ``` 70 | 71 | ```js echo 72 | const quakeData = FileAttachment("data/earthquakes/quakes.csv").csv({typed: true}) 73 | ``` 74 | 75 |

The file attachment name does not include the .py extension. We rely on Framework’s routing to run the appropriate data loader. 76 | 77 | ```js echo 78 | quakeData 79 | ``` 80 | 81 | You can alternatively access the zip archive as a whole: 82 | 83 | ```js echo 84 | const quakeZip = FileAttachment("data/earthquakes.zip").zip() 85 | ``` 86 | 87 | ```js echo 88 | quakeZip 89 | ``` 90 | 91 | ```js 92 | import {showCode} from "./components/showCode.js"; 93 | ``` 94 | -------------------------------------------------------------------------------- /docs/r.md: -------------------------------------------------------------------------------- 1 | # R data loader examples 2 | 3 | Observable Framework supports [data loaders](../loaders) written in R, by passing them to the [Rscript](https://www.r-project.org/) command. The latter must be available on your `$PATH`. Any library used by your scripts must also be installed. 4 | 5 | ## CSV 6 | 7 | The data loader below reads in the [penguins data](https://journal.r-project.org/articles/RJ-2022-020/) from a local file, performs [k-means clustering](https://en.wikipedia.org/wiki/K-means_clustering) based on culmen (bill) length and depth, then outputs a CSV file the original penguins data enriched with cluster assignments. 8 | 9 | Create a file in your project source root with the .csv.R double extension (for example, `docs/data/my-data.csv.R`), then paste the R code below to get started. 10 | 11 | ```js 12 | showCode(FileAttachment("data/penguin-kmeans.csv.R")) 13 | ``` 14 | 15 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 16 | 17 | ```js echo 18 | const penguinKmeans = FileAttachment("data/penguin-kmeans.csv").csv({typed: true}); 19 | ``` 20 | 21 |

The file attachment name does not include the .R extension. We rely on Framework’s routing to run the appropriate data loader. 22 | 23 | We can now display the dataset with the assigned clusters: 24 | 25 | ```js 26 | Inputs.table(penguinKmeans) 27 | ``` 28 | 29 | ## JSON 30 | 31 | The data loader below accesses the text of _War and Peace_ from the [Gutenberg Project](https://www.gutenberg.org/ebooks/2600), finds the most common words by chapter, and returns a JSON. 32 | 33 | Create a file in your project source root with the .json.R double extension (for example, `docs/data/my-data.json.R`), then paste the R code below to get started. 34 | 35 | ```js 36 | showCode(FileAttachment("data/tolstoy.json.R")) 37 | ``` 38 | 39 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 40 | 41 | ```js echo 42 | const text = FileAttachment("data/tolstoy.json").json() 43 | ``` 44 | 45 |

The file attachment name does not include the .R extension. We rely on Framework’s routing to run the appropriate data loader. 46 | 47 | ```js echo 48 | text 49 | ``` 50 | 51 | ## ZIP 52 | 53 | The data loader below reads in the [penguins data](https://journal.r-project.org/articles/RJ-2022-020/) from a local file, performs multiple linear regression, then outputs multiple files (with model estimates and predictions) as a ZIP archive. 54 | 55 | Create a file in your project source root with the .zip.R double extension (for example, `docs/data/my-data.zip.R`), then paste the R code below to get started. 56 | 57 | ```js 58 | showCode(FileAttachment("data/penguin-mlr.zip.R")) 59 | ``` 60 | 61 | The `system` function invokes the system command `"zip - -r ."`, where: 62 | 63 | - `zip` is the command for zipping files 64 | - `-` means the archive is output to standard output (required for data loaders) 65 | - `-r`, the recursive option, means all files are added to the zip archive 66 | - `.` compresses the current working directory 67 | 68 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 69 | 70 | ```js echo 71 | const modelZip = FileAttachment("data/penguin-mlr.zip").zip(); 72 | ``` 73 | 74 |

The file attachment name does not include the .R extension. We rely on Framework’s routing to run the appropriate data loader. 75 | 76 | You can then access individual files from the ZIP archive: 77 | 78 | ```js echo 79 | const modelEstimates = modelZip.file("estimates.csv").csv({typed: true}); 80 | ``` 81 | 82 | ```js echo 83 | modelEstimates 84 | ``` 85 | 86 | Alternatively, access individual files from the ZIP archive straightaway: 87 | 88 | ```js echo 89 | const modelPredictions = FileAttachment("data/penguin-mlr/predictions.csv").csv({typed: true}) 90 | ``` 91 | 92 | ```js echo 93 | modelPredictions 94 | ``` 95 | 96 | ```js 97 | import {showCode} from "./components/showCode.js"; 98 | ``` 99 | -------------------------------------------------------------------------------- /docs/shell.md: -------------------------------------------------------------------------------- 1 | # Shell script data loader examples 2 | 3 | In Observable Framework, [data loaders](../loaders) can be created in shell scripts — they will be called with the system shell "sh". 4 | 5 | ## Parquet 6 | 7 | The data loader below accesses data on alternative fuel stations from the [U.S. Department of Energy](https://catalog.data.gov/dataset/alternative-fueling-station-locations-422f2), simplifies to only California stations in SQL, then returns an Apache Parquet file. 8 | 9 | Create a file in your project source root with the .parquet.sh double extension (for example, `docs/data/my-data.parquet.sh`), then paste the code below to get started. 10 | 11 | 12 | 13 | ```js 14 | showCode(FileAttachment("data/alt-fuel-stations.parquet.sh")) 15 | ``` 16 | 17 | Then, to access the output (`data/alt-fuel-stations.parquet`) in a page, we create a helper function: 18 | 19 | ```js echo 20 | function absoluteFA(FA) { 21 | const {url} = FA; 22 | FA.url = async function() { 23 | return new URL(await url.apply(FA), document.location.href).href; 24 | } 25 | return FA; 26 | } 27 | ``` 28 | 29 | And read in the file using `FileAttachment`: 30 | 31 | ```js echo 32 | const caAltFuel = await DuckDBClient.of({ 33 | fuelstations: absoluteFA(FileAttachment("data/alt-fuel-stations.parquet")) 34 | }); 35 | ``` 36 | 37 | ```js echo 38 | caAltFuel 39 | ``` 40 | 41 | ```js echo 42 | const fuelTable = caAltFuel.query("SELECT * FROM fuelstations"); 43 | ``` 44 | 45 | ```js echo 46 | Inputs.table(fuelTable) 47 | ``` 48 | 49 | ## JSON 50 | 51 | Sometimes, all you need is `curl`! 52 | 53 | The data loader below accesses geojson of CalTrans districts from the [California Open Data Portal](https://data.ca.gov/dataset/caltrans-districts/resource/668dacf7-e927-4ced-98aa-b495e79d40d2). 54 | 55 | Create a file in your project source root with the .json.sh double extension (for example, `docs/data/my-data.json.sh`), then paste the code below to get started. 56 | 57 | ```js 58 | showCode(FileAttachment("data/caltrans-districts.json.sh")) 59 | ``` 60 | 61 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 62 | 63 | ```js echo 64 | const caltrans = FileAttachment("data/caltrans-districts.json").json() 65 | ``` 66 | 67 |

The file attachment name does not include the .sh extension. We rely on Framework’s routing to run the appropriate data loader. 68 | 69 | We can now explore the JSON output: 70 | 71 | ```js echo 72 | caltrans 73 | ``` 74 | 75 | ## CSV 76 | 77 | Working in a shell script is flexible. Within the shell script, work in whatever you language you like to access and prep your data, then write to standard output. 78 | 79 | The data loader example below starts a Python script, accesses the [penguins data](https://journal.r-project.org/articles/RJ-2022-020/) data from a local file and does some basic wrangling, then writes a CSV to standard output. 80 | 81 | Create a file in your project source root with the .csv.sh double extension (for example, `docs/data/my-data.csv.sh`), then paste the code below to get started. 82 | 83 | ```js 84 | showCode(FileAttachment("data/penguin.csv.sh")) 85 | ``` 86 | 87 | Access the output of the data loader from the client using [`FileAttachment`](https://observablehq.com/framework/javascript/files): 88 | 89 | ```js echo 90 | const penguins = FileAttachment("data/penguin.csv").csv({typed: true}) 91 | ``` 92 | 93 |

The file attachment name does not include the .sh extension. We rely on Framework’s routing to run the appropriate data loader. 94 | 95 | ```js echo 96 | Inputs.table(penguins) 97 | ``` 98 | 99 | ```js 100 | import {showCode} from "./components/showCode.js"; 101 | ``` 102 | -------------------------------------------------------------------------------- /observablehq.config.js: -------------------------------------------------------------------------------- 1 | // See https://observablehq.com/framework/config for documentation. 2 | export default { 3 | // The project’s title; used in the sidebar and webpage titles. 4 | title: "Data Loader Examples", 5 | 6 | // The pages and sections in the sidebar. If you don’t specify this option, 7 | // all pages will be listed in alphabetical order. Listing pages explicitly 8 | // lets you organize them into sections and have unlisted pages. 9 | // pages: [ 10 | // { 11 | // name: "Examples", 12 | // pages: [ 13 | // {name: "Dashboard", path: "/example-dashboard"}, 14 | // {name: "Report", path: "/example-report"} 15 | // ] 16 | // } 17 | // ], 18 | 19 | // Some additional configuration options and their defaults: 20 | // theme: "default", // try "light", "dark", "slate", etc. 21 | // header: "", // what to show in the header (HTML) 22 | // footer: "Built with Observable.", // what to show in the footer (HTML) 23 | // toc: true, // whether to show the table of contents 24 | // pager: true, // whether to show previous & next links in the footer 25 | // root: "docs", // path to the source root for preview 26 | // output: "dist", // path to the output root for build 27 | // search: true, // activate search 28 | }; 29 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "module", 3 | "private": true, 4 | "scripts": { 5 | "clean": "rimraf docs/.observablehq/cache", 6 | "build": "rimraf dist && observable build", 7 | "dev": "observable preview", 8 | "deploy": "observable deploy", 9 | "observable": "observable" 10 | }, 11 | "dependencies": { 12 | "@observablehq/framework": "latest", 13 | "d3": "^7.9.0", 14 | "d3-dsv": "^3.0.1", 15 | "d3-time-format": "^4.1.0" 16 | }, 17 | "devDependencies": { 18 | "rimraf": "^5.0.5" 19 | }, 20 | "engines": { 21 | "node": ">=18" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@clack/core@^0.3.3": 6 | version "0.3.4" 7 | resolved "https://registry.npmjs.org/@clack/core/-/core-0.3.4.tgz" 8 | integrity sha512-H4hxZDXgHtWTwV3RAVenqcC4VbJZNegbBjlPvzOzCouXtS2y3sDvlO3IsbrPNWuLWPPlYVYPghQdSF64683Ldw== 9 | dependencies: 10 | picocolors "^1.0.0" 11 | sisteransi "^1.0.5" 12 | 13 | "@clack/prompts@^0.7.0": 14 | version "0.7.0" 15 | resolved "https://registry.npmjs.org/@clack/prompts/-/prompts-0.7.0.tgz" 16 | integrity sha512-0MhX9/B4iL6Re04jPrttDm+BsP8y6mS7byuv0BvXgdXhbV5PdlsHt55dvNsuBCPZ7xq1oTAOOuotR9NFbQyMSA== 17 | dependencies: 18 | "@clack/core" "^0.3.3" 19 | picocolors "^1.0.0" 20 | sisteransi "^1.0.5" 21 | 22 | "@esbuild/aix-ppc64@0.19.12": 23 | version "0.19.12" 24 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" 25 | integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== 26 | 27 | "@esbuild/aix-ppc64@0.20.2": 28 | version "0.20.2" 29 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" 30 | integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== 31 | 32 | "@esbuild/android-arm64@0.19.12": 33 | version "0.19.12" 34 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" 35 | integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== 36 | 37 | "@esbuild/android-arm64@0.20.2": 38 | version "0.20.2" 39 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" 40 | integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== 41 | 42 | "@esbuild/android-arm@0.19.12": 43 | version "0.19.12" 44 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" 45 | integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== 46 | 47 | "@esbuild/android-arm@0.20.2": 48 | version "0.20.2" 49 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" 50 | integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== 51 | 52 | "@esbuild/android-x64@0.19.12": 53 | version "0.19.12" 54 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" 55 | integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== 56 | 57 | "@esbuild/android-x64@0.20.2": 58 | version "0.20.2" 59 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" 60 | integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== 61 | 62 | "@esbuild/darwin-arm64@0.19.12": 63 | version "0.19.12" 64 | resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz" 65 | integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== 66 | 67 | "@esbuild/darwin-arm64@0.20.2": 68 | version "0.20.2" 69 | resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz" 70 | integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== 71 | 72 | "@esbuild/darwin-x64@0.19.12": 73 | version "0.19.12" 74 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" 75 | integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== 76 | 77 | "@esbuild/darwin-x64@0.20.2": 78 | version "0.20.2" 79 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" 80 | integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== 81 | 82 | "@esbuild/freebsd-arm64@0.19.12": 83 | version "0.19.12" 84 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" 85 | integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== 86 | 87 | "@esbuild/freebsd-arm64@0.20.2": 88 | version "0.20.2" 89 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" 90 | integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== 91 | 92 | "@esbuild/freebsd-x64@0.19.12": 93 | version "0.19.12" 94 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" 95 | integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== 96 | 97 | "@esbuild/freebsd-x64@0.20.2": 98 | version "0.20.2" 99 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" 100 | integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== 101 | 102 | "@esbuild/linux-arm64@0.19.12": 103 | version "0.19.12" 104 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" 105 | integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== 106 | 107 | "@esbuild/linux-arm64@0.20.2": 108 | version "0.20.2" 109 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" 110 | integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== 111 | 112 | "@esbuild/linux-arm@0.19.12": 113 | version "0.19.12" 114 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" 115 | integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== 116 | 117 | "@esbuild/linux-arm@0.20.2": 118 | version "0.20.2" 119 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" 120 | integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== 121 | 122 | "@esbuild/linux-ia32@0.19.12": 123 | version "0.19.12" 124 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" 125 | integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== 126 | 127 | "@esbuild/linux-ia32@0.20.2": 128 | version "0.20.2" 129 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" 130 | integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== 131 | 132 | "@esbuild/linux-loong64@0.19.12": 133 | version "0.19.12" 134 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" 135 | integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== 136 | 137 | "@esbuild/linux-loong64@0.20.2": 138 | version "0.20.2" 139 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" 140 | integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== 141 | 142 | "@esbuild/linux-mips64el@0.19.12": 143 | version "0.19.12" 144 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" 145 | integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== 146 | 147 | "@esbuild/linux-mips64el@0.20.2": 148 | version "0.20.2" 149 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" 150 | integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== 151 | 152 | "@esbuild/linux-ppc64@0.19.12": 153 | version "0.19.12" 154 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" 155 | integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== 156 | 157 | "@esbuild/linux-ppc64@0.20.2": 158 | version "0.20.2" 159 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" 160 | integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== 161 | 162 | "@esbuild/linux-riscv64@0.19.12": 163 | version "0.19.12" 164 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" 165 | integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== 166 | 167 | "@esbuild/linux-riscv64@0.20.2": 168 | version "0.20.2" 169 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" 170 | integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== 171 | 172 | "@esbuild/linux-s390x@0.19.12": 173 | version "0.19.12" 174 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" 175 | integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== 176 | 177 | "@esbuild/linux-s390x@0.20.2": 178 | version "0.20.2" 179 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" 180 | integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== 181 | 182 | "@esbuild/linux-x64@0.19.12": 183 | version "0.19.12" 184 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" 185 | integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== 186 | 187 | "@esbuild/linux-x64@0.20.2": 188 | version "0.20.2" 189 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" 190 | integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== 191 | 192 | "@esbuild/netbsd-x64@0.19.12": 193 | version "0.19.12" 194 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" 195 | integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== 196 | 197 | "@esbuild/netbsd-x64@0.20.2": 198 | version "0.20.2" 199 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" 200 | integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== 201 | 202 | "@esbuild/openbsd-x64@0.19.12": 203 | version "0.19.12" 204 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" 205 | integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== 206 | 207 | "@esbuild/openbsd-x64@0.20.2": 208 | version "0.20.2" 209 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" 210 | integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== 211 | 212 | "@esbuild/sunos-x64@0.19.12": 213 | version "0.19.12" 214 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" 215 | integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== 216 | 217 | "@esbuild/sunos-x64@0.20.2": 218 | version "0.20.2" 219 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" 220 | integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== 221 | 222 | "@esbuild/win32-arm64@0.19.12": 223 | version "0.19.12" 224 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" 225 | integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== 226 | 227 | "@esbuild/win32-arm64@0.20.2": 228 | version "0.20.2" 229 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" 230 | integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== 231 | 232 | "@esbuild/win32-ia32@0.19.12": 233 | version "0.19.12" 234 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" 235 | integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== 236 | 237 | "@esbuild/win32-ia32@0.20.2": 238 | version "0.20.2" 239 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" 240 | integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== 241 | 242 | "@esbuild/win32-x64@0.19.12": 243 | version "0.19.12" 244 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" 245 | integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== 246 | 247 | "@esbuild/win32-x64@0.20.2": 248 | version "0.20.2" 249 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" 250 | integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== 251 | 252 | "@isaacs/cliui@^8.0.2": 253 | version "8.0.2" 254 | resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" 255 | integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== 256 | dependencies: 257 | string-width "^5.1.2" 258 | string-width-cjs "npm:string-width@^4.2.0" 259 | strip-ansi "^7.0.1" 260 | strip-ansi-cjs "npm:strip-ansi@^6.0.1" 261 | wrap-ansi "^8.1.0" 262 | wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" 263 | 264 | "@jridgewell/sourcemap-codec@^1.4.15": 265 | version "1.4.15" 266 | resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" 267 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 268 | 269 | "@observablehq/framework@latest": 270 | version "1.6.0" 271 | resolved "https://registry.npmjs.org/@observablehq/framework/-/framework-1.6.0.tgz" 272 | integrity sha512-Uak5dm2guoEe2zwz3zG8rCn3Z5Kb2ql9j+Lo3xKiJYH0epYdfNpdyoUeghkN3HO4DgMu8bUxtgGLPWBiUF0rzg== 273 | dependencies: 274 | "@clack/prompts" "^0.7.0" 275 | "@observablehq/inputs" "^0.10.6" 276 | "@observablehq/runtime" "^5.9.4" 277 | "@rollup/plugin-commonjs" "^25.0.7" 278 | "@rollup/plugin-node-resolve" "^15.2.3" 279 | "@rollup/plugin-virtual" "^3.0.2" 280 | acorn "^8.11.2" 281 | acorn-walk "^8.3.0" 282 | ci-info "^4.0.0" 283 | cross-env "^7.0.3" 284 | cross-spawn "^7.0.3" 285 | d3-array "^3.2.4" 286 | esbuild "^0.20.1" 287 | fast-array-diff "^1.1.0" 288 | gray-matter "^4.0.3" 289 | he "^1.2.0" 290 | highlight.js "^11.8.0" 291 | is-docker "^3.0.0" 292 | is-wsl "^3.1.0" 293 | jsdom "^24.0.0" 294 | jszip "^3.10.1" 295 | markdown-it "^14.0.0" 296 | markdown-it-anchor "^8.6.7" 297 | mime "^4.0.0" 298 | minisearch "^6.3.0" 299 | open "^10.1.0" 300 | pkg-dir "^8.0.0" 301 | rollup "^4.6.0" 302 | rollup-plugin-esbuild "^6.1.0" 303 | semver "^7.5.4" 304 | send "^0.18.0" 305 | tar-stream "^3.1.6" 306 | tsx "^4.7.1" 307 | untildify "^5.0.0" 308 | wrap-ansi "^9.0.0" 309 | ws "^8.14.2" 310 | 311 | "@observablehq/inputs@^0.10.6": 312 | version "0.10.6" 313 | resolved "https://registry.npmjs.org/@observablehq/inputs/-/inputs-0.10.6.tgz" 314 | integrity sha512-fOcpJvyBwPqr9I1QdW55J5x36nxRbfyqRQXVT3li9AvMpy6m14WPo5K0m4cPCxr4IlLIDtM/lq6z1GL3ElA14g== 315 | dependencies: 316 | htl "0.3" 317 | isoformat "^0.2.0" 318 | 319 | "@observablehq/inspector@^5.0.0": 320 | version "5.0.0" 321 | resolved "https://registry.npmjs.org/@observablehq/inspector/-/inspector-5.0.0.tgz" 322 | integrity sha512-Vvg/TQdsZTUaeYbH0IKxYEz37FbRO6kdowoz2PrHLQif54NC1CjEihEjg+ZMSBn587GQxTFABu0CGkFZgtR1UQ== 323 | dependencies: 324 | isoformat "^0.2.0" 325 | 326 | "@observablehq/runtime@^5.9.4": 327 | version "5.9.8" 328 | resolved "https://registry.npmjs.org/@observablehq/runtime/-/runtime-5.9.8.tgz" 329 | integrity sha512-RZZWfibLWX1xOEtNF0/Ajy1LZVNu3thDB9q1jSYTg9jLFYnIFK9BF2+CBpK2Rz0W9zmowWfJsaHHRjctFeV+7A== 330 | dependencies: 331 | "@observablehq/inspector" "^5.0.0" 332 | "@observablehq/stdlib" "^5.0.0" 333 | 334 | "@observablehq/stdlib@^5.0.0": 335 | version "5.8.7" 336 | resolved "https://registry.npmjs.org/@observablehq/stdlib/-/stdlib-5.8.7.tgz" 337 | integrity sha512-XU/lwtjZBAXTZstnBULrpr0v7jbTZqfZPLNeq54H3E9IGFQyjiwFSXDNUNv1PtS6Scts0x6toj47CB4075EmeA== 338 | dependencies: 339 | d3-array "^3.2.0" 340 | d3-dsv "^3.0.1" 341 | d3-require "^1.3.0" 342 | 343 | "@pkgjs/parseargs@^0.11.0": 344 | version "0.11.0" 345 | resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" 346 | integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== 347 | 348 | "@rollup/plugin-commonjs@^25.0.7": 349 | version "25.0.7" 350 | resolved "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz" 351 | integrity sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ== 352 | dependencies: 353 | "@rollup/pluginutils" "^5.0.1" 354 | commondir "^1.0.1" 355 | estree-walker "^2.0.2" 356 | glob "^8.0.3" 357 | is-reference "1.2.1" 358 | magic-string "^0.30.3" 359 | 360 | "@rollup/plugin-node-resolve@^15.2.3": 361 | version "15.2.3" 362 | resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz" 363 | integrity sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ== 364 | dependencies: 365 | "@rollup/pluginutils" "^5.0.1" 366 | "@types/resolve" "1.20.2" 367 | deepmerge "^4.2.2" 368 | is-builtin-module "^3.2.1" 369 | is-module "^1.0.0" 370 | resolve "^1.22.1" 371 | 372 | "@rollup/plugin-virtual@^3.0.2": 373 | version "3.0.2" 374 | resolved "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz" 375 | integrity sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A== 376 | 377 | "@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.5": 378 | version "5.1.0" 379 | resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz" 380 | integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== 381 | dependencies: 382 | "@types/estree" "^1.0.0" 383 | estree-walker "^2.0.2" 384 | picomatch "^2.3.1" 385 | 386 | "@rollup/rollup-android-arm-eabi@4.16.4": 387 | version "4.16.4" 388 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz#5e8930291f1e5ead7fb1171d53ba5c87718de062" 389 | integrity sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q== 390 | 391 | "@rollup/rollup-android-arm64@4.16.4": 392 | version "4.16.4" 393 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz#ffb84f1359c04ec8a022a97110e18a5600f5f638" 394 | integrity sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w== 395 | 396 | "@rollup/rollup-darwin-arm64@4.16.4": 397 | version "4.16.4" 398 | resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz" 399 | integrity sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw== 400 | 401 | "@rollup/rollup-darwin-x64@4.16.4": 402 | version "4.16.4" 403 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz#fcb25ccbaa3dd33a6490e9d1c64bab2e0e16b932" 404 | integrity sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ== 405 | 406 | "@rollup/rollup-linux-arm-gnueabihf@4.16.4": 407 | version "4.16.4" 408 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz#40d46bdfe667e5eca31bf40047460e326d2e26bb" 409 | integrity sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw== 410 | 411 | "@rollup/rollup-linux-arm-musleabihf@4.16.4": 412 | version "4.16.4" 413 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz#7741df2448c11c56588b50835dbfe91b1a10b375" 414 | integrity sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg== 415 | 416 | "@rollup/rollup-linux-arm64-gnu@4.16.4": 417 | version "4.16.4" 418 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz#0a23b02d2933e4c4872ad18d879890b6a4a295df" 419 | integrity sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w== 420 | 421 | "@rollup/rollup-linux-arm64-musl@4.16.4": 422 | version "4.16.4" 423 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz#e37ef259358aa886cc07d782220a4fb83c1e6970" 424 | integrity sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg== 425 | 426 | "@rollup/rollup-linux-powerpc64le-gnu@4.16.4": 427 | version "4.16.4" 428 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz#8c69218b6de05ee2ba211664a2d2ac1e54e43f94" 429 | integrity sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w== 430 | 431 | "@rollup/rollup-linux-riscv64-gnu@4.16.4": 432 | version "4.16.4" 433 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz#d32727dab8f538d9a4a7c03bcf58c436aecd0139" 434 | integrity sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng== 435 | 436 | "@rollup/rollup-linux-s390x-gnu@4.16.4": 437 | version "4.16.4" 438 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz#d46097246a187d99fc9451fe8393b7155b47c5ec" 439 | integrity sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ== 440 | 441 | "@rollup/rollup-linux-x64-gnu@4.16.4": 442 | version "4.16.4" 443 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz#6356c5a03a4afb1c3057490fc51b4764e109dbc7" 444 | integrity sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA== 445 | 446 | "@rollup/rollup-linux-x64-musl@4.16.4": 447 | version "4.16.4" 448 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz#03a5831a9c0d05877b94653b5ddd3020d3c6fb06" 449 | integrity sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA== 450 | 451 | "@rollup/rollup-win32-arm64-msvc@4.16.4": 452 | version "4.16.4" 453 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz#6cc0db57750376b9303bdb6f5482af8974fcae35" 454 | integrity sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA== 455 | 456 | "@rollup/rollup-win32-ia32-msvc@4.16.4": 457 | version "4.16.4" 458 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz#aea0b7e492bd9ed46971cb80bc34f1eb14e07789" 459 | integrity sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w== 460 | 461 | "@rollup/rollup-win32-x64-msvc@4.16.4": 462 | version "4.16.4" 463 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz#c09ad9a132ccb5a67c4f211d909323ab1294f95f" 464 | integrity sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A== 465 | 466 | "@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0": 467 | version "1.0.5" 468 | resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz" 469 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 470 | 471 | "@types/resolve@1.20.2": 472 | version "1.20.2" 473 | resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz" 474 | integrity sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q== 475 | 476 | acorn-walk@^8.3.0: 477 | version "8.3.2" 478 | resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz" 479 | integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== 480 | 481 | acorn@^8.11.2: 482 | version "8.11.3" 483 | resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz" 484 | integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== 485 | 486 | agent-base@^7.0.2, agent-base@^7.1.0: 487 | version "7.1.1" 488 | resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz" 489 | integrity sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA== 490 | dependencies: 491 | debug "^4.3.4" 492 | 493 | ansi-regex@^5.0.1: 494 | version "5.0.1" 495 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" 496 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 497 | 498 | ansi-regex@^6.0.1: 499 | version "6.0.1" 500 | resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" 501 | integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== 502 | 503 | ansi-styles@^4.0.0: 504 | version "4.3.0" 505 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" 506 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 507 | dependencies: 508 | color-convert "^2.0.1" 509 | 510 | ansi-styles@^6.1.0, ansi-styles@^6.2.1: 511 | version "6.2.1" 512 | resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" 513 | integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== 514 | 515 | argparse@^1.0.7: 516 | version "1.0.10" 517 | resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" 518 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 519 | dependencies: 520 | sprintf-js "~1.0.2" 521 | 522 | argparse@^2.0.1: 523 | version "2.0.1" 524 | resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" 525 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 526 | 527 | asynckit@^0.4.0: 528 | version "0.4.0" 529 | resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" 530 | integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== 531 | 532 | b4a@^1.6.4: 533 | version "1.6.6" 534 | resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz" 535 | integrity sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg== 536 | 537 | balanced-match@^1.0.0: 538 | version "1.0.2" 539 | resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" 540 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 541 | 542 | bare-events@^2.2.0: 543 | version "2.2.2" 544 | resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.2.2.tgz" 545 | integrity sha512-h7z00dWdG0PYOQEvChhOSWvOfkIKsdZGkWr083FgN/HyoQuebSew/cgirYqh9SCuy/hRvxc5Vy6Fw8xAmYHLkQ== 546 | 547 | brace-expansion@^2.0.1: 548 | version "2.0.1" 549 | resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" 550 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 551 | dependencies: 552 | balanced-match "^1.0.0" 553 | 554 | builtin-modules@^3.3.0: 555 | version "3.3.0" 556 | resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz" 557 | integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== 558 | 559 | bundle-name@^4.1.0: 560 | version "4.1.0" 561 | resolved "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz" 562 | integrity sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q== 563 | dependencies: 564 | run-applescript "^7.0.0" 565 | 566 | ci-info@^4.0.0: 567 | version "4.0.0" 568 | resolved "https://registry.npmjs.org/ci-info/-/ci-info-4.0.0.tgz" 569 | integrity sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg== 570 | 571 | color-convert@^2.0.1: 572 | version "2.0.1" 573 | resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" 574 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 575 | dependencies: 576 | color-name "~1.1.4" 577 | 578 | color-name@~1.1.4: 579 | version "1.1.4" 580 | resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" 581 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 582 | 583 | combined-stream@^1.0.8: 584 | version "1.0.8" 585 | resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" 586 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 587 | dependencies: 588 | delayed-stream "~1.0.0" 589 | 590 | commander@7: 591 | version "7.2.0" 592 | resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" 593 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 594 | 595 | commondir@^1.0.1: 596 | version "1.0.1" 597 | resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" 598 | integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== 599 | 600 | core-util-is@~1.0.0: 601 | version "1.0.3" 602 | resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" 603 | integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== 604 | 605 | cross-env@^7.0.3: 606 | version "7.0.3" 607 | resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" 608 | integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== 609 | dependencies: 610 | cross-spawn "^7.0.1" 611 | 612 | cross-spawn@^7.0.0, cross-spawn@^7.0.1, cross-spawn@^7.0.3: 613 | version "7.0.3" 614 | resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" 615 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 616 | dependencies: 617 | path-key "^3.1.0" 618 | shebang-command "^2.0.0" 619 | which "^2.0.1" 620 | 621 | cssstyle@^4.0.1: 622 | version "4.0.1" 623 | resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz" 624 | integrity sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ== 625 | dependencies: 626 | rrweb-cssom "^0.6.0" 627 | 628 | "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0, d3-array@^3.2.4: 629 | version "3.2.4" 630 | resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" 631 | integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== 632 | dependencies: 633 | internmap "1 - 2" 634 | 635 | d3-axis@3: 636 | version "3.0.0" 637 | resolved "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz" 638 | integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== 639 | 640 | d3-brush@3: 641 | version "3.0.0" 642 | resolved "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz" 643 | integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== 644 | dependencies: 645 | d3-dispatch "1 - 3" 646 | d3-drag "2 - 3" 647 | d3-interpolate "1 - 3" 648 | d3-selection "3" 649 | d3-transition "3" 650 | 651 | d3-chord@3: 652 | version "3.0.1" 653 | resolved "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz" 654 | integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== 655 | dependencies: 656 | d3-path "1 - 3" 657 | 658 | "d3-color@1 - 3", d3-color@3: 659 | version "3.1.0" 660 | resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" 661 | integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== 662 | 663 | d3-contour@4: 664 | version "4.0.2" 665 | resolved "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz" 666 | integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== 667 | dependencies: 668 | d3-array "^3.2.0" 669 | 670 | d3-delaunay@6: 671 | version "6.0.4" 672 | resolved "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz" 673 | integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== 674 | dependencies: 675 | delaunator "5" 676 | 677 | "d3-dispatch@1 - 3", d3-dispatch@3: 678 | version "3.0.1" 679 | resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz" 680 | integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== 681 | 682 | "d3-drag@2 - 3", d3-drag@3: 683 | version "3.0.0" 684 | resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz" 685 | integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== 686 | dependencies: 687 | d3-dispatch "1 - 3" 688 | d3-selection "3" 689 | 690 | "d3-dsv@1 - 3", d3-dsv@3, d3-dsv@^3.0.1: 691 | version "3.0.1" 692 | resolved "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz" 693 | integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== 694 | dependencies: 695 | commander "7" 696 | iconv-lite "0.6" 697 | rw "1" 698 | 699 | "d3-ease@1 - 3", d3-ease@3: 700 | version "3.0.1" 701 | resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" 702 | integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== 703 | 704 | d3-fetch@3: 705 | version "3.0.1" 706 | resolved "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz" 707 | integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== 708 | dependencies: 709 | d3-dsv "1 - 3" 710 | 711 | d3-force@3: 712 | version "3.0.0" 713 | resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz" 714 | integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== 715 | dependencies: 716 | d3-dispatch "1 - 3" 717 | d3-quadtree "1 - 3" 718 | d3-timer "1 - 3" 719 | 720 | "d3-format@1 - 3", d3-format@3: 721 | version "3.1.0" 722 | resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" 723 | integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== 724 | 725 | d3-geo@3: 726 | version "3.1.1" 727 | resolved "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz" 728 | integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== 729 | dependencies: 730 | d3-array "2.5.0 - 3" 731 | 732 | d3-hierarchy@3: 733 | version "3.1.2" 734 | resolved "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz" 735 | integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== 736 | 737 | "d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: 738 | version "3.0.1" 739 | resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" 740 | integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== 741 | dependencies: 742 | d3-color "1 - 3" 743 | 744 | "d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: 745 | version "3.1.0" 746 | resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" 747 | integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== 748 | 749 | d3-polygon@3: 750 | version "3.0.1" 751 | resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz" 752 | integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== 753 | 754 | "d3-quadtree@1 - 3", d3-quadtree@3: 755 | version "3.0.1" 756 | resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz" 757 | integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== 758 | 759 | d3-random@3: 760 | version "3.0.1" 761 | resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz" 762 | integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== 763 | 764 | d3-require@^1.3.0: 765 | version "1.3.0" 766 | resolved "https://registry.npmjs.org/d3-require/-/d3-require-1.3.0.tgz" 767 | integrity sha512-XaNc2azaAwXhGjmCMtxlD+AowpMfLimVsAoTMpqrvb8CWoA4QqyV12mc4Ue6KSoDvfuS831tsumfhDYxGd4FGA== 768 | 769 | d3-scale-chromatic@3: 770 | version "3.1.0" 771 | resolved "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz" 772 | integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== 773 | dependencies: 774 | d3-color "1 - 3" 775 | d3-interpolate "1 - 3" 776 | 777 | d3-scale@4: 778 | version "4.0.2" 779 | resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" 780 | integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== 781 | dependencies: 782 | d3-array "2.10.0 - 3" 783 | d3-format "1 - 3" 784 | d3-interpolate "1.2.0 - 3" 785 | d3-time "2.1.1 - 3" 786 | d3-time-format "2 - 4" 787 | 788 | "d3-selection@2 - 3", d3-selection@3: 789 | version "3.0.0" 790 | resolved "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz" 791 | integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== 792 | 793 | d3-shape@3: 794 | version "3.2.0" 795 | resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" 796 | integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== 797 | dependencies: 798 | d3-path "^3.1.0" 799 | 800 | "d3-time-format@2 - 4", d3-time-format@4, d3-time-format@^4.1.0: 801 | version "4.1.0" 802 | resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" 803 | integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== 804 | dependencies: 805 | d3-time "1 - 3" 806 | 807 | "d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: 808 | version "3.1.0" 809 | resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" 810 | integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== 811 | dependencies: 812 | d3-array "2 - 3" 813 | 814 | "d3-timer@1 - 3", d3-timer@3: 815 | version "3.0.1" 816 | resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" 817 | integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== 818 | 819 | "d3-transition@2 - 3", d3-transition@3: 820 | version "3.0.1" 821 | resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz" 822 | integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== 823 | dependencies: 824 | d3-color "1 - 3" 825 | d3-dispatch "1 - 3" 826 | d3-ease "1 - 3" 827 | d3-interpolate "1 - 3" 828 | d3-timer "1 - 3" 829 | 830 | d3-zoom@3: 831 | version "3.0.0" 832 | resolved "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz" 833 | integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== 834 | dependencies: 835 | d3-dispatch "1 - 3" 836 | d3-drag "2 - 3" 837 | d3-interpolate "1 - 3" 838 | d3-selection "2 - 3" 839 | d3-transition "2 - 3" 840 | 841 | d3@^7.9.0: 842 | version "7.9.0" 843 | resolved "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz" 844 | integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== 845 | dependencies: 846 | d3-array "3" 847 | d3-axis "3" 848 | d3-brush "3" 849 | d3-chord "3" 850 | d3-color "3" 851 | d3-contour "4" 852 | d3-delaunay "6" 853 | d3-dispatch "3" 854 | d3-drag "3" 855 | d3-dsv "3" 856 | d3-ease "3" 857 | d3-fetch "3" 858 | d3-force "3" 859 | d3-format "3" 860 | d3-geo "3" 861 | d3-hierarchy "3" 862 | d3-interpolate "3" 863 | d3-path "3" 864 | d3-polygon "3" 865 | d3-quadtree "3" 866 | d3-random "3" 867 | d3-scale "4" 868 | d3-scale-chromatic "3" 869 | d3-selection "3" 870 | d3-shape "3" 871 | d3-time "3" 872 | d3-time-format "4" 873 | d3-timer "3" 874 | d3-transition "3" 875 | d3-zoom "3" 876 | 877 | data-urls@^5.0.0: 878 | version "5.0.0" 879 | resolved "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz" 880 | integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== 881 | dependencies: 882 | whatwg-mimetype "^4.0.0" 883 | whatwg-url "^14.0.0" 884 | 885 | debug@2.6.9: 886 | version "2.6.9" 887 | resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" 888 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 889 | dependencies: 890 | ms "2.0.0" 891 | 892 | debug@4, debug@^4.3.4: 893 | version "4.3.4" 894 | resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" 895 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 896 | dependencies: 897 | ms "2.1.2" 898 | 899 | decimal.js@^10.4.3: 900 | version "10.4.3" 901 | resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz" 902 | integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== 903 | 904 | deepmerge@^4.2.2: 905 | version "4.3.1" 906 | resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" 907 | integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== 908 | 909 | default-browser-id@^5.0.0: 910 | version "5.0.0" 911 | resolved "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz" 912 | integrity sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA== 913 | 914 | default-browser@^5.2.1: 915 | version "5.2.1" 916 | resolved "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz" 917 | integrity sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg== 918 | dependencies: 919 | bundle-name "^4.1.0" 920 | default-browser-id "^5.0.0" 921 | 922 | define-lazy-prop@^3.0.0: 923 | version "3.0.0" 924 | resolved "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz" 925 | integrity sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg== 926 | 927 | delaunator@5: 928 | version "5.0.1" 929 | resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz" 930 | integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== 931 | dependencies: 932 | robust-predicates "^3.0.2" 933 | 934 | delayed-stream@~1.0.0: 935 | version "1.0.0" 936 | resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" 937 | integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== 938 | 939 | depd@2.0.0: 940 | version "2.0.0" 941 | resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" 942 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 943 | 944 | destroy@1.2.0: 945 | version "1.2.0" 946 | resolved "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz" 947 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 948 | 949 | eastasianwidth@^0.2.0: 950 | version "0.2.0" 951 | resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" 952 | integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== 953 | 954 | ee-first@1.1.1: 955 | version "1.1.1" 956 | resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" 957 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 958 | 959 | emoji-regex@^10.3.0: 960 | version "10.3.0" 961 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" 962 | integrity sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw== 963 | 964 | emoji-regex@^8.0.0: 965 | version "8.0.0" 966 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" 967 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 968 | 969 | emoji-regex@^9.2.2: 970 | version "9.2.2" 971 | resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" 972 | integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== 973 | 974 | encodeurl@~1.0.2: 975 | version "1.0.2" 976 | resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz" 977 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 978 | 979 | entities@^4.4.0: 980 | version "4.5.0" 981 | resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" 982 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 983 | 984 | es-module-lexer@^1.3.1: 985 | version "1.5.0" 986 | resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz" 987 | integrity sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw== 988 | 989 | esbuild@^0.20.1: 990 | version "0.20.2" 991 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz" 992 | integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== 993 | optionalDependencies: 994 | "@esbuild/aix-ppc64" "0.20.2" 995 | "@esbuild/android-arm" "0.20.2" 996 | "@esbuild/android-arm64" "0.20.2" 997 | "@esbuild/android-x64" "0.20.2" 998 | "@esbuild/darwin-arm64" "0.20.2" 999 | "@esbuild/darwin-x64" "0.20.2" 1000 | "@esbuild/freebsd-arm64" "0.20.2" 1001 | "@esbuild/freebsd-x64" "0.20.2" 1002 | "@esbuild/linux-arm" "0.20.2" 1003 | "@esbuild/linux-arm64" "0.20.2" 1004 | "@esbuild/linux-ia32" "0.20.2" 1005 | "@esbuild/linux-loong64" "0.20.2" 1006 | "@esbuild/linux-mips64el" "0.20.2" 1007 | "@esbuild/linux-ppc64" "0.20.2" 1008 | "@esbuild/linux-riscv64" "0.20.2" 1009 | "@esbuild/linux-s390x" "0.20.2" 1010 | "@esbuild/linux-x64" "0.20.2" 1011 | "@esbuild/netbsd-x64" "0.20.2" 1012 | "@esbuild/openbsd-x64" "0.20.2" 1013 | "@esbuild/sunos-x64" "0.20.2" 1014 | "@esbuild/win32-arm64" "0.20.2" 1015 | "@esbuild/win32-ia32" "0.20.2" 1016 | "@esbuild/win32-x64" "0.20.2" 1017 | 1018 | esbuild@~0.19.10: 1019 | version "0.19.12" 1020 | resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz" 1021 | integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== 1022 | optionalDependencies: 1023 | "@esbuild/aix-ppc64" "0.19.12" 1024 | "@esbuild/android-arm" "0.19.12" 1025 | "@esbuild/android-arm64" "0.19.12" 1026 | "@esbuild/android-x64" "0.19.12" 1027 | "@esbuild/darwin-arm64" "0.19.12" 1028 | "@esbuild/darwin-x64" "0.19.12" 1029 | "@esbuild/freebsd-arm64" "0.19.12" 1030 | "@esbuild/freebsd-x64" "0.19.12" 1031 | "@esbuild/linux-arm" "0.19.12" 1032 | "@esbuild/linux-arm64" "0.19.12" 1033 | "@esbuild/linux-ia32" "0.19.12" 1034 | "@esbuild/linux-loong64" "0.19.12" 1035 | "@esbuild/linux-mips64el" "0.19.12" 1036 | "@esbuild/linux-ppc64" "0.19.12" 1037 | "@esbuild/linux-riscv64" "0.19.12" 1038 | "@esbuild/linux-s390x" "0.19.12" 1039 | "@esbuild/linux-x64" "0.19.12" 1040 | "@esbuild/netbsd-x64" "0.19.12" 1041 | "@esbuild/openbsd-x64" "0.19.12" 1042 | "@esbuild/sunos-x64" "0.19.12" 1043 | "@esbuild/win32-arm64" "0.19.12" 1044 | "@esbuild/win32-ia32" "0.19.12" 1045 | "@esbuild/win32-x64" "0.19.12" 1046 | 1047 | escape-html@~1.0.3: 1048 | version "1.0.3" 1049 | resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz" 1050 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 1051 | 1052 | esprima@^4.0.0: 1053 | version "4.0.1" 1054 | resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" 1055 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1056 | 1057 | estree-walker@^2.0.2: 1058 | version "2.0.2" 1059 | resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" 1060 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 1061 | 1062 | etag@~1.8.1: 1063 | version "1.8.1" 1064 | resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" 1065 | integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== 1066 | 1067 | extend-shallow@^2.0.1: 1068 | version "2.0.1" 1069 | resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 1070 | integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug== 1071 | dependencies: 1072 | is-extendable "^0.1.0" 1073 | 1074 | fast-array-diff@^1.1.0: 1075 | version "1.1.0" 1076 | resolved "https://registry.npmjs.org/fast-array-diff/-/fast-array-diff-1.1.0.tgz" 1077 | integrity sha512-muSPyZa/yHCoDQhah9th57AmLENB1nekbrUoLAqOpQXdl1Kw8VbH24Syl5XLscaQJlx7KRU95bfTDPvVB5BJvw== 1078 | 1079 | fast-fifo@^1.1.0, fast-fifo@^1.2.0: 1080 | version "1.3.2" 1081 | resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz" 1082 | integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ== 1083 | 1084 | find-up-simple@^1.0.0: 1085 | version "1.0.0" 1086 | resolved "https://registry.npmjs.org/find-up-simple/-/find-up-simple-1.0.0.tgz" 1087 | integrity sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw== 1088 | 1089 | foreground-child@^3.1.0: 1090 | version "3.1.1" 1091 | resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz" 1092 | integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== 1093 | dependencies: 1094 | cross-spawn "^7.0.0" 1095 | signal-exit "^4.0.1" 1096 | 1097 | form-data@^4.0.0: 1098 | version "4.0.0" 1099 | resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" 1100 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 1101 | dependencies: 1102 | asynckit "^0.4.0" 1103 | combined-stream "^1.0.8" 1104 | mime-types "^2.1.12" 1105 | 1106 | fresh@0.5.2: 1107 | version "0.5.2" 1108 | resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz" 1109 | integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== 1110 | 1111 | fs.realpath@^1.0.0: 1112 | version "1.0.0" 1113 | resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" 1114 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1115 | 1116 | fsevents@~2.3.2, fsevents@~2.3.3: 1117 | version "2.3.3" 1118 | resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" 1119 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 1120 | 1121 | function-bind@^1.1.2: 1122 | version "1.1.2" 1123 | resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" 1124 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 1125 | 1126 | get-east-asian-width@^1.0.0: 1127 | version "1.2.0" 1128 | resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz" 1129 | integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== 1130 | 1131 | get-tsconfig@^4.7.2: 1132 | version "4.7.3" 1133 | resolved "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz" 1134 | integrity sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg== 1135 | dependencies: 1136 | resolve-pkg-maps "^1.0.0" 1137 | 1138 | glob@^10.3.7: 1139 | version "10.3.12" 1140 | resolved "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz" 1141 | integrity sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg== 1142 | dependencies: 1143 | foreground-child "^3.1.0" 1144 | jackspeak "^2.3.6" 1145 | minimatch "^9.0.1" 1146 | minipass "^7.0.4" 1147 | path-scurry "^1.10.2" 1148 | 1149 | glob@^8.0.3: 1150 | version "8.1.0" 1151 | resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz" 1152 | integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== 1153 | dependencies: 1154 | fs.realpath "^1.0.0" 1155 | inflight "^1.0.4" 1156 | inherits "2" 1157 | minimatch "^5.0.1" 1158 | once "^1.3.0" 1159 | 1160 | gray-matter@^4.0.3: 1161 | version "4.0.3" 1162 | resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" 1163 | integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== 1164 | dependencies: 1165 | js-yaml "^3.13.1" 1166 | kind-of "^6.0.2" 1167 | section-matter "^1.0.0" 1168 | strip-bom-string "^1.0.0" 1169 | 1170 | hasown@^2.0.0: 1171 | version "2.0.2" 1172 | resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" 1173 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 1174 | dependencies: 1175 | function-bind "^1.1.2" 1176 | 1177 | he@^1.2.0: 1178 | version "1.2.0" 1179 | resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" 1180 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 1181 | 1182 | highlight.js@^11.8.0: 1183 | version "11.9.0" 1184 | resolved "https://registry.npmjs.org/highlight.js/-/highlight.js-11.9.0.tgz" 1185 | integrity sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw== 1186 | 1187 | htl@0.3: 1188 | version "0.3.1" 1189 | resolved "https://registry.npmjs.org/htl/-/htl-0.3.1.tgz" 1190 | integrity sha512-1LBtd+XhSc+++jpOOt0lCcEycXs/zTQSupOISnVAUmvGBpV7DH+C2M6hwV7zWYfpTMMg9ch4NO0lHiOTAMHdVA== 1191 | 1192 | html-encoding-sniffer@^4.0.0: 1193 | version "4.0.0" 1194 | resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz" 1195 | integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== 1196 | dependencies: 1197 | whatwg-encoding "^3.1.1" 1198 | 1199 | http-errors@2.0.0: 1200 | version "2.0.0" 1201 | resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" 1202 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 1203 | dependencies: 1204 | depd "2.0.0" 1205 | inherits "2.0.4" 1206 | setprototypeof "1.2.0" 1207 | statuses "2.0.1" 1208 | toidentifier "1.0.1" 1209 | 1210 | http-proxy-agent@^7.0.0: 1211 | version "7.0.2" 1212 | resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz" 1213 | integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig== 1214 | dependencies: 1215 | agent-base "^7.1.0" 1216 | debug "^4.3.4" 1217 | 1218 | https-proxy-agent@^7.0.2: 1219 | version "7.0.4" 1220 | resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz" 1221 | integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== 1222 | dependencies: 1223 | agent-base "^7.0.2" 1224 | debug "4" 1225 | 1226 | iconv-lite@0.6, iconv-lite@0.6.3: 1227 | version "0.6.3" 1228 | resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" 1229 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 1230 | dependencies: 1231 | safer-buffer ">= 2.1.2 < 3.0.0" 1232 | 1233 | immediate@~3.0.5: 1234 | version "3.0.6" 1235 | resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz" 1236 | integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== 1237 | 1238 | inflight@^1.0.4: 1239 | version "1.0.6" 1240 | resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" 1241 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1242 | dependencies: 1243 | once "^1.3.0" 1244 | wrappy "1" 1245 | 1246 | inherits@2, inherits@2.0.4, inherits@~2.0.3: 1247 | version "2.0.4" 1248 | resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" 1249 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1250 | 1251 | "internmap@1 - 2": 1252 | version "2.0.3" 1253 | resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" 1254 | integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== 1255 | 1256 | is-builtin-module@^3.2.1: 1257 | version "3.2.1" 1258 | resolved "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz" 1259 | integrity sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A== 1260 | dependencies: 1261 | builtin-modules "^3.3.0" 1262 | 1263 | is-core-module@^2.13.0: 1264 | version "2.13.1" 1265 | resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz" 1266 | integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== 1267 | dependencies: 1268 | hasown "^2.0.0" 1269 | 1270 | is-docker@^3.0.0: 1271 | version "3.0.0" 1272 | resolved "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz" 1273 | integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== 1274 | 1275 | is-extendable@^0.1.0: 1276 | version "0.1.1" 1277 | resolved "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1278 | integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw== 1279 | 1280 | is-fullwidth-code-point@^3.0.0: 1281 | version "3.0.0" 1282 | resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" 1283 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1284 | 1285 | is-inside-container@^1.0.0: 1286 | version "1.0.0" 1287 | resolved "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz" 1288 | integrity sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA== 1289 | dependencies: 1290 | is-docker "^3.0.0" 1291 | 1292 | is-module@^1.0.0: 1293 | version "1.0.0" 1294 | resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz" 1295 | integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== 1296 | 1297 | is-potential-custom-element-name@^1.0.1: 1298 | version "1.0.1" 1299 | resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz" 1300 | integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== 1301 | 1302 | is-reference@1.2.1: 1303 | version "1.2.1" 1304 | resolved "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz" 1305 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 1306 | dependencies: 1307 | "@types/estree" "*" 1308 | 1309 | is-unicode-supported@*: 1310 | version "2.0.0" 1311 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz#fdf32df9ae98ff6ab2cedc155a5a6e895701c451" 1312 | integrity sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q== 1313 | 1314 | is-wsl@^3.1.0: 1315 | version "3.1.0" 1316 | resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz" 1317 | integrity sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw== 1318 | dependencies: 1319 | is-inside-container "^1.0.0" 1320 | 1321 | isarray@~1.0.0: 1322 | version "1.0.0" 1323 | resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1324 | integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== 1325 | 1326 | isexe@^2.0.0: 1327 | version "2.0.0" 1328 | resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 1329 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1330 | 1331 | isoformat@^0.2.0: 1332 | version "0.2.1" 1333 | resolved "https://registry.npmjs.org/isoformat/-/isoformat-0.2.1.tgz" 1334 | integrity sha512-tFLRAygk9NqrRPhJSnNGh7g7oaVWDwR0wKh/GM2LgmPa50Eg4UfyaCO4I8k6EqJHl1/uh2RAD6g06n5ygEnrjQ== 1335 | 1336 | jackspeak@^2.3.6: 1337 | version "2.3.6" 1338 | resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz" 1339 | integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ== 1340 | dependencies: 1341 | "@isaacs/cliui" "^8.0.2" 1342 | optionalDependencies: 1343 | "@pkgjs/parseargs" "^0.11.0" 1344 | 1345 | js-yaml@^3.13.1: 1346 | version "3.14.1" 1347 | resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" 1348 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1349 | dependencies: 1350 | argparse "^1.0.7" 1351 | esprima "^4.0.0" 1352 | 1353 | jsdom@^24.0.0: 1354 | version "24.0.0" 1355 | resolved "https://registry.npmjs.org/jsdom/-/jsdom-24.0.0.tgz" 1356 | integrity sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A== 1357 | dependencies: 1358 | cssstyle "^4.0.1" 1359 | data-urls "^5.0.0" 1360 | decimal.js "^10.4.3" 1361 | form-data "^4.0.0" 1362 | html-encoding-sniffer "^4.0.0" 1363 | http-proxy-agent "^7.0.0" 1364 | https-proxy-agent "^7.0.2" 1365 | is-potential-custom-element-name "^1.0.1" 1366 | nwsapi "^2.2.7" 1367 | parse5 "^7.1.2" 1368 | rrweb-cssom "^0.6.0" 1369 | saxes "^6.0.0" 1370 | symbol-tree "^3.2.4" 1371 | tough-cookie "^4.1.3" 1372 | w3c-xmlserializer "^5.0.0" 1373 | webidl-conversions "^7.0.0" 1374 | whatwg-encoding "^3.1.1" 1375 | whatwg-mimetype "^4.0.0" 1376 | whatwg-url "^14.0.0" 1377 | ws "^8.16.0" 1378 | xml-name-validator "^5.0.0" 1379 | 1380 | jszip@^3.10.1: 1381 | version "3.10.1" 1382 | resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz" 1383 | integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== 1384 | dependencies: 1385 | lie "~3.3.0" 1386 | pako "~1.0.2" 1387 | readable-stream "~2.3.6" 1388 | setimmediate "^1.0.5" 1389 | 1390 | kind-of@^6.0.0, kind-of@^6.0.2: 1391 | version "6.0.3" 1392 | resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" 1393 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1394 | 1395 | lie@~3.3.0: 1396 | version "3.3.0" 1397 | resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz" 1398 | integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== 1399 | dependencies: 1400 | immediate "~3.0.5" 1401 | 1402 | linkify-it@^5.0.0: 1403 | version "5.0.0" 1404 | resolved "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz" 1405 | integrity sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ== 1406 | dependencies: 1407 | uc.micro "^2.0.0" 1408 | 1409 | lru-cache@^10.2.0: 1410 | version "10.2.0" 1411 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz" 1412 | integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q== 1413 | 1414 | lru-cache@^6.0.0: 1415 | version "6.0.0" 1416 | resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" 1417 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1418 | dependencies: 1419 | yallist "^4.0.0" 1420 | 1421 | magic-string@^0.30.3: 1422 | version "0.30.10" 1423 | resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz" 1424 | integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== 1425 | dependencies: 1426 | "@jridgewell/sourcemap-codec" "^1.4.15" 1427 | 1428 | markdown-it-anchor@^8.6.7: 1429 | version "8.6.7" 1430 | resolved "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz" 1431 | integrity sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA== 1432 | 1433 | markdown-it@^14.0.0: 1434 | version "14.1.0" 1435 | resolved "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz" 1436 | integrity sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg== 1437 | dependencies: 1438 | argparse "^2.0.1" 1439 | entities "^4.4.0" 1440 | linkify-it "^5.0.0" 1441 | mdurl "^2.0.0" 1442 | punycode.js "^2.3.1" 1443 | uc.micro "^2.1.0" 1444 | 1445 | mdurl@^2.0.0: 1446 | version "2.0.0" 1447 | resolved "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz" 1448 | integrity sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w== 1449 | 1450 | mime-db@1.52.0: 1451 | version "1.52.0" 1452 | resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" 1453 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1454 | 1455 | mime-types@^2.1.12: 1456 | version "2.1.35" 1457 | resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" 1458 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1459 | dependencies: 1460 | mime-db "1.52.0" 1461 | 1462 | mime@1.6.0: 1463 | version "1.6.0" 1464 | resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz" 1465 | integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== 1466 | 1467 | mime@^4.0.0: 1468 | version "4.0.2" 1469 | resolved "https://registry.npmjs.org/mime/-/mime-4.0.2.tgz" 1470 | integrity sha512-rSR2L7RhEm0ifwn6lZAa+CcLy7EEl6POovp3QcnFHb/C5P4B+h6u+yCQPQaWzNdecHL8p85zRowrAjpF9F46Og== 1471 | 1472 | minimatch@^5.0.1: 1473 | version "5.1.6" 1474 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz" 1475 | integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== 1476 | dependencies: 1477 | brace-expansion "^2.0.1" 1478 | 1479 | minimatch@^9.0.1: 1480 | version "9.0.4" 1481 | resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz" 1482 | integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== 1483 | dependencies: 1484 | brace-expansion "^2.0.1" 1485 | 1486 | "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4: 1487 | version "7.0.4" 1488 | resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz" 1489 | integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== 1490 | 1491 | minisearch@^6.3.0: 1492 | version "6.3.0" 1493 | resolved "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz" 1494 | integrity sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ== 1495 | 1496 | ms@2.0.0: 1497 | version "2.0.0" 1498 | resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" 1499 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1500 | 1501 | ms@2.1.2: 1502 | version "2.1.2" 1503 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" 1504 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1505 | 1506 | ms@2.1.3: 1507 | version "2.1.3" 1508 | resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" 1509 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1510 | 1511 | nwsapi@^2.2.7: 1512 | version "2.2.9" 1513 | resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz" 1514 | integrity sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg== 1515 | 1516 | on-finished@2.4.1: 1517 | version "2.4.1" 1518 | resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz" 1519 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1520 | dependencies: 1521 | ee-first "1.1.1" 1522 | 1523 | once@^1.3.0: 1524 | version "1.4.0" 1525 | resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 1526 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1527 | dependencies: 1528 | wrappy "1" 1529 | 1530 | open@^10.1.0: 1531 | version "10.1.0" 1532 | resolved "https://registry.npmjs.org/open/-/open-10.1.0.tgz" 1533 | integrity sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw== 1534 | dependencies: 1535 | default-browser "^5.2.1" 1536 | define-lazy-prop "^3.0.0" 1537 | is-inside-container "^1.0.0" 1538 | is-wsl "^3.1.0" 1539 | 1540 | pako@~1.0.2: 1541 | version "1.0.11" 1542 | resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" 1543 | integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== 1544 | 1545 | parse5@^7.1.2: 1546 | version "7.1.2" 1547 | resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz" 1548 | integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw== 1549 | dependencies: 1550 | entities "^4.4.0" 1551 | 1552 | path-key@^3.1.0: 1553 | version "3.1.1" 1554 | resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" 1555 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1556 | 1557 | path-parse@^1.0.7: 1558 | version "1.0.7" 1559 | resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" 1560 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1561 | 1562 | path-scurry@^1.10.2: 1563 | version "1.10.2" 1564 | resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz" 1565 | integrity sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA== 1566 | dependencies: 1567 | lru-cache "^10.2.0" 1568 | minipass "^5.0.0 || ^6.0.2 || ^7.0.0" 1569 | 1570 | picocolors@^1.0.0: 1571 | version "1.0.0" 1572 | resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" 1573 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 1574 | 1575 | picomatch@^2.3.1: 1576 | version "2.3.1" 1577 | resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" 1578 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1579 | 1580 | pkg-dir@^8.0.0: 1581 | version "8.0.0" 1582 | resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-8.0.0.tgz" 1583 | integrity sha512-4peoBq4Wks0riS0z8741NVv+/8IiTvqnZAr8QGgtdifrtpdXbNw/FxRS1l6NFqm4EMzuS0EDqNNx4XGaz8cuyQ== 1584 | dependencies: 1585 | find-up-simple "^1.0.0" 1586 | 1587 | process-nextick-args@~2.0.0: 1588 | version "2.0.1" 1589 | resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" 1590 | integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== 1591 | 1592 | psl@^1.1.33: 1593 | version "1.9.0" 1594 | resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz" 1595 | integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== 1596 | 1597 | punycode.js@^2.3.1: 1598 | version "2.3.1" 1599 | resolved "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz" 1600 | integrity sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA== 1601 | 1602 | punycode@^2.1.1, punycode@^2.3.1: 1603 | version "2.3.1" 1604 | resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" 1605 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 1606 | 1607 | querystringify@^2.1.1: 1608 | version "2.2.0" 1609 | resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" 1610 | integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== 1611 | 1612 | queue-tick@^1.0.1: 1613 | version "1.0.1" 1614 | resolved "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz" 1615 | integrity sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag== 1616 | 1617 | range-parser@~1.2.1: 1618 | version "1.2.1" 1619 | resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz" 1620 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1621 | 1622 | readable-stream@~2.3.6: 1623 | version "2.3.8" 1624 | resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" 1625 | integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== 1626 | dependencies: 1627 | core-util-is "~1.0.0" 1628 | inherits "~2.0.3" 1629 | isarray "~1.0.0" 1630 | process-nextick-args "~2.0.0" 1631 | safe-buffer "~5.1.1" 1632 | string_decoder "~1.1.1" 1633 | util-deprecate "~1.0.1" 1634 | 1635 | requires-port@^1.0.0: 1636 | version "1.0.0" 1637 | resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" 1638 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 1639 | 1640 | resolve-pkg-maps@^1.0.0: 1641 | version "1.0.0" 1642 | resolved "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz" 1643 | integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== 1644 | 1645 | resolve@^1.22.1: 1646 | version "1.22.8" 1647 | resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" 1648 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 1649 | dependencies: 1650 | is-core-module "^2.13.0" 1651 | path-parse "^1.0.7" 1652 | supports-preserve-symlinks-flag "^1.0.0" 1653 | 1654 | rimraf@^5.0.5: 1655 | version "5.0.5" 1656 | resolved "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz" 1657 | integrity sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A== 1658 | dependencies: 1659 | glob "^10.3.7" 1660 | 1661 | robust-predicates@^3.0.2: 1662 | version "3.0.2" 1663 | resolved "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz" 1664 | integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== 1665 | 1666 | rollup-plugin-esbuild@^6.1.0: 1667 | version "6.1.1" 1668 | resolved "https://registry.npmjs.org/rollup-plugin-esbuild/-/rollup-plugin-esbuild-6.1.1.tgz" 1669 | integrity sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw== 1670 | dependencies: 1671 | "@rollup/pluginutils" "^5.0.5" 1672 | debug "^4.3.4" 1673 | es-module-lexer "^1.3.1" 1674 | get-tsconfig "^4.7.2" 1675 | 1676 | rollup@^4.6.0: 1677 | version "4.16.4" 1678 | resolved "https://registry.npmjs.org/rollup/-/rollup-4.16.4.tgz" 1679 | integrity sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA== 1680 | dependencies: 1681 | "@types/estree" "1.0.5" 1682 | optionalDependencies: 1683 | "@rollup/rollup-android-arm-eabi" "4.16.4" 1684 | "@rollup/rollup-android-arm64" "4.16.4" 1685 | "@rollup/rollup-darwin-arm64" "4.16.4" 1686 | "@rollup/rollup-darwin-x64" "4.16.4" 1687 | "@rollup/rollup-linux-arm-gnueabihf" "4.16.4" 1688 | "@rollup/rollup-linux-arm-musleabihf" "4.16.4" 1689 | "@rollup/rollup-linux-arm64-gnu" "4.16.4" 1690 | "@rollup/rollup-linux-arm64-musl" "4.16.4" 1691 | "@rollup/rollup-linux-powerpc64le-gnu" "4.16.4" 1692 | "@rollup/rollup-linux-riscv64-gnu" "4.16.4" 1693 | "@rollup/rollup-linux-s390x-gnu" "4.16.4" 1694 | "@rollup/rollup-linux-x64-gnu" "4.16.4" 1695 | "@rollup/rollup-linux-x64-musl" "4.16.4" 1696 | "@rollup/rollup-win32-arm64-msvc" "4.16.4" 1697 | "@rollup/rollup-win32-ia32-msvc" "4.16.4" 1698 | "@rollup/rollup-win32-x64-msvc" "4.16.4" 1699 | fsevents "~2.3.2" 1700 | 1701 | rrweb-cssom@^0.6.0: 1702 | version "0.6.0" 1703 | resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz" 1704 | integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== 1705 | 1706 | run-applescript@^7.0.0: 1707 | version "7.0.0" 1708 | resolved "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz" 1709 | integrity sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A== 1710 | 1711 | rw@1: 1712 | version "1.3.3" 1713 | resolved "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz" 1714 | integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== 1715 | 1716 | safe-buffer@~5.1.0, safe-buffer@~5.1.1: 1717 | version "5.1.2" 1718 | resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" 1719 | integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== 1720 | 1721 | "safer-buffer@>= 2.1.2 < 3.0.0": 1722 | version "2.1.2" 1723 | resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" 1724 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1725 | 1726 | saxes@^6.0.0: 1727 | version "6.0.0" 1728 | resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz" 1729 | integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA== 1730 | dependencies: 1731 | xmlchars "^2.2.0" 1732 | 1733 | section-matter@^1.0.0: 1734 | version "1.0.0" 1735 | resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" 1736 | integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== 1737 | dependencies: 1738 | extend-shallow "^2.0.1" 1739 | kind-of "^6.0.0" 1740 | 1741 | semver@^7.5.4: 1742 | version "7.6.0" 1743 | resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz" 1744 | integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== 1745 | dependencies: 1746 | lru-cache "^6.0.0" 1747 | 1748 | send@^0.18.0: 1749 | version "0.18.0" 1750 | resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz" 1751 | integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg== 1752 | dependencies: 1753 | debug "2.6.9" 1754 | depd "2.0.0" 1755 | destroy "1.2.0" 1756 | encodeurl "~1.0.2" 1757 | escape-html "~1.0.3" 1758 | etag "~1.8.1" 1759 | fresh "0.5.2" 1760 | http-errors "2.0.0" 1761 | mime "1.6.0" 1762 | ms "2.1.3" 1763 | on-finished "2.4.1" 1764 | range-parser "~1.2.1" 1765 | statuses "2.0.1" 1766 | 1767 | setimmediate@^1.0.5: 1768 | version "1.0.5" 1769 | resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" 1770 | integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== 1771 | 1772 | setprototypeof@1.2.0: 1773 | version "1.2.0" 1774 | resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" 1775 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1776 | 1777 | shebang-command@^2.0.0: 1778 | version "2.0.0" 1779 | resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" 1780 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1781 | dependencies: 1782 | shebang-regex "^3.0.0" 1783 | 1784 | shebang-regex@^3.0.0: 1785 | version "3.0.0" 1786 | resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" 1787 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1788 | 1789 | signal-exit@^4.0.1: 1790 | version "4.1.0" 1791 | resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" 1792 | integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== 1793 | 1794 | sisteransi@^1.0.5: 1795 | version "1.0.5" 1796 | resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" 1797 | integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== 1798 | 1799 | sprintf-js@~1.0.2: 1800 | version "1.0.3" 1801 | resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" 1802 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 1803 | 1804 | statuses@2.0.1: 1805 | version "2.0.1" 1806 | resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" 1807 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1808 | 1809 | streamx@^2.15.0: 1810 | version "2.16.1" 1811 | resolved "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz" 1812 | integrity sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ== 1813 | dependencies: 1814 | fast-fifo "^1.1.0" 1815 | queue-tick "^1.0.1" 1816 | optionalDependencies: 1817 | bare-events "^2.2.0" 1818 | 1819 | "string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0: 1820 | version "4.2.3" 1821 | resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" 1822 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1823 | dependencies: 1824 | emoji-regex "^8.0.0" 1825 | is-fullwidth-code-point "^3.0.0" 1826 | strip-ansi "^6.0.1" 1827 | 1828 | string-width@^5.0.1, string-width@^5.1.2: 1829 | version "5.1.2" 1830 | resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" 1831 | integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== 1832 | dependencies: 1833 | eastasianwidth "^0.2.0" 1834 | emoji-regex "^9.2.2" 1835 | strip-ansi "^7.0.1" 1836 | 1837 | string-width@^7.0.0: 1838 | version "7.1.0" 1839 | resolved "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz" 1840 | integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== 1841 | dependencies: 1842 | emoji-regex "^10.3.0" 1843 | get-east-asian-width "^1.0.0" 1844 | strip-ansi "^7.1.0" 1845 | 1846 | string_decoder@~1.1.1: 1847 | version "1.1.1" 1848 | resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" 1849 | integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== 1850 | dependencies: 1851 | safe-buffer "~5.1.0" 1852 | 1853 | "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1854 | version "6.0.1" 1855 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" 1856 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1857 | dependencies: 1858 | ansi-regex "^5.0.1" 1859 | 1860 | strip-ansi@^7.0.1, strip-ansi@^7.1.0: 1861 | version "7.1.0" 1862 | resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" 1863 | integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== 1864 | dependencies: 1865 | ansi-regex "^6.0.1" 1866 | 1867 | strip-bom-string@^1.0.0: 1868 | version "1.0.0" 1869 | resolved "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" 1870 | integrity sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g== 1871 | 1872 | supports-preserve-symlinks-flag@^1.0.0: 1873 | version "1.0.0" 1874 | resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" 1875 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1876 | 1877 | symbol-tree@^3.2.4: 1878 | version "3.2.4" 1879 | resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" 1880 | integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== 1881 | 1882 | tar-stream@^3.1.6: 1883 | version "3.1.7" 1884 | resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz" 1885 | integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ== 1886 | dependencies: 1887 | b4a "^1.6.4" 1888 | fast-fifo "^1.2.0" 1889 | streamx "^2.15.0" 1890 | 1891 | toidentifier@1.0.1: 1892 | version "1.0.1" 1893 | resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" 1894 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1895 | 1896 | tough-cookie@^4.1.3: 1897 | version "4.1.3" 1898 | resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz" 1899 | integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== 1900 | dependencies: 1901 | psl "^1.1.33" 1902 | punycode "^2.1.1" 1903 | universalify "^0.2.0" 1904 | url-parse "^1.5.3" 1905 | 1906 | tr46@^5.0.0: 1907 | version "5.0.0" 1908 | resolved "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz" 1909 | integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== 1910 | dependencies: 1911 | punycode "^2.3.1" 1912 | 1913 | tsx@^4.7.1: 1914 | version "4.7.2" 1915 | resolved "https://registry.npmjs.org/tsx/-/tsx-4.7.2.tgz" 1916 | integrity sha512-BCNd4kz6fz12fyrgCTEdZHGJ9fWTGeUzXmQysh0RVocDY3h4frk05ZNCXSy4kIenF7y/QnrdiVpTsyNRn6vlAw== 1917 | dependencies: 1918 | esbuild "~0.19.10" 1919 | get-tsconfig "^4.7.2" 1920 | optionalDependencies: 1921 | fsevents "~2.3.3" 1922 | 1923 | uc.micro@^2.0.0, uc.micro@^2.1.0: 1924 | version "2.1.0" 1925 | resolved "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz" 1926 | integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== 1927 | 1928 | universalify@^0.2.0: 1929 | version "0.2.0" 1930 | resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz" 1931 | integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== 1932 | 1933 | untildify@^5.0.0: 1934 | version "5.0.0" 1935 | resolved "https://registry.npmjs.org/untildify/-/untildify-5.0.0.tgz" 1936 | integrity sha512-bOgQLUnd2G5rhzaTvh1VCI9Fo6bC5cLTpH17T5aFfamyXFYDbbdzN6IXdeoc3jBS7T9hNTmJtYUzJCJ2Xlc9gA== 1937 | 1938 | url-parse@^1.5.3: 1939 | version "1.5.10" 1940 | resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz" 1941 | integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== 1942 | dependencies: 1943 | querystringify "^2.1.1" 1944 | requires-port "^1.0.0" 1945 | 1946 | util-deprecate@~1.0.1: 1947 | version "1.0.2" 1948 | resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1949 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1950 | 1951 | w3c-xmlserializer@^5.0.0: 1952 | version "5.0.0" 1953 | resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz" 1954 | integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== 1955 | dependencies: 1956 | xml-name-validator "^5.0.0" 1957 | 1958 | webidl-conversions@^7.0.0: 1959 | version "7.0.0" 1960 | resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz" 1961 | integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== 1962 | 1963 | whatwg-encoding@^3.1.1: 1964 | version "3.1.1" 1965 | resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz" 1966 | integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== 1967 | dependencies: 1968 | iconv-lite "0.6.3" 1969 | 1970 | whatwg-mimetype@^4.0.0: 1971 | version "4.0.0" 1972 | resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz" 1973 | integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== 1974 | 1975 | whatwg-url@^14.0.0: 1976 | version "14.0.0" 1977 | resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz" 1978 | integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== 1979 | dependencies: 1980 | tr46 "^5.0.0" 1981 | webidl-conversions "^7.0.0" 1982 | 1983 | which@^2.0.1: 1984 | version "2.0.2" 1985 | resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" 1986 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1987 | dependencies: 1988 | isexe "^2.0.0" 1989 | 1990 | "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": 1991 | version "7.0.0" 1992 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" 1993 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1994 | dependencies: 1995 | ansi-styles "^4.0.0" 1996 | string-width "^4.1.0" 1997 | strip-ansi "^6.0.0" 1998 | 1999 | wrap-ansi@^8.1.0: 2000 | version "8.1.0" 2001 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" 2002 | integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== 2003 | dependencies: 2004 | ansi-styles "^6.1.0" 2005 | string-width "^5.0.1" 2006 | strip-ansi "^7.0.1" 2007 | 2008 | wrap-ansi@^9.0.0: 2009 | version "9.0.0" 2010 | resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz" 2011 | integrity sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q== 2012 | dependencies: 2013 | ansi-styles "^6.2.1" 2014 | string-width "^7.0.0" 2015 | strip-ansi "^7.1.0" 2016 | 2017 | wrappy@1: 2018 | version "1.0.2" 2019 | resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 2020 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 2021 | 2022 | ws@^8.14.2, ws@^8.16.0: 2023 | version "8.16.0" 2024 | resolved "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz" 2025 | integrity sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ== 2026 | 2027 | xml-name-validator@^5.0.0: 2028 | version "5.0.0" 2029 | resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz" 2030 | integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== 2031 | 2032 | xmlchars@^2.2.0: 2033 | version "2.2.0" 2034 | resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz" 2035 | integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== 2036 | 2037 | yallist@^4.0.0: 2038 | version "4.0.0" 2039 | resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" 2040 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 2041 | --------------------------------------------------------------------------------