Buttplug sex toy control library

build: Remove .pnp.* files

+3 -14266
+3 -1
.gitignore
··· 18 18 **/*-ignore 19 19 **/tasks.json 20 20 21 - .yarn* 21 + .yarn* 22 + 23 + **/.pnp.*
-12225
buttplug/buttplug-device-config/.pnp.cjs
··· 1 - #!/usr/bin/env node 2 - /* eslint-disable */ 3 - "use strict"; 4 - 5 - function $$SETUP_STATE(hydrateRuntimeState, basePath) { 6 - return hydrateRuntimeState(JSON.parse('{\ 7 - "__info": [\ 8 - "This file is automatically generated. Do not touch it, or risk",\ 9 - "your modifications being lost. We also recommend you not to read",\ 10 - "it either without using the @yarnpkg/pnp package, as the data layout",\ 11 - "is entirely unspecified and WILL change from a version to another."\ 12 - ],\ 13 - "dependencyTreeRoots": [\ 14 - {\ 15 - "name": "buttplug-device-config",\ 16 - "reference": "workspace:."\ 17 - }\ 18 - ],\ 19 - "enableTopLevelFallback": true,\ 20 - "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\ 21 - "fallbackExclusionList": [\ 22 - ["buttplug-device-config", ["workspace:."]]\ 23 - ],\ 24 - "fallbackPool": [\ 25 - ],\ 26 - "packageRegistryData": [\ 27 - [null, [\ 28 - [null, {\ 29 - "packageLocation": "./",\ 30 - "packageDependencies": [\ 31 - ["ajv", "npm:8.11.2"],\ 32 - ["ajv-cli", "virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0"],\ 33 - ["js-yaml", "npm:4.1.0"],\ 34 - ["trash-cli", "npm:5.0.0"]\ 35 - ],\ 36 - "linkType": "SOFT"\ 37 - }]\ 38 - ]],\ 39 - ["@babel/code-frame", [\ 40 - ["npm:7.14.5", {\ 41 - "packageLocation": "./.yarn/cache/@babel-code-frame-npm-7.14.5-4dc9115988-0adbe4f8d9.zip/node_modules/@babel/code-frame/",\ 42 - "packageDependencies": [\ 43 - ["@babel/code-frame", "npm:7.14.5"],\ 44 - ["@babel/highlight", "npm:7.14.5"]\ 45 - ],\ 46 - "linkType": "HARD"\ 47 - }]\ 48 - ]],\ 49 - ["@babel/helper-validator-identifier", [\ 50 - ["npm:7.14.5", {\ 51 - "packageLocation": "./.yarn/cache/@babel-helper-validator-identifier-npm-7.14.5-d29d30a813-6366bceab4.zip/node_modules/@babel/helper-validator-identifier/",\ 52 - "packageDependencies": [\ 53 - ["@babel/helper-validator-identifier", "npm:7.14.5"]\ 54 - ],\ 55 - "linkType": "HARD"\ 56 - }]\ 57 - ]],\ 58 - ["@babel/highlight", [\ 59 - ["npm:7.14.5", {\ 60 - "packageLocation": "./.yarn/cache/@babel-highlight-npm-7.14.5-4a18106cbc-4e4b22fb88.zip/node_modules/@babel/highlight/",\ 61 - "packageDependencies": [\ 62 - ["@babel/highlight", "npm:7.14.5"],\ 63 - ["@babel/helper-validator-identifier", "npm:7.14.5"],\ 64 - ["chalk", "npm:2.4.2"],\ 65 - ["js-tokens", "npm:4.0.0"]\ 66 - ],\ 67 - "linkType": "HARD"\ 68 - }]\ 69 - ]],\ 70 - ["@sindresorhus/chunkify", [\ 71 - ["npm:0.2.0", {\ 72 - "packageLocation": "./.yarn/cache/@sindresorhus-chunkify-npm-0.2.0-abd3dba6c5-a17d8a385f.zip/node_modules/@sindresorhus/chunkify/",\ 73 - "packageDependencies": [\ 74 - ["@sindresorhus/chunkify", "npm:0.2.0"]\ 75 - ],\ 76 - "linkType": "HARD"\ 77 - }]\ 78 - ]],\ 79 - ["@sindresorhus/df", [\ 80 - ["npm:1.0.1", {\ 81 - "packageLocation": "./.yarn/cache/@sindresorhus-df-npm-1.0.1-0588918928-0cb43b4ed9.zip/node_modules/@sindresorhus/df/",\ 82 - "packageDependencies": [\ 83 - ["@sindresorhus/df", "npm:1.0.1"]\ 84 - ],\ 85 - "linkType": "HARD"\ 86 - }],\ 87 - ["npm:3.1.1", {\ 88 - "packageLocation": "./.yarn/cache/@sindresorhus-df-npm-3.1.1-bdd4bd6cbf-6378a8c62a.zip/node_modules/@sindresorhus/df/",\ 89 - "packageDependencies": [\ 90 - ["@sindresorhus/df", "npm:3.1.1"],\ 91 - ["execa", "npm:2.1.0"]\ 92 - ],\ 93 - "linkType": "HARD"\ 94 - }]\ 95 - ]],\ 96 - ["@stroncium/procfs", [\ 97 - ["npm:1.2.1", {\ 98 - "packageLocation": "./.yarn/cache/@stroncium-procfs-npm-1.2.1-c5daf856f1-cb09a4a478.zip/node_modules/@stroncium/procfs/",\ 99 - "packageDependencies": [\ 100 - ["@stroncium/procfs", "npm:1.2.1"]\ 101 - ],\ 102 - "linkType": "HARD"\ 103 - }]\ 104 - ]],\ 105 - ["@types/minimist", [\ 106 - ["npm:1.2.2", {\ 107 - "packageLocation": "./.yarn/cache/@types-minimist-npm-1.2.2-a445de65da-b8da83c66e.zip/node_modules/@types/minimist/",\ 108 - "packageDependencies": [\ 109 - ["@types/minimist", "npm:1.2.2"]\ 110 - ],\ 111 - "linkType": "HARD"\ 112 - }]\ 113 - ]],\ 114 - ["@types/normalize-package-data", [\ 115 - ["npm:2.4.0", {\ 116 - "packageLocation": "./.yarn/cache/@types-normalize-package-data-npm-2.4.0-ed928aaaa8-fd22ba86a1.zip/node_modules/@types/normalize-package-data/",\ 117 - "packageDependencies": [\ 118 - ["@types/normalize-package-data", "npm:2.4.0"]\ 119 - ],\ 120 - "linkType": "HARD"\ 121 - }]\ 122 - ]],\ 123 - ["aggregate-error", [\ 124 - ["npm:4.0.1", {\ 125 - "packageLocation": "./.yarn/cache/aggregate-error-npm-4.0.1-12d0501fb7-bb3ffdfd13.zip/node_modules/aggregate-error/",\ 126 - "packageDependencies": [\ 127 - ["aggregate-error", "npm:4.0.1"],\ 128 - ["clean-stack", "npm:4.2.0"],\ 129 - ["indent-string", "npm:5.0.0"]\ 130 - ],\ 131 - "linkType": "HARD"\ 132 - }]\ 133 - ]],\ 134 - ["ajv", [\ 135 - ["npm:8.11.2", {\ 136 - "packageLocation": "./.yarn/cache/ajv-npm-8.11.2-96b35a945e-53435bf79e.zip/node_modules/ajv/",\ 137 - "packageDependencies": [\ 138 - ["ajv", "npm:8.11.2"],\ 139 - ["fast-deep-equal", "npm:3.1.3"],\ 140 - ["json-schema-traverse", "npm:1.0.0"],\ 141 - ["require-from-string", "npm:2.0.2"],\ 142 - ["uri-js", "npm:4.2.2"]\ 143 - ],\ 144 - "linkType": "HARD"\ 145 - }],\ 146 - ["npm:8.6.1", {\ 147 - "packageLocation": "./.yarn/cache/ajv-npm-8.6.1-cc38a5d5d7-e091264ff6.zip/node_modules/ajv/",\ 148 - "packageDependencies": [\ 149 - ["ajv", "npm:8.6.1"],\ 150 - ["fast-deep-equal", "npm:3.1.3"],\ 151 - ["json-schema-traverse", "npm:1.0.0"],\ 152 - ["require-from-string", "npm:2.0.2"],\ 153 - ["uri-js", "npm:4.2.2"]\ 154 - ],\ 155 - "linkType": "HARD"\ 156 - }]\ 157 - ]],\ 158 - ["ajv-cli", [\ 159 - ["npm:5.0.0", {\ 160 - "packageLocation": "./.yarn/cache/ajv-cli-npm-5.0.0-e12d6f3c52-e8ba29f618.zip/node_modules/ajv-cli/",\ 161 - "packageDependencies": [\ 162 - ["ajv-cli", "npm:5.0.0"]\ 163 - ],\ 164 - "linkType": "SOFT"\ 165 - }],\ 166 - ["virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0", {\ 167 - "packageLocation": "./.yarn/__virtual__/ajv-cli-virtual-f71f534614/0/cache/ajv-cli-npm-5.0.0-e12d6f3c52-e8ba29f618.zip/node_modules/ajv-cli/",\ 168 - "packageDependencies": [\ 169 - ["ajv-cli", "virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0"],\ 170 - ["@types/ts-node", null],\ 171 - ["ajv", "npm:8.6.1"],\ 172 - ["fast-json-patch", "npm:2.2.1"],\ 173 - ["glob", "npm:7.1.7"],\ 174 - ["js-yaml", "npm:3.14.1"],\ 175 - ["json-schema-migrate", "npm:2.0.0"],\ 176 - ["json5", "npm:2.2.2"],\ 177 - ["minimist", "npm:1.2.6"],\ 178 - ["ts-node", null]\ 179 - ],\ 180 - "packagePeers": [\ 181 - "@types/ts-node",\ 182 - "ts-node"\ 183 - ],\ 184 - "linkType": "HARD"\ 185 - }]\ 186 - ]],\ 187 - ["ansi-styles", [\ 188 - ["npm:3.2.1", {\ 189 - "packageLocation": "./.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip/node_modules/ansi-styles/",\ 190 - "packageDependencies": [\ 191 - ["ansi-styles", "npm:3.2.1"],\ 192 - ["color-convert", "npm:1.9.3"]\ 193 - ],\ 194 - "linkType": "HARD"\ 195 - }]\ 196 - ]],\ 197 - ["argparse", [\ 198 - ["npm:1.0.10", {\ 199 - "packageLocation": "./.yarn/cache/argparse-npm-1.0.10-528934e59d-7ca6e45583.zip/node_modules/argparse/",\ 200 - "packageDependencies": [\ 201 - ["argparse", "npm:1.0.10"],\ 202 - ["sprintf-js", "npm:1.0.3"]\ 203 - ],\ 204 - "linkType": "HARD"\ 205 - }],\ 206 - ["npm:2.0.1", {\ 207 - "packageLocation": "./.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip/node_modules/argparse/",\ 208 - "packageDependencies": [\ 209 - ["argparse", "npm:2.0.1"]\ 210 - ],\ 211 - "linkType": "HARD"\ 212 - }]\ 213 - ]],\ 214 - ["array-union", [\ 215 - ["npm:1.0.2", {\ 216 - "packageLocation": "./.yarn/cache/array-union-npm-1.0.2-cc61ee268f-82cec6421b.zip/node_modules/array-union/",\ 217 - "packageDependencies": [\ 218 - ["array-union", "npm:1.0.2"],\ 219 - ["array-uniq", "npm:1.0.3"]\ 220 - ],\ 221 - "linkType": "HARD"\ 222 - }]\ 223 - ]],\ 224 - ["array-uniq", [\ 225 - ["npm:1.0.3", {\ 226 - "packageLocation": "./.yarn/cache/array-uniq-npm-1.0.3-e7f5d6f3a1-1625f06b09.zip/node_modules/array-uniq/",\ 227 - "packageDependencies": [\ 228 - ["array-uniq", "npm:1.0.3"]\ 229 - ],\ 230 - "linkType": "HARD"\ 231 - }]\ 232 - ]],\ 233 - ["arrify", [\ 234 - ["npm:1.0.1", {\ 235 - "packageLocation": "./.yarn/cache/arrify-npm-1.0.1-affafba9fe-745075dd4a.zip/node_modules/arrify/",\ 236 - "packageDependencies": [\ 237 - ["arrify", "npm:1.0.1"]\ 238 - ],\ 239 - "linkType": "HARD"\ 240 - }]\ 241 - ]],\ 242 - ["balanced-match", [\ 243 - ["npm:1.0.2", {\ 244 - "packageLocation": "./.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip/node_modules/balanced-match/",\ 245 - "packageDependencies": [\ 246 - ["balanced-match", "npm:1.0.2"]\ 247 - ],\ 248 - "linkType": "HARD"\ 249 - }]\ 250 - ]],\ 251 - ["brace-expansion", [\ 252 - ["npm:1.1.11", {\ 253 - "packageLocation": "./.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip/node_modules/brace-expansion/",\ 254 - "packageDependencies": [\ 255 - ["brace-expansion", "npm:1.1.11"],\ 256 - ["balanced-match", "npm:1.0.2"],\ 257 - ["concat-map", "npm:0.0.1"]\ 258 - ],\ 259 - "linkType": "HARD"\ 260 - }]\ 261 - ]],\ 262 - ["buttplug-device-config", [\ 263 - ["workspace:.", {\ 264 - "packageLocation": "./",\ 265 - "packageDependencies": [\ 266 - ["buttplug-device-config", "workspace:."],\ 267 - ["ajv", "npm:8.11.2"],\ 268 - ["ajv-cli", "virtual:171da54c57eee9c0b786e3da865a3e92eeb08e48749a971f406d389229e7ef63f3a8618cc44b1e2eac16187e1821567993b8e3d78e6bb9a4fc3848263d235f69#npm:5.0.0"],\ 269 - ["js-yaml", "npm:4.1.0"],\ 270 - ["trash-cli", "npm:5.0.0"]\ 271 - ],\ 272 - "linkType": "SOFT"\ 273 - }]\ 274 - ]],\ 275 - ["camelcase", [\ 276 - ["npm:6.3.0", {\ 277 - "packageLocation": "./.yarn/cache/camelcase-npm-6.3.0-e5e42a0d15-8c96818a90.zip/node_modules/camelcase/",\ 278 - "packageDependencies": [\ 279 - ["camelcase", "npm:6.3.0"]\ 280 - ],\ 281 - "linkType": "HARD"\ 282 - }]\ 283 - ]],\ 284 - ["camelcase-keys", [\ 285 - ["npm:7.0.2", {\ 286 - "packageLocation": "./.yarn/cache/camelcase-keys-npm-7.0.2-36fbc5a8f7-b5821cc48d.zip/node_modules/camelcase-keys/",\ 287 - "packageDependencies": [\ 288 - ["camelcase-keys", "npm:7.0.2"],\ 289 - ["camelcase", "npm:6.3.0"],\ 290 - ["map-obj", "npm:4.3.0"],\ 291 - ["quick-lru", "npm:5.1.1"],\ 292 - ["type-fest", "npm:1.4.0"]\ 293 - ],\ 294 - "linkType": "HARD"\ 295 - }]\ 296 - ]],\ 297 - ["chalk", [\ 298 - ["npm:2.4.2", {\ 299 - "packageLocation": "./.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip/node_modules/chalk/",\ 300 - "packageDependencies": [\ 301 - ["chalk", "npm:2.4.2"],\ 302 - ["ansi-styles", "npm:3.2.1"],\ 303 - ["escape-string-regexp", "npm:1.0.5"],\ 304 - ["supports-color", "npm:5.5.0"]\ 305 - ],\ 306 - "linkType": "HARD"\ 307 - }]\ 308 - ]],\ 309 - ["clean-stack", [\ 310 - ["npm:4.2.0", {\ 311 - "packageLocation": "./.yarn/cache/clean-stack-npm-4.2.0-bb0dff47b2-373f656a31.zip/node_modules/clean-stack/",\ 312 - "packageDependencies": [\ 313 - ["clean-stack", "npm:4.2.0"],\ 314 - ["escape-string-regexp", "npm:5.0.0"]\ 315 - ],\ 316 - "linkType": "HARD"\ 317 - }]\ 318 - ]],\ 319 - ["color-convert", [\ 320 - ["npm:1.9.3", {\ 321 - "packageLocation": "./.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip/node_modules/color-convert/",\ 322 - "packageDependencies": [\ 323 - ["color-convert", "npm:1.9.3"],\ 324 - ["color-name", "npm:1.1.3"]\ 325 - ],\ 326 - "linkType": "HARD"\ 327 - }]\ 328 - ]],\ 329 - ["color-name", [\ 330 - ["npm:1.1.3", {\ 331 - "packageLocation": "./.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip/node_modules/color-name/",\ 332 - "packageDependencies": [\ 333 - ["color-name", "npm:1.1.3"]\ 334 - ],\ 335 - "linkType": "HARD"\ 336 - }]\ 337 - ]],\ 338 - ["concat-map", [\ 339 - ["npm:0.0.1", {\ 340 - "packageLocation": "./.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/",\ 341 - "packageDependencies": [\ 342 - ["concat-map", "npm:0.0.1"]\ 343 - ],\ 344 - "linkType": "HARD"\ 345 - }]\ 346 - ]],\ 347 - ["cross-spawn", [\ 348 - ["npm:7.0.3", {\ 349 - "packageLocation": "./.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip/node_modules/cross-spawn/",\ 350 - "packageDependencies": [\ 351 - ["cross-spawn", "npm:7.0.3"],\ 352 - ["path-key", "npm:3.1.1"],\ 353 - ["shebang-command", "npm:2.0.0"],\ 354 - ["which", "npm:2.0.2"]\ 355 - ],\ 356 - "linkType": "HARD"\ 357 - }]\ 358 - ]],\ 359 - ["decamelize", [\ 360 - ["npm:1.2.0", {\ 361 - "packageLocation": "./.yarn/cache/decamelize-npm-1.2.0-c5a2fdc622-ad8c51a7e7.zip/node_modules/decamelize/",\ 362 - "packageDependencies": [\ 363 - ["decamelize", "npm:1.2.0"]\ 364 - ],\ 365 - "linkType": "HARD"\ 366 - }],\ 367 - ["npm:5.0.1", {\ 368 - "packageLocation": "./.yarn/cache/decamelize-npm-5.0.1-2fde8c926c-7c3b1ed4b3.zip/node_modules/decamelize/",\ 369 - "packageDependencies": [\ 370 - ["decamelize", "npm:5.0.1"]\ 371 - ],\ 372 - "linkType": "HARD"\ 373 - }]\ 374 - ]],\ 375 - ["decamelize-keys", [\ 376 - ["npm:1.1.0", {\ 377 - "packageLocation": "./.yarn/cache/decamelize-keys-npm-1.1.0-75168ffadd-8bc5d32e03.zip/node_modules/decamelize-keys/",\ 378 - "packageDependencies": [\ 379 - ["decamelize-keys", "npm:1.1.0"],\ 380 - ["decamelize", "npm:1.2.0"],\ 381 - ["map-obj", "npm:1.0.1"]\ 382 - ],\ 383 - "linkType": "HARD"\ 384 - }]\ 385 - ]],\ 386 - ["dir-glob", [\ 387 - ["npm:2.2.2", {\ 388 - "packageLocation": "./.yarn/cache/dir-glob-npm-2.2.2-932e08b501-3aa48714a9.zip/node_modules/dir-glob/",\ 389 - "packageDependencies": [\ 390 - ["dir-glob", "npm:2.2.2"],\ 391 - ["path-type", "npm:3.0.0"]\ 392 - ],\ 393 - "linkType": "HARD"\ 394 - }]\ 395 - ]],\ 396 - ["end-of-stream", [\ 397 - ["npm:1.4.4", {\ 398 - "packageLocation": "./.yarn/cache/end-of-stream-npm-1.4.4-497fc6dee1-530a5a5a1e.zip/node_modules/end-of-stream/",\ 399 - "packageDependencies": [\ 400 - ["end-of-stream", "npm:1.4.4"],\ 401 - ["once", "npm:1.4.0"]\ 402 - ],\ 403 - "linkType": "HARD"\ 404 - }]\ 405 - ]],\ 406 - ["error-ex", [\ 407 - ["npm:1.3.2", {\ 408 - "packageLocation": "./.yarn/cache/error-ex-npm-1.3.2-5654f80c0f-c1c2b8b65f.zip/node_modules/error-ex/",\ 409 - "packageDependencies": [\ 410 - ["error-ex", "npm:1.3.2"],\ 411 - ["is-arrayish", "npm:0.2.1"]\ 412 - ],\ 413 - "linkType": "HARD"\ 414 - }]\ 415 - ]],\ 416 - ["escape-string-regexp", [\ 417 - ["npm:1.0.5", {\ 418 - "packageLocation": "./.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip/node_modules/escape-string-regexp/",\ 419 - "packageDependencies": [\ 420 - ["escape-string-regexp", "npm:1.0.5"]\ 421 - ],\ 422 - "linkType": "HARD"\ 423 - }],\ 424 - ["npm:5.0.0", {\ 425 - "packageLocation": "./.yarn/cache/escape-string-regexp-npm-5.0.0-a663e825ce-20daabe197.zip/node_modules/escape-string-regexp/",\ 426 - "packageDependencies": [\ 427 - ["escape-string-regexp", "npm:5.0.0"]\ 428 - ],\ 429 - "linkType": "HARD"\ 430 - }]\ 431 - ]],\ 432 - ["esprima", [\ 433 - ["npm:4.0.1", {\ 434 - "packageLocation": "./.yarn/cache/esprima-npm-4.0.1-1084e98778-b45bc805a6.zip/node_modules/esprima/",\ 435 - "packageDependencies": [\ 436 - ["esprima", "npm:4.0.1"]\ 437 - ],\ 438 - "linkType": "HARD"\ 439 - }]\ 440 - ]],\ 441 - ["execa", [\ 442 - ["npm:2.1.0", {\ 443 - "packageLocation": "./.yarn/cache/execa-npm-2.1.0-9c7d62b9ab-93af9b816a.zip/node_modules/execa/",\ 444 - "packageDependencies": [\ 445 - ["execa", "npm:2.1.0"],\ 446 - ["cross-spawn", "npm:7.0.3"],\ 447 - ["get-stream", "npm:5.2.0"],\ 448 - ["is-stream", "npm:2.0.0"],\ 449 - ["merge-stream", "npm:2.0.0"],\ 450 - ["npm-run-path", "npm:3.1.0"],\ 451 - ["onetime", "npm:5.1.2"],\ 452 - ["p-finally", "npm:2.0.1"],\ 453 - ["signal-exit", "npm:3.0.3"],\ 454 - ["strip-final-newline", "npm:2.0.0"]\ 455 - ],\ 456 - "linkType": "HARD"\ 457 - }]\ 458 - ]],\ 459 - ["fast-deep-equal", [\ 460 - ["npm:2.0.1", {\ 461 - "packageLocation": "./.yarn/cache/fast-deep-equal-npm-2.0.1-9c01e08a62-b701835a87.zip/node_modules/fast-deep-equal/",\ 462 - "packageDependencies": [\ 463 - ["fast-deep-equal", "npm:2.0.1"]\ 464 - ],\ 465 - "linkType": "HARD"\ 466 - }],\ 467 - ["npm:3.1.3", {\ 468 - "packageLocation": "./.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip/node_modules/fast-deep-equal/",\ 469 - "packageDependencies": [\ 470 - ["fast-deep-equal", "npm:3.1.3"]\ 471 - ],\ 472 - "linkType": "HARD"\ 473 - }]\ 474 - ]],\ 475 - ["fast-json-patch", [\ 476 - ["npm:2.2.1", {\ 477 - "packageLocation": "./.yarn/cache/fast-json-patch-npm-2.2.1-63b021bb37-955aebb3f8.zip/node_modules/fast-json-patch/",\ 478 - "packageDependencies": [\ 479 - ["fast-json-patch", "npm:2.2.1"],\ 480 - ["fast-deep-equal", "npm:2.0.1"]\ 481 - ],\ 482 - "linkType": "HARD"\ 483 - }]\ 484 - ]],\ 485 - ["find-up", [\ 486 - ["npm:5.0.0", {\ 487 - "packageLocation": "./.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip/node_modules/find-up/",\ 488 - "packageDependencies": [\ 489 - ["find-up", "npm:5.0.0"],\ 490 - ["locate-path", "npm:6.0.0"],\ 491 - ["path-exists", "npm:4.0.0"]\ 492 - ],\ 493 - "linkType": "HARD"\ 494 - }]\ 495 - ]],\ 496 - ["fs.realpath", [\ 497 - ["npm:1.0.0", {\ 498 - "packageLocation": "./.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/",\ 499 - "packageDependencies": [\ 500 - ["fs.realpath", "npm:1.0.0"]\ 501 - ],\ 502 - "linkType": "HARD"\ 503 - }]\ 504 - ]],\ 505 - ["function-bind", [\ 506 - ["npm:1.1.1", {\ 507 - "packageLocation": "./.yarn/cache/function-bind-npm-1.1.1-b56b322ae9-b32fbaebb3.zip/node_modules/function-bind/",\ 508 - "packageDependencies": [\ 509 - ["function-bind", "npm:1.1.1"]\ 510 - ],\ 511 - "linkType": "HARD"\ 512 - }]\ 513 - ]],\ 514 - ["get-stream", [\ 515 - ["npm:5.2.0", {\ 516 - "packageLocation": "./.yarn/cache/get-stream-npm-5.2.0-2cfd3b452b-8bc1a23174.zip/node_modules/get-stream/",\ 517 - "packageDependencies": [\ 518 - ["get-stream", "npm:5.2.0"],\ 519 - ["pump", "npm:3.0.0"]\ 520 - ],\ 521 - "linkType": "HARD"\ 522 - }]\ 523 - ]],\ 524 - ["glob", [\ 525 - ["npm:7.1.3", {\ 526 - "packageLocation": "./.yarn/cache/glob-npm-7.1.3-c65cc4bde2-d72a834a39.zip/node_modules/glob/",\ 527 - "packageDependencies": [\ 528 - ["glob", "npm:7.1.3"],\ 529 - ["fs.realpath", "npm:1.0.0"],\ 530 - ["inflight", "npm:1.0.6"],\ 531 - ["inherits", "npm:2.0.3"],\ 532 - ["minimatch", "npm:3.1.2"],\ 533 - ["once", "npm:1.4.0"],\ 534 - ["path-is-absolute", "npm:1.0.1"]\ 535 - ],\ 536 - "linkType": "HARD"\ 537 - }],\ 538 - ["npm:7.1.7", {\ 539 - "packageLocation": "./.yarn/cache/glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/",\ 540 - "packageDependencies": [\ 541 - ["glob", "npm:7.1.7"],\ 542 - ["fs.realpath", "npm:1.0.0"],\ 543 - ["inflight", "npm:1.0.6"],\ 544 - ["inherits", "npm:2.0.3"],\ 545 - ["minimatch", "npm:3.1.2"],\ 546 - ["once", "npm:1.4.0"],\ 547 - ["path-is-absolute", "npm:1.0.1"]\ 548 - ],\ 549 - "linkType": "HARD"\ 550 - }]\ 551 - ]],\ 552 - ["globby", [\ 553 - ["npm:7.1.1", {\ 554 - "packageLocation": "./.yarn/cache/globby-npm-7.1.1-6c96505a27-f0eba08a08.zip/node_modules/globby/",\ 555 - "packageDependencies": [\ 556 - ["globby", "npm:7.1.1"],\ 557 - ["array-union", "npm:1.0.2"],\ 558 - ["dir-glob", "npm:2.2.2"],\ 559 - ["glob", "npm:7.1.3"],\ 560 - ["ignore", "npm:3.3.10"],\ 561 - ["pify", "npm:3.0.0"],\ 562 - ["slash", "npm:1.0.0"]\ 563 - ],\ 564 - "linkType": "HARD"\ 565 - }]\ 566 - ]],\ 567 - ["hard-rejection", [\ 568 - ["npm:2.1.0", {\ 569 - "packageLocation": "./.yarn/cache/hard-rejection-npm-2.1.0-a80f2a977d-7baaf80a0c.zip/node_modules/hard-rejection/",\ 570 - "packageDependencies": [\ 571 - ["hard-rejection", "npm:2.1.0"]\ 572 - ],\ 573 - "linkType": "HARD"\ 574 - }]\ 575 - ]],\ 576 - ["has", [\ 577 - ["npm:1.0.3", {\ 578 - "packageLocation": "./.yarn/cache/has-npm-1.0.3-b7f00631c1-b9ad53d53b.zip/node_modules/has/",\ 579 - "packageDependencies": [\ 580 - ["has", "npm:1.0.3"],\ 581 - ["function-bind", "npm:1.1.1"]\ 582 - ],\ 583 - "linkType": "HARD"\ 584 - }]\ 585 - ]],\ 586 - ["has-flag", [\ 587 - ["npm:3.0.0", {\ 588 - "packageLocation": "./.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip/node_modules/has-flag/",\ 589 - "packageDependencies": [\ 590 - ["has-flag", "npm:3.0.0"]\ 591 - ],\ 592 - "linkType": "HARD"\ 593 - }]\ 594 - ]],\ 595 - ["hosted-git-info", [\ 596 - ["npm:4.0.2", {\ 597 - "packageLocation": "./.yarn/cache/hosted-git-info-npm-4.0.2-7330924e0c-d1b2d77203.zip/node_modules/hosted-git-info/",\ 598 - "packageDependencies": [\ 599 - ["hosted-git-info", "npm:4.0.2"],\ 600 - ["lru-cache", "npm:6.0.0"]\ 601 - ],\ 602 - "linkType": "HARD"\ 603 - }]\ 604 - ]],\ 605 - ["ignore", [\ 606 - ["npm:3.3.10", {\ 607 - "packageLocation": "./.yarn/cache/ignore-npm-3.3.10-baaf3519b5-23e8cc776e.zip/node_modules/ignore/",\ 608 - "packageDependencies": [\ 609 - ["ignore", "npm:3.3.10"]\ 610 - ],\ 611 - "linkType": "HARD"\ 612 - }]\ 613 - ]],\ 614 - ["indent-string", [\ 615 - ["npm:5.0.0", {\ 616 - "packageLocation": "./.yarn/cache/indent-string-npm-5.0.0-35eaa3b052-e466c27b63.zip/node_modules/indent-string/",\ 617 - "packageDependencies": [\ 618 - ["indent-string", "npm:5.0.0"]\ 619 - ],\ 620 - "linkType": "HARD"\ 621 - }]\ 622 - ]],\ 623 - ["inflight", [\ 624 - ["npm:1.0.6", {\ 625 - "packageLocation": "./.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip/node_modules/inflight/",\ 626 - "packageDependencies": [\ 627 - ["inflight", "npm:1.0.6"],\ 628 - ["once", "npm:1.4.0"],\ 629 - ["wrappy", "npm:1.0.2"]\ 630 - ],\ 631 - "linkType": "HARD"\ 632 - }]\ 633 - ]],\ 634 - ["inherits", [\ 635 - ["npm:2.0.3", {\ 636 - "packageLocation": "./.yarn/cache/inherits-npm-2.0.3-401e64b080-78cb8d7d85.zip/node_modules/inherits/",\ 637 - "packageDependencies": [\ 638 - ["inherits", "npm:2.0.3"]\ 639 - ],\ 640 - "linkType": "HARD"\ 641 - }]\ 642 - ]],\ 643 - ["is-arrayish", [\ 644 - ["npm:0.2.1", {\ 645 - "packageLocation": "./.yarn/cache/is-arrayish-npm-0.2.1-23927dfb15-eef4417e3c.zip/node_modules/is-arrayish/",\ 646 - "packageDependencies": [\ 647 - ["is-arrayish", "npm:0.2.1"]\ 648 - ],\ 649 - "linkType": "HARD"\ 650 - }]\ 651 - ]],\ 652 - ["is-core-module", [\ 653 - ["npm:2.11.0", {\ 654 - "packageLocation": "./.yarn/cache/is-core-module-npm-2.11.0-70061e141a-f96fd490c6.zip/node_modules/is-core-module/",\ 655 - "packageDependencies": [\ 656 - ["is-core-module", "npm:2.11.0"],\ 657 - ["has", "npm:1.0.3"]\ 658 - ],\ 659 - "linkType": "HARD"\ 660 - }]\ 661 - ]],\ 662 - ["is-path-inside", [\ 663 - ["npm:4.0.0", {\ 664 - "packageLocation": "./.yarn/cache/is-path-inside-npm-4.0.0-2af2bde69d-8810fa11c5.zip/node_modules/is-path-inside/",\ 665 - "packageDependencies": [\ 666 - ["is-path-inside", "npm:4.0.0"]\ 667 - ],\ 668 - "linkType": "HARD"\ 669 - }]\ 670 - ]],\ 671 - ["is-plain-obj", [\ 672 - ["npm:1.1.0", {\ 673 - "packageLocation": "./.yarn/cache/is-plain-obj-npm-1.1.0-1046f64c0b-0ee0480779.zip/node_modules/is-plain-obj/",\ 674 - "packageDependencies": [\ 675 - ["is-plain-obj", "npm:1.1.0"]\ 676 - ],\ 677 - "linkType": "HARD"\ 678 - }]\ 679 - ]],\ 680 - ["is-stream", [\ 681 - ["npm:2.0.0", {\ 682 - "packageLocation": "./.yarn/cache/is-stream-npm-2.0.0-1401f82ad7-4dc47738e2.zip/node_modules/is-stream/",\ 683 - "packageDependencies": [\ 684 - ["is-stream", "npm:2.0.0"]\ 685 - ],\ 686 - "linkType": "HARD"\ 687 - }]\ 688 - ]],\ 689 - ["isexe", [\ 690 - ["npm:2.0.0", {\ 691 - "packageLocation": "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/",\ 692 - "packageDependencies": [\ 693 - ["isexe", "npm:2.0.0"]\ 694 - ],\ 695 - "linkType": "HARD"\ 696 - }]\ 697 - ]],\ 698 - ["js-tokens", [\ 699 - ["npm:4.0.0", {\ 700 - "packageLocation": "./.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip/node_modules/js-tokens/",\ 701 - "packageDependencies": [\ 702 - ["js-tokens", "npm:4.0.0"]\ 703 - ],\ 704 - "linkType": "HARD"\ 705 - }]\ 706 - ]],\ 707 - ["js-yaml", [\ 708 - ["npm:3.14.1", {\ 709 - "packageLocation": "./.yarn/cache/js-yaml-npm-3.14.1-b968c6095e-bef146085f.zip/node_modules/js-yaml/",\ 710 - "packageDependencies": [\ 711 - ["js-yaml", "npm:3.14.1"],\ 712 - ["argparse", "npm:1.0.10"],\ 713 - ["esprima", "npm:4.0.1"]\ 714 - ],\ 715 - "linkType": "HARD"\ 716 - }],\ 717 - ["npm:4.1.0", {\ 718 - "packageLocation": "./.yarn/cache/js-yaml-npm-4.1.0-3606f32312-c7830dfd45.zip/node_modules/js-yaml/",\ 719 - "packageDependencies": [\ 720 - ["js-yaml", "npm:4.1.0"],\ 721 - ["argparse", "npm:2.0.1"]\ 722 - ],\ 723 - "linkType": "HARD"\ 724 - }]\ 725 - ]],\ 726 - ["json-parse-even-better-errors", [\ 727 - ["npm:2.3.1", {\ 728 - "packageLocation": "./.yarn/cache/json-parse-even-better-errors-npm-2.3.1-144d62256e-798ed4cf33.zip/node_modules/json-parse-even-better-errors/",\ 729 - "packageDependencies": [\ 730 - ["json-parse-even-better-errors", "npm:2.3.1"]\ 731 - ],\ 732 - "linkType": "HARD"\ 733 - }]\ 734 - ]],\ 735 - ["json-schema-migrate", [\ 736 - ["npm:2.0.0", {\ 737 - "packageLocation": "./.yarn/cache/json-schema-migrate-npm-2.0.0-87745c8332-21537305f3.zip/node_modules/json-schema-migrate/",\ 738 - "packageDependencies": [\ 739 - ["json-schema-migrate", "npm:2.0.0"],\ 740 - ["ajv", "npm:8.6.1"]\ 741 - ],\ 742 - "linkType": "HARD"\ 743 - }]\ 744 - ]],\ 745 - ["json-schema-traverse", [\ 746 - ["npm:1.0.0", {\ 747 - "packageLocation": "./.yarn/cache/json-schema-traverse-npm-1.0.0-fb3684f4f0-02f2f466cd.zip/node_modules/json-schema-traverse/",\ 748 - "packageDependencies": [\ 749 - ["json-schema-traverse", "npm:1.0.0"]\ 750 - ],\ 751 - "linkType": "HARD"\ 752 - }]\ 753 - ]],\ 754 - ["json5", [\ 755 - ["npm:2.2.2", {\ 756 - "packageLocation": "./.yarn/cache/json5-npm-2.2.2-b047c53fcb-9a878d66b7.zip/node_modules/json5/",\ 757 - "packageDependencies": [\ 758 - ["json5", "npm:2.2.2"]\ 759 - ],\ 760 - "linkType": "HARD"\ 761 - }]\ 762 - ]],\ 763 - ["kind-of", [\ 764 - ["npm:6.0.3", {\ 765 - "packageLocation": "./.yarn/cache/kind-of-npm-6.0.3-ab15f36220-3ab01e7b1d.zip/node_modules/kind-of/",\ 766 - "packageDependencies": [\ 767 - ["kind-of", "npm:6.0.3"]\ 768 - ],\ 769 - "linkType": "HARD"\ 770 - }]\ 771 - ]],\ 772 - ["lines-and-columns", [\ 773 - ["npm:1.1.6", {\ 774 - "packageLocation": "./.yarn/cache/lines-and-columns-npm-1.1.6-23e74fab67-198a5436b1.zip/node_modules/lines-and-columns/",\ 775 - "packageDependencies": [\ 776 - ["lines-and-columns", "npm:1.1.6"]\ 777 - ],\ 778 - "linkType": "HARD"\ 779 - }]\ 780 - ]],\ 781 - ["locate-path", [\ 782 - ["npm:6.0.0", {\ 783 - "packageLocation": "./.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip/node_modules/locate-path/",\ 784 - "packageDependencies": [\ 785 - ["locate-path", "npm:6.0.0"],\ 786 - ["p-locate", "npm:5.0.0"]\ 787 - ],\ 788 - "linkType": "HARD"\ 789 - }]\ 790 - ]],\ 791 - ["lru-cache", [\ 792 - ["npm:6.0.0", {\ 793 - "packageLocation": "./.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip/node_modules/lru-cache/",\ 794 - "packageDependencies": [\ 795 - ["lru-cache", "npm:6.0.0"],\ 796 - ["yallist", "npm:4.0.0"]\ 797 - ],\ 798 - "linkType": "HARD"\ 799 - }]\ 800 - ]],\ 801 - ["map-obj", [\ 802 - ["npm:1.0.1", {\ 803 - "packageLocation": "./.yarn/cache/map-obj-npm-1.0.1-fa55100fac-9949e7baec.zip/node_modules/map-obj/",\ 804 - "packageDependencies": [\ 805 - ["map-obj", "npm:1.0.1"]\ 806 - ],\ 807 - "linkType": "HARD"\ 808 - }],\ 809 - ["npm:4.3.0", {\ 810 - "packageLocation": "./.yarn/cache/map-obj-npm-4.3.0-d53e32935d-fbc554934d.zip/node_modules/map-obj/",\ 811 - "packageDependencies": [\ 812 - ["map-obj", "npm:4.3.0"]\ 813 - ],\ 814 - "linkType": "HARD"\ 815 - }]\ 816 - ]],\ 817 - ["meow", [\ 818 - ["npm:10.1.5", {\ 819 - "packageLocation": "./.yarn/cache/meow-npm-10.1.5-a1bab640d1-dd5f0caa4a.zip/node_modules/meow/",\ 820 - "packageDependencies": [\ 821 - ["meow", "npm:10.1.5"],\ 822 - ["@types/minimist", "npm:1.2.2"],\ 823 - ["camelcase-keys", "npm:7.0.2"],\ 824 - ["decamelize", "npm:5.0.1"],\ 825 - ["decamelize-keys", "npm:1.1.0"],\ 826 - ["hard-rejection", "npm:2.1.0"],\ 827 - ["minimist-options", "npm:4.1.0"],\ 828 - ["normalize-package-data", "npm:3.0.3"],\ 829 - ["read-pkg-up", "npm:8.0.0"],\ 830 - ["redent", "npm:4.0.0"],\ 831 - ["trim-newlines", "npm:4.0.2"],\ 832 - ["type-fest", "npm:1.4.0"],\ 833 - ["yargs-parser", "npm:20.2.9"]\ 834 - ],\ 835 - "linkType": "HARD"\ 836 - }]\ 837 - ]],\ 838 - ["merge-stream", [\ 839 - ["npm:2.0.0", {\ 840 - "packageLocation": "./.yarn/cache/merge-stream-npm-2.0.0-2ac83efea5-6fa4dcc8d8.zip/node_modules/merge-stream/",\ 841 - "packageDependencies": [\ 842 - ["merge-stream", "npm:2.0.0"]\ 843 - ],\ 844 - "linkType": "HARD"\ 845 - }]\ 846 - ]],\ 847 - ["mimic-fn", [\ 848 - ["npm:2.1.0", {\ 849 - "packageLocation": "./.yarn/cache/mimic-fn-npm-2.1.0-4fbeb3abb4-d2421a3444.zip/node_modules/mimic-fn/",\ 850 - "packageDependencies": [\ 851 - ["mimic-fn", "npm:2.1.0"]\ 852 - ],\ 853 - "linkType": "HARD"\ 854 - }]\ 855 - ]],\ 856 - ["min-indent", [\ 857 - ["npm:1.0.1", {\ 858 - "packageLocation": "./.yarn/cache/min-indent-npm-1.0.1-77031f50e1-bfc6dd03c5.zip/node_modules/min-indent/",\ 859 - "packageDependencies": [\ 860 - ["min-indent", "npm:1.0.1"]\ 861 - ],\ 862 - "linkType": "HARD"\ 863 - }]\ 864 - ]],\ 865 - ["minimatch", [\ 866 - ["npm:3.1.2", {\ 867 - "packageLocation": "./.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip/node_modules/minimatch/",\ 868 - "packageDependencies": [\ 869 - ["minimatch", "npm:3.1.2"],\ 870 - ["brace-expansion", "npm:1.1.11"]\ 871 - ],\ 872 - "linkType": "HARD"\ 873 - }]\ 874 - ]],\ 875 - ["minimist", [\ 876 - ["npm:1.2.6", {\ 877 - "packageLocation": "./.yarn/cache/minimist-npm-1.2.6-f4cee4b4af-d15428cd1e.zip/node_modules/minimist/",\ 878 - "packageDependencies": [\ 879 - ["minimist", "npm:1.2.6"]\ 880 - ],\ 881 - "linkType": "HARD"\ 882 - }]\ 883 - ]],\ 884 - ["minimist-options", [\ 885 - ["npm:4.1.0", {\ 886 - "packageLocation": "./.yarn/cache/minimist-options-npm-4.1.0-64ca250fc1-8c040b3068.zip/node_modules/minimist-options/",\ 887 - "packageDependencies": [\ 888 - ["minimist-options", "npm:4.1.0"],\ 889 - ["arrify", "npm:1.0.1"],\ 890 - ["is-plain-obj", "npm:1.1.0"],\ 891 - ["kind-of", "npm:6.0.3"]\ 892 - ],\ 893 - "linkType": "HARD"\ 894 - }]\ 895 - ]],\ 896 - ["mount-point", [\ 897 - ["npm:3.0.0", {\ 898 - "packageLocation": "./.yarn/cache/mount-point-npm-3.0.0-4a214c8cd1-edb588e613.zip/node_modules/mount-point/",\ 899 - "packageDependencies": [\ 900 - ["mount-point", "npm:3.0.0"],\ 901 - ["@sindresorhus/df", "npm:1.0.1"],\ 902 - ["pify", "npm:2.3.0"],\ 903 - ["pinkie-promise", "npm:2.0.1"]\ 904 - ],\ 905 - "linkType": "HARD"\ 906 - }]\ 907 - ]],\ 908 - ["move-file", [\ 909 - ["npm:3.0.0", {\ 910 - "packageLocation": "./.yarn/cache/move-file-npm-3.0.0-60fa241416-18b0a542b4.zip/node_modules/move-file/",\ 911 - "packageDependencies": [\ 912 - ["move-file", "npm:3.0.0"],\ 913 - ["path-exists", "npm:5.0.0"]\ 914 - ],\ 915 - "linkType": "HARD"\ 916 - }]\ 917 - ]],\ 918 - ["normalize-package-data", [\ 919 - ["npm:3.0.3", {\ 920 - "packageLocation": "./.yarn/cache/normalize-package-data-npm-3.0.3-1a49056685-bbcee00339.zip/node_modules/normalize-package-data/",\ 921 - "packageDependencies": [\ 922 - ["normalize-package-data", "npm:3.0.3"],\ 923 - ["hosted-git-info", "npm:4.0.2"],\ 924 - ["is-core-module", "npm:2.11.0"],\ 925 - ["semver", "npm:7.5.3"],\ 926 - ["validate-npm-package-license", "npm:3.0.4"]\ 927 - ],\ 928 - "linkType": "HARD"\ 929 - }]\ 930 - ]],\ 931 - ["npm-run-path", [\ 932 - ["npm:3.1.0", {\ 933 - "packageLocation": "./.yarn/cache/npm-run-path-npm-3.1.0-dd7b0fa1be-141e0b8f0e.zip/node_modules/npm-run-path/",\ 934 - "packageDependencies": [\ 935 - ["npm-run-path", "npm:3.1.0"],\ 936 - ["path-key", "npm:3.1.1"]\ 937 - ],\ 938 - "linkType": "HARD"\ 939 - }]\ 940 - ]],\ 941 - ["once", [\ 942 - ["npm:1.4.0", {\ 943 - "packageLocation": "./.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip/node_modules/once/",\ 944 - "packageDependencies": [\ 945 - ["once", "npm:1.4.0"],\ 946 - ["wrappy", "npm:1.0.2"]\ 947 - ],\ 948 - "linkType": "HARD"\ 949 - }]\ 950 - ]],\ 951 - ["onetime", [\ 952 - ["npm:5.1.2", {\ 953 - "packageLocation": "./.yarn/cache/onetime-npm-5.1.2-3ed148fa42-2478859ef8.zip/node_modules/onetime/",\ 954 - "packageDependencies": [\ 955 - ["onetime", "npm:5.1.2"],\ 956 - ["mimic-fn", "npm:2.1.0"]\ 957 - ],\ 958 - "linkType": "HARD"\ 959 - }]\ 960 - ]],\ 961 - ["os-homedir", [\ 962 - ["npm:1.0.2", {\ 963 - "packageLocation": "./.yarn/cache/os-homedir-npm-1.0.2-01f82faa88-af609f5a7a.zip/node_modules/os-homedir/",\ 964 - "packageDependencies": [\ 965 - ["os-homedir", "npm:1.0.2"]\ 966 - ],\ 967 - "linkType": "HARD"\ 968 - }]\ 969 - ]],\ 970 - ["p-finally", [\ 971 - ["npm:2.0.1", {\ 972 - "packageLocation": "./.yarn/cache/p-finally-npm-2.0.1-b59964aa17-6306a2851c.zip/node_modules/p-finally/",\ 973 - "packageDependencies": [\ 974 - ["p-finally", "npm:2.0.1"]\ 975 - ],\ 976 - "linkType": "HARD"\ 977 - }]\ 978 - ]],\ 979 - ["p-limit", [\ 980 - ["npm:3.1.0", {\ 981 - "packageLocation": "./.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip/node_modules/p-limit/",\ 982 - "packageDependencies": [\ 983 - ["p-limit", "npm:3.1.0"],\ 984 - ["yocto-queue", "npm:0.1.0"]\ 985 - ],\ 986 - "linkType": "HARD"\ 987 - }]\ 988 - ]],\ 989 - ["p-locate", [\ 990 - ["npm:5.0.0", {\ 991 - "packageLocation": "./.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip/node_modules/p-locate/",\ 992 - "packageDependencies": [\ 993 - ["p-locate", "npm:5.0.0"],\ 994 - ["p-limit", "npm:3.1.0"]\ 995 - ],\ 996 - "linkType": "HARD"\ 997 - }]\ 998 - ]],\ 999 - ["p-map", [\ 1000 - ["npm:5.5.0", {\ 1001 - "packageLocation": "./.yarn/cache/p-map-npm-5.5.0-9758eb14ee-065cb6fca6.zip/node_modules/p-map/",\ 1002 - "packageDependencies": [\ 1003 - ["p-map", "npm:5.5.0"],\ 1004 - ["aggregate-error", "npm:4.0.1"]\ 1005 - ],\ 1006 - "linkType": "HARD"\ 1007 - }]\ 1008 - ]],\ 1009 - ["parse-json", [\ 1010 - ["npm:5.2.0", {\ 1011 - "packageLocation": "./.yarn/cache/parse-json-npm-5.2.0-00a63b1199-62085b17d6.zip/node_modules/parse-json/",\ 1012 - "packageDependencies": [\ 1013 - ["parse-json", "npm:5.2.0"],\ 1014 - ["@babel/code-frame", "npm:7.14.5"],\ 1015 - ["error-ex", "npm:1.3.2"],\ 1016 - ["json-parse-even-better-errors", "npm:2.3.1"],\ 1017 - ["lines-and-columns", "npm:1.1.6"]\ 1018 - ],\ 1019 - "linkType": "HARD"\ 1020 - }]\ 1021 - ]],\ 1022 - ["path-exists", [\ 1023 - ["npm:4.0.0", {\ 1024 - "packageLocation": "./.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip/node_modules/path-exists/",\ 1025 - "packageDependencies": [\ 1026 - ["path-exists", "npm:4.0.0"]\ 1027 - ],\ 1028 - "linkType": "HARD"\ 1029 - }],\ 1030 - ["npm:5.0.0", {\ 1031 - "packageLocation": "./.yarn/cache/path-exists-npm-5.0.0-0bf403c56c-8ca842868c.zip/node_modules/path-exists/",\ 1032 - "packageDependencies": [\ 1033 - ["path-exists", "npm:5.0.0"]\ 1034 - ],\ 1035 - "linkType": "HARD"\ 1036 - }]\ 1037 - ]],\ 1038 - ["path-is-absolute", [\ 1039 - ["npm:1.0.1", {\ 1040 - "packageLocation": "./.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip/node_modules/path-is-absolute/",\ 1041 - "packageDependencies": [\ 1042 - ["path-is-absolute", "npm:1.0.1"]\ 1043 - ],\ 1044 - "linkType": "HARD"\ 1045 - }]\ 1046 - ]],\ 1047 - ["path-key", [\ 1048 - ["npm:3.1.1", {\ 1049 - "packageLocation": "./.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip/node_modules/path-key/",\ 1050 - "packageDependencies": [\ 1051 - ["path-key", "npm:3.1.1"]\ 1052 - ],\ 1053 - "linkType": "HARD"\ 1054 - }]\ 1055 - ]],\ 1056 - ["path-type", [\ 1057 - ["npm:3.0.0", {\ 1058 - "packageLocation": "./.yarn/cache/path-type-npm-3.0.0-252361a0eb-735b35e256.zip/node_modules/path-type/",\ 1059 - "packageDependencies": [\ 1060 - ["path-type", "npm:3.0.0"],\ 1061 - ["pify", "npm:3.0.0"]\ 1062 - ],\ 1063 - "linkType": "HARD"\ 1064 - }]\ 1065 - ]],\ 1066 - ["pify", [\ 1067 - ["npm:2.3.0", {\ 1068 - "packageLocation": "./.yarn/cache/pify-npm-2.3.0-8b63310934-9503aaeaf4.zip/node_modules/pify/",\ 1069 - "packageDependencies": [\ 1070 - ["pify", "npm:2.3.0"]\ 1071 - ],\ 1072 - "linkType": "HARD"\ 1073 - }],\ 1074 - ["npm:3.0.0", {\ 1075 - "packageLocation": "./.yarn/cache/pify-npm-3.0.0-679ee405c8-6cdcbc3567.zip/node_modules/pify/",\ 1076 - "packageDependencies": [\ 1077 - ["pify", "npm:3.0.0"]\ 1078 - ],\ 1079 - "linkType": "HARD"\ 1080 - }]\ 1081 - ]],\ 1082 - ["pinkie", [\ 1083 - ["npm:2.0.4", {\ 1084 - "packageLocation": "./.yarn/cache/pinkie-npm-2.0.4-cffce4fb09-b12b10afea.zip/node_modules/pinkie/",\ 1085 - "packageDependencies": [\ 1086 - ["pinkie", "npm:2.0.4"]\ 1087 - ],\ 1088 - "linkType": "HARD"\ 1089 - }]\ 1090 - ]],\ 1091 - ["pinkie-promise", [\ 1092 - ["npm:2.0.1", {\ 1093 - "packageLocation": "./.yarn/cache/pinkie-promise-npm-2.0.1-095439b8c5-b53a4a2e73.zip/node_modules/pinkie-promise/",\ 1094 - "packageDependencies": [\ 1095 - ["pinkie-promise", "npm:2.0.1"],\ 1096 - ["pinkie", "npm:2.0.4"]\ 1097 - ],\ 1098 - "linkType": "HARD"\ 1099 - }]\ 1100 - ]],\ 1101 - ["pump", [\ 1102 - ["npm:3.0.0", {\ 1103 - "packageLocation": "./.yarn/cache/pump-npm-3.0.0-0080bf6a7a-e42e9229fb.zip/node_modules/pump/",\ 1104 - "packageDependencies": [\ 1105 - ["pump", "npm:3.0.0"],\ 1106 - ["end-of-stream", "npm:1.4.4"],\ 1107 - ["once", "npm:1.4.0"]\ 1108 - ],\ 1109 - "linkType": "HARD"\ 1110 - }]\ 1111 - ]],\ 1112 - ["punycode", [\ 1113 - ["npm:2.1.1", {\ 1114 - "packageLocation": "./.yarn/cache/punycode-npm-2.1.1-26eb3e15cf-823bf443c6.zip/node_modules/punycode/",\ 1115 - "packageDependencies": [\ 1116 - ["punycode", "npm:2.1.1"]\ 1117 - ],\ 1118 - "linkType": "HARD"\ 1119 - }]\ 1120 - ]],\ 1121 - ["quick-lru", [\ 1122 - ["npm:5.1.1", {\ 1123 - "packageLocation": "./.yarn/cache/quick-lru-npm-5.1.1-e38e0edce3-a516faa255.zip/node_modules/quick-lru/",\ 1124 - "packageDependencies": [\ 1125 - ["quick-lru", "npm:5.1.1"]\ 1126 - ],\ 1127 - "linkType": "HARD"\ 1128 - }]\ 1129 - ]],\ 1130 - ["read-pkg", [\ 1131 - ["npm:6.0.0", {\ 1132 - "packageLocation": "./.yarn/cache/read-pkg-npm-6.0.0-d89ce14684-0cebdff381.zip/node_modules/read-pkg/",\ 1133 - "packageDependencies": [\ 1134 - ["read-pkg", "npm:6.0.0"],\ 1135 - ["@types/normalize-package-data", "npm:2.4.0"],\ 1136 - ["normalize-package-data", "npm:3.0.3"],\ 1137 - ["parse-json", "npm:5.2.0"],\ 1138 - ["type-fest", "npm:1.4.0"]\ 1139 - ],\ 1140 - "linkType": "HARD"\ 1141 - }]\ 1142 - ]],\ 1143 - ["read-pkg-up", [\ 1144 - ["npm:8.0.0", {\ 1145 - "packageLocation": "./.yarn/cache/read-pkg-up-npm-8.0.0-6f39941cc9-fe4c804016.zip/node_modules/read-pkg-up/",\ 1146 - "packageDependencies": [\ 1147 - ["read-pkg-up", "npm:8.0.0"],\ 1148 - ["find-up", "npm:5.0.0"],\ 1149 - ["read-pkg", "npm:6.0.0"],\ 1150 - ["type-fest", "npm:1.4.0"]\ 1151 - ],\ 1152 - "linkType": "HARD"\ 1153 - }]\ 1154 - ]],\ 1155 - ["redent", [\ 1156 - ["npm:4.0.0", {\ 1157 - "packageLocation": "./.yarn/cache/redent-npm-4.0.0-67da39f156-6944e7b1d8.zip/node_modules/redent/",\ 1158 - "packageDependencies": [\ 1159 - ["redent", "npm:4.0.0"],\ 1160 - ["indent-string", "npm:5.0.0"],\ 1161 - ["strip-indent", "npm:4.0.0"]\ 1162 - ],\ 1163 - "linkType": "HARD"\ 1164 - }]\ 1165 - ]],\ 1166 - ["require-from-string", [\ 1167 - ["npm:2.0.2", {\ 1168 - "packageLocation": "./.yarn/cache/require-from-string-npm-2.0.2-8557e0db12-a03ef68954.zip/node_modules/require-from-string/",\ 1169 - "packageDependencies": [\ 1170 - ["require-from-string", "npm:2.0.2"]\ 1171 - ],\ 1172 - "linkType": "HARD"\ 1173 - }]\ 1174 - ]],\ 1175 - ["semver", [\ 1176 - ["npm:7.5.3", {\ 1177 - "packageLocation": "./.yarn/cache/semver-npm-7.5.3-275095dbf3-9d58db1652.zip/node_modules/semver/",\ 1178 - "packageDependencies": [\ 1179 - ["semver", "npm:7.5.3"],\ 1180 - ["lru-cache", "npm:6.0.0"]\ 1181 - ],\ 1182 - "linkType": "HARD"\ 1183 - }]\ 1184 - ]],\ 1185 - ["shebang-command", [\ 1186 - ["npm:2.0.0", {\ 1187 - "packageLocation": "./.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip/node_modules/shebang-command/",\ 1188 - "packageDependencies": [\ 1189 - ["shebang-command", "npm:2.0.0"],\ 1190 - ["shebang-regex", "npm:3.0.0"]\ 1191 - ],\ 1192 - "linkType": "HARD"\ 1193 - }]\ 1194 - ]],\ 1195 - ["shebang-regex", [\ 1196 - ["npm:3.0.0", {\ 1197 - "packageLocation": "./.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip/node_modules/shebang-regex/",\ 1198 - "packageDependencies": [\ 1199 - ["shebang-regex", "npm:3.0.0"]\ 1200 - ],\ 1201 - "linkType": "HARD"\ 1202 - }]\ 1203 - ]],\ 1204 - ["signal-exit", [\ 1205 - ["npm:3.0.3", {\ 1206 - "packageLocation": "./.yarn/cache/signal-exit-npm-3.0.3-5a2d797648-f0169d3f12.zip/node_modules/signal-exit/",\ 1207 - "packageDependencies": [\ 1208 - ["signal-exit", "npm:3.0.3"]\ 1209 - ],\ 1210 - "linkType": "HARD"\ 1211 - }]\ 1212 - ]],\ 1213 - ["slash", [\ 1214 - ["npm:1.0.0", {\ 1215 - "packageLocation": "./.yarn/cache/slash-npm-1.0.0-a244873c30-4b6e21b1fb.zip/node_modules/slash/",\ 1216 - "packageDependencies": [\ 1217 - ["slash", "npm:1.0.0"]\ 1218 - ],\ 1219 - "linkType": "HARD"\ 1220 - }]\ 1221 - ]],\ 1222 - ["spdx-correct", [\ 1223 - ["npm:3.1.0", {\ 1224 - "packageLocation": "./.yarn/cache/spdx-correct-npm-3.1.0-9ad640b3ef-fda9fc191e.zip/node_modules/spdx-correct/",\ 1225 - "packageDependencies": [\ 1226 - ["spdx-correct", "npm:3.1.0"],\ 1227 - ["spdx-expression-parse", "npm:3.0.0"],\ 1228 - ["spdx-license-ids", "npm:3.0.3"]\ 1229 - ],\ 1230 - "linkType": "HARD"\ 1231 - }]\ 1232 - ]],\ 1233 - ["spdx-exceptions", [\ 1234 - ["npm:2.2.0", {\ 1235 - "packageLocation": "./.yarn/cache/spdx-exceptions-npm-2.2.0-a19a6b5050-29189de3f6.zip/node_modules/spdx-exceptions/",\ 1236 - "packageDependencies": [\ 1237 - ["spdx-exceptions", "npm:2.2.0"]\ 1238 - ],\ 1239 - "linkType": "HARD"\ 1240 - }]\ 1241 - ]],\ 1242 - ["spdx-expression-parse", [\ 1243 - ["npm:3.0.0", {\ 1244 - "packageLocation": "./.yarn/cache/spdx-expression-parse-npm-3.0.0-704f8535ae-308c8c4925.zip/node_modules/spdx-expression-parse/",\ 1245 - "packageDependencies": [\ 1246 - ["spdx-expression-parse", "npm:3.0.0"],\ 1247 - ["spdx-exceptions", "npm:2.2.0"],\ 1248 - ["spdx-license-ids", "npm:3.0.3"]\ 1249 - ],\ 1250 - "linkType": "HARD"\ 1251 - }]\ 1252 - ]],\ 1253 - ["spdx-license-ids", [\ 1254 - ["npm:3.0.3", {\ 1255 - "packageLocation": "./.yarn/cache/spdx-license-ids-npm-3.0.3-dd83ff3650-ec7bfab530.zip/node_modules/spdx-license-ids/",\ 1256 - "packageDependencies": [\ 1257 - ["spdx-license-ids", "npm:3.0.3"]\ 1258 - ],\ 1259 - "linkType": "HARD"\ 1260 - }]\ 1261 - ]],\ 1262 - ["sprintf-js", [\ 1263 - ["npm:1.0.3", {\ 1264 - "packageLocation": "./.yarn/cache/sprintf-js-npm-1.0.3-73f0a322fa-19d79aec21.zip/node_modules/sprintf-js/",\ 1265 - "packageDependencies": [\ 1266 - ["sprintf-js", "npm:1.0.3"]\ 1267 - ],\ 1268 - "linkType": "HARD"\ 1269 - }]\ 1270 - ]],\ 1271 - ["strip-final-newline", [\ 1272 - ["npm:2.0.0", {\ 1273 - "packageLocation": "./.yarn/cache/strip-final-newline-npm-2.0.0-340c4f7c66-69412b5e25.zip/node_modules/strip-final-newline/",\ 1274 - "packageDependencies": [\ 1275 - ["strip-final-newline", "npm:2.0.0"]\ 1276 - ],\ 1277 - "linkType": "HARD"\ 1278 - }]\ 1279 - ]],\ 1280 - ["strip-indent", [\ 1281 - ["npm:4.0.0", {\ 1282 - "packageLocation": "./.yarn/cache/strip-indent-npm-4.0.0-12c489be86-06cbcd93da.zip/node_modules/strip-indent/",\ 1283 - "packageDependencies": [\ 1284 - ["strip-indent", "npm:4.0.0"],\ 1285 - ["min-indent", "npm:1.0.1"]\ 1286 - ],\ 1287 - "linkType": "HARD"\ 1288 - }]\ 1289 - ]],\ 1290 - ["supports-color", [\ 1291 - ["npm:5.5.0", {\ 1292 - "packageLocation": "./.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip/node_modules/supports-color/",\ 1293 - "packageDependencies": [\ 1294 - ["supports-color", "npm:5.5.0"],\ 1295 - ["has-flag", "npm:3.0.0"]\ 1296 - ],\ 1297 - "linkType": "HARD"\ 1298 - }]\ 1299 - ]],\ 1300 - ["trash", [\ 1301 - ["npm:8.1.0", {\ 1302 - "packageLocation": "./.yarn/unplugged/trash-npm-8.1.0-e8271d1f12/node_modules/trash/",\ 1303 - "packageDependencies": [\ 1304 - ["trash", "npm:8.1.0"],\ 1305 - ["@sindresorhus/chunkify", "npm:0.2.0"],\ 1306 - ["@stroncium/procfs", "npm:1.2.1"],\ 1307 - ["globby", "npm:7.1.1"],\ 1308 - ["is-path-inside", "npm:4.0.0"],\ 1309 - ["move-file", "npm:3.0.0"],\ 1310 - ["p-map", "npm:5.5.0"],\ 1311 - ["uuid", "npm:8.3.2"],\ 1312 - ["xdg-trashdir", "npm:3.1.0"]\ 1313 - ],\ 1314 - "linkType": "HARD"\ 1315 - }]\ 1316 - ]],\ 1317 - ["trash-cli", [\ 1318 - ["npm:5.0.0", {\ 1319 - "packageLocation": "./.yarn/cache/trash-cli-npm-5.0.0-172c9c6b9e-b987156abb.zip/node_modules/trash-cli/",\ 1320 - "packageDependencies": [\ 1321 - ["trash-cli", "npm:5.0.0"],\ 1322 - ["meow", "npm:10.1.5"],\ 1323 - ["trash", "npm:8.1.0"]\ 1324 - ],\ 1325 - "linkType": "HARD"\ 1326 - }]\ 1327 - ]],\ 1328 - ["trim-newlines", [\ 1329 - ["npm:4.0.2", {\ 1330 - "packageLocation": "./.yarn/cache/trim-newlines-npm-4.0.2-e01f9adaf9-1eef206eb7.zip/node_modules/trim-newlines/",\ 1331 - "packageDependencies": [\ 1332 - ["trim-newlines", "npm:4.0.2"]\ 1333 - ],\ 1334 - "linkType": "HARD"\ 1335 - }]\ 1336 - ]],\ 1337 - ["type-fest", [\ 1338 - ["npm:1.4.0", {\ 1339 - "packageLocation": "./.yarn/cache/type-fest-npm-1.4.0-7dd848962a-b011c33886.zip/node_modules/type-fest/",\ 1340 - "packageDependencies": [\ 1341 - ["type-fest", "npm:1.4.0"]\ 1342 - ],\ 1343 - "linkType": "HARD"\ 1344 - }]\ 1345 - ]],\ 1346 - ["uri-js", [\ 1347 - ["npm:4.2.2", {\ 1348 - "packageLocation": "./.yarn/cache/uri-js-npm-4.2.2-e6ac2fca26-5a91c55d8a.zip/node_modules/uri-js/",\ 1349 - "packageDependencies": [\ 1350 - ["uri-js", "npm:4.2.2"],\ 1351 - ["punycode", "npm:2.1.1"]\ 1352 - ],\ 1353 - "linkType": "HARD"\ 1354 - }]\ 1355 - ]],\ 1356 - ["user-home", [\ 1357 - ["npm:2.0.0", {\ 1358 - "packageLocation": "./.yarn/cache/user-home-npm-2.0.0-a7b3877168-a3329faa95.zip/node_modules/user-home/",\ 1359 - "packageDependencies": [\ 1360 - ["user-home", "npm:2.0.0"],\ 1361 - ["os-homedir", "npm:1.0.2"]\ 1362 - ],\ 1363 - "linkType": "HARD"\ 1364 - }]\ 1365 - ]],\ 1366 - ["uuid", [\ 1367 - ["npm:8.3.2", {\ 1368 - "packageLocation": "./.yarn/cache/uuid-npm-8.3.2-eca0baba53-5575a8a75c.zip/node_modules/uuid/",\ 1369 - "packageDependencies": [\ 1370 - ["uuid", "npm:8.3.2"]\ 1371 - ],\ 1372 - "linkType": "HARD"\ 1373 - }]\ 1374 - ]],\ 1375 - ["validate-npm-package-license", [\ 1376 - ["npm:3.0.4", {\ 1377 - "packageLocation": "./.yarn/cache/validate-npm-package-license-npm-3.0.4-7af8adc7a8-35703ac889.zip/node_modules/validate-npm-package-license/",\ 1378 - "packageDependencies": [\ 1379 - ["validate-npm-package-license", "npm:3.0.4"],\ 1380 - ["spdx-correct", "npm:3.1.0"],\ 1381 - ["spdx-expression-parse", "npm:3.0.0"]\ 1382 - ],\ 1383 - "linkType": "HARD"\ 1384 - }]\ 1385 - ]],\ 1386 - ["which", [\ 1387 - ["npm:2.0.2", {\ 1388 - "packageLocation": "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/",\ 1389 - "packageDependencies": [\ 1390 - ["which", "npm:2.0.2"],\ 1391 - ["isexe", "npm:2.0.0"]\ 1392 - ],\ 1393 - "linkType": "HARD"\ 1394 - }]\ 1395 - ]],\ 1396 - ["wrappy", [\ 1397 - ["npm:1.0.2", {\ 1398 - "packageLocation": "./.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip/node_modules/wrappy/",\ 1399 - "packageDependencies": [\ 1400 - ["wrappy", "npm:1.0.2"]\ 1401 - ],\ 1402 - "linkType": "HARD"\ 1403 - }]\ 1404 - ]],\ 1405 - ["xdg-basedir", [\ 1406 - ["npm:4.0.0", {\ 1407 - "packageLocation": "./.yarn/cache/xdg-basedir-npm-4.0.0-ed08d380e2-0073d5b59a.zip/node_modules/xdg-basedir/",\ 1408 - "packageDependencies": [\ 1409 - ["xdg-basedir", "npm:4.0.0"]\ 1410 - ],\ 1411 - "linkType": "HARD"\ 1412 - }]\ 1413 - ]],\ 1414 - ["xdg-trashdir", [\ 1415 - ["npm:3.1.0", {\ 1416 - "packageLocation": "./.yarn/cache/xdg-trashdir-npm-3.1.0-4867489077-1b8ed9229a.zip/node_modules/xdg-trashdir/",\ 1417 - "packageDependencies": [\ 1418 - ["xdg-trashdir", "npm:3.1.0"],\ 1419 - ["@sindresorhus/df", "npm:3.1.1"],\ 1420 - ["mount-point", "npm:3.0.0"],\ 1421 - ["user-home", "npm:2.0.0"],\ 1422 - ["xdg-basedir", "npm:4.0.0"]\ 1423 - ],\ 1424 - "linkType": "HARD"\ 1425 - }]\ 1426 - ]],\ 1427 - ["yallist", [\ 1428 - ["npm:4.0.0", {\ 1429 - "packageLocation": "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/",\ 1430 - "packageDependencies": [\ 1431 - ["yallist", "npm:4.0.0"]\ 1432 - ],\ 1433 - "linkType": "HARD"\ 1434 - }]\ 1435 - ]],\ 1436 - ["yargs-parser", [\ 1437 - ["npm:20.2.9", {\ 1438 - "packageLocation": "./.yarn/cache/yargs-parser-npm-20.2.9-a1d19e598d-8bb69015f2.zip/node_modules/yargs-parser/",\ 1439 - "packageDependencies": [\ 1440 - ["yargs-parser", "npm:20.2.9"]\ 1441 - ],\ 1442 - "linkType": "HARD"\ 1443 - }]\ 1444 - ]],\ 1445 - ["yocto-queue", [\ 1446 - ["npm:0.1.0", {\ 1447 - "packageLocation": "./.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip/node_modules/yocto-queue/",\ 1448 - "packageDependencies": [\ 1449 - ["yocto-queue", "npm:0.1.0"]\ 1450 - ],\ 1451 - "linkType": "HARD"\ 1452 - }]\ 1453 - ]]\ 1454 - ]\ 1455 - }'), {basePath: basePath || __dirname}); 1456 - } 1457 - 1458 - const fs = require('fs'); 1459 - const path = require('path'); 1460 - const require$$0 = require('module'); 1461 - const StringDecoder = require('string_decoder'); 1462 - const url = require('url'); 1463 - const os = require('os'); 1464 - const nodeUtils = require('util'); 1465 - const readline = require('readline'); 1466 - const assert = require('assert'); 1467 - const stream = require('stream'); 1468 - const zlib = require('zlib'); 1469 - const events = require('events'); 1470 - 1471 - const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e }; 1472 - 1473 - function _interopNamespace(e) { 1474 - if (e && e.__esModule) return e; 1475 - const n = Object.create(null); 1476 - if (e) { 1477 - for (const k in e) { 1478 - if (k !== 'default') { 1479 - const d = Object.getOwnPropertyDescriptor(e, k); 1480 - Object.defineProperty(n, k, d.get ? d : { 1481 - enumerable: true, 1482 - get: () => e[k] 1483 - }); 1484 - } 1485 - } 1486 - } 1487 - n.default = e; 1488 - return Object.freeze(n); 1489 - } 1490 - 1491 - const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs); 1492 - const path__default = /*#__PURE__*/_interopDefaultLegacy(path); 1493 - const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0); 1494 - const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder); 1495 - const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils); 1496 - const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert); 1497 - const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib); 1498 - 1499 - const S_IFMT = 61440; 1500 - const S_IFDIR = 16384; 1501 - const S_IFREG = 32768; 1502 - const S_IFLNK = 40960; 1503 - const SAFE_TIME = 456789e3; 1504 - 1505 - const DEFAULT_MODE = S_IFREG | 420; 1506 - class StatEntry { 1507 - constructor() { 1508 - this.uid = 0; 1509 - this.gid = 0; 1510 - this.size = 0; 1511 - this.blksize = 0; 1512 - this.atimeMs = 0; 1513 - this.mtimeMs = 0; 1514 - this.ctimeMs = 0; 1515 - this.birthtimeMs = 0; 1516 - this.atime = new Date(0); 1517 - this.mtime = new Date(0); 1518 - this.ctime = new Date(0); 1519 - this.birthtime = new Date(0); 1520 - this.dev = 0; 1521 - this.ino = 0; 1522 - this.mode = DEFAULT_MODE; 1523 - this.nlink = 1; 1524 - this.rdev = 0; 1525 - this.blocks = 1; 1526 - } 1527 - isBlockDevice() { 1528 - return false; 1529 - } 1530 - isCharacterDevice() { 1531 - return false; 1532 - } 1533 - isDirectory() { 1534 - return (this.mode & S_IFMT) === S_IFDIR; 1535 - } 1536 - isFIFO() { 1537 - return false; 1538 - } 1539 - isFile() { 1540 - return (this.mode & S_IFMT) === S_IFREG; 1541 - } 1542 - isSocket() { 1543 - return false; 1544 - } 1545 - isSymbolicLink() { 1546 - return (this.mode & S_IFMT) === S_IFLNK; 1547 - } 1548 - } 1549 - class BigIntStatsEntry { 1550 - constructor() { 1551 - this.uid = BigInt(0); 1552 - this.gid = BigInt(0); 1553 - this.size = BigInt(0); 1554 - this.blksize = BigInt(0); 1555 - this.atimeMs = BigInt(0); 1556 - this.mtimeMs = BigInt(0); 1557 - this.ctimeMs = BigInt(0); 1558 - this.birthtimeMs = BigInt(0); 1559 - this.atimeNs = BigInt(0); 1560 - this.mtimeNs = BigInt(0); 1561 - this.ctimeNs = BigInt(0); 1562 - this.birthtimeNs = BigInt(0); 1563 - this.atime = new Date(0); 1564 - this.mtime = new Date(0); 1565 - this.ctime = new Date(0); 1566 - this.birthtime = new Date(0); 1567 - this.dev = BigInt(0); 1568 - this.ino = BigInt(0); 1569 - this.mode = BigInt(DEFAULT_MODE); 1570 - this.nlink = BigInt(1); 1571 - this.rdev = BigInt(0); 1572 - this.blocks = BigInt(1); 1573 - } 1574 - isBlockDevice() { 1575 - return false; 1576 - } 1577 - isCharacterDevice() { 1578 - return false; 1579 - } 1580 - isDirectory() { 1581 - return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR); 1582 - } 1583 - isFIFO() { 1584 - return false; 1585 - } 1586 - isFile() { 1587 - return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG); 1588 - } 1589 - isSocket() { 1590 - return false; 1591 - } 1592 - isSymbolicLink() { 1593 - return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK); 1594 - } 1595 - } 1596 - function makeDefaultStats() { 1597 - return new StatEntry(); 1598 - } 1599 - function clearStats(stats) { 1600 - for (const key in stats) { 1601 - if (Object.prototype.hasOwnProperty.call(stats, key)) { 1602 - const element = stats[key]; 1603 - if (typeof element === `number`) { 1604 - stats[key] = 0; 1605 - } else if (typeof element === `bigint`) { 1606 - stats[key] = BigInt(0); 1607 - } else if (nodeUtils__namespace.types.isDate(element)) { 1608 - stats[key] = new Date(0); 1609 - } 1610 - } 1611 - } 1612 - return stats; 1613 - } 1614 - function convertToBigIntStats(stats) { 1615 - const bigintStats = new BigIntStatsEntry(); 1616 - for (const key in stats) { 1617 - if (Object.prototype.hasOwnProperty.call(stats, key)) { 1618 - const element = stats[key]; 1619 - if (typeof element === `number`) { 1620 - bigintStats[key] = BigInt(element); 1621 - } else if (nodeUtils__namespace.types.isDate(element)) { 1622 - bigintStats[key] = new Date(element); 1623 - } 1624 - } 1625 - } 1626 - bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6); 1627 - bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6); 1628 - bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6); 1629 - bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6); 1630 - return bigintStats; 1631 - } 1632 - function areStatsEqual(a, b) { 1633 - if (a.atimeMs !== b.atimeMs) 1634 - return false; 1635 - if (a.birthtimeMs !== b.birthtimeMs) 1636 - return false; 1637 - if (a.blksize !== b.blksize) 1638 - return false; 1639 - if (a.blocks !== b.blocks) 1640 - return false; 1641 - if (a.ctimeMs !== b.ctimeMs) 1642 - return false; 1643 - if (a.dev !== b.dev) 1644 - return false; 1645 - if (a.gid !== b.gid) 1646 - return false; 1647 - if (a.ino !== b.ino) 1648 - return false; 1649 - if (a.isBlockDevice() !== b.isBlockDevice()) 1650 - return false; 1651 - if (a.isCharacterDevice() !== b.isCharacterDevice()) 1652 - return false; 1653 - if (a.isDirectory() !== b.isDirectory()) 1654 - return false; 1655 - if (a.isFIFO() !== b.isFIFO()) 1656 - return false; 1657 - if (a.isFile() !== b.isFile()) 1658 - return false; 1659 - if (a.isSocket() !== b.isSocket()) 1660 - return false; 1661 - if (a.isSymbolicLink() !== b.isSymbolicLink()) 1662 - return false; 1663 - if (a.mode !== b.mode) 1664 - return false; 1665 - if (a.mtimeMs !== b.mtimeMs) 1666 - return false; 1667 - if (a.nlink !== b.nlink) 1668 - return false; 1669 - if (a.rdev !== b.rdev) 1670 - return false; 1671 - if (a.size !== b.size) 1672 - return false; 1673 - if (a.uid !== b.uid) 1674 - return false; 1675 - const aN = a; 1676 - const bN = b; 1677 - if (aN.atimeNs !== bN.atimeNs) 1678 - return false; 1679 - if (aN.mtimeNs !== bN.mtimeNs) 1680 - return false; 1681 - if (aN.ctimeNs !== bN.ctimeNs) 1682 - return false; 1683 - if (aN.birthtimeNs !== bN.birthtimeNs) 1684 - return false; 1685 - return true; 1686 - } 1687 - 1688 - const PortablePath = { 1689 - root: `/`, 1690 - dot: `.`, 1691 - parent: `..` 1692 - }; 1693 - const Filename = { 1694 - nodeModules: `node_modules`, 1695 - manifest: `package.json`, 1696 - lockfile: `yarn.lock`, 1697 - virtual: `__virtual__`, 1698 - pnpJs: `.pnp.js`, 1699 - pnpCjs: `.pnp.cjs`, 1700 - rc: `.yarnrc.yml` 1701 - }; 1702 - const npath = Object.create(path__default.default); 1703 - const ppath = Object.create(path__default.default.posix); 1704 - npath.cwd = () => process.cwd(); 1705 - ppath.cwd = () => toPortablePath(process.cwd()); 1706 - ppath.resolve = (...segments) => { 1707 - if (segments.length > 0 && ppath.isAbsolute(segments[0])) { 1708 - return path__default.default.posix.resolve(...segments); 1709 - } else { 1710 - return path__default.default.posix.resolve(ppath.cwd(), ...segments); 1711 - } 1712 - }; 1713 - const contains = function(pathUtils, from, to) { 1714 - from = pathUtils.normalize(from); 1715 - to = pathUtils.normalize(to); 1716 - if (from === to) 1717 - return `.`; 1718 - if (!from.endsWith(pathUtils.sep)) 1719 - from = from + pathUtils.sep; 1720 - if (to.startsWith(from)) { 1721 - return to.slice(from.length); 1722 - } else { 1723 - return null; 1724 - } 1725 - }; 1726 - npath.fromPortablePath = fromPortablePath; 1727 - npath.toPortablePath = toPortablePath; 1728 - npath.contains = (from, to) => contains(npath, from, to); 1729 - ppath.contains = (from, to) => contains(ppath, from, to); 1730 - const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; 1731 - const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; 1732 - const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; 1733 - const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; 1734 - function fromPortablePath(p) { 1735 - if (process.platform !== `win32`) 1736 - return p; 1737 - let portablePathMatch, uncPortablePathMatch; 1738 - if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) 1739 - p = portablePathMatch[1]; 1740 - else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) 1741 - p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; 1742 - else 1743 - return p; 1744 - return p.replace(/\//g, `\\`); 1745 - } 1746 - function toPortablePath(p) { 1747 - if (process.platform !== `win32`) 1748 - return p; 1749 - p = p.replace(/\\/g, `/`); 1750 - let windowsPathMatch, uncWindowsPathMatch; 1751 - if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) 1752 - p = `/${windowsPathMatch[1]}`; 1753 - else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) 1754 - p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; 1755 - return p; 1756 - } 1757 - function convertPath(targetPathUtils, sourcePath) { 1758 - return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); 1759 - } 1760 - 1761 - const defaultTime = new Date(SAFE_TIME * 1e3); 1762 - async function copyPromise(destinationFs, destination, sourceFs, source, opts) { 1763 - const normalizedDestination = destinationFs.pathUtils.normalize(destination); 1764 - const normalizedSource = sourceFs.pathUtils.normalize(source); 1765 - const prelayout = []; 1766 - const postlayout = []; 1767 - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); 1768 - await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); 1769 - const updateTime = typeof destinationFs.lutimesPromise === `function` ? destinationFs.lutimesPromise.bind(destinationFs) : destinationFs.utimesPromise.bind(destinationFs); 1770 - await copyImpl(prelayout, postlayout, updateTime, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); 1771 - for (const operation of prelayout) 1772 - await operation(); 1773 - await Promise.all(postlayout.map((operation) => { 1774 - return operation(); 1775 - })); 1776 - } 1777 - async function copyImpl(prelayout, postlayout, updateTime, destinationFs, destination, sourceFs, source, opts) { 1778 - var _a, _b; 1779 - const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; 1780 - const sourceStat = await sourceFs.lstatPromise(source); 1781 - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; 1782 - let updated; 1783 - switch (true) { 1784 - case sourceStat.isDirectory(): 1785 - { 1786 - updated = await copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); 1787 - } 1788 - break; 1789 - case sourceStat.isFile(): 1790 - { 1791 - updated = await copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); 1792 - } 1793 - break; 1794 - case sourceStat.isSymbolicLink(): 1795 - { 1796 - updated = await copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); 1797 - } 1798 - break; 1799 - default: 1800 - { 1801 - throw new Error(`Unsupported file type (${sourceStat.mode})`); 1802 - } 1803 - } 1804 - if (updated || ((_a = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _a.getTime()) !== mtime.getTime() || ((_b = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _b.getTime()) !== atime.getTime()) { 1805 - postlayout.push(() => updateTime(destination, atime, mtime)); 1806 - updated = true; 1807 - } 1808 - if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { 1809 - postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); 1810 - updated = true; 1811 - } 1812 - return updated; 1813 - } 1814 - async function maybeLStat(baseFs, p) { 1815 - try { 1816 - return await baseFs.lstatPromise(p); 1817 - } catch (e) { 1818 - return null; 1819 - } 1820 - } 1821 - async function copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { 1822 - if (destinationStat !== null && !destinationStat.isDirectory()) { 1823 - if (opts.overwrite) { 1824 - prelayout.push(async () => destinationFs.removePromise(destination)); 1825 - destinationStat = null; 1826 - } else { 1827 - return false; 1828 - } 1829 - } 1830 - let updated = false; 1831 - if (destinationStat === null) { 1832 - prelayout.push(async () => { 1833 - try { 1834 - await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); 1835 - } catch (err) { 1836 - if (err.code !== `EEXIST`) { 1837 - throw err; 1838 - } 1839 - } 1840 - }); 1841 - updated = true; 1842 - } 1843 - const entries = await sourceFs.readdirPromise(source); 1844 - const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; 1845 - if (opts.stableSort) { 1846 - for (const entry of entries.sort()) { 1847 - if (await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { 1848 - updated = true; 1849 - } 1850 - } 1851 - } else { 1852 - const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { 1853 - await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); 1854 - })); 1855 - if (entriesUpdateStatus.some((status) => status)) { 1856 - updated = true; 1857 - } 1858 - } 1859 - return updated; 1860 - } 1861 - const isCloneSupportedCache = /* @__PURE__ */ new WeakMap(); 1862 - function makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy) { 1863 - return async () => { 1864 - await opFs.linkPromise(source, destination); 1865 - if (linkStrategy === "readOnly" /* ReadOnly */) { 1866 - sourceStat.mode &= ~146; 1867 - await opFs.chmodPromise(destination, sourceStat.mode); 1868 - } 1869 - }; 1870 - } 1871 - function makeCloneLinkOperation(opFs, destination, source, sourceStat, linkStrategy) { 1872 - const isCloneSupported = isCloneSupportedCache.get(opFs); 1873 - if (typeof isCloneSupported === `undefined`) { 1874 - return async () => { 1875 - try { 1876 - await opFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE_FORCE); 1877 - isCloneSupportedCache.set(opFs, true); 1878 - } catch (err) { 1879 - if (err.code === `ENOSYS` || err.code === `ENOTSUP`) { 1880 - isCloneSupportedCache.set(opFs, false); 1881 - await makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy)(); 1882 - } else { 1883 - throw err; 1884 - } 1885 - } 1886 - }; 1887 - } else { 1888 - if (isCloneSupported) { 1889 - return async () => opFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE_FORCE); 1890 - } else { 1891 - return makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy); 1892 - } 1893 - } 1894 - } 1895 - async function copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { 1896 - var _a; 1897 - if (destinationStat !== null) { 1898 - if (opts.overwrite) { 1899 - prelayout.push(async () => destinationFs.removePromise(destination)); 1900 - destinationStat = null; 1901 - } else { 1902 - return false; 1903 - } 1904 - } 1905 - const linkStrategy = (_a = opts.linkStrategy) != null ? _a : null; 1906 - const op = destinationFs === sourceFs ? linkStrategy !== null ? makeCloneLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE) : linkStrategy !== null ? makeLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.writeFilePromise(destination, await sourceFs.readFilePromise(source)); 1907 - prelayout.push(async () => op()); 1908 - return true; 1909 - } 1910 - async function copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { 1911 - if (destinationStat !== null) { 1912 - if (opts.overwrite) { 1913 - prelayout.push(async () => destinationFs.removePromise(destination)); 1914 - destinationStat = null; 1915 - } else { 1916 - return false; 1917 - } 1918 - } 1919 - prelayout.push(async () => { 1920 - await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); 1921 - }); 1922 - return true; 1923 - } 1924 - 1925 - function makeError$1(code, message) { 1926 - return Object.assign(new Error(`${code}: ${message}`), { code }); 1927 - } 1928 - function EBUSY(message) { 1929 - return makeError$1(`EBUSY`, message); 1930 - } 1931 - function ENOSYS(message, reason) { 1932 - return makeError$1(`ENOSYS`, `${message}, ${reason}`); 1933 - } 1934 - function EINVAL(reason) { 1935 - return makeError$1(`EINVAL`, `invalid argument, ${reason}`); 1936 - } 1937 - function EBADF(reason) { 1938 - return makeError$1(`EBADF`, `bad file descriptor, ${reason}`); 1939 - } 1940 - function ENOENT(reason) { 1941 - return makeError$1(`ENOENT`, `no such file or directory, ${reason}`); 1942 - } 1943 - function ENOTDIR(reason) { 1944 - return makeError$1(`ENOTDIR`, `not a directory, ${reason}`); 1945 - } 1946 - function EISDIR(reason) { 1947 - return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`); 1948 - } 1949 - function EEXIST(reason) { 1950 - return makeError$1(`EEXIST`, `file already exists, ${reason}`); 1951 - } 1952 - function EROFS(reason) { 1953 - return makeError$1(`EROFS`, `read-only filesystem, ${reason}`); 1954 - } 1955 - function ENOTEMPTY(reason) { 1956 - return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`); 1957 - } 1958 - function EOPNOTSUPP(reason) { 1959 - return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`); 1960 - } 1961 - function ERR_DIR_CLOSED() { 1962 - return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`); 1963 - } 1964 - class LibzipError extends Error { 1965 - constructor(message, code) { 1966 - super(message); 1967 - this.name = `Libzip Error`; 1968 - this.code = code; 1969 - } 1970 - } 1971 - 1972 - class CustomDir { 1973 - constructor(path, nextDirent, opts = {}) { 1974 - this.path = path; 1975 - this.nextDirent = nextDirent; 1976 - this.opts = opts; 1977 - this.closed = false; 1978 - } 1979 - throwIfClosed() { 1980 - if (this.closed) { 1981 - throw ERR_DIR_CLOSED(); 1982 - } 1983 - } 1984 - async *[Symbol.asyncIterator]() { 1985 - try { 1986 - let dirent; 1987 - while ((dirent = await this.read()) !== null) { 1988 - yield dirent; 1989 - } 1990 - } finally { 1991 - await this.close(); 1992 - } 1993 - } 1994 - read(cb) { 1995 - const dirent = this.readSync(); 1996 - if (typeof cb !== `undefined`) 1997 - return cb(null, dirent); 1998 - return Promise.resolve(dirent); 1999 - } 2000 - readSync() { 2001 - this.throwIfClosed(); 2002 - return this.nextDirent(); 2003 - } 2004 - close(cb) { 2005 - this.closeSync(); 2006 - if (typeof cb !== `undefined`) 2007 - return cb(null); 2008 - return Promise.resolve(); 2009 - } 2010 - closeSync() { 2011 - var _a, _b; 2012 - this.throwIfClosed(); 2013 - (_b = (_a = this.opts).onClose) == null ? void 0 : _b.call(_a); 2014 - this.closed = true; 2015 - } 2016 - } 2017 - function opendir(fakeFs, path, entries, opts) { 2018 - const nextDirent = () => { 2019 - const filename = entries.shift(); 2020 - if (typeof filename === `undefined`) 2021 - return null; 2022 - return Object.assign(fakeFs.statSync(fakeFs.pathUtils.join(path, filename)), { 2023 - name: filename 2024 - }); 2025 - }; 2026 - return new CustomDir(path, nextDirent, opts); 2027 - } 2028 - 2029 - class FakeFS { 2030 - constructor(pathUtils) { 2031 - this.pathUtils = pathUtils; 2032 - } 2033 - async *genTraversePromise(init, { stableSort = false } = {}) { 2034 - const stack = [init]; 2035 - while (stack.length > 0) { 2036 - const p = stack.shift(); 2037 - const entry = await this.lstatPromise(p); 2038 - if (entry.isDirectory()) { 2039 - const entries = await this.readdirPromise(p); 2040 - if (stableSort) { 2041 - for (const entry2 of entries.sort()) { 2042 - stack.push(this.pathUtils.join(p, entry2)); 2043 - } 2044 - } else { 2045 - throw new Error(`Not supported`); 2046 - } 2047 - } else { 2048 - yield p; 2049 - } 2050 - } 2051 - } 2052 - async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { 2053 - let stat; 2054 - try { 2055 - stat = await this.lstatPromise(p); 2056 - } catch (error) { 2057 - if (error.code === `ENOENT`) { 2058 - return; 2059 - } else { 2060 - throw error; 2061 - } 2062 - } 2063 - if (stat.isDirectory()) { 2064 - if (recursive) { 2065 - const entries = await this.readdirPromise(p); 2066 - await Promise.all(entries.map((entry) => { 2067 - return this.removePromise(this.pathUtils.resolve(p, entry)); 2068 - })); 2069 - } 2070 - for (let t = 0; t <= maxRetries; t++) { 2071 - try { 2072 - await this.rmdirPromise(p); 2073 - break; 2074 - } catch (error) { 2075 - if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { 2076 - throw error; 2077 - } else if (t < maxRetries) { 2078 - await new Promise((resolve) => setTimeout(resolve, t * 100)); 2079 - } 2080 - } 2081 - } 2082 - } else { 2083 - await this.unlinkPromise(p); 2084 - } 2085 - } 2086 - removeSync(p, { recursive = true } = {}) { 2087 - let stat; 2088 - try { 2089 - stat = this.lstatSync(p); 2090 - } catch (error) { 2091 - if (error.code === `ENOENT`) { 2092 - return; 2093 - } else { 2094 - throw error; 2095 - } 2096 - } 2097 - if (stat.isDirectory()) { 2098 - if (recursive) 2099 - for (const entry of this.readdirSync(p)) 2100 - this.removeSync(this.pathUtils.resolve(p, entry)); 2101 - this.rmdirSync(p); 2102 - } else { 2103 - this.unlinkSync(p); 2104 - } 2105 - } 2106 - async mkdirpPromise(p, { chmod, utimes } = {}) { 2107 - p = this.resolve(p); 2108 - if (p === this.pathUtils.dirname(p)) 2109 - return void 0; 2110 - const parts = p.split(this.pathUtils.sep); 2111 - let createdDirectory; 2112 - for (let u = 2; u <= parts.length; ++u) { 2113 - const subPath = parts.slice(0, u).join(this.pathUtils.sep); 2114 - if (!this.existsSync(subPath)) { 2115 - try { 2116 - await this.mkdirPromise(subPath); 2117 - } catch (error) { 2118 - if (error.code === `EEXIST`) { 2119 - continue; 2120 - } else { 2121 - throw error; 2122 - } 2123 - } 2124 - createdDirectory != null ? createdDirectory : createdDirectory = subPath; 2125 - if (chmod != null) 2126 - await this.chmodPromise(subPath, chmod); 2127 - if (utimes != null) { 2128 - await this.utimesPromise(subPath, utimes[0], utimes[1]); 2129 - } else { 2130 - const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); 2131 - await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); 2132 - } 2133 - } 2134 - } 2135 - return createdDirectory; 2136 - } 2137 - mkdirpSync(p, { chmod, utimes } = {}) { 2138 - p = this.resolve(p); 2139 - if (p === this.pathUtils.dirname(p)) 2140 - return void 0; 2141 - const parts = p.split(this.pathUtils.sep); 2142 - let createdDirectory; 2143 - for (let u = 2; u <= parts.length; ++u) { 2144 - const subPath = parts.slice(0, u).join(this.pathUtils.sep); 2145 - if (!this.existsSync(subPath)) { 2146 - try { 2147 - this.mkdirSync(subPath); 2148 - } catch (error) { 2149 - if (error.code === `EEXIST`) { 2150 - continue; 2151 - } else { 2152 - throw error; 2153 - } 2154 - } 2155 - createdDirectory != null ? createdDirectory : createdDirectory = subPath; 2156 - if (chmod != null) 2157 - this.chmodSync(subPath, chmod); 2158 - if (utimes != null) { 2159 - this.utimesSync(subPath, utimes[0], utimes[1]); 2160 - } else { 2161 - const parentStat = this.statSync(this.pathUtils.dirname(subPath)); 2162 - this.utimesSync(subPath, parentStat.atime, parentStat.mtime); 2163 - } 2164 - } 2165 - } 2166 - return createdDirectory; 2167 - } 2168 - async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { 2169 - return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); 2170 - } 2171 - copySync(destination, source, { baseFs = this, overwrite = true } = {}) { 2172 - const stat = baseFs.lstatSync(source); 2173 - const exists = this.existsSync(destination); 2174 - if (stat.isDirectory()) { 2175 - this.mkdirpSync(destination); 2176 - const directoryListing = baseFs.readdirSync(source); 2177 - for (const entry of directoryListing) { 2178 - this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); 2179 - } 2180 - } else if (stat.isFile()) { 2181 - if (!exists || overwrite) { 2182 - if (exists) 2183 - this.removeSync(destination); 2184 - const content = baseFs.readFileSync(source); 2185 - this.writeFileSync(destination, content); 2186 - } 2187 - } else if (stat.isSymbolicLink()) { 2188 - if (!exists || overwrite) { 2189 - if (exists) 2190 - this.removeSync(destination); 2191 - const target = baseFs.readlinkSync(source); 2192 - this.symlinkSync(convertPath(this.pathUtils, target), destination); 2193 - } 2194 - } else { 2195 - throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); 2196 - } 2197 - const mode = stat.mode & 511; 2198 - this.chmodSync(destination, mode); 2199 - } 2200 - async changeFilePromise(p, content, opts = {}) { 2201 - if (Buffer.isBuffer(content)) { 2202 - return this.changeFileBufferPromise(p, content, opts); 2203 - } else { 2204 - return this.changeFileTextPromise(p, content, opts); 2205 - } 2206 - } 2207 - async changeFileBufferPromise(p, content, { mode } = {}) { 2208 - let current = Buffer.alloc(0); 2209 - try { 2210 - current = await this.readFilePromise(p); 2211 - } catch (error) { 2212 - } 2213 - if (Buffer.compare(current, content) === 0) 2214 - return; 2215 - await this.writeFilePromise(p, content, { mode }); 2216 - } 2217 - async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { 2218 - let current = ``; 2219 - try { 2220 - current = await this.readFilePromise(p, `utf8`); 2221 - } catch (error) { 2222 - } 2223 - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; 2224 - if (current === normalizedContent) 2225 - return; 2226 - await this.writeFilePromise(p, normalizedContent, { mode }); 2227 - } 2228 - changeFileSync(p, content, opts = {}) { 2229 - if (Buffer.isBuffer(content)) { 2230 - return this.changeFileBufferSync(p, content, opts); 2231 - } else { 2232 - return this.changeFileTextSync(p, content, opts); 2233 - } 2234 - } 2235 - changeFileBufferSync(p, content, { mode } = {}) { 2236 - let current = Buffer.alloc(0); 2237 - try { 2238 - current = this.readFileSync(p); 2239 - } catch (error) { 2240 - } 2241 - if (Buffer.compare(current, content) === 0) 2242 - return; 2243 - this.writeFileSync(p, content, { mode }); 2244 - } 2245 - changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { 2246 - let current = ``; 2247 - try { 2248 - current = this.readFileSync(p, `utf8`); 2249 - } catch (error) { 2250 - } 2251 - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; 2252 - if (current === normalizedContent) 2253 - return; 2254 - this.writeFileSync(p, normalizedContent, { mode }); 2255 - } 2256 - async movePromise(fromP, toP) { 2257 - try { 2258 - await this.renamePromise(fromP, toP); 2259 - } catch (error) { 2260 - if (error.code === `EXDEV`) { 2261 - await this.copyPromise(toP, fromP); 2262 - await this.removePromise(fromP); 2263 - } else { 2264 - throw error; 2265 - } 2266 - } 2267 - } 2268 - moveSync(fromP, toP) { 2269 - try { 2270 - this.renameSync(fromP, toP); 2271 - } catch (error) { 2272 - if (error.code === `EXDEV`) { 2273 - this.copySync(toP, fromP); 2274 - this.removeSync(fromP); 2275 - } else { 2276 - throw error; 2277 - } 2278 - } 2279 - } 2280 - async lockPromise(affectedPath, callback) { 2281 - const lockPath = `${affectedPath}.flock`; 2282 - const interval = 1e3 / 60; 2283 - const startTime = Date.now(); 2284 - let fd = null; 2285 - const isAlive = async () => { 2286 - let pid; 2287 - try { 2288 - [pid] = await this.readJsonPromise(lockPath); 2289 - } catch (error) { 2290 - return Date.now() - startTime < 500; 2291 - } 2292 - try { 2293 - process.kill(pid, 0); 2294 - return true; 2295 - } catch (error) { 2296 - return false; 2297 - } 2298 - }; 2299 - while (fd === null) { 2300 - try { 2301 - fd = await this.openPromise(lockPath, `wx`); 2302 - } catch (error) { 2303 - if (error.code === `EEXIST`) { 2304 - if (!await isAlive()) { 2305 - try { 2306 - await this.unlinkPromise(lockPath); 2307 - continue; 2308 - } catch (error2) { 2309 - } 2310 - } 2311 - if (Date.now() - startTime < 60 * 1e3) { 2312 - await new Promise((resolve) => setTimeout(resolve, interval)); 2313 - } else { 2314 - throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); 2315 - } 2316 - } else { 2317 - throw error; 2318 - } 2319 - } 2320 - } 2321 - await this.writePromise(fd, JSON.stringify([process.pid])); 2322 - try { 2323 - return await callback(); 2324 - } finally { 2325 - try { 2326 - await this.closePromise(fd); 2327 - await this.unlinkPromise(lockPath); 2328 - } catch (error) { 2329 - } 2330 - } 2331 - } 2332 - async readJsonPromise(p) { 2333 - const content = await this.readFilePromise(p, `utf8`); 2334 - try { 2335 - return JSON.parse(content); 2336 - } catch (error) { 2337 - error.message += ` (in ${p})`; 2338 - throw error; 2339 - } 2340 - } 2341 - readJsonSync(p) { 2342 - const content = this.readFileSync(p, `utf8`); 2343 - try { 2344 - return JSON.parse(content); 2345 - } catch (error) { 2346 - error.message += ` (in ${p})`; 2347 - throw error; 2348 - } 2349 - } 2350 - async writeJsonPromise(p, data) { 2351 - return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)} 2352 - `); 2353 - } 2354 - writeJsonSync(p, data) { 2355 - return this.writeFileSync(p, `${JSON.stringify(data, null, 2)} 2356 - `); 2357 - } 2358 - async preserveTimePromise(p, cb) { 2359 - const stat = await this.lstatPromise(p); 2360 - const result = await cb(); 2361 - if (typeof result !== `undefined`) 2362 - p = result; 2363 - if (this.lutimesPromise) { 2364 - await this.lutimesPromise(p, stat.atime, stat.mtime); 2365 - } else if (!stat.isSymbolicLink()) { 2366 - await this.utimesPromise(p, stat.atime, stat.mtime); 2367 - } 2368 - } 2369 - async preserveTimeSync(p, cb) { 2370 - const stat = this.lstatSync(p); 2371 - const result = cb(); 2372 - if (typeof result !== `undefined`) 2373 - p = result; 2374 - if (this.lutimesSync) { 2375 - this.lutimesSync(p, stat.atime, stat.mtime); 2376 - } else if (!stat.isSymbolicLink()) { 2377 - this.utimesSync(p, stat.atime, stat.mtime); 2378 - } 2379 - } 2380 - } 2381 - class BasePortableFakeFS extends FakeFS { 2382 - constructor() { 2383 - super(ppath); 2384 - } 2385 - } 2386 - function getEndOfLine(content) { 2387 - const matches = content.match(/\r?\n/g); 2388 - if (matches === null) 2389 - return os.EOL; 2390 - const crlf = matches.filter((nl) => nl === `\r 2391 - `).length; 2392 - const lf = matches.length - crlf; 2393 - return crlf > lf ? `\r 2394 - ` : ` 2395 - `; 2396 - } 2397 - function normalizeLineEndings(originalContent, newContent) { 2398 - return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); 2399 - } 2400 - 2401 - class NodeFS extends BasePortableFakeFS { 2402 - constructor(realFs = fs__default.default) { 2403 - super(); 2404 - this.realFs = realFs; 2405 - if (typeof this.realFs.lutimes !== `undefined`) { 2406 - this.lutimesPromise = this.lutimesPromiseImpl; 2407 - this.lutimesSync = this.lutimesSyncImpl; 2408 - } 2409 - } 2410 - getExtractHint() { 2411 - return false; 2412 - } 2413 - getRealPath() { 2414 - return PortablePath.root; 2415 - } 2416 - resolve(p) { 2417 - return ppath.resolve(p); 2418 - } 2419 - async openPromise(p, flags, mode) { 2420 - return await new Promise((resolve, reject) => { 2421 - this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); 2422 - }); 2423 - } 2424 - openSync(p, flags, mode) { 2425 - return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); 2426 - } 2427 - async opendirPromise(p, opts) { 2428 - return await new Promise((resolve, reject) => { 2429 - if (typeof opts !== `undefined`) { 2430 - this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 2431 - } else { 2432 - this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 2433 - } 2434 - }).then((dir) => { 2435 - return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true }); 2436 - }); 2437 - } 2438 - opendirSync(p, opts) { 2439 - const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); 2440 - return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true }); 2441 - } 2442 - async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { 2443 - return await new Promise((resolve, reject) => { 2444 - this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { 2445 - if (error) { 2446 - reject(error); 2447 - } else { 2448 - resolve(bytesRead); 2449 - } 2450 - }); 2451 - }); 2452 - } 2453 - readSync(fd, buffer, offset, length, position) { 2454 - return this.realFs.readSync(fd, buffer, offset, length, position); 2455 - } 2456 - async writePromise(fd, buffer, offset, length, position) { 2457 - return await new Promise((resolve, reject) => { 2458 - if (typeof buffer === `string`) { 2459 - return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); 2460 - } else { 2461 - return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); 2462 - } 2463 - }); 2464 - } 2465 - writeSync(fd, buffer, offset, length, position) { 2466 - if (typeof buffer === `string`) { 2467 - return this.realFs.writeSync(fd, buffer, offset); 2468 - } else { 2469 - return this.realFs.writeSync(fd, buffer, offset, length, position); 2470 - } 2471 - } 2472 - async closePromise(fd) { 2473 - await new Promise((resolve, reject) => { 2474 - this.realFs.close(fd, this.makeCallback(resolve, reject)); 2475 - }); 2476 - } 2477 - closeSync(fd) { 2478 - this.realFs.closeSync(fd); 2479 - } 2480 - createReadStream(p, opts) { 2481 - const realPath = p !== null ? npath.fromPortablePath(p) : p; 2482 - return this.realFs.createReadStream(realPath, opts); 2483 - } 2484 - createWriteStream(p, opts) { 2485 - const realPath = p !== null ? npath.fromPortablePath(p) : p; 2486 - return this.realFs.createWriteStream(realPath, opts); 2487 - } 2488 - async realpathPromise(p) { 2489 - return await new Promise((resolve, reject) => { 2490 - this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); 2491 - }).then((path) => { 2492 - return npath.toPortablePath(path); 2493 - }); 2494 - } 2495 - realpathSync(p) { 2496 - return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); 2497 - } 2498 - async existsPromise(p) { 2499 - return await new Promise((resolve) => { 2500 - this.realFs.exists(npath.fromPortablePath(p), resolve); 2501 - }); 2502 - } 2503 - accessSync(p, mode) { 2504 - return this.realFs.accessSync(npath.fromPortablePath(p), mode); 2505 - } 2506 - async accessPromise(p, mode) { 2507 - return await new Promise((resolve, reject) => { 2508 - this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); 2509 - }); 2510 - } 2511 - existsSync(p) { 2512 - return this.realFs.existsSync(npath.fromPortablePath(p)); 2513 - } 2514 - async statPromise(p, opts) { 2515 - return await new Promise((resolve, reject) => { 2516 - if (opts) { 2517 - this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 2518 - } else { 2519 - this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 2520 - } 2521 - }); 2522 - } 2523 - statSync(p, opts) { 2524 - if (opts) { 2525 - return this.realFs.statSync(npath.fromPortablePath(p), opts); 2526 - } else { 2527 - return this.realFs.statSync(npath.fromPortablePath(p)); 2528 - } 2529 - } 2530 - async fstatPromise(fd, opts) { 2531 - return await new Promise((resolve, reject) => { 2532 - if (opts) { 2533 - this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); 2534 - } else { 2535 - this.realFs.fstat(fd, this.makeCallback(resolve, reject)); 2536 - } 2537 - }); 2538 - } 2539 - fstatSync(fd, opts) { 2540 - if (opts) { 2541 - return this.realFs.fstatSync(fd, opts); 2542 - } else { 2543 - return this.realFs.fstatSync(fd); 2544 - } 2545 - } 2546 - async lstatPromise(p, opts) { 2547 - return await new Promise((resolve, reject) => { 2548 - if (opts) { 2549 - this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 2550 - } else { 2551 - this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 2552 - } 2553 - }); 2554 - } 2555 - lstatSync(p, opts) { 2556 - if (opts) { 2557 - return this.realFs.lstatSync(npath.fromPortablePath(p), opts); 2558 - } else { 2559 - return this.realFs.lstatSync(npath.fromPortablePath(p)); 2560 - } 2561 - } 2562 - async fchmodPromise(fd, mask) { 2563 - return await new Promise((resolve, reject) => { 2564 - this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); 2565 - }); 2566 - } 2567 - fchmodSync(fd, mask) { 2568 - return this.realFs.fchmodSync(fd, mask); 2569 - } 2570 - async chmodPromise(p, mask) { 2571 - return await new Promise((resolve, reject) => { 2572 - this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); 2573 - }); 2574 - } 2575 - chmodSync(p, mask) { 2576 - return this.realFs.chmodSync(npath.fromPortablePath(p), mask); 2577 - } 2578 - async fchownPromise(fd, uid, gid) { 2579 - return await new Promise((resolve, reject) => { 2580 - this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); 2581 - }); 2582 - } 2583 - fchownSync(fd, uid, gid) { 2584 - return this.realFs.fchownSync(fd, uid, gid); 2585 - } 2586 - async chownPromise(p, uid, gid) { 2587 - return await new Promise((resolve, reject) => { 2588 - this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); 2589 - }); 2590 - } 2591 - chownSync(p, uid, gid) { 2592 - return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); 2593 - } 2594 - async renamePromise(oldP, newP) { 2595 - return await new Promise((resolve, reject) => { 2596 - this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); 2597 - }); 2598 - } 2599 - renameSync(oldP, newP) { 2600 - return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); 2601 - } 2602 - async copyFilePromise(sourceP, destP, flags = 0) { 2603 - return await new Promise((resolve, reject) => { 2604 - this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); 2605 - }); 2606 - } 2607 - copyFileSync(sourceP, destP, flags = 0) { 2608 - return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); 2609 - } 2610 - async appendFilePromise(p, content, opts) { 2611 - return await new Promise((resolve, reject) => { 2612 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 2613 - if (opts) { 2614 - this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); 2615 - } else { 2616 - this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); 2617 - } 2618 - }); 2619 - } 2620 - appendFileSync(p, content, opts) { 2621 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 2622 - if (opts) { 2623 - this.realFs.appendFileSync(fsNativePath, content, opts); 2624 - } else { 2625 - this.realFs.appendFileSync(fsNativePath, content); 2626 - } 2627 - } 2628 - async writeFilePromise(p, content, opts) { 2629 - return await new Promise((resolve, reject) => { 2630 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 2631 - if (opts) { 2632 - this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); 2633 - } else { 2634 - this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); 2635 - } 2636 - }); 2637 - } 2638 - writeFileSync(p, content, opts) { 2639 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 2640 - if (opts) { 2641 - this.realFs.writeFileSync(fsNativePath, content, opts); 2642 - } else { 2643 - this.realFs.writeFileSync(fsNativePath, content); 2644 - } 2645 - } 2646 - async unlinkPromise(p) { 2647 - return await new Promise((resolve, reject) => { 2648 - this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 2649 - }); 2650 - } 2651 - unlinkSync(p) { 2652 - return this.realFs.unlinkSync(npath.fromPortablePath(p)); 2653 - } 2654 - async utimesPromise(p, atime, mtime) { 2655 - return await new Promise((resolve, reject) => { 2656 - this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); 2657 - }); 2658 - } 2659 - utimesSync(p, atime, mtime) { 2660 - this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); 2661 - } 2662 - async lutimesPromiseImpl(p, atime, mtime) { 2663 - const lutimes = this.realFs.lutimes; 2664 - if (typeof lutimes === `undefined`) 2665 - throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`); 2666 - return await new Promise((resolve, reject) => { 2667 - lutimes.call(this.realFs, npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); 2668 - }); 2669 - } 2670 - lutimesSyncImpl(p, atime, mtime) { 2671 - const lutimesSync = this.realFs.lutimesSync; 2672 - if (typeof lutimesSync === `undefined`) 2673 - throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`); 2674 - lutimesSync.call(this.realFs, npath.fromPortablePath(p), atime, mtime); 2675 - } 2676 - async mkdirPromise(p, opts) { 2677 - return await new Promise((resolve, reject) => { 2678 - this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 2679 - }); 2680 - } 2681 - mkdirSync(p, opts) { 2682 - return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); 2683 - } 2684 - async rmdirPromise(p, opts) { 2685 - return await new Promise((resolve, reject) => { 2686 - if (opts) { 2687 - this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 2688 - } else { 2689 - this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 2690 - } 2691 - }); 2692 - } 2693 - rmdirSync(p, opts) { 2694 - return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); 2695 - } 2696 - async linkPromise(existingP, newP) { 2697 - return await new Promise((resolve, reject) => { 2698 - this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); 2699 - }); 2700 - } 2701 - linkSync(existingP, newP) { 2702 - return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); 2703 - } 2704 - async symlinkPromise(target, p, type) { 2705 - return await new Promise((resolve, reject) => { 2706 - this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); 2707 - }); 2708 - } 2709 - symlinkSync(target, p, type) { 2710 - return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); 2711 - } 2712 - async readFilePromise(p, encoding) { 2713 - return await new Promise((resolve, reject) => { 2714 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 2715 - this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); 2716 - }); 2717 - } 2718 - readFileSync(p, encoding) { 2719 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 2720 - return this.realFs.readFileSync(fsNativePath, encoding); 2721 - } 2722 - async readdirPromise(p, opts) { 2723 - return await new Promise((resolve, reject) => { 2724 - if (opts == null ? void 0 : opts.withFileTypes) { 2725 - this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject)); 2726 - } else { 2727 - this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject)); 2728 - } 2729 - }); 2730 - } 2731 - readdirSync(p, opts) { 2732 - if (opts == null ? void 0 : opts.withFileTypes) { 2733 - return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true }); 2734 - } else { 2735 - return this.realFs.readdirSync(npath.fromPortablePath(p)); 2736 - } 2737 - } 2738 - async readlinkPromise(p) { 2739 - return await new Promise((resolve, reject) => { 2740 - this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 2741 - }).then((path) => { 2742 - return npath.toPortablePath(path); 2743 - }); 2744 - } 2745 - readlinkSync(p) { 2746 - return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); 2747 - } 2748 - async truncatePromise(p, len) { 2749 - return await new Promise((resolve, reject) => { 2750 - this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); 2751 - }); 2752 - } 2753 - truncateSync(p, len) { 2754 - return this.realFs.truncateSync(npath.fromPortablePath(p), len); 2755 - } 2756 - async ftruncatePromise(fd, len) { 2757 - return await new Promise((resolve, reject) => { 2758 - this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); 2759 - }); 2760 - } 2761 - ftruncateSync(fd, len) { 2762 - return this.realFs.ftruncateSync(fd, len); 2763 - } 2764 - watch(p, a, b) { 2765 - return this.realFs.watch( 2766 - npath.fromPortablePath(p), 2767 - a, 2768 - b 2769 - ); 2770 - } 2771 - watchFile(p, a, b) { 2772 - return this.realFs.watchFile( 2773 - npath.fromPortablePath(p), 2774 - a, 2775 - b 2776 - ); 2777 - } 2778 - unwatchFile(p, cb) { 2779 - return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); 2780 - } 2781 - makeCallback(resolve, reject) { 2782 - return (err, result) => { 2783 - if (err) { 2784 - reject(err); 2785 - } else { 2786 - resolve(result); 2787 - } 2788 - }; 2789 - } 2790 - } 2791 - 2792 - function assertStatus(current, expected) { 2793 - if (current !== expected) { 2794 - throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`); 2795 - } 2796 - } 2797 - class CustomStatWatcher extends events.EventEmitter { 2798 - constructor(fakeFs, path, { bigint = false } = {}) { 2799 - super(); 2800 - this.status = "ready" /* Ready */; 2801 - this.changeListeners = /* @__PURE__ */ new Map(); 2802 - this.startTimeout = null; 2803 - this.fakeFs = fakeFs; 2804 - this.path = path; 2805 - this.bigint = bigint; 2806 - this.lastStats = this.stat(); 2807 - } 2808 - static create(fakeFs, path, opts) { 2809 - const statWatcher = new CustomStatWatcher(fakeFs, path, opts); 2810 - statWatcher.start(); 2811 - return statWatcher; 2812 - } 2813 - start() { 2814 - assertStatus(this.status, "ready" /* Ready */); 2815 - this.status = "running" /* Running */; 2816 - this.startTimeout = setTimeout(() => { 2817 - this.startTimeout = null; 2818 - if (!this.fakeFs.existsSync(this.path)) { 2819 - this.emit("change" /* Change */, this.lastStats, this.lastStats); 2820 - } 2821 - }, 3); 2822 - } 2823 - stop() { 2824 - assertStatus(this.status, "running" /* Running */); 2825 - this.status = "stopped" /* Stopped */; 2826 - if (this.startTimeout !== null) { 2827 - clearTimeout(this.startTimeout); 2828 - this.startTimeout = null; 2829 - } 2830 - this.emit("stop" /* Stop */); 2831 - } 2832 - stat() { 2833 - try { 2834 - return this.fakeFs.statSync(this.path, { bigint: this.bigint }); 2835 - } catch (error) { 2836 - const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry(); 2837 - return clearStats(statInstance); 2838 - } 2839 - } 2840 - makeInterval(opts) { 2841 - const interval = setInterval(() => { 2842 - const currentStats = this.stat(); 2843 - const previousStats = this.lastStats; 2844 - if (areStatsEqual(currentStats, previousStats)) 2845 - return; 2846 - this.lastStats = currentStats; 2847 - this.emit("change" /* Change */, currentStats, previousStats); 2848 - }, opts.interval); 2849 - return opts.persistent ? interval : interval.unref(); 2850 - } 2851 - registerChangeListener(listener, opts) { 2852 - this.addListener("change" /* Change */, listener); 2853 - this.changeListeners.set(listener, this.makeInterval(opts)); 2854 - } 2855 - unregisterChangeListener(listener) { 2856 - this.removeListener("change" /* Change */, listener); 2857 - const interval = this.changeListeners.get(listener); 2858 - if (typeof interval !== `undefined`) 2859 - clearInterval(interval); 2860 - this.changeListeners.delete(listener); 2861 - } 2862 - unregisterAllChangeListeners() { 2863 - for (const listener of this.changeListeners.keys()) { 2864 - this.unregisterChangeListener(listener); 2865 - } 2866 - } 2867 - hasChangeListeners() { 2868 - return this.changeListeners.size > 0; 2869 - } 2870 - ref() { 2871 - for (const interval of this.changeListeners.values()) 2872 - interval.ref(); 2873 - return this; 2874 - } 2875 - unref() { 2876 - for (const interval of this.changeListeners.values()) 2877 - interval.unref(); 2878 - return this; 2879 - } 2880 - } 2881 - 2882 - const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap(); 2883 - function watchFile(fakeFs, path, a, b) { 2884 - let bigint; 2885 - let persistent; 2886 - let interval; 2887 - let listener; 2888 - switch (typeof a) { 2889 - case `function`: 2890 - { 2891 - bigint = false; 2892 - persistent = true; 2893 - interval = 5007; 2894 - listener = a; 2895 - } 2896 - break; 2897 - default: 2898 - { 2899 - ({ 2900 - bigint = false, 2901 - persistent = true, 2902 - interval = 5007 2903 - } = a); 2904 - listener = b; 2905 - } 2906 - break; 2907 - } 2908 - let statWatchers = statWatchersByFakeFS.get(fakeFs); 2909 - if (typeof statWatchers === `undefined`) 2910 - statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map()); 2911 - let statWatcher = statWatchers.get(path); 2912 - if (typeof statWatcher === `undefined`) { 2913 - statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint }); 2914 - statWatchers.set(path, statWatcher); 2915 - } 2916 - statWatcher.registerChangeListener(listener, { persistent, interval }); 2917 - return statWatcher; 2918 - } 2919 - function unwatchFile(fakeFs, path, cb) { 2920 - const statWatchers = statWatchersByFakeFS.get(fakeFs); 2921 - if (typeof statWatchers === `undefined`) 2922 - return; 2923 - const statWatcher = statWatchers.get(path); 2924 - if (typeof statWatcher === `undefined`) 2925 - return; 2926 - if (typeof cb === `undefined`) 2927 - statWatcher.unregisterAllChangeListeners(); 2928 - else 2929 - statWatcher.unregisterChangeListener(cb); 2930 - if (!statWatcher.hasChangeListeners()) { 2931 - statWatcher.stop(); 2932 - statWatchers.delete(path); 2933 - } 2934 - } 2935 - function unwatchAllFiles(fakeFs) { 2936 - const statWatchers = statWatchersByFakeFS.get(fakeFs); 2937 - if (typeof statWatchers === `undefined`) 2938 - return; 2939 - for (const path of statWatchers.keys()) { 2940 - unwatchFile(fakeFs, path); 2941 - } 2942 - } 2943 - 2944 - const DEFAULT_COMPRESSION_LEVEL = `mixed`; 2945 - function toUnixTimestamp(time) { 2946 - if (typeof time === `string` && String(+time) === time) 2947 - return +time; 2948 - if (typeof time === `number` && Number.isFinite(time)) { 2949 - if (time < 0) { 2950 - return Date.now() / 1e3; 2951 - } else { 2952 - return time; 2953 - } 2954 - } 2955 - if (nodeUtils.types.isDate(time)) 2956 - return time.getTime() / 1e3; 2957 - throw new Error(`Invalid time`); 2958 - } 2959 - function makeEmptyArchive() { 2960 - return Buffer.from([ 2961 - 80, 2962 - 75, 2963 - 5, 2964 - 6, 2965 - 0, 2966 - 0, 2967 - 0, 2968 - 0, 2969 - 0, 2970 - 0, 2971 - 0, 2972 - 0, 2973 - 0, 2974 - 0, 2975 - 0, 2976 - 0, 2977 - 0, 2978 - 0, 2979 - 0, 2980 - 0, 2981 - 0, 2982 - 0 2983 - ]); 2984 - } 2985 - class ZipFS extends BasePortableFakeFS { 2986 - constructor(source, opts) { 2987 - super(); 2988 - this.lzSource = null; 2989 - this.listings = /* @__PURE__ */ new Map(); 2990 - this.entries = /* @__PURE__ */ new Map(); 2991 - this.fileSources = /* @__PURE__ */ new Map(); 2992 - this.fds = /* @__PURE__ */ new Map(); 2993 - this.nextFd = 0; 2994 - this.ready = false; 2995 - this.readOnly = false; 2996 - this.libzip = opts.libzip; 2997 - const pathOptions = opts; 2998 - this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL; 2999 - source != null ? source : source = makeEmptyArchive(); 3000 - if (typeof source === `string`) { 3001 - const { baseFs = new NodeFS() } = pathOptions; 3002 - this.baseFs = baseFs; 3003 - this.path = source; 3004 - } else { 3005 - this.path = null; 3006 - this.baseFs = null; 3007 - } 3008 - if (opts.stats) { 3009 - this.stats = opts.stats; 3010 - } else { 3011 - if (typeof source === `string`) { 3012 - try { 3013 - this.stats = this.baseFs.statSync(source); 3014 - } catch (error) { 3015 - if (error.code === `ENOENT` && pathOptions.create) { 3016 - this.stats = makeDefaultStats(); 3017 - } else { 3018 - throw error; 3019 - } 3020 - } 3021 - } else { 3022 - this.stats = makeDefaultStats(); 3023 - } 3024 - } 3025 - const errPtr = this.libzip.malloc(4); 3026 - try { 3027 - let flags = 0; 3028 - if (typeof source === `string` && pathOptions.create) 3029 - flags |= this.libzip.ZIP_CREATE | this.libzip.ZIP_TRUNCATE; 3030 - if (opts.readOnly) { 3031 - flags |= this.libzip.ZIP_RDONLY; 3032 - this.readOnly = true; 3033 - } 3034 - if (typeof source === `string`) { 3035 - this.zip = this.libzip.open(npath.fromPortablePath(source), flags, errPtr); 3036 - } else { 3037 - const lzSource = this.allocateUnattachedSource(source); 3038 - try { 3039 - this.zip = this.libzip.openFromSource(lzSource, flags, errPtr); 3040 - this.lzSource = lzSource; 3041 - } catch (error) { 3042 - this.libzip.source.free(lzSource); 3043 - throw error; 3044 - } 3045 - } 3046 - if (this.zip === 0) { 3047 - const error = this.libzip.struct.errorS(); 3048 - this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`)); 3049 - throw this.makeLibzipError(error); 3050 - } 3051 - } finally { 3052 - this.libzip.free(errPtr); 3053 - } 3054 - this.listings.set(PortablePath.root, /* @__PURE__ */ new Set()); 3055 - const entryCount = this.libzip.getNumEntries(this.zip, 0); 3056 - for (let t = 0; t < entryCount; ++t) { 3057 - const raw = this.libzip.getName(this.zip, t, 0); 3058 - if (ppath.isAbsolute(raw)) 3059 - continue; 3060 - const p = ppath.resolve(PortablePath.root, raw); 3061 - this.registerEntry(p, t); 3062 - if (raw.endsWith(`/`)) { 3063 - this.registerListing(p); 3064 - } 3065 - } 3066 - this.symlinkCount = this.libzip.ext.countSymlinks(this.zip); 3067 - if (this.symlinkCount === -1) 3068 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3069 - this.ready = true; 3070 - } 3071 - makeLibzipError(error) { 3072 - const errorCode = this.libzip.struct.errorCodeZip(error); 3073 - const strerror = this.libzip.error.strerror(error); 3074 - const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]); 3075 - if (errorCode === this.libzip.errors.ZIP_ER_CHANGED) 3076 - throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`); 3077 - return libzipError; 3078 - } 3079 - getExtractHint(hints) { 3080 - for (const fileName of this.entries.keys()) { 3081 - const ext = this.pathUtils.extname(fileName); 3082 - if (hints.relevantExtensions.has(ext)) { 3083 - return true; 3084 - } 3085 - } 3086 - return false; 3087 - } 3088 - getAllFiles() { 3089 - return Array.from(this.entries.keys()); 3090 - } 3091 - getRealPath() { 3092 - if (!this.path) 3093 - throw new Error(`ZipFS don't have real paths when loaded from a buffer`); 3094 - return this.path; 3095 - } 3096 - getBufferAndClose() { 3097 - this.prepareClose(); 3098 - if (!this.lzSource) 3099 - throw new Error(`ZipFS was not created from a Buffer`); 3100 - if (this.entries.size === 0) { 3101 - this.discardAndClose(); 3102 - return makeEmptyArchive(); 3103 - } 3104 - try { 3105 - this.libzip.source.keep(this.lzSource); 3106 - if (this.libzip.close(this.zip) === -1) 3107 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3108 - if (this.libzip.source.open(this.lzSource) === -1) 3109 - throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); 3110 - if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1) 3111 - throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); 3112 - const size = this.libzip.source.tell(this.lzSource); 3113 - if (size === -1) 3114 - throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); 3115 - if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1) 3116 - throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); 3117 - const buffer = this.libzip.malloc(size); 3118 - if (!buffer) 3119 - throw new Error(`Couldn't allocate enough memory`); 3120 - try { 3121 - const rc = this.libzip.source.read(this.lzSource, buffer, size); 3122 - if (rc === -1) 3123 - throw this.makeLibzipError(this.libzip.source.error(this.lzSource)); 3124 - else if (rc < size) 3125 - throw new Error(`Incomplete read`); 3126 - else if (rc > size) 3127 - throw new Error(`Overread`); 3128 - const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size); 3129 - return Buffer.from(memory); 3130 - } finally { 3131 - this.libzip.free(buffer); 3132 - } 3133 - } finally { 3134 - this.libzip.source.close(this.lzSource); 3135 - this.libzip.source.free(this.lzSource); 3136 - this.ready = false; 3137 - } 3138 - } 3139 - prepareClose() { 3140 - if (!this.ready) 3141 - throw EBUSY(`archive closed, close`); 3142 - unwatchAllFiles(this); 3143 - } 3144 - saveAndClose() { 3145 - if (!this.path || !this.baseFs) 3146 - throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`); 3147 - this.prepareClose(); 3148 - if (this.readOnly) { 3149 - this.discardAndClose(); 3150 - return; 3151 - } 3152 - const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode; 3153 - if (this.entries.size === 0) { 3154 - this.discardAndClose(); 3155 - this.baseFs.writeFileSync(this.path, makeEmptyArchive(), { mode: newMode }); 3156 - } else { 3157 - const rc = this.libzip.close(this.zip); 3158 - if (rc === -1) 3159 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3160 - if (typeof newMode !== `undefined`) { 3161 - this.baseFs.chmodSync(this.path, newMode); 3162 - } 3163 - } 3164 - this.ready = false; 3165 - } 3166 - discardAndClose() { 3167 - this.prepareClose(); 3168 - this.libzip.discard(this.zip); 3169 - this.ready = false; 3170 - } 3171 - resolve(p) { 3172 - return ppath.resolve(PortablePath.root, p); 3173 - } 3174 - async openPromise(p, flags, mode) { 3175 - return this.openSync(p, flags, mode); 3176 - } 3177 - openSync(p, flags, mode) { 3178 - const fd = this.nextFd++; 3179 - this.fds.set(fd, { cursor: 0, p }); 3180 - return fd; 3181 - } 3182 - hasOpenFileHandles() { 3183 - return !!this.fds.size; 3184 - } 3185 - async opendirPromise(p, opts) { 3186 - return this.opendirSync(p, opts); 3187 - } 3188 - opendirSync(p, opts = {}) { 3189 - const resolvedP = this.resolveFilename(`opendir '${p}'`, p); 3190 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3191 - throw ENOENT(`opendir '${p}'`); 3192 - const directoryListing = this.listings.get(resolvedP); 3193 - if (!directoryListing) 3194 - throw ENOTDIR(`opendir '${p}'`); 3195 - const entries = [...directoryListing]; 3196 - const fd = this.openSync(resolvedP, `r`); 3197 - const onClose = () => { 3198 - this.closeSync(fd); 3199 - }; 3200 - return opendir(this, resolvedP, entries, { onClose }); 3201 - } 3202 - async readPromise(fd, buffer, offset, length, position) { 3203 - return this.readSync(fd, buffer, offset, length, position); 3204 - } 3205 - readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) { 3206 - const entry = this.fds.get(fd); 3207 - if (typeof entry === `undefined`) 3208 - throw EBADF(`read`); 3209 - const realPosition = position === -1 || position === null ? entry.cursor : position; 3210 - const source = this.readFileSync(entry.p); 3211 - source.copy(buffer, offset, realPosition, realPosition + length); 3212 - const bytesRead = Math.max(0, Math.min(source.length - realPosition, length)); 3213 - if (position === -1 || position === null) 3214 - entry.cursor += bytesRead; 3215 - return bytesRead; 3216 - } 3217 - async writePromise(fd, buffer, offset, length, position) { 3218 - if (typeof buffer === `string`) { 3219 - return this.writeSync(fd, buffer, position); 3220 - } else { 3221 - return this.writeSync(fd, buffer, offset, length, position); 3222 - } 3223 - } 3224 - writeSync(fd, buffer, offset, length, position) { 3225 - const entry = this.fds.get(fd); 3226 - if (typeof entry === `undefined`) 3227 - throw EBADF(`read`); 3228 - throw new Error(`Unimplemented`); 3229 - } 3230 - async closePromise(fd) { 3231 - return this.closeSync(fd); 3232 - } 3233 - closeSync(fd) { 3234 - const entry = this.fds.get(fd); 3235 - if (typeof entry === `undefined`) 3236 - throw EBADF(`read`); 3237 - this.fds.delete(fd); 3238 - } 3239 - createReadStream(p, { encoding } = {}) { 3240 - if (p === null) 3241 - throw new Error(`Unimplemented`); 3242 - const fd = this.openSync(p, `r`); 3243 - const stream$1 = Object.assign( 3244 - new stream.PassThrough({ 3245 - emitClose: true, 3246 - autoDestroy: true, 3247 - destroy: (error, callback) => { 3248 - clearImmediate(immediate); 3249 - this.closeSync(fd); 3250 - callback(error); 3251 - } 3252 - }), 3253 - { 3254 - close() { 3255 - stream$1.destroy(); 3256 - }, 3257 - bytesRead: 0, 3258 - path: p 3259 - } 3260 - ); 3261 - const immediate = setImmediate(async () => { 3262 - try { 3263 - const data = await this.readFilePromise(p, encoding); 3264 - stream$1.bytesRead = data.length; 3265 - stream$1.end(data); 3266 - } catch (error) { 3267 - stream$1.destroy(error); 3268 - } 3269 - }); 3270 - return stream$1; 3271 - } 3272 - createWriteStream(p, { encoding } = {}) { 3273 - if (this.readOnly) 3274 - throw EROFS(`open '${p}'`); 3275 - if (p === null) 3276 - throw new Error(`Unimplemented`); 3277 - const chunks = []; 3278 - const fd = this.openSync(p, `w`); 3279 - const stream$1 = Object.assign( 3280 - new stream.PassThrough({ 3281 - autoDestroy: true, 3282 - emitClose: true, 3283 - destroy: (error, callback) => { 3284 - try { 3285 - if (error) { 3286 - callback(error); 3287 - } else { 3288 - this.writeFileSync(p, Buffer.concat(chunks), encoding); 3289 - callback(null); 3290 - } 3291 - } catch (err) { 3292 - callback(err); 3293 - } finally { 3294 - this.closeSync(fd); 3295 - } 3296 - } 3297 - }), 3298 - { 3299 - bytesWritten: 0, 3300 - path: p, 3301 - close() { 3302 - stream$1.destroy(); 3303 - } 3304 - } 3305 - ); 3306 - stream$1.on(`data`, (chunk) => { 3307 - const chunkBuffer = Buffer.from(chunk); 3308 - stream$1.bytesWritten += chunkBuffer.length; 3309 - chunks.push(chunkBuffer); 3310 - }); 3311 - return stream$1; 3312 - } 3313 - async realpathPromise(p) { 3314 - return this.realpathSync(p); 3315 - } 3316 - realpathSync(p) { 3317 - const resolvedP = this.resolveFilename(`lstat '${p}'`, p); 3318 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3319 - throw ENOENT(`lstat '${p}'`); 3320 - return resolvedP; 3321 - } 3322 - async existsPromise(p) { 3323 - return this.existsSync(p); 3324 - } 3325 - existsSync(p) { 3326 - if (!this.ready) 3327 - throw EBUSY(`archive closed, existsSync '${p}'`); 3328 - if (this.symlinkCount === 0) { 3329 - const resolvedP2 = ppath.resolve(PortablePath.root, p); 3330 - return this.entries.has(resolvedP2) || this.listings.has(resolvedP2); 3331 - } 3332 - let resolvedP; 3333 - try { 3334 - resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false); 3335 - } catch (error) { 3336 - return false; 3337 - } 3338 - if (resolvedP === void 0) 3339 - return false; 3340 - return this.entries.has(resolvedP) || this.listings.has(resolvedP); 3341 - } 3342 - async accessPromise(p, mode) { 3343 - return this.accessSync(p, mode); 3344 - } 3345 - accessSync(p, mode = fs.constants.F_OK) { 3346 - const resolvedP = this.resolveFilename(`access '${p}'`, p); 3347 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3348 - throw ENOENT(`access '${p}'`); 3349 - if (this.readOnly && mode & fs.constants.W_OK) { 3350 - throw EROFS(`access '${p}'`); 3351 - } 3352 - } 3353 - async statPromise(p, opts = { bigint: false }) { 3354 - if (opts.bigint) 3355 - return this.statSync(p, { bigint: true }); 3356 - return this.statSync(p); 3357 - } 3358 - statSync(p, opts = { bigint: false, throwIfNoEntry: true }) { 3359 - const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry); 3360 - if (resolvedP === void 0) 3361 - return void 0; 3362 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { 3363 - if (opts.throwIfNoEntry === false) 3364 - return void 0; 3365 - throw ENOENT(`stat '${p}'`); 3366 - } 3367 - if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) 3368 - throw ENOTDIR(`stat '${p}'`); 3369 - return this.statImpl(`stat '${p}'`, resolvedP, opts); 3370 - } 3371 - async fstatPromise(fd, opts) { 3372 - return this.fstatSync(fd, opts); 3373 - } 3374 - fstatSync(fd, opts) { 3375 - const entry = this.fds.get(fd); 3376 - if (typeof entry === `undefined`) 3377 - throw EBADF(`fstatSync`); 3378 - const { p } = entry; 3379 - const resolvedP = this.resolveFilename(`stat '${p}'`, p); 3380 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3381 - throw ENOENT(`stat '${p}'`); 3382 - if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) 3383 - throw ENOTDIR(`stat '${p}'`); 3384 - return this.statImpl(`fstat '${p}'`, resolvedP, opts); 3385 - } 3386 - async lstatPromise(p, opts = { bigint: false }) { 3387 - if (opts.bigint) 3388 - return this.lstatSync(p, { bigint: true }); 3389 - return this.lstatSync(p); 3390 - } 3391 - lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) { 3392 - const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry); 3393 - if (resolvedP === void 0) 3394 - return void 0; 3395 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) { 3396 - if (opts.throwIfNoEntry === false) 3397 - return void 0; 3398 - throw ENOENT(`lstat '${p}'`); 3399 - } 3400 - if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) 3401 - throw ENOTDIR(`lstat '${p}'`); 3402 - return this.statImpl(`lstat '${p}'`, resolvedP, opts); 3403 - } 3404 - statImpl(reason, p, opts = {}) { 3405 - const entry = this.entries.get(p); 3406 - if (typeof entry !== `undefined`) { 3407 - const stat = this.libzip.struct.statS(); 3408 - const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat); 3409 - if (rc === -1) 3410 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3411 - const uid = this.stats.uid; 3412 - const gid = this.stats.gid; 3413 - const size = this.libzip.struct.statSize(stat) >>> 0; 3414 - const blksize = 512; 3415 - const blocks = Math.ceil(size / blksize); 3416 - const mtimeMs = (this.libzip.struct.statMtime(stat) >>> 0) * 1e3; 3417 - const atimeMs = mtimeMs; 3418 - const birthtimeMs = mtimeMs; 3419 - const ctimeMs = mtimeMs; 3420 - const atime = new Date(atimeMs); 3421 - const birthtime = new Date(birthtimeMs); 3422 - const ctime = new Date(ctimeMs); 3423 - const mtime = new Date(mtimeMs); 3424 - const type = this.listings.has(p) ? S_IFDIR : this.isSymbolicLink(entry) ? S_IFLNK : S_IFREG; 3425 - const defaultMode = type === S_IFDIR ? 493 : 420; 3426 - const mode = type | this.getUnixMode(entry, defaultMode) & 511; 3427 - const crc = this.libzip.struct.statCrc(stat); 3428 - const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); 3429 - return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; 3430 - } 3431 - if (this.listings.has(p)) { 3432 - const uid = this.stats.uid; 3433 - const gid = this.stats.gid; 3434 - const size = 0; 3435 - const blksize = 512; 3436 - const blocks = 0; 3437 - const atimeMs = this.stats.mtimeMs; 3438 - const birthtimeMs = this.stats.mtimeMs; 3439 - const ctimeMs = this.stats.mtimeMs; 3440 - const mtimeMs = this.stats.mtimeMs; 3441 - const atime = new Date(atimeMs); 3442 - const birthtime = new Date(birthtimeMs); 3443 - const ctime = new Date(ctimeMs); 3444 - const mtime = new Date(mtimeMs); 3445 - const mode = S_IFDIR | 493; 3446 - const crc = 0; 3447 - const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc }); 3448 - return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance; 3449 - } 3450 - throw new Error(`Unreachable`); 3451 - } 3452 - getUnixMode(index, defaultMode) { 3453 - const rc = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); 3454 - if (rc === -1) 3455 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3456 - const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; 3457 - if (opsys !== this.libzip.ZIP_OPSYS_UNIX) 3458 - return defaultMode; 3459 - return this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16; 3460 - } 3461 - registerListing(p) { 3462 - const existingListing = this.listings.get(p); 3463 - if (existingListing) 3464 - return existingListing; 3465 - const parentListing = this.registerListing(ppath.dirname(p)); 3466 - parentListing.add(ppath.basename(p)); 3467 - const newListing = /* @__PURE__ */ new Set(); 3468 - this.listings.set(p, newListing); 3469 - return newListing; 3470 - } 3471 - registerEntry(p, index) { 3472 - const parentListing = this.registerListing(ppath.dirname(p)); 3473 - parentListing.add(ppath.basename(p)); 3474 - this.entries.set(p, index); 3475 - } 3476 - unregisterListing(p) { 3477 - this.listings.delete(p); 3478 - const parentListing = this.listings.get(ppath.dirname(p)); 3479 - parentListing == null ? void 0 : parentListing.delete(ppath.basename(p)); 3480 - } 3481 - unregisterEntry(p) { 3482 - this.unregisterListing(p); 3483 - const entry = this.entries.get(p); 3484 - this.entries.delete(p); 3485 - if (typeof entry === `undefined`) 3486 - return; 3487 - this.fileSources.delete(entry); 3488 - if (this.isSymbolicLink(entry)) { 3489 - this.symlinkCount--; 3490 - } 3491 - } 3492 - deleteEntry(p, index) { 3493 - this.unregisterEntry(p); 3494 - const rc = this.libzip.delete(this.zip, index); 3495 - if (rc === -1) { 3496 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3497 - } 3498 - } 3499 - resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) { 3500 - if (!this.ready) 3501 - throw EBUSY(`archive closed, ${reason}`); 3502 - let resolvedP = ppath.resolve(PortablePath.root, p); 3503 - if (resolvedP === `/`) 3504 - return PortablePath.root; 3505 - const fileIndex = this.entries.get(resolvedP); 3506 - if (resolveLastComponent && fileIndex !== void 0) { 3507 - if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) { 3508 - const target = this.getFileSource(fileIndex).toString(); 3509 - return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry); 3510 - } else { 3511 - return resolvedP; 3512 - } 3513 - } 3514 - while (true) { 3515 - const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry); 3516 - if (parentP === void 0) 3517 - return parentP; 3518 - const isDir = this.listings.has(parentP); 3519 - const doesExist = this.entries.has(parentP); 3520 - if (!isDir && !doesExist) { 3521 - if (throwIfNoEntry === false) 3522 - return void 0; 3523 - throw ENOENT(reason); 3524 - } 3525 - if (!isDir) 3526 - throw ENOTDIR(reason); 3527 - resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP)); 3528 - if (!resolveLastComponent || this.symlinkCount === 0) 3529 - break; 3530 - const index = this.libzip.name.locate(this.zip, resolvedP.slice(1), 0); 3531 - if (index === -1) 3532 - break; 3533 - if (this.isSymbolicLink(index)) { 3534 - const target = this.getFileSource(index).toString(); 3535 - resolvedP = ppath.resolve(ppath.dirname(resolvedP), target); 3536 - } else { 3537 - break; 3538 - } 3539 - } 3540 - return resolvedP; 3541 - } 3542 - allocateBuffer(content) { 3543 - if (!Buffer.isBuffer(content)) 3544 - content = Buffer.from(content); 3545 - const buffer = this.libzip.malloc(content.byteLength); 3546 - if (!buffer) 3547 - throw new Error(`Couldn't allocate enough memory`); 3548 - const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength); 3549 - heap.set(content); 3550 - return { buffer, byteLength: content.byteLength }; 3551 - } 3552 - allocateUnattachedSource(content) { 3553 - const error = this.libzip.struct.errorS(); 3554 - const { buffer, byteLength } = this.allocateBuffer(content); 3555 - const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error); 3556 - if (source === 0) { 3557 - this.libzip.free(error); 3558 - throw this.makeLibzipError(error); 3559 - } 3560 - return source; 3561 - } 3562 - allocateSource(content) { 3563 - const { buffer, byteLength } = this.allocateBuffer(content); 3564 - const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1); 3565 - if (source === 0) { 3566 - this.libzip.free(buffer); 3567 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3568 - } 3569 - return source; 3570 - } 3571 - setFileSource(p, content) { 3572 - const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content); 3573 - const target = ppath.relative(PortablePath.root, p); 3574 - const lzSource = this.allocateSource(content); 3575 - try { 3576 - const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE); 3577 - if (newIndex === -1) 3578 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3579 - if (this.level !== `mixed`) { 3580 - const method = this.level === 0 ? this.libzip.ZIP_CM_STORE : this.libzip.ZIP_CM_DEFLATE; 3581 - const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, method, this.level); 3582 - if (rc === -1) { 3583 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3584 - } 3585 - } 3586 - this.fileSources.set(newIndex, buffer); 3587 - return newIndex; 3588 - } catch (error) { 3589 - this.libzip.source.free(lzSource); 3590 - throw error; 3591 - } 3592 - } 3593 - isSymbolicLink(index) { 3594 - if (this.symlinkCount === 0) 3595 - return false; 3596 - const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S); 3597 - if (attrs === -1) 3598 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3599 - const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0; 3600 - if (opsys !== this.libzip.ZIP_OPSYS_UNIX) 3601 - return false; 3602 - const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16; 3603 - return (attributes & S_IFMT) === S_IFLNK; 3604 - } 3605 - getFileSource(index, opts = { asyncDecompress: false }) { 3606 - const cachedFileSource = this.fileSources.get(index); 3607 - if (typeof cachedFileSource !== `undefined`) 3608 - return cachedFileSource; 3609 - const stat = this.libzip.struct.statS(); 3610 - const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat); 3611 - if (rc === -1) 3612 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3613 - const size = this.libzip.struct.statCompSize(stat); 3614 - const compressionMethod = this.libzip.struct.statCompMethod(stat); 3615 - const buffer = this.libzip.malloc(size); 3616 - try { 3617 - const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED); 3618 - if (file === 0) 3619 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3620 - try { 3621 - const rc2 = this.libzip.fread(file, buffer, size, 0); 3622 - if (rc2 === -1) 3623 - throw this.makeLibzipError(this.libzip.file.getError(file)); 3624 - else if (rc2 < size) 3625 - throw new Error(`Incomplete read`); 3626 - else if (rc2 > size) 3627 - throw new Error(`Overread`); 3628 - const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size); 3629 - const data = Buffer.from(memory); 3630 - if (compressionMethod === 0) { 3631 - this.fileSources.set(index, data); 3632 - return data; 3633 - } else if (opts.asyncDecompress) { 3634 - return new Promise((resolve, reject) => { 3635 - zlib__default.default.inflateRaw(data, (error, result) => { 3636 - if (error) { 3637 - reject(error); 3638 - } else { 3639 - this.fileSources.set(index, result); 3640 - resolve(result); 3641 - } 3642 - }); 3643 - }); 3644 - } else { 3645 - const decompressedData = zlib__default.default.inflateRawSync(data); 3646 - this.fileSources.set(index, decompressedData); 3647 - return decompressedData; 3648 - } 3649 - } finally { 3650 - this.libzip.fclose(file); 3651 - } 3652 - } finally { 3653 - this.libzip.free(buffer); 3654 - } 3655 - } 3656 - async fchmodPromise(fd, mask) { 3657 - return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask); 3658 - } 3659 - fchmodSync(fd, mask) { 3660 - return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask); 3661 - } 3662 - async chmodPromise(p, mask) { 3663 - return this.chmodSync(p, mask); 3664 - } 3665 - chmodSync(p, mask) { 3666 - if (this.readOnly) 3667 - throw EROFS(`chmod '${p}'`); 3668 - mask &= 493; 3669 - const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false); 3670 - const entry = this.entries.get(resolvedP); 3671 - if (typeof entry === `undefined`) 3672 - throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`); 3673 - const oldMod = this.getUnixMode(entry, S_IFREG | 0); 3674 - const newMod = oldMod & ~511 | mask; 3675 - const rc = this.libzip.file.setExternalAttributes(this.zip, entry, 0, 0, this.libzip.ZIP_OPSYS_UNIX, newMod << 16); 3676 - if (rc === -1) { 3677 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3678 - } 3679 - } 3680 - async fchownPromise(fd, uid, gid) { 3681 - return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid); 3682 - } 3683 - fchownSync(fd, uid, gid) { 3684 - return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid); 3685 - } 3686 - async chownPromise(p, uid, gid) { 3687 - return this.chownSync(p, uid, gid); 3688 - } 3689 - chownSync(p, uid, gid) { 3690 - throw new Error(`Unimplemented`); 3691 - } 3692 - async renamePromise(oldP, newP) { 3693 - return this.renameSync(oldP, newP); 3694 - } 3695 - renameSync(oldP, newP) { 3696 - throw new Error(`Unimplemented`); 3697 - } 3698 - async copyFilePromise(sourceP, destP, flags) { 3699 - const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); 3700 - const source = await this.getFileSource(indexSource, { asyncDecompress: true }); 3701 - const newIndex = this.setFileSource(resolvedDestP, source); 3702 - if (newIndex !== indexDest) { 3703 - this.registerEntry(resolvedDestP, newIndex); 3704 - } 3705 - } 3706 - copyFileSync(sourceP, destP, flags = 0) { 3707 - const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags); 3708 - const source = this.getFileSource(indexSource); 3709 - const newIndex = this.setFileSource(resolvedDestP, source); 3710 - if (newIndex !== indexDest) { 3711 - this.registerEntry(resolvedDestP, newIndex); 3712 - } 3713 - } 3714 - prepareCopyFile(sourceP, destP, flags = 0) { 3715 - if (this.readOnly) 3716 - throw EROFS(`copyfile '${sourceP} -> '${destP}'`); 3717 - if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) 3718 - throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`); 3719 - const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP); 3720 - const indexSource = this.entries.get(resolvedSourceP); 3721 - if (typeof indexSource === `undefined`) 3722 - throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`); 3723 - const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP); 3724 - const indexDest = this.entries.get(resolvedDestP); 3725 - if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`) 3726 - throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`); 3727 - return { 3728 - indexSource, 3729 - resolvedDestP, 3730 - indexDest 3731 - }; 3732 - } 3733 - async appendFilePromise(p, content, opts) { 3734 - if (this.readOnly) 3735 - throw EROFS(`open '${p}'`); 3736 - if (typeof opts === `undefined`) 3737 - opts = { flag: `a` }; 3738 - else if (typeof opts === `string`) 3739 - opts = { flag: `a`, encoding: opts }; 3740 - else if (typeof opts.flag === `undefined`) 3741 - opts = { flag: `a`, ...opts }; 3742 - return this.writeFilePromise(p, content, opts); 3743 - } 3744 - appendFileSync(p, content, opts = {}) { 3745 - if (this.readOnly) 3746 - throw EROFS(`open '${p}'`); 3747 - if (typeof opts === `undefined`) 3748 - opts = { flag: `a` }; 3749 - else if (typeof opts === `string`) 3750 - opts = { flag: `a`, encoding: opts }; 3751 - else if (typeof opts.flag === `undefined`) 3752 - opts = { flag: `a`, ...opts }; 3753 - return this.writeFileSync(p, content, opts); 3754 - } 3755 - fdToPath(fd, reason) { 3756 - var _a; 3757 - const path = (_a = this.fds.get(fd)) == null ? void 0 : _a.p; 3758 - if (typeof path === `undefined`) 3759 - throw EBADF(reason); 3760 - return path; 3761 - } 3762 - async writeFilePromise(p, content, opts) { 3763 - const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); 3764 - if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) 3765 - content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]); 3766 - if (encoding !== null) 3767 - content = content.toString(encoding); 3768 - const newIndex = this.setFileSource(resolvedP, content); 3769 - if (newIndex !== index) 3770 - this.registerEntry(resolvedP, newIndex); 3771 - if (mode !== null) { 3772 - await this.chmodPromise(resolvedP, mode); 3773 - } 3774 - } 3775 - writeFileSync(p, content, opts) { 3776 - const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts); 3777 - if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`)) 3778 - content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]); 3779 - if (encoding !== null) 3780 - content = content.toString(encoding); 3781 - const newIndex = this.setFileSource(resolvedP, content); 3782 - if (newIndex !== index) 3783 - this.registerEntry(resolvedP, newIndex); 3784 - if (mode !== null) { 3785 - this.chmodSync(resolvedP, mode); 3786 - } 3787 - } 3788 - prepareWriteFile(p, opts) { 3789 - if (typeof p === `number`) 3790 - p = this.fdToPath(p, `read`); 3791 - if (this.readOnly) 3792 - throw EROFS(`open '${p}'`); 3793 - const resolvedP = this.resolveFilename(`open '${p}'`, p); 3794 - if (this.listings.has(resolvedP)) 3795 - throw EISDIR(`open '${p}'`); 3796 - let encoding = null, mode = null; 3797 - if (typeof opts === `string`) { 3798 - encoding = opts; 3799 - } else if (typeof opts === `object`) { 3800 - ({ 3801 - encoding = null, 3802 - mode = null 3803 - } = opts); 3804 - } 3805 - const index = this.entries.get(resolvedP); 3806 - return { 3807 - encoding, 3808 - mode, 3809 - resolvedP, 3810 - index 3811 - }; 3812 - } 3813 - async unlinkPromise(p) { 3814 - return this.unlinkSync(p); 3815 - } 3816 - unlinkSync(p) { 3817 - if (this.readOnly) 3818 - throw EROFS(`unlink '${p}'`); 3819 - const resolvedP = this.resolveFilename(`unlink '${p}'`, p); 3820 - if (this.listings.has(resolvedP)) 3821 - throw EISDIR(`unlink '${p}'`); 3822 - const index = this.entries.get(resolvedP); 3823 - if (typeof index === `undefined`) 3824 - throw EINVAL(`unlink '${p}'`); 3825 - this.deleteEntry(resolvedP, index); 3826 - } 3827 - async utimesPromise(p, atime, mtime) { 3828 - return this.utimesSync(p, atime, mtime); 3829 - } 3830 - utimesSync(p, atime, mtime) { 3831 - if (this.readOnly) 3832 - throw EROFS(`utimes '${p}'`); 3833 - const resolvedP = this.resolveFilename(`utimes '${p}'`, p); 3834 - this.utimesImpl(resolvedP, mtime); 3835 - } 3836 - async lutimesPromise(p, atime, mtime) { 3837 - return this.lutimesSync(p, atime, mtime); 3838 - } 3839 - lutimesSync(p, atime, mtime) { 3840 - if (this.readOnly) 3841 - throw EROFS(`lutimes '${p}'`); 3842 - const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false); 3843 - this.utimesImpl(resolvedP, mtime); 3844 - } 3845 - utimesImpl(resolvedP, mtime) { 3846 - if (this.listings.has(resolvedP)) { 3847 - if (!this.entries.has(resolvedP)) 3848 - this.hydrateDirectory(resolvedP); 3849 - } 3850 - const entry = this.entries.get(resolvedP); 3851 - if (entry === void 0) 3852 - throw new Error(`Unreachable`); 3853 - const rc = this.libzip.file.setMtime(this.zip, entry, 0, toUnixTimestamp(mtime), 0); 3854 - if (rc === -1) { 3855 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3856 - } 3857 - } 3858 - async mkdirPromise(p, opts) { 3859 - return this.mkdirSync(p, opts); 3860 - } 3861 - mkdirSync(p, { mode = 493, recursive = false } = {}) { 3862 - if (recursive) 3863 - return this.mkdirpSync(p, { chmod: mode }); 3864 - if (this.readOnly) 3865 - throw EROFS(`mkdir '${p}'`); 3866 - const resolvedP = this.resolveFilename(`mkdir '${p}'`, p); 3867 - if (this.entries.has(resolvedP) || this.listings.has(resolvedP)) 3868 - throw EEXIST(`mkdir '${p}'`); 3869 - this.hydrateDirectory(resolvedP); 3870 - this.chmodSync(resolvedP, mode); 3871 - return void 0; 3872 - } 3873 - async rmdirPromise(p, opts) { 3874 - return this.rmdirSync(p, opts); 3875 - } 3876 - rmdirSync(p, { recursive = false } = {}) { 3877 - if (this.readOnly) 3878 - throw EROFS(`rmdir '${p}'`); 3879 - if (recursive) { 3880 - this.removeSync(p); 3881 - return; 3882 - } 3883 - const resolvedP = this.resolveFilename(`rmdir '${p}'`, p); 3884 - const directoryListing = this.listings.get(resolvedP); 3885 - if (!directoryListing) 3886 - throw ENOTDIR(`rmdir '${p}'`); 3887 - if (directoryListing.size > 0) 3888 - throw ENOTEMPTY(`rmdir '${p}'`); 3889 - const index = this.entries.get(resolvedP); 3890 - if (typeof index === `undefined`) 3891 - throw EINVAL(`rmdir '${p}'`); 3892 - this.deleteEntry(p, index); 3893 - } 3894 - hydrateDirectory(resolvedP) { 3895 - const index = this.libzip.dir.add(this.zip, ppath.relative(PortablePath.root, resolvedP)); 3896 - if (index === -1) 3897 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3898 - this.registerListing(resolvedP); 3899 - this.registerEntry(resolvedP, index); 3900 - return index; 3901 - } 3902 - async linkPromise(existingP, newP) { 3903 - return this.linkSync(existingP, newP); 3904 - } 3905 - linkSync(existingP, newP) { 3906 - throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`); 3907 - } 3908 - async symlinkPromise(target, p) { 3909 - return this.symlinkSync(target, p); 3910 - } 3911 - symlinkSync(target, p) { 3912 - if (this.readOnly) 3913 - throw EROFS(`symlink '${target}' -> '${p}'`); 3914 - const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p); 3915 - if (this.listings.has(resolvedP)) 3916 - throw EISDIR(`symlink '${target}' -> '${p}'`); 3917 - if (this.entries.has(resolvedP)) 3918 - throw EEXIST(`symlink '${target}' -> '${p}'`); 3919 - const index = this.setFileSource(resolvedP, target); 3920 - this.registerEntry(resolvedP, index); 3921 - const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, this.libzip.ZIP_OPSYS_UNIX, (S_IFLNK | 511) << 16); 3922 - if (rc === -1) 3923 - throw this.makeLibzipError(this.libzip.getError(this.zip)); 3924 - this.symlinkCount += 1; 3925 - } 3926 - async readFilePromise(p, encoding) { 3927 - if (typeof encoding === `object`) 3928 - encoding = encoding ? encoding.encoding : void 0; 3929 - const data = await this.readFileBuffer(p, { asyncDecompress: true }); 3930 - return encoding ? data.toString(encoding) : data; 3931 - } 3932 - readFileSync(p, encoding) { 3933 - if (typeof encoding === `object`) 3934 - encoding = encoding ? encoding.encoding : void 0; 3935 - const data = this.readFileBuffer(p); 3936 - return encoding ? data.toString(encoding) : data; 3937 - } 3938 - readFileBuffer(p, opts = { asyncDecompress: false }) { 3939 - if (typeof p === `number`) 3940 - p = this.fdToPath(p, `read`); 3941 - const resolvedP = this.resolveFilename(`open '${p}'`, p); 3942 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3943 - throw ENOENT(`open '${p}'`); 3944 - if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) 3945 - throw ENOTDIR(`open '${p}'`); 3946 - if (this.listings.has(resolvedP)) 3947 - throw EISDIR(`read`); 3948 - const entry = this.entries.get(resolvedP); 3949 - if (entry === void 0) 3950 - throw new Error(`Unreachable`); 3951 - return this.getFileSource(entry, opts); 3952 - } 3953 - async readdirPromise(p, opts) { 3954 - return this.readdirSync(p, opts); 3955 - } 3956 - readdirSync(p, opts) { 3957 - const resolvedP = this.resolveFilename(`scandir '${p}'`, p); 3958 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3959 - throw ENOENT(`scandir '${p}'`); 3960 - const directoryListing = this.listings.get(resolvedP); 3961 - if (!directoryListing) 3962 - throw ENOTDIR(`scandir '${p}'`); 3963 - const entries = [...directoryListing]; 3964 - if (!(opts == null ? void 0 : opts.withFileTypes)) 3965 - return entries; 3966 - return entries.map((name) => { 3967 - return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), { 3968 - name 3969 - }); 3970 - }); 3971 - } 3972 - async readlinkPromise(p) { 3973 - const entry = this.prepareReadlink(p); 3974 - return (await this.getFileSource(entry, { asyncDecompress: true })).toString(); 3975 - } 3976 - readlinkSync(p) { 3977 - const entry = this.prepareReadlink(p); 3978 - return this.getFileSource(entry).toString(); 3979 - } 3980 - prepareReadlink(p) { 3981 - const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false); 3982 - if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) 3983 - throw ENOENT(`readlink '${p}'`); 3984 - if (p[p.length - 1] === `/` && !this.listings.has(resolvedP)) 3985 - throw ENOTDIR(`open '${p}'`); 3986 - if (this.listings.has(resolvedP)) 3987 - throw EINVAL(`readlink '${p}'`); 3988 - const entry = this.entries.get(resolvedP); 3989 - if (entry === void 0) 3990 - throw new Error(`Unreachable`); 3991 - if (!this.isSymbolicLink(entry)) 3992 - throw EINVAL(`readlink '${p}'`); 3993 - return entry; 3994 - } 3995 - async truncatePromise(p, len = 0) { 3996 - const resolvedP = this.resolveFilename(`open '${p}'`, p); 3997 - const index = this.entries.get(resolvedP); 3998 - if (typeof index === `undefined`) 3999 - throw EINVAL(`open '${p}'`); 4000 - const source = await this.getFileSource(index, { asyncDecompress: true }); 4001 - const truncated = Buffer.alloc(len, 0); 4002 - source.copy(truncated); 4003 - return await this.writeFilePromise(p, truncated); 4004 - } 4005 - truncateSync(p, len = 0) { 4006 - const resolvedP = this.resolveFilename(`open '${p}'`, p); 4007 - const index = this.entries.get(resolvedP); 4008 - if (typeof index === `undefined`) 4009 - throw EINVAL(`open '${p}'`); 4010 - const source = this.getFileSource(index); 4011 - const truncated = Buffer.alloc(len, 0); 4012 - source.copy(truncated); 4013 - return this.writeFileSync(p, truncated); 4014 - } 4015 - async ftruncatePromise(fd, len) { 4016 - return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len); 4017 - } 4018 - ftruncateSync(fd, len) { 4019 - return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len); 4020 - } 4021 - watch(p, a, b) { 4022 - let persistent; 4023 - switch (typeof a) { 4024 - case `function`: 4025 - case `string`: 4026 - case `undefined`: 4027 - { 4028 - persistent = true; 4029 - } 4030 - break; 4031 - default: 4032 - { 4033 - ({ persistent = true } = a); 4034 - } 4035 - break; 4036 - } 4037 - if (!persistent) 4038 - return { on: () => { 4039 - }, close: () => { 4040 - } }; 4041 - const interval = setInterval(() => { 4042 - }, 24 * 60 * 60 * 1e3); 4043 - return { on: () => { 4044 - }, close: () => { 4045 - clearInterval(interval); 4046 - } }; 4047 - } 4048 - watchFile(p, a, b) { 4049 - const resolvedP = ppath.resolve(PortablePath.root, p); 4050 - return watchFile(this, resolvedP, a, b); 4051 - } 4052 - unwatchFile(p, cb) { 4053 - const resolvedP = ppath.resolve(PortablePath.root, p); 4054 - return unwatchFile(this, resolvedP, cb); 4055 - } 4056 - } 4057 - 4058 - class ProxiedFS extends FakeFS { 4059 - getExtractHint(hints) { 4060 - return this.baseFs.getExtractHint(hints); 4061 - } 4062 - resolve(path) { 4063 - return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); 4064 - } 4065 - getRealPath() { 4066 - return this.mapFromBase(this.baseFs.getRealPath()); 4067 - } 4068 - async openPromise(p, flags, mode) { 4069 - return this.baseFs.openPromise(this.mapToBase(p), flags, mode); 4070 - } 4071 - openSync(p, flags, mode) { 4072 - return this.baseFs.openSync(this.mapToBase(p), flags, mode); 4073 - } 4074 - async opendirPromise(p, opts) { 4075 - return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); 4076 - } 4077 - opendirSync(p, opts) { 4078 - return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); 4079 - } 4080 - async readPromise(fd, buffer, offset, length, position) { 4081 - return await this.baseFs.readPromise(fd, buffer, offset, length, position); 4082 - } 4083 - readSync(fd, buffer, offset, length, position) { 4084 - return this.baseFs.readSync(fd, buffer, offset, length, position); 4085 - } 4086 - async writePromise(fd, buffer, offset, length, position) { 4087 - if (typeof buffer === `string`) { 4088 - return await this.baseFs.writePromise(fd, buffer, offset); 4089 - } else { 4090 - return await this.baseFs.writePromise(fd, buffer, offset, length, position); 4091 - } 4092 - } 4093 - writeSync(fd, buffer, offset, length, position) { 4094 - if (typeof buffer === `string`) { 4095 - return this.baseFs.writeSync(fd, buffer, offset); 4096 - } else { 4097 - return this.baseFs.writeSync(fd, buffer, offset, length, position); 4098 - } 4099 - } 4100 - async closePromise(fd) { 4101 - return this.baseFs.closePromise(fd); 4102 - } 4103 - closeSync(fd) { 4104 - this.baseFs.closeSync(fd); 4105 - } 4106 - createReadStream(p, opts) { 4107 - return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); 4108 - } 4109 - createWriteStream(p, opts) { 4110 - return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); 4111 - } 4112 - async realpathPromise(p) { 4113 - return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); 4114 - } 4115 - realpathSync(p) { 4116 - return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); 4117 - } 4118 - async existsPromise(p) { 4119 - return this.baseFs.existsPromise(this.mapToBase(p)); 4120 - } 4121 - existsSync(p) { 4122 - return this.baseFs.existsSync(this.mapToBase(p)); 4123 - } 4124 - accessSync(p, mode) { 4125 - return this.baseFs.accessSync(this.mapToBase(p), mode); 4126 - } 4127 - async accessPromise(p, mode) { 4128 - return this.baseFs.accessPromise(this.mapToBase(p), mode); 4129 - } 4130 - async statPromise(p, opts) { 4131 - return this.baseFs.statPromise(this.mapToBase(p), opts); 4132 - } 4133 - statSync(p, opts) { 4134 - return this.baseFs.statSync(this.mapToBase(p), opts); 4135 - } 4136 - async fstatPromise(fd, opts) { 4137 - return this.baseFs.fstatPromise(fd, opts); 4138 - } 4139 - fstatSync(fd, opts) { 4140 - return this.baseFs.fstatSync(fd, opts); 4141 - } 4142 - lstatPromise(p, opts) { 4143 - return this.baseFs.lstatPromise(this.mapToBase(p), opts); 4144 - } 4145 - lstatSync(p, opts) { 4146 - return this.baseFs.lstatSync(this.mapToBase(p), opts); 4147 - } 4148 - async fchmodPromise(fd, mask) { 4149 - return this.baseFs.fchmodPromise(fd, mask); 4150 - } 4151 - fchmodSync(fd, mask) { 4152 - return this.baseFs.fchmodSync(fd, mask); 4153 - } 4154 - async chmodPromise(p, mask) { 4155 - return this.baseFs.chmodPromise(this.mapToBase(p), mask); 4156 - } 4157 - chmodSync(p, mask) { 4158 - return this.baseFs.chmodSync(this.mapToBase(p), mask); 4159 - } 4160 - async fchownPromise(fd, uid, gid) { 4161 - return this.baseFs.fchownPromise(fd, uid, gid); 4162 - } 4163 - fchownSync(fd, uid, gid) { 4164 - return this.baseFs.fchownSync(fd, uid, gid); 4165 - } 4166 - async chownPromise(p, uid, gid) { 4167 - return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); 4168 - } 4169 - chownSync(p, uid, gid) { 4170 - return this.baseFs.chownSync(this.mapToBase(p), uid, gid); 4171 - } 4172 - async renamePromise(oldP, newP) { 4173 - return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); 4174 - } 4175 - renameSync(oldP, newP) { 4176 - return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); 4177 - } 4178 - async copyFilePromise(sourceP, destP, flags = 0) { 4179 - return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); 4180 - } 4181 - copyFileSync(sourceP, destP, flags = 0) { 4182 - return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); 4183 - } 4184 - async appendFilePromise(p, content, opts) { 4185 - return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); 4186 - } 4187 - appendFileSync(p, content, opts) { 4188 - return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); 4189 - } 4190 - async writeFilePromise(p, content, opts) { 4191 - return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); 4192 - } 4193 - writeFileSync(p, content, opts) { 4194 - return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); 4195 - } 4196 - async unlinkPromise(p) { 4197 - return this.baseFs.unlinkPromise(this.mapToBase(p)); 4198 - } 4199 - unlinkSync(p) { 4200 - return this.baseFs.unlinkSync(this.mapToBase(p)); 4201 - } 4202 - async utimesPromise(p, atime, mtime) { 4203 - return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); 4204 - } 4205 - utimesSync(p, atime, mtime) { 4206 - return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); 4207 - } 4208 - async mkdirPromise(p, opts) { 4209 - return this.baseFs.mkdirPromise(this.mapToBase(p), opts); 4210 - } 4211 - mkdirSync(p, opts) { 4212 - return this.baseFs.mkdirSync(this.mapToBase(p), opts); 4213 - } 4214 - async rmdirPromise(p, opts) { 4215 - return this.baseFs.rmdirPromise(this.mapToBase(p), opts); 4216 - } 4217 - rmdirSync(p, opts) { 4218 - return this.baseFs.rmdirSync(this.mapToBase(p), opts); 4219 - } 4220 - async linkPromise(existingP, newP) { 4221 - return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); 4222 - } 4223 - linkSync(existingP, newP) { 4224 - return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); 4225 - } 4226 - async symlinkPromise(target, p, type) { 4227 - const mappedP = this.mapToBase(p); 4228 - if (this.pathUtils.isAbsolute(target)) 4229 - return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); 4230 - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); 4231 - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); 4232 - return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); 4233 - } 4234 - symlinkSync(target, p, type) { 4235 - const mappedP = this.mapToBase(p); 4236 - if (this.pathUtils.isAbsolute(target)) 4237 - return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); 4238 - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); 4239 - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); 4240 - return this.baseFs.symlinkSync(mappedTarget, mappedP, type); 4241 - } 4242 - async readFilePromise(p, encoding) { 4243 - if (encoding === `utf8`) { 4244 - return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); 4245 - } else { 4246 - return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); 4247 - } 4248 - } 4249 - readFileSync(p, encoding) { 4250 - if (encoding === `utf8`) { 4251 - return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); 4252 - } else { 4253 - return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); 4254 - } 4255 - } 4256 - async readdirPromise(p, opts) { 4257 - return this.baseFs.readdirPromise(this.mapToBase(p), opts); 4258 - } 4259 - readdirSync(p, opts) { 4260 - return this.baseFs.readdirSync(this.mapToBase(p), opts); 4261 - } 4262 - async readlinkPromise(p) { 4263 - return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); 4264 - } 4265 - readlinkSync(p) { 4266 - return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); 4267 - } 4268 - async truncatePromise(p, len) { 4269 - return this.baseFs.truncatePromise(this.mapToBase(p), len); 4270 - } 4271 - truncateSync(p, len) { 4272 - return this.baseFs.truncateSync(this.mapToBase(p), len); 4273 - } 4274 - async ftruncatePromise(fd, len) { 4275 - return this.baseFs.ftruncatePromise(fd, len); 4276 - } 4277 - ftruncateSync(fd, len) { 4278 - return this.baseFs.ftruncateSync(fd, len); 4279 - } 4280 - watch(p, a, b) { 4281 - return this.baseFs.watch( 4282 - this.mapToBase(p), 4283 - a, 4284 - b 4285 - ); 4286 - } 4287 - watchFile(p, a, b) { 4288 - return this.baseFs.watchFile( 4289 - this.mapToBase(p), 4290 - a, 4291 - b 4292 - ); 4293 - } 4294 - unwatchFile(p, cb) { 4295 - return this.baseFs.unwatchFile(this.mapToBase(p), cb); 4296 - } 4297 - fsMapToBase(p) { 4298 - if (typeof p === `number`) { 4299 - return p; 4300 - } else { 4301 - return this.mapToBase(p); 4302 - } 4303 - } 4304 - } 4305 - 4306 - class PosixFS extends ProxiedFS { 4307 - constructor(baseFs) { 4308 - super(npath); 4309 - this.baseFs = baseFs; 4310 - } 4311 - mapFromBase(path) { 4312 - return npath.fromPortablePath(path); 4313 - } 4314 - mapToBase(path) { 4315 - return npath.toPortablePath(path); 4316 - } 4317 - } 4318 - 4319 - const NUMBER_REGEXP = /^[0-9]+$/; 4320 - const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; 4321 - const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; 4322 - class VirtualFS extends ProxiedFS { 4323 - constructor({ baseFs = new NodeFS() } = {}) { 4324 - super(ppath); 4325 - this.baseFs = baseFs; 4326 - } 4327 - static makeVirtualPath(base, component, to) { 4328 - if (ppath.basename(base) !== `__virtual__`) 4329 - throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); 4330 - if (!ppath.basename(component).match(VALID_COMPONENT)) 4331 - throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); 4332 - const target = ppath.relative(ppath.dirname(base), to); 4333 - const segments = target.split(`/`); 4334 - let depth = 0; 4335 - while (depth < segments.length && segments[depth] === `..`) 4336 - depth += 1; 4337 - const finalSegments = segments.slice(depth); 4338 - const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); 4339 - return fullVirtualPath; 4340 - } 4341 - static resolveVirtual(p) { 4342 - const match = p.match(VIRTUAL_REGEXP); 4343 - if (!match || !match[3] && match[5]) 4344 - return p; 4345 - const target = ppath.dirname(match[1]); 4346 - if (!match[3] || !match[4]) 4347 - return target; 4348 - const isnum = NUMBER_REGEXP.test(match[4]); 4349 - if (!isnum) 4350 - return p; 4351 - const depth = Number(match[4]); 4352 - const backstep = `../`.repeat(depth); 4353 - const subpath = match[5] || `.`; 4354 - return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); 4355 - } 4356 - getExtractHint(hints) { 4357 - return this.baseFs.getExtractHint(hints); 4358 - } 4359 - getRealPath() { 4360 - return this.baseFs.getRealPath(); 4361 - } 4362 - realpathSync(p) { 4363 - const match = p.match(VIRTUAL_REGEXP); 4364 - if (!match) 4365 - return this.baseFs.realpathSync(p); 4366 - if (!match[5]) 4367 - return p; 4368 - const realpath = this.baseFs.realpathSync(this.mapToBase(p)); 4369 - return VirtualFS.makeVirtualPath(match[1], match[3], realpath); 4370 - } 4371 - async realpathPromise(p) { 4372 - const match = p.match(VIRTUAL_REGEXP); 4373 - if (!match) 4374 - return await this.baseFs.realpathPromise(p); 4375 - if (!match[5]) 4376 - return p; 4377 - const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); 4378 - return VirtualFS.makeVirtualPath(match[1], match[3], realpath); 4379 - } 4380 - mapToBase(p) { 4381 - if (p === ``) 4382 - return p; 4383 - if (this.pathUtils.isAbsolute(p)) 4384 - return VirtualFS.resolveVirtual(p); 4385 - const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); 4386 - const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); 4387 - return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; 4388 - } 4389 - mapFromBase(p) { 4390 - return p; 4391 - } 4392 - } 4393 - 4394 - const ZIP_MASK = 4278190080; 4395 - const ZIP_MAGIC = 704643072; 4396 - const getArchivePart = (path, extension) => { 4397 - let idx = path.indexOf(extension); 4398 - if (idx <= 0) 4399 - return null; 4400 - let nextCharIdx = idx; 4401 - while (idx >= 0) { 4402 - nextCharIdx = idx + extension.length; 4403 - if (path[nextCharIdx] === ppath.sep) 4404 - break; 4405 - if (path[idx - 1] === ppath.sep) 4406 - return null; 4407 - idx = path.indexOf(extension, nextCharIdx); 4408 - } 4409 - if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep) 4410 - return null; 4411 - return path.slice(0, nextCharIdx); 4412 - }; 4413 - class ZipOpenFS extends BasePortableFakeFS { 4414 - constructor({ libzip, baseFs = new NodeFS(), filter = null, maxOpenFiles = Infinity, readOnlyArchives = false, useCache = true, maxAge = 5e3, fileExtensions = null }) { 4415 - super(); 4416 - this.fdMap = /* @__PURE__ */ new Map(); 4417 - this.nextFd = 3; 4418 - this.isZip = /* @__PURE__ */ new Set(); 4419 - this.notZip = /* @__PURE__ */ new Set(); 4420 - this.realPaths = /* @__PURE__ */ new Map(); 4421 - this.limitOpenFilesTimeout = null; 4422 - this.libzipFactory = typeof libzip !== `function` ? () => libzip : libzip; 4423 - this.baseFs = baseFs; 4424 - this.zipInstances = useCache ? /* @__PURE__ */ new Map() : null; 4425 - this.filter = filter; 4426 - this.maxOpenFiles = maxOpenFiles; 4427 - this.readOnlyArchives = readOnlyArchives; 4428 - this.maxAge = maxAge; 4429 - this.fileExtensions = fileExtensions; 4430 - } 4431 - static async openPromise(fn, opts) { 4432 - const zipOpenFs = new ZipOpenFS(opts); 4433 - try { 4434 - return await fn(zipOpenFs); 4435 - } finally { 4436 - zipOpenFs.saveAndClose(); 4437 - } 4438 - } 4439 - get libzip() { 4440 - if (typeof this.libzipInstance === `undefined`) 4441 - this.libzipInstance = this.libzipFactory(); 4442 - return this.libzipInstance; 4443 - } 4444 - getExtractHint(hints) { 4445 - return this.baseFs.getExtractHint(hints); 4446 - } 4447 - getRealPath() { 4448 - return this.baseFs.getRealPath(); 4449 - } 4450 - saveAndClose() { 4451 - unwatchAllFiles(this); 4452 - if (this.zipInstances) { 4453 - for (const [path, { zipFs }] of this.zipInstances.entries()) { 4454 - zipFs.saveAndClose(); 4455 - this.zipInstances.delete(path); 4456 - } 4457 - } 4458 - } 4459 - discardAndClose() { 4460 - unwatchAllFiles(this); 4461 - if (this.zipInstances) { 4462 - for (const [path, { zipFs }] of this.zipInstances.entries()) { 4463 - zipFs.discardAndClose(); 4464 - this.zipInstances.delete(path); 4465 - } 4466 - } 4467 - } 4468 - resolve(p) { 4469 - return this.baseFs.resolve(p); 4470 - } 4471 - remapFd(zipFs, fd) { 4472 - const remappedFd = this.nextFd++ | ZIP_MAGIC; 4473 - this.fdMap.set(remappedFd, [zipFs, fd]); 4474 - return remappedFd; 4475 - } 4476 - async openPromise(p, flags, mode) { 4477 - return await this.makeCallPromise(p, async () => { 4478 - return await this.baseFs.openPromise(p, flags, mode); 4479 - }, async (zipFs, { subPath }) => { 4480 - return this.remapFd(zipFs, await zipFs.openPromise(subPath, flags, mode)); 4481 - }); 4482 - } 4483 - openSync(p, flags, mode) { 4484 - return this.makeCallSync(p, () => { 4485 - return this.baseFs.openSync(p, flags, mode); 4486 - }, (zipFs, { subPath }) => { 4487 - return this.remapFd(zipFs, zipFs.openSync(subPath, flags, mode)); 4488 - }); 4489 - } 4490 - async opendirPromise(p, opts) { 4491 - return await this.makeCallPromise(p, async () => { 4492 - return await this.baseFs.opendirPromise(p, opts); 4493 - }, async (zipFs, { subPath }) => { 4494 - return await zipFs.opendirPromise(subPath, opts); 4495 - }, { 4496 - requireSubpath: false 4497 - }); 4498 - } 4499 - opendirSync(p, opts) { 4500 - return this.makeCallSync(p, () => { 4501 - return this.baseFs.opendirSync(p, opts); 4502 - }, (zipFs, { subPath }) => { 4503 - return zipFs.opendirSync(subPath, opts); 4504 - }, { 4505 - requireSubpath: false 4506 - }); 4507 - } 4508 - async readPromise(fd, buffer, offset, length, position) { 4509 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4510 - return await this.baseFs.readPromise(fd, buffer, offset, length, position); 4511 - const entry = this.fdMap.get(fd); 4512 - if (typeof entry === `undefined`) 4513 - throw EBADF(`read`); 4514 - const [zipFs, realFd] = entry; 4515 - return await zipFs.readPromise(realFd, buffer, offset, length, position); 4516 - } 4517 - readSync(fd, buffer, offset, length, position) { 4518 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4519 - return this.baseFs.readSync(fd, buffer, offset, length, position); 4520 - const entry = this.fdMap.get(fd); 4521 - if (typeof entry === `undefined`) 4522 - throw EBADF(`readSync`); 4523 - const [zipFs, realFd] = entry; 4524 - return zipFs.readSync(realFd, buffer, offset, length, position); 4525 - } 4526 - async writePromise(fd, buffer, offset, length, position) { 4527 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) { 4528 - if (typeof buffer === `string`) { 4529 - return await this.baseFs.writePromise(fd, buffer, offset); 4530 - } else { 4531 - return await this.baseFs.writePromise(fd, buffer, offset, length, position); 4532 - } 4533 - } 4534 - const entry = this.fdMap.get(fd); 4535 - if (typeof entry === `undefined`) 4536 - throw EBADF(`write`); 4537 - const [zipFs, realFd] = entry; 4538 - if (typeof buffer === `string`) { 4539 - return await zipFs.writePromise(realFd, buffer, offset); 4540 - } else { 4541 - return await zipFs.writePromise(realFd, buffer, offset, length, position); 4542 - } 4543 - } 4544 - writeSync(fd, buffer, offset, length, position) { 4545 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) { 4546 - if (typeof buffer === `string`) { 4547 - return this.baseFs.writeSync(fd, buffer, offset); 4548 - } else { 4549 - return this.baseFs.writeSync(fd, buffer, offset, length, position); 4550 - } 4551 - } 4552 - const entry = this.fdMap.get(fd); 4553 - if (typeof entry === `undefined`) 4554 - throw EBADF(`writeSync`); 4555 - const [zipFs, realFd] = entry; 4556 - if (typeof buffer === `string`) { 4557 - return zipFs.writeSync(realFd, buffer, offset); 4558 - } else { 4559 - return zipFs.writeSync(realFd, buffer, offset, length, position); 4560 - } 4561 - } 4562 - async closePromise(fd) { 4563 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4564 - return await this.baseFs.closePromise(fd); 4565 - const entry = this.fdMap.get(fd); 4566 - if (typeof entry === `undefined`) 4567 - throw EBADF(`close`); 4568 - this.fdMap.delete(fd); 4569 - const [zipFs, realFd] = entry; 4570 - return await zipFs.closePromise(realFd); 4571 - } 4572 - closeSync(fd) { 4573 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4574 - return this.baseFs.closeSync(fd); 4575 - const entry = this.fdMap.get(fd); 4576 - if (typeof entry === `undefined`) 4577 - throw EBADF(`closeSync`); 4578 - this.fdMap.delete(fd); 4579 - const [zipFs, realFd] = entry; 4580 - return zipFs.closeSync(realFd); 4581 - } 4582 - createReadStream(p, opts) { 4583 - if (p === null) 4584 - return this.baseFs.createReadStream(p, opts); 4585 - return this.makeCallSync(p, () => { 4586 - return this.baseFs.createReadStream(p, opts); 4587 - }, (zipFs, { archivePath, subPath }) => { 4588 - const stream = zipFs.createReadStream(subPath, opts); 4589 - stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath)); 4590 - return stream; 4591 - }); 4592 - } 4593 - createWriteStream(p, opts) { 4594 - if (p === null) 4595 - return this.baseFs.createWriteStream(p, opts); 4596 - return this.makeCallSync(p, () => { 4597 - return this.baseFs.createWriteStream(p, opts); 4598 - }, (zipFs, { subPath }) => { 4599 - return zipFs.createWriteStream(subPath, opts); 4600 - }); 4601 - } 4602 - async realpathPromise(p) { 4603 - return await this.makeCallPromise(p, async () => { 4604 - return await this.baseFs.realpathPromise(p); 4605 - }, async (zipFs, { archivePath, subPath }) => { 4606 - let realArchivePath = this.realPaths.get(archivePath); 4607 - if (typeof realArchivePath === `undefined`) { 4608 - realArchivePath = await this.baseFs.realpathPromise(archivePath); 4609 - this.realPaths.set(archivePath, realArchivePath); 4610 - } 4611 - return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await zipFs.realpathPromise(subPath))); 4612 - }); 4613 - } 4614 - realpathSync(p) { 4615 - return this.makeCallSync(p, () => { 4616 - return this.baseFs.realpathSync(p); 4617 - }, (zipFs, { archivePath, subPath }) => { 4618 - let realArchivePath = this.realPaths.get(archivePath); 4619 - if (typeof realArchivePath === `undefined`) { 4620 - realArchivePath = this.baseFs.realpathSync(archivePath); 4621 - this.realPaths.set(archivePath, realArchivePath); 4622 - } 4623 - return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, zipFs.realpathSync(subPath))); 4624 - }); 4625 - } 4626 - async existsPromise(p) { 4627 - return await this.makeCallPromise(p, async () => { 4628 - return await this.baseFs.existsPromise(p); 4629 - }, async (zipFs, { subPath }) => { 4630 - return await zipFs.existsPromise(subPath); 4631 - }); 4632 - } 4633 - existsSync(p) { 4634 - return this.makeCallSync(p, () => { 4635 - return this.baseFs.existsSync(p); 4636 - }, (zipFs, { subPath }) => { 4637 - return zipFs.existsSync(subPath); 4638 - }); 4639 - } 4640 - async accessPromise(p, mode) { 4641 - return await this.makeCallPromise(p, async () => { 4642 - return await this.baseFs.accessPromise(p, mode); 4643 - }, async (zipFs, { subPath }) => { 4644 - return await zipFs.accessPromise(subPath, mode); 4645 - }); 4646 - } 4647 - accessSync(p, mode) { 4648 - return this.makeCallSync(p, () => { 4649 - return this.baseFs.accessSync(p, mode); 4650 - }, (zipFs, { subPath }) => { 4651 - return zipFs.accessSync(subPath, mode); 4652 - }); 4653 - } 4654 - async statPromise(p, opts) { 4655 - return await this.makeCallPromise(p, async () => { 4656 - return await this.baseFs.statPromise(p, opts); 4657 - }, async (zipFs, { subPath }) => { 4658 - return await zipFs.statPromise(subPath, opts); 4659 - }); 4660 - } 4661 - statSync(p, opts) { 4662 - return this.makeCallSync(p, () => { 4663 - return this.baseFs.statSync(p, opts); 4664 - }, (zipFs, { subPath }) => { 4665 - return zipFs.statSync(subPath, opts); 4666 - }); 4667 - } 4668 - async fstatPromise(fd, opts) { 4669 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4670 - return this.baseFs.fstatPromise(fd, opts); 4671 - const entry = this.fdMap.get(fd); 4672 - if (typeof entry === `undefined`) 4673 - throw EBADF(`fstat`); 4674 - const [zipFs, realFd] = entry; 4675 - return zipFs.fstatPromise(realFd, opts); 4676 - } 4677 - fstatSync(fd, opts) { 4678 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4679 - return this.baseFs.fstatSync(fd, opts); 4680 - const entry = this.fdMap.get(fd); 4681 - if (typeof entry === `undefined`) 4682 - throw EBADF(`fstatSync`); 4683 - const [zipFs, realFd] = entry; 4684 - return zipFs.fstatSync(realFd, opts); 4685 - } 4686 - async lstatPromise(p, opts) { 4687 - return await this.makeCallPromise(p, async () => { 4688 - return await this.baseFs.lstatPromise(p, opts); 4689 - }, async (zipFs, { subPath }) => { 4690 - return await zipFs.lstatPromise(subPath, opts); 4691 - }); 4692 - } 4693 - lstatSync(p, opts) { 4694 - return this.makeCallSync(p, () => { 4695 - return this.baseFs.lstatSync(p, opts); 4696 - }, (zipFs, { subPath }) => { 4697 - return zipFs.lstatSync(subPath, opts); 4698 - }); 4699 - } 4700 - async fchmodPromise(fd, mask) { 4701 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4702 - return this.baseFs.fchmodPromise(fd, mask); 4703 - const entry = this.fdMap.get(fd); 4704 - if (typeof entry === `undefined`) 4705 - throw EBADF(`fchmod`); 4706 - const [zipFs, realFd] = entry; 4707 - return zipFs.fchmodPromise(realFd, mask); 4708 - } 4709 - fchmodSync(fd, mask) { 4710 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4711 - return this.baseFs.fchmodSync(fd, mask); 4712 - const entry = this.fdMap.get(fd); 4713 - if (typeof entry === `undefined`) 4714 - throw EBADF(`fchmodSync`); 4715 - const [zipFs, realFd] = entry; 4716 - return zipFs.fchmodSync(realFd, mask); 4717 - } 4718 - async chmodPromise(p, mask) { 4719 - return await this.makeCallPromise(p, async () => { 4720 - return await this.baseFs.chmodPromise(p, mask); 4721 - }, async (zipFs, { subPath }) => { 4722 - return await zipFs.chmodPromise(subPath, mask); 4723 - }); 4724 - } 4725 - chmodSync(p, mask) { 4726 - return this.makeCallSync(p, () => { 4727 - return this.baseFs.chmodSync(p, mask); 4728 - }, (zipFs, { subPath }) => { 4729 - return zipFs.chmodSync(subPath, mask); 4730 - }); 4731 - } 4732 - async fchownPromise(fd, uid, gid) { 4733 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4734 - return this.baseFs.fchownPromise(fd, uid, gid); 4735 - const entry = this.fdMap.get(fd); 4736 - if (typeof entry === `undefined`) 4737 - throw EBADF(`fchown`); 4738 - const [zipFs, realFd] = entry; 4739 - return zipFs.fchownPromise(realFd, uid, gid); 4740 - } 4741 - fchownSync(fd, uid, gid) { 4742 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 4743 - return this.baseFs.fchownSync(fd, uid, gid); 4744 - const entry = this.fdMap.get(fd); 4745 - if (typeof entry === `undefined`) 4746 - throw EBADF(`fchownSync`); 4747 - const [zipFs, realFd] = entry; 4748 - return zipFs.fchownSync(realFd, uid, gid); 4749 - } 4750 - async chownPromise(p, uid, gid) { 4751 - return await this.makeCallPromise(p, async () => { 4752 - return await this.baseFs.chownPromise(p, uid, gid); 4753 - }, async (zipFs, { subPath }) => { 4754 - return await zipFs.chownPromise(subPath, uid, gid); 4755 - }); 4756 - } 4757 - chownSync(p, uid, gid) { 4758 - return this.makeCallSync(p, () => { 4759 - return this.baseFs.chownSync(p, uid, gid); 4760 - }, (zipFs, { subPath }) => { 4761 - return zipFs.chownSync(subPath, uid, gid); 4762 - }); 4763 - } 4764 - async renamePromise(oldP, newP) { 4765 - return await this.makeCallPromise(oldP, async () => { 4766 - return await this.makeCallPromise(newP, async () => { 4767 - return await this.baseFs.renamePromise(oldP, newP); 4768 - }, async () => { 4769 - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); 4770 - }); 4771 - }, async (zipFsO, { subPath: subPathO }) => { 4772 - return await this.makeCallPromise(newP, async () => { 4773 - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); 4774 - }, async (zipFsN, { subPath: subPathN }) => { 4775 - if (zipFsO !== zipFsN) { 4776 - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); 4777 - } else { 4778 - return await zipFsO.renamePromise(subPathO, subPathN); 4779 - } 4780 - }); 4781 - }); 4782 - } 4783 - renameSync(oldP, newP) { 4784 - return this.makeCallSync(oldP, () => { 4785 - return this.makeCallSync(newP, () => { 4786 - return this.baseFs.renameSync(oldP, newP); 4787 - }, () => { 4788 - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); 4789 - }); 4790 - }, (zipFsO, { subPath: subPathO }) => { 4791 - return this.makeCallSync(newP, () => { 4792 - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); 4793 - }, (zipFsN, { subPath: subPathN }) => { 4794 - if (zipFsO !== zipFsN) { 4795 - throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` }); 4796 - } else { 4797 - return zipFsO.renameSync(subPathO, subPathN); 4798 - } 4799 - }); 4800 - }); 4801 - } 4802 - async copyFilePromise(sourceP, destP, flags = 0) { 4803 - const fallback = async (sourceFs, sourceP2, destFs, destP2) => { 4804 - if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) 4805 - throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); 4806 - if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2)) 4807 - throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); 4808 - let content; 4809 - try { 4810 - content = await sourceFs.readFilePromise(sourceP2); 4811 - } catch (error) { 4812 - throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); 4813 - } 4814 - await destFs.writeFilePromise(destP2, content); 4815 - }; 4816 - return await this.makeCallPromise(sourceP, async () => { 4817 - return await this.makeCallPromise(destP, async () => { 4818 - return await this.baseFs.copyFilePromise(sourceP, destP, flags); 4819 - }, async (zipFsD, { subPath: subPathD }) => { 4820 - return await fallback(this.baseFs, sourceP, zipFsD, subPathD); 4821 - }); 4822 - }, async (zipFsS, { subPath: subPathS }) => { 4823 - return await this.makeCallPromise(destP, async () => { 4824 - return await fallback(zipFsS, subPathS, this.baseFs, destP); 4825 - }, async (zipFsD, { subPath: subPathD }) => { 4826 - if (zipFsS !== zipFsD) { 4827 - return await fallback(zipFsS, subPathS, zipFsD, subPathD); 4828 - } else { 4829 - return await zipFsS.copyFilePromise(subPathS, subPathD, flags); 4830 - } 4831 - }); 4832 - }); 4833 - } 4834 - copyFileSync(sourceP, destP, flags = 0) { 4835 - const fallback = (sourceFs, sourceP2, destFs, destP2) => { 4836 - if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0) 4837 - throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` }); 4838 - if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2)) 4839 - throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` }); 4840 - let content; 4841 - try { 4842 - content = sourceFs.readFileSync(sourceP2); 4843 - } catch (error) { 4844 - throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` }); 4845 - } 4846 - destFs.writeFileSync(destP2, content); 4847 - }; 4848 - return this.makeCallSync(sourceP, () => { 4849 - return this.makeCallSync(destP, () => { 4850 - return this.baseFs.copyFileSync(sourceP, destP, flags); 4851 - }, (zipFsD, { subPath: subPathD }) => { 4852 - return fallback(this.baseFs, sourceP, zipFsD, subPathD); 4853 - }); 4854 - }, (zipFsS, { subPath: subPathS }) => { 4855 - return this.makeCallSync(destP, () => { 4856 - return fallback(zipFsS, subPathS, this.baseFs, destP); 4857 - }, (zipFsD, { subPath: subPathD }) => { 4858 - if (zipFsS !== zipFsD) { 4859 - return fallback(zipFsS, subPathS, zipFsD, subPathD); 4860 - } else { 4861 - return zipFsS.copyFileSync(subPathS, subPathD, flags); 4862 - } 4863 - }); 4864 - }); 4865 - } 4866 - async appendFilePromise(p, content, opts) { 4867 - return await this.makeCallPromise(p, async () => { 4868 - return await this.baseFs.appendFilePromise(p, content, opts); 4869 - }, async (zipFs, { subPath }) => { 4870 - return await zipFs.appendFilePromise(subPath, content, opts); 4871 - }); 4872 - } 4873 - appendFileSync(p, content, opts) { 4874 - return this.makeCallSync(p, () => { 4875 - return this.baseFs.appendFileSync(p, content, opts); 4876 - }, (zipFs, { subPath }) => { 4877 - return zipFs.appendFileSync(subPath, content, opts); 4878 - }); 4879 - } 4880 - async writeFilePromise(p, content, opts) { 4881 - return await this.makeCallPromise(p, async () => { 4882 - return await this.baseFs.writeFilePromise(p, content, opts); 4883 - }, async (zipFs, { subPath }) => { 4884 - return await zipFs.writeFilePromise(subPath, content, opts); 4885 - }); 4886 - } 4887 - writeFileSync(p, content, opts) { 4888 - return this.makeCallSync(p, () => { 4889 - return this.baseFs.writeFileSync(p, content, opts); 4890 - }, (zipFs, { subPath }) => { 4891 - return zipFs.writeFileSync(subPath, content, opts); 4892 - }); 4893 - } 4894 - async unlinkPromise(p) { 4895 - return await this.makeCallPromise(p, async () => { 4896 - return await this.baseFs.unlinkPromise(p); 4897 - }, async (zipFs, { subPath }) => { 4898 - return await zipFs.unlinkPromise(subPath); 4899 - }); 4900 - } 4901 - unlinkSync(p) { 4902 - return this.makeCallSync(p, () => { 4903 - return this.baseFs.unlinkSync(p); 4904 - }, (zipFs, { subPath }) => { 4905 - return zipFs.unlinkSync(subPath); 4906 - }); 4907 - } 4908 - async utimesPromise(p, atime, mtime) { 4909 - return await this.makeCallPromise(p, async () => { 4910 - return await this.baseFs.utimesPromise(p, atime, mtime); 4911 - }, async (zipFs, { subPath }) => { 4912 - return await zipFs.utimesPromise(subPath, atime, mtime); 4913 - }); 4914 - } 4915 - utimesSync(p, atime, mtime) { 4916 - return this.makeCallSync(p, () => { 4917 - return this.baseFs.utimesSync(p, atime, mtime); 4918 - }, (zipFs, { subPath }) => { 4919 - return zipFs.utimesSync(subPath, atime, mtime); 4920 - }); 4921 - } 4922 - async mkdirPromise(p, opts) { 4923 - return await this.makeCallPromise(p, async () => { 4924 - return await this.baseFs.mkdirPromise(p, opts); 4925 - }, async (zipFs, { subPath }) => { 4926 - return await zipFs.mkdirPromise(subPath, opts); 4927 - }); 4928 - } 4929 - mkdirSync(p, opts) { 4930 - return this.makeCallSync(p, () => { 4931 - return this.baseFs.mkdirSync(p, opts); 4932 - }, (zipFs, { subPath }) => { 4933 - return zipFs.mkdirSync(subPath, opts); 4934 - }); 4935 - } 4936 - async rmdirPromise(p, opts) { 4937 - return await this.makeCallPromise(p, async () => { 4938 - return await this.baseFs.rmdirPromise(p, opts); 4939 - }, async (zipFs, { subPath }) => { 4940 - return await zipFs.rmdirPromise(subPath, opts); 4941 - }); 4942 - } 4943 - rmdirSync(p, opts) { 4944 - return this.makeCallSync(p, () => { 4945 - return this.baseFs.rmdirSync(p, opts); 4946 - }, (zipFs, { subPath }) => { 4947 - return zipFs.rmdirSync(subPath, opts); 4948 - }); 4949 - } 4950 - async linkPromise(existingP, newP) { 4951 - return await this.makeCallPromise(newP, async () => { 4952 - return await this.baseFs.linkPromise(existingP, newP); 4953 - }, async (zipFs, { subPath }) => { 4954 - return await zipFs.linkPromise(existingP, subPath); 4955 - }); 4956 - } 4957 - linkSync(existingP, newP) { 4958 - return this.makeCallSync(newP, () => { 4959 - return this.baseFs.linkSync(existingP, newP); 4960 - }, (zipFs, { subPath }) => { 4961 - return zipFs.linkSync(existingP, subPath); 4962 - }); 4963 - } 4964 - async symlinkPromise(target, p, type) { 4965 - return await this.makeCallPromise(p, async () => { 4966 - return await this.baseFs.symlinkPromise(target, p, type); 4967 - }, async (zipFs, { subPath }) => { 4968 - return await zipFs.symlinkPromise(target, subPath); 4969 - }); 4970 - } 4971 - symlinkSync(target, p, type) { 4972 - return this.makeCallSync(p, () => { 4973 - return this.baseFs.symlinkSync(target, p, type); 4974 - }, (zipFs, { subPath }) => { 4975 - return zipFs.symlinkSync(target, subPath); 4976 - }); 4977 - } 4978 - async readFilePromise(p, encoding) { 4979 - return this.makeCallPromise(p, async () => { 4980 - switch (encoding) { 4981 - case `utf8`: 4982 - return await this.baseFs.readFilePromise(p, encoding); 4983 - default: 4984 - return await this.baseFs.readFilePromise(p, encoding); 4985 - } 4986 - }, async (zipFs, { subPath }) => { 4987 - return await zipFs.readFilePromise(subPath, encoding); 4988 - }); 4989 - } 4990 - readFileSync(p, encoding) { 4991 - return this.makeCallSync(p, () => { 4992 - switch (encoding) { 4993 - case `utf8`: 4994 - return this.baseFs.readFileSync(p, encoding); 4995 - default: 4996 - return this.baseFs.readFileSync(p, encoding); 4997 - } 4998 - }, (zipFs, { subPath }) => { 4999 - return zipFs.readFileSync(subPath, encoding); 5000 - }); 5001 - } 5002 - async readdirPromise(p, opts) { 5003 - return await this.makeCallPromise(p, async () => { 5004 - return await this.baseFs.readdirPromise(p, opts); 5005 - }, async (zipFs, { subPath }) => { 5006 - return await zipFs.readdirPromise(subPath, opts); 5007 - }, { 5008 - requireSubpath: false 5009 - }); 5010 - } 5011 - readdirSync(p, opts) { 5012 - return this.makeCallSync(p, () => { 5013 - return this.baseFs.readdirSync(p, opts); 5014 - }, (zipFs, { subPath }) => { 5015 - return zipFs.readdirSync(subPath, opts); 5016 - }, { 5017 - requireSubpath: false 5018 - }); 5019 - } 5020 - async readlinkPromise(p) { 5021 - return await this.makeCallPromise(p, async () => { 5022 - return await this.baseFs.readlinkPromise(p); 5023 - }, async (zipFs, { subPath }) => { 5024 - return await zipFs.readlinkPromise(subPath); 5025 - }); 5026 - } 5027 - readlinkSync(p) { 5028 - return this.makeCallSync(p, () => { 5029 - return this.baseFs.readlinkSync(p); 5030 - }, (zipFs, { subPath }) => { 5031 - return zipFs.readlinkSync(subPath); 5032 - }); 5033 - } 5034 - async truncatePromise(p, len) { 5035 - return await this.makeCallPromise(p, async () => { 5036 - return await this.baseFs.truncatePromise(p, len); 5037 - }, async (zipFs, { subPath }) => { 5038 - return await zipFs.truncatePromise(subPath, len); 5039 - }); 5040 - } 5041 - truncateSync(p, len) { 5042 - return this.makeCallSync(p, () => { 5043 - return this.baseFs.truncateSync(p, len); 5044 - }, (zipFs, { subPath }) => { 5045 - return zipFs.truncateSync(subPath, len); 5046 - }); 5047 - } 5048 - async ftruncatePromise(fd, len) { 5049 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 5050 - return this.baseFs.ftruncatePromise(fd, len); 5051 - const entry = this.fdMap.get(fd); 5052 - if (typeof entry === `undefined`) 5053 - throw EBADF(`ftruncate`); 5054 - const [zipFs, realFd] = entry; 5055 - return zipFs.ftruncatePromise(realFd, len); 5056 - } 5057 - ftruncateSync(fd, len) { 5058 - if ((fd & ZIP_MASK) !== ZIP_MAGIC) 5059 - return this.baseFs.ftruncateSync(fd, len); 5060 - const entry = this.fdMap.get(fd); 5061 - if (typeof entry === `undefined`) 5062 - throw EBADF(`ftruncateSync`); 5063 - const [zipFs, realFd] = entry; 5064 - return zipFs.ftruncateSync(realFd, len); 5065 - } 5066 - watch(p, a, b) { 5067 - return this.makeCallSync(p, () => { 5068 - return this.baseFs.watch( 5069 - p, 5070 - a, 5071 - b 5072 - ); 5073 - }, (zipFs, { subPath }) => { 5074 - return zipFs.watch( 5075 - subPath, 5076 - a, 5077 - b 5078 - ); 5079 - }); 5080 - } 5081 - watchFile(p, a, b) { 5082 - return this.makeCallSync(p, () => { 5083 - return this.baseFs.watchFile( 5084 - p, 5085 - a, 5086 - b 5087 - ); 5088 - }, () => { 5089 - return watchFile(this, p, a, b); 5090 - }); 5091 - } 5092 - unwatchFile(p, cb) { 5093 - return this.makeCallSync(p, () => { 5094 - return this.baseFs.unwatchFile(p, cb); 5095 - }, () => { 5096 - return unwatchFile(this, p, cb); 5097 - }); 5098 - } 5099 - async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) { 5100 - if (typeof p !== `string`) 5101 - return await discard(); 5102 - const normalizedP = this.resolve(p); 5103 - const zipInfo = this.findZip(normalizedP); 5104 - if (!zipInfo) 5105 - return await discard(); 5106 - if (requireSubpath && zipInfo.subPath === `/`) 5107 - return await discard(); 5108 - return await this.getZipPromise(zipInfo.archivePath, async (zipFs) => await accept(zipFs, zipInfo)); 5109 - } 5110 - makeCallSync(p, discard, accept, { requireSubpath = true } = {}) { 5111 - if (typeof p !== `string`) 5112 - return discard(); 5113 - const normalizedP = this.resolve(p); 5114 - const zipInfo = this.findZip(normalizedP); 5115 - if (!zipInfo) 5116 - return discard(); 5117 - if (requireSubpath && zipInfo.subPath === `/`) 5118 - return discard(); 5119 - return this.getZipSync(zipInfo.archivePath, (zipFs) => accept(zipFs, zipInfo)); 5120 - } 5121 - findZip(p) { 5122 - if (this.filter && !this.filter.test(p)) 5123 - return null; 5124 - let filePath = ``; 5125 - while (true) { 5126 - const pathPartWithArchive = p.substring(filePath.length); 5127 - let archivePart; 5128 - if (!this.fileExtensions) { 5129 - archivePart = getArchivePart(pathPartWithArchive, `.zip`); 5130 - } else { 5131 - for (const ext of this.fileExtensions) { 5132 - archivePart = getArchivePart(pathPartWithArchive, ext); 5133 - if (archivePart) { 5134 - break; 5135 - } 5136 - } 5137 - } 5138 - if (!archivePart) 5139 - return null; 5140 - filePath = this.pathUtils.join(filePath, archivePart); 5141 - if (this.isZip.has(filePath) === false) { 5142 - if (this.notZip.has(filePath)) 5143 - continue; 5144 - try { 5145 - if (!this.baseFs.lstatSync(filePath).isFile()) { 5146 - this.notZip.add(filePath); 5147 - continue; 5148 - } 5149 - } catch { 5150 - return null; 5151 - } 5152 - this.isZip.add(filePath); 5153 - } 5154 - return { 5155 - archivePath: filePath, 5156 - subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length)) 5157 - }; 5158 - } 5159 - } 5160 - limitOpenFiles(max) { 5161 - if (this.zipInstances === null) 5162 - return; 5163 - const now = Date.now(); 5164 - let nextExpiresAt = now + this.maxAge; 5165 - let closeCount = max === null ? 0 : this.zipInstances.size - max; 5166 - for (const [path, { zipFs, expiresAt, refCount }] of this.zipInstances.entries()) { 5167 - if (refCount !== 0 || zipFs.hasOpenFileHandles()) { 5168 - continue; 5169 - } else if (now >= expiresAt) { 5170 - zipFs.saveAndClose(); 5171 - this.zipInstances.delete(path); 5172 - closeCount -= 1; 5173 - continue; 5174 - } else if (max === null || closeCount <= 0) { 5175 - nextExpiresAt = expiresAt; 5176 - break; 5177 - } 5178 - zipFs.saveAndClose(); 5179 - this.zipInstances.delete(path); 5180 - closeCount -= 1; 5181 - } 5182 - if (this.limitOpenFilesTimeout === null && (max === null && this.zipInstances.size > 0 || max !== null)) { 5183 - this.limitOpenFilesTimeout = setTimeout(() => { 5184 - this.limitOpenFilesTimeout = null; 5185 - this.limitOpenFiles(null); 5186 - }, nextExpiresAt - now).unref(); 5187 - } 5188 - } 5189 - async getZipPromise(p, accept) { 5190 - const getZipOptions = async () => ({ 5191 - baseFs: this.baseFs, 5192 - libzip: this.libzip, 5193 - readOnly: this.readOnlyArchives, 5194 - stats: await this.baseFs.statPromise(p) 5195 - }); 5196 - if (this.zipInstances) { 5197 - let cachedZipFs = this.zipInstances.get(p); 5198 - if (!cachedZipFs) { 5199 - const zipOptions = await getZipOptions(); 5200 - cachedZipFs = this.zipInstances.get(p); 5201 - if (!cachedZipFs) { 5202 - cachedZipFs = { 5203 - zipFs: new ZipFS(p, zipOptions), 5204 - expiresAt: 0, 5205 - refCount: 0 5206 - }; 5207 - } 5208 - } 5209 - this.zipInstances.delete(p); 5210 - this.limitOpenFiles(this.maxOpenFiles - 1); 5211 - this.zipInstances.set(p, cachedZipFs); 5212 - cachedZipFs.expiresAt = Date.now() + this.maxAge; 5213 - cachedZipFs.refCount += 1; 5214 - try { 5215 - return await accept(cachedZipFs.zipFs); 5216 - } finally { 5217 - cachedZipFs.refCount -= 1; 5218 - } 5219 - } else { 5220 - const zipFs = new ZipFS(p, await getZipOptions()); 5221 - try { 5222 - return await accept(zipFs); 5223 - } finally { 5224 - zipFs.saveAndClose(); 5225 - } 5226 - } 5227 - } 5228 - getZipSync(p, accept) { 5229 - const getZipOptions = () => ({ 5230 - baseFs: this.baseFs, 5231 - libzip: this.libzip, 5232 - readOnly: this.readOnlyArchives, 5233 - stats: this.baseFs.statSync(p) 5234 - }); 5235 - if (this.zipInstances) { 5236 - let cachedZipFs = this.zipInstances.get(p); 5237 - if (!cachedZipFs) { 5238 - cachedZipFs = { 5239 - zipFs: new ZipFS(p, getZipOptions()), 5240 - expiresAt: 0, 5241 - refCount: 0 5242 - }; 5243 - } 5244 - this.zipInstances.delete(p); 5245 - this.limitOpenFiles(this.maxOpenFiles - 1); 5246 - this.zipInstances.set(p, cachedZipFs); 5247 - cachedZipFs.expiresAt = Date.now() + this.maxAge; 5248 - return accept(cachedZipFs.zipFs); 5249 - } else { 5250 - const zipFs = new ZipFS(p, getZipOptions()); 5251 - try { 5252 - return accept(zipFs); 5253 - } finally { 5254 - zipFs.saveAndClose(); 5255 - } 5256 - } 5257 - } 5258 - } 5259 - 5260 - class NodePathFS extends ProxiedFS { 5261 - constructor(baseFs) { 5262 - super(npath); 5263 - this.baseFs = baseFs; 5264 - } 5265 - mapFromBase(path) { 5266 - return path; 5267 - } 5268 - mapToBase(path) { 5269 - if (typeof path === `string`) 5270 - return path; 5271 - if (path instanceof url.URL) 5272 - return url.fileURLToPath(path); 5273 - if (Buffer.isBuffer(path)) { 5274 - const str = path.toString(); 5275 - if (Buffer.byteLength(str) !== path.byteLength) 5276 - throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`); 5277 - return str; 5278 - } 5279 - throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`); 5280 - } 5281 - } 5282 - 5283 - var _a, _b, _c, _d; 5284 - const kBaseFs = Symbol(`kBaseFs`); 5285 - const kFd = Symbol(`kFd`); 5286 - const kClosePromise = Symbol(`kClosePromise`); 5287 - const kCloseResolve = Symbol(`kCloseResolve`); 5288 - const kCloseReject = Symbol(`kCloseReject`); 5289 - const kRefs = Symbol(`kRefs`); 5290 - const kRef = Symbol(`kRef`); 5291 - const kUnref = Symbol(`kUnref`); 5292 - class FileHandle { 5293 - constructor(fd, baseFs) { 5294 - this[_a] = 1; 5295 - this[_b] = void 0; 5296 - this[_c] = void 0; 5297 - this[_d] = void 0; 5298 - this[kBaseFs] = baseFs; 5299 - this[kFd] = fd; 5300 - } 5301 - get fd() { 5302 - return this[kFd]; 5303 - } 5304 - async appendFile(data, options) { 5305 - var _a2; 5306 - try { 5307 - this[kRef](this.appendFile); 5308 - const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0; 5309 - return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0); 5310 - } finally { 5311 - this[kUnref](); 5312 - } 5313 - } 5314 - async chown(uid, gid) { 5315 - try { 5316 - this[kRef](this.chown); 5317 - return await this[kBaseFs].fchownPromise(this.fd, uid, gid); 5318 - } finally { 5319 - this[kUnref](); 5320 - } 5321 - } 5322 - async chmod(mode) { 5323 - try { 5324 - this[kRef](this.chmod); 5325 - return await this[kBaseFs].fchmodPromise(this.fd, mode); 5326 - } finally { 5327 - this[kUnref](); 5328 - } 5329 - } 5330 - createReadStream(options) { 5331 - return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd }); 5332 - } 5333 - createWriteStream(options) { 5334 - return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd }); 5335 - } 5336 - datasync() { 5337 - throw new Error(`Method not implemented.`); 5338 - } 5339 - sync() { 5340 - throw new Error(`Method not implemented.`); 5341 - } 5342 - async read(bufferOrOptions, offset, length, position) { 5343 - var _a2, _b2, _c2; 5344 - try { 5345 - this[kRef](this.read); 5346 - let buffer; 5347 - if (!Buffer.isBuffer(bufferOrOptions)) { 5348 - bufferOrOptions != null ? bufferOrOptions : bufferOrOptions = {}; 5349 - buffer = (_a2 = bufferOrOptions.buffer) != null ? _a2 : Buffer.alloc(16384); 5350 - offset = bufferOrOptions.offset || 0; 5351 - length = (_b2 = bufferOrOptions.length) != null ? _b2 : buffer.byteLength; 5352 - position = (_c2 = bufferOrOptions.position) != null ? _c2 : null; 5353 - } else { 5354 - buffer = bufferOrOptions; 5355 - } 5356 - offset != null ? offset : offset = 0; 5357 - length != null ? length : length = 0; 5358 - if (length === 0) { 5359 - return { 5360 - bytesRead: length, 5361 - buffer 5362 - }; 5363 - } 5364 - const bytesRead = await this[kBaseFs].readPromise(this.fd, buffer, offset, length, position); 5365 - return { 5366 - bytesRead, 5367 - buffer 5368 - }; 5369 - } finally { 5370 - this[kUnref](); 5371 - } 5372 - } 5373 - async readFile(options) { 5374 - var _a2; 5375 - try { 5376 - this[kRef](this.readFile); 5377 - const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0; 5378 - return await this[kBaseFs].readFilePromise(this.fd, encoding); 5379 - } finally { 5380 - this[kUnref](); 5381 - } 5382 - } 5383 - readLines(options) { 5384 - return readline.createInterface({ 5385 - input: this.createReadStream(options), 5386 - crlfDelay: Infinity 5387 - }); 5388 - } 5389 - async stat(opts) { 5390 - try { 5391 - this[kRef](this.stat); 5392 - return await this[kBaseFs].fstatPromise(this.fd, opts); 5393 - } finally { 5394 - this[kUnref](); 5395 - } 5396 - } 5397 - async truncate(len) { 5398 - try { 5399 - this[kRef](this.truncate); 5400 - return await this[kBaseFs].ftruncatePromise(this.fd, len); 5401 - } finally { 5402 - this[kUnref](); 5403 - } 5404 - } 5405 - utimes(atime, mtime) { 5406 - throw new Error(`Method not implemented.`); 5407 - } 5408 - async writeFile(data, options) { 5409 - var _a2; 5410 - try { 5411 - this[kRef](this.writeFile); 5412 - const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0; 5413 - await this[kBaseFs].writeFilePromise(this.fd, data, encoding); 5414 - } finally { 5415 - this[kUnref](); 5416 - } 5417 - } 5418 - async write(...args) { 5419 - try { 5420 - this[kRef](this.write); 5421 - if (ArrayBuffer.isView(args[0])) { 5422 - const [buffer, offset, length, position] = args; 5423 - const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset != null ? offset : void 0, length != null ? length : void 0, position != null ? position : void 0); 5424 - return { bytesWritten, buffer }; 5425 - } else { 5426 - const [data, position, encoding] = args; 5427 - const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding); 5428 - return { bytesWritten, buffer: data }; 5429 - } 5430 - } finally { 5431 - this[kUnref](); 5432 - } 5433 - } 5434 - async writev(buffers, position) { 5435 - try { 5436 - this[kRef](this.writev); 5437 - let bytesWritten = 0; 5438 - if (typeof position !== `undefined`) { 5439 - for (const buffer of buffers) { 5440 - const writeResult = await this.write(buffer, void 0, void 0, position); 5441 - bytesWritten += writeResult.bytesWritten; 5442 - position += writeResult.bytesWritten; 5443 - } 5444 - } else { 5445 - for (const buffer of buffers) { 5446 - const writeResult = await this.write(buffer); 5447 - bytesWritten += writeResult.bytesWritten; 5448 - } 5449 - } 5450 - return { 5451 - buffers, 5452 - bytesWritten 5453 - }; 5454 - } finally { 5455 - this[kUnref](); 5456 - } 5457 - } 5458 - readv(buffers, position) { 5459 - throw new Error(`Method not implemented.`); 5460 - } 5461 - close() { 5462 - if (this[kFd] === -1) 5463 - return Promise.resolve(); 5464 - if (this[kClosePromise]) 5465 - return this[kClosePromise]; 5466 - this[kRefs]--; 5467 - if (this[kRefs] === 0) { 5468 - const fd = this[kFd]; 5469 - this[kFd] = -1; 5470 - this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => { 5471 - this[kClosePromise] = void 0; 5472 - }); 5473 - } else { 5474 - this[kClosePromise] = new Promise((resolve, reject) => { 5475 - this[kCloseResolve] = resolve; 5476 - this[kCloseReject] = reject; 5477 - }).finally(() => { 5478 - this[kClosePromise] = void 0; 5479 - this[kCloseReject] = void 0; 5480 - this[kCloseResolve] = void 0; 5481 - }); 5482 - } 5483 - return this[kClosePromise]; 5484 - } 5485 - [(_a = kRefs, _b = kClosePromise, _c = kCloseResolve, _d = kCloseReject, kRef)](caller) { 5486 - if (this[kFd] === -1) { 5487 - const err = new Error(`file closed`); 5488 - err.code = `EBADF`; 5489 - err.syscall = caller.name; 5490 - throw err; 5491 - } 5492 - this[kRefs]++; 5493 - } 5494 - [kUnref]() { 5495 - this[kRefs]--; 5496 - if (this[kRefs] === 0) { 5497 - const fd = this[kFd]; 5498 - this[kFd] = -1; 5499 - this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]); 5500 - } 5501 - } 5502 - } 5503 - 5504 - const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ 5505 - `accessSync`, 5506 - `appendFileSync`, 5507 - `createReadStream`, 5508 - `createWriteStream`, 5509 - `chmodSync`, 5510 - `fchmodSync`, 5511 - `chownSync`, 5512 - `fchownSync`, 5513 - `closeSync`, 5514 - `copyFileSync`, 5515 - `linkSync`, 5516 - `lstatSync`, 5517 - `fstatSync`, 5518 - `lutimesSync`, 5519 - `mkdirSync`, 5520 - `openSync`, 5521 - `opendirSync`, 5522 - `readlinkSync`, 5523 - `readFileSync`, 5524 - `readdirSync`, 5525 - `readlinkSync`, 5526 - `realpathSync`, 5527 - `renameSync`, 5528 - `rmdirSync`, 5529 - `statSync`, 5530 - `symlinkSync`, 5531 - `truncateSync`, 5532 - `ftruncateSync`, 5533 - `unlinkSync`, 5534 - `unwatchFile`, 5535 - `utimesSync`, 5536 - `watch`, 5537 - `watchFile`, 5538 - `writeFileSync`, 5539 - `writeSync` 5540 - ]); 5541 - const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([ 5542 - `accessPromise`, 5543 - `appendFilePromise`, 5544 - `fchmodPromise`, 5545 - `chmodPromise`, 5546 - `fchownPromise`, 5547 - `chownPromise`, 5548 - `closePromise`, 5549 - `copyFilePromise`, 5550 - `linkPromise`, 5551 - `fstatPromise`, 5552 - `lstatPromise`, 5553 - `lutimesPromise`, 5554 - `mkdirPromise`, 5555 - `openPromise`, 5556 - `opendirPromise`, 5557 - `readdirPromise`, 5558 - `realpathPromise`, 5559 - `readFilePromise`, 5560 - `readdirPromise`, 5561 - `readlinkPromise`, 5562 - `renamePromise`, 5563 - `rmdirPromise`, 5564 - `statPromise`, 5565 - `symlinkPromise`, 5566 - `truncatePromise`, 5567 - `ftruncatePromise`, 5568 - `unlinkPromise`, 5569 - `utimesPromise`, 5570 - `writeFilePromise`, 5571 - `writeSync` 5572 - ]); 5573 - function patchFs(patchedFs, fakeFs) { 5574 - fakeFs = new NodePathFS(fakeFs); 5575 - const setupFn = (target, name, replacement) => { 5576 - const orig = target[name]; 5577 - target[name] = replacement; 5578 - if (typeof (orig == null ? void 0 : orig[nodeUtils.promisify.custom]) !== `undefined`) { 5579 - replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom]; 5580 - } 5581 - }; 5582 - { 5583 - setupFn(patchedFs, `exists`, (p, ...args) => { 5584 - const hasCallback = typeof args[args.length - 1] === `function`; 5585 - const callback = hasCallback ? args.pop() : () => { 5586 - }; 5587 - process.nextTick(() => { 5588 - fakeFs.existsPromise(p).then((exists) => { 5589 - callback(exists); 5590 - }, () => { 5591 - callback(false); 5592 - }); 5593 - }); 5594 - }); 5595 - setupFn(patchedFs, `read`, (...args) => { 5596 - let [fd, buffer, offset, length, position, callback] = args; 5597 - if (args.length <= 3) { 5598 - let options = {}; 5599 - if (args.length < 3) { 5600 - callback = args[1]; 5601 - } else { 5602 - options = args[1]; 5603 - callback = args[2]; 5604 - } 5605 - ({ 5606 - buffer = Buffer.alloc(16384), 5607 - offset = 0, 5608 - length = buffer.byteLength, 5609 - position 5610 - } = options); 5611 - } 5612 - if (offset == null) 5613 - offset = 0; 5614 - length |= 0; 5615 - if (length === 0) { 5616 - process.nextTick(() => { 5617 - callback(null, 0, buffer); 5618 - }); 5619 - return; 5620 - } 5621 - if (position == null) 5622 - position = -1; 5623 - process.nextTick(() => { 5624 - fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => { 5625 - callback(null, bytesRead, buffer); 5626 - }, (error) => { 5627 - callback(error, 0, buffer); 5628 - }); 5629 - }); 5630 - }); 5631 - for (const fnName of ASYNC_IMPLEMENTATIONS) { 5632 - const origName = fnName.replace(/Promise$/, ``); 5633 - if (typeof patchedFs[origName] === `undefined`) 5634 - continue; 5635 - const fakeImpl = fakeFs[fnName]; 5636 - if (typeof fakeImpl === `undefined`) 5637 - continue; 5638 - const wrapper = (...args) => { 5639 - const hasCallback = typeof args[args.length - 1] === `function`; 5640 - const callback = hasCallback ? args.pop() : () => { 5641 - }; 5642 - process.nextTick(() => { 5643 - fakeImpl.apply(fakeFs, args).then((result) => { 5644 - callback(null, result); 5645 - }, (error) => { 5646 - callback(error); 5647 - }); 5648 - }); 5649 - }; 5650 - setupFn(patchedFs, origName, wrapper); 5651 - } 5652 - patchedFs.realpath.native = patchedFs.realpath; 5653 - } 5654 - { 5655 - setupFn(patchedFs, `existsSync`, (p) => { 5656 - try { 5657 - return fakeFs.existsSync(p); 5658 - } catch (error) { 5659 - return false; 5660 - } 5661 - }); 5662 - setupFn(patchedFs, `readSync`, (...args) => { 5663 - let [fd, buffer, offset, length, position] = args; 5664 - if (args.length <= 3) { 5665 - const options = args[2] || {}; 5666 - ({ offset = 0, length = buffer.byteLength, position } = options); 5667 - } 5668 - if (offset == null) 5669 - offset = 0; 5670 - length |= 0; 5671 - if (length === 0) 5672 - return 0; 5673 - if (position == null) 5674 - position = -1; 5675 - return fakeFs.readSync(fd, buffer, offset, length, position); 5676 - }); 5677 - for (const fnName of SYNC_IMPLEMENTATIONS) { 5678 - const origName = fnName; 5679 - if (typeof patchedFs[origName] === `undefined`) 5680 - continue; 5681 - const fakeImpl = fakeFs[fnName]; 5682 - if (typeof fakeImpl === `undefined`) 5683 - continue; 5684 - setupFn(patchedFs, origName, fakeImpl.bind(fakeFs)); 5685 - } 5686 - patchedFs.realpathSync.native = patchedFs.realpathSync; 5687 - } 5688 - { 5689 - const origEmitWarning = process.emitWarning; 5690 - process.emitWarning = () => { 5691 - }; 5692 - let patchedFsPromises; 5693 - try { 5694 - patchedFsPromises = patchedFs.promises; 5695 - } finally { 5696 - process.emitWarning = origEmitWarning; 5697 - } 5698 - if (typeof patchedFsPromises !== `undefined`) { 5699 - for (const fnName of ASYNC_IMPLEMENTATIONS) { 5700 - const origName = fnName.replace(/Promise$/, ``); 5701 - if (typeof patchedFsPromises[origName] === `undefined`) 5702 - continue; 5703 - const fakeImpl = fakeFs[fnName]; 5704 - if (typeof fakeImpl === `undefined`) 5705 - continue; 5706 - if (fnName === `open`) 5707 - continue; 5708 - setupFn(patchedFsPromises, origName, (pathLike, ...args) => { 5709 - if (pathLike instanceof FileHandle) { 5710 - return pathLike[origName].apply(pathLike, args); 5711 - } else { 5712 - return fakeImpl.call(fakeFs, pathLike, ...args); 5713 - } 5714 - }); 5715 - } 5716 - setupFn(patchedFsPromises, `open`, async (...args) => { 5717 - const fd = await fakeFs.openPromise(...args); 5718 - return new FileHandle(fd, fakeFs); 5719 - }); 5720 - } 5721 - } 5722 - { 5723 - patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { 5724 - const res = fakeFs.readPromise(fd, buffer, ...args); 5725 - return { bytesRead: await res, buffer }; 5726 - }; 5727 - patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => { 5728 - const res = fakeFs.writePromise(fd, buffer, ...args); 5729 - return { bytesWritten: await res, buffer }; 5730 - }; 5731 - } 5732 - } 5733 - 5734 - var libzipSync = {exports: {}}; 5735 - 5736 - (function (module, exports) { 5737 - var frozenFs = Object.assign({}, fs__default.default); 5738 - var createModule = function() { 5739 - var _scriptDir = void 0; 5740 - if (typeof __filename !== "undefined") 5741 - _scriptDir = _scriptDir || __filename; 5742 - return function(createModule2) { 5743 - createModule2 = createModule2 || {}; 5744 - var Module = typeof createModule2 !== "undefined" ? createModule2 : {}; 5745 - var readyPromiseResolve, readyPromiseReject; 5746 - Module["ready"] = new Promise(function(resolve, reject) { 5747 - readyPromiseResolve = resolve; 5748 - readyPromiseReject = reject; 5749 - }); 5750 - var moduleOverrides = {}; 5751 - var key; 5752 - for (key in Module) { 5753 - if (Module.hasOwnProperty(key)) { 5754 - moduleOverrides[key] = Module[key]; 5755 - } 5756 - } 5757 - var scriptDirectory = ""; 5758 - function locateFile(path) { 5759 - if (Module["locateFile"]) { 5760 - return Module["locateFile"](path, scriptDirectory); 5761 - } 5762 - return scriptDirectory + path; 5763 - } 5764 - var read_, readBinary; 5765 - var nodeFS; 5766 - var nodePath; 5767 - { 5768 - { 5769 - scriptDirectory = __dirname + "/"; 5770 - } 5771 - read_ = function shell_read(filename, binary) { 5772 - var ret = tryParseAsDataURI(filename); 5773 - if (ret) { 5774 - return binary ? ret : ret.toString(); 5775 - } 5776 - if (!nodeFS) 5777 - nodeFS = frozenFs; 5778 - if (!nodePath) 5779 - nodePath = path__default.default; 5780 - filename = nodePath["normalize"](filename); 5781 - return nodeFS["readFileSync"](filename, binary ? null : "utf8"); 5782 - }; 5783 - readBinary = function readBinary2(filename) { 5784 - var ret = read_(filename, true); 5785 - if (!ret.buffer) { 5786 - ret = new Uint8Array(ret); 5787 - } 5788 - assert(ret.buffer); 5789 - return ret; 5790 - }; 5791 - if (process["argv"].length > 1) { 5792 - process["argv"][1].replace(/\\/g, "/"); 5793 - } 5794 - process["argv"].slice(2); 5795 - Module["inspect"] = function() { 5796 - return "[Emscripten Module object]"; 5797 - }; 5798 - } 5799 - var out = Module["print"] || console.log.bind(console); 5800 - var err = Module["printErr"] || console.warn.bind(console); 5801 - for (key in moduleOverrides) { 5802 - if (moduleOverrides.hasOwnProperty(key)) { 5803 - Module[key] = moduleOverrides[key]; 5804 - } 5805 - } 5806 - moduleOverrides = null; 5807 - if (Module["arguments"]) 5808 - ; 5809 - if (Module["thisProgram"]) 5810 - ; 5811 - if (Module["quit"]) 5812 - ; 5813 - var STACK_ALIGN = 16; 5814 - function alignMemory(size, factor) { 5815 - if (!factor) 5816 - factor = STACK_ALIGN; 5817 - return Math.ceil(size / factor) * factor; 5818 - } 5819 - var wasmBinary; 5820 - if (Module["wasmBinary"]) 5821 - wasmBinary = Module["wasmBinary"]; 5822 - Module["noExitRuntime"] || true; 5823 - if (typeof WebAssembly !== "object") { 5824 - abort("no native wasm support detected"); 5825 - } 5826 - function getValue(ptr, type, noSafe) { 5827 - type = type || "i8"; 5828 - if (type.charAt(type.length - 1) === "*") 5829 - type = "i32"; 5830 - switch (type) { 5831 - case "i1": 5832 - return HEAP8[ptr >> 0]; 5833 - case "i8": 5834 - return HEAP8[ptr >> 0]; 5835 - case "i16": 5836 - return HEAP16[ptr >> 1]; 5837 - case "i32": 5838 - return HEAP32[ptr >> 2]; 5839 - case "i64": 5840 - return HEAP32[ptr >> 2]; 5841 - case "float": 5842 - return HEAPF32[ptr >> 2]; 5843 - case "double": 5844 - return HEAPF64[ptr >> 3]; 5845 - default: 5846 - abort("invalid type for getValue: " + type); 5847 - } 5848 - return null; 5849 - } 5850 - var wasmMemory; 5851 - var ABORT = false; 5852 - function assert(condition, text) { 5853 - if (!condition) { 5854 - abort("Assertion failed: " + text); 5855 - } 5856 - } 5857 - function getCFunc(ident) { 5858 - var func = Module["_" + ident]; 5859 - assert( 5860 - func, 5861 - "Cannot call unknown function " + ident + ", make sure it is exported" 5862 - ); 5863 - return func; 5864 - } 5865 - function ccall(ident, returnType, argTypes, args, opts) { 5866 - var toC = { 5867 - string: function(str) { 5868 - var ret2 = 0; 5869 - if (str !== null && str !== void 0 && str !== 0) { 5870 - var len = (str.length << 2) + 1; 5871 - ret2 = stackAlloc(len); 5872 - stringToUTF8(str, ret2, len); 5873 - } 5874 - return ret2; 5875 - }, 5876 - array: function(arr) { 5877 - var ret2 = stackAlloc(arr.length); 5878 - writeArrayToMemory(arr, ret2); 5879 - return ret2; 5880 - } 5881 - }; 5882 - function convertReturnValue(ret2) { 5883 - if (returnType === "string") 5884 - return UTF8ToString(ret2); 5885 - if (returnType === "boolean") 5886 - return Boolean(ret2); 5887 - return ret2; 5888 - } 5889 - var func = getCFunc(ident); 5890 - var cArgs = []; 5891 - var stack = 0; 5892 - if (args) { 5893 - for (var i = 0; i < args.length; i++) { 5894 - var converter = toC[argTypes[i]]; 5895 - if (converter) { 5896 - if (stack === 0) 5897 - stack = stackSave(); 5898 - cArgs[i] = converter(args[i]); 5899 - } else { 5900 - cArgs[i] = args[i]; 5901 - } 5902 - } 5903 - } 5904 - var ret = func.apply(null, cArgs); 5905 - ret = convertReturnValue(ret); 5906 - if (stack !== 0) 5907 - stackRestore(stack); 5908 - return ret; 5909 - } 5910 - function cwrap(ident, returnType, argTypes, opts) { 5911 - argTypes = argTypes || []; 5912 - var numericArgs = argTypes.every(function(type) { 5913 - return type === "number"; 5914 - }); 5915 - var numericRet = returnType !== "string"; 5916 - if (numericRet && numericArgs && !opts) { 5917 - return getCFunc(ident); 5918 - } 5919 - return function() { 5920 - return ccall(ident, returnType, argTypes, arguments); 5921 - }; 5922 - } 5923 - var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0; 5924 - function UTF8ArrayToString(heap, idx, maxBytesToRead) { 5925 - var endIdx = idx + maxBytesToRead; 5926 - var endPtr = idx; 5927 - while (heap[endPtr] && !(endPtr >= endIdx)) 5928 - ++endPtr; 5929 - if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { 5930 - return UTF8Decoder.decode(heap.subarray(idx, endPtr)); 5931 - } else { 5932 - var str = ""; 5933 - while (idx < endPtr) { 5934 - var u0 = heap[idx++]; 5935 - if (!(u0 & 128)) { 5936 - str += String.fromCharCode(u0); 5937 - continue; 5938 - } 5939 - var u1 = heap[idx++] & 63; 5940 - if ((u0 & 224) == 192) { 5941 - str += String.fromCharCode((u0 & 31) << 6 | u1); 5942 - continue; 5943 - } 5944 - var u2 = heap[idx++] & 63; 5945 - if ((u0 & 240) == 224) { 5946 - u0 = (u0 & 15) << 12 | u1 << 6 | u2; 5947 - } else { 5948 - u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; 5949 - } 5950 - if (u0 < 65536) { 5951 - str += String.fromCharCode(u0); 5952 - } else { 5953 - var ch = u0 - 65536; 5954 - str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); 5955 - } 5956 - } 5957 - } 5958 - return str; 5959 - } 5960 - function UTF8ToString(ptr, maxBytesToRead) { 5961 - return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; 5962 - } 5963 - function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { 5964 - if (!(maxBytesToWrite > 0)) 5965 - return 0; 5966 - var startIdx = outIdx; 5967 - var endIdx = outIdx + maxBytesToWrite - 1; 5968 - for (var i = 0; i < str.length; ++i) { 5969 - var u = str.charCodeAt(i); 5970 - if (u >= 55296 && u <= 57343) { 5971 - var u1 = str.charCodeAt(++i); 5972 - u = 65536 + ((u & 1023) << 10) | u1 & 1023; 5973 - } 5974 - if (u <= 127) { 5975 - if (outIdx >= endIdx) 5976 - break; 5977 - heap[outIdx++] = u; 5978 - } else if (u <= 2047) { 5979 - if (outIdx + 1 >= endIdx) 5980 - break; 5981 - heap[outIdx++] = 192 | u >> 6; 5982 - heap[outIdx++] = 128 | u & 63; 5983 - } else if (u <= 65535) { 5984 - if (outIdx + 2 >= endIdx) 5985 - break; 5986 - heap[outIdx++] = 224 | u >> 12; 5987 - heap[outIdx++] = 128 | u >> 6 & 63; 5988 - heap[outIdx++] = 128 | u & 63; 5989 - } else { 5990 - if (outIdx + 3 >= endIdx) 5991 - break; 5992 - heap[outIdx++] = 240 | u >> 18; 5993 - heap[outIdx++] = 128 | u >> 12 & 63; 5994 - heap[outIdx++] = 128 | u >> 6 & 63; 5995 - heap[outIdx++] = 128 | u & 63; 5996 - } 5997 - } 5998 - heap[outIdx] = 0; 5999 - return outIdx - startIdx; 6000 - } 6001 - function stringToUTF8(str, outPtr, maxBytesToWrite) { 6002 - return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); 6003 - } 6004 - function lengthBytesUTF8(str) { 6005 - var len = 0; 6006 - for (var i = 0; i < str.length; ++i) { 6007 - var u = str.charCodeAt(i); 6008 - if (u >= 55296 && u <= 57343) 6009 - u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; 6010 - if (u <= 127) 6011 - ++len; 6012 - else if (u <= 2047) 6013 - len += 2; 6014 - else if (u <= 65535) 6015 - len += 3; 6016 - else 6017 - len += 4; 6018 - } 6019 - return len; 6020 - } 6021 - function allocateUTF8(str) { 6022 - var size = lengthBytesUTF8(str) + 1; 6023 - var ret = _malloc(size); 6024 - if (ret) 6025 - stringToUTF8Array(str, HEAP8, ret, size); 6026 - return ret; 6027 - } 6028 - function writeArrayToMemory(array, buffer2) { 6029 - HEAP8.set(array, buffer2); 6030 - } 6031 - function alignUp(x, multiple) { 6032 - if (x % multiple > 0) { 6033 - x += multiple - x % multiple; 6034 - } 6035 - return x; 6036 - } 6037 - var buffer, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPF32, HEAPF64; 6038 - function updateGlobalBufferAndViews(buf) { 6039 - buffer = buf; 6040 - Module["HEAP8"] = HEAP8 = new Int8Array(buf); 6041 - Module["HEAP16"] = HEAP16 = new Int16Array(buf); 6042 - Module["HEAP32"] = HEAP32 = new Int32Array(buf); 6043 - Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); 6044 - Module["HEAPU16"] = new Uint16Array(buf); 6045 - Module["HEAPU32"] = new Uint32Array(buf); 6046 - Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); 6047 - Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); 6048 - } 6049 - Module["INITIAL_MEMORY"] || 16777216; 6050 - var wasmTable; 6051 - var __ATPRERUN__ = []; 6052 - var __ATINIT__ = []; 6053 - var __ATPOSTRUN__ = []; 6054 - function preRun() { 6055 - if (Module["preRun"]) { 6056 - if (typeof Module["preRun"] == "function") 6057 - Module["preRun"] = [Module["preRun"]]; 6058 - while (Module["preRun"].length) { 6059 - addOnPreRun(Module["preRun"].shift()); 6060 - } 6061 - } 6062 - callRuntimeCallbacks(__ATPRERUN__); 6063 - } 6064 - function initRuntime() { 6065 - if (!Module["noFSInit"] && !FS.init.initialized) 6066 - FS.init(); 6067 - callRuntimeCallbacks(__ATINIT__); 6068 - } 6069 - function postRun() { 6070 - if (Module["postRun"]) { 6071 - if (typeof Module["postRun"] == "function") 6072 - Module["postRun"] = [Module["postRun"]]; 6073 - while (Module["postRun"].length) { 6074 - addOnPostRun(Module["postRun"].shift()); 6075 - } 6076 - } 6077 - callRuntimeCallbacks(__ATPOSTRUN__); 6078 - } 6079 - function addOnPreRun(cb) { 6080 - __ATPRERUN__.unshift(cb); 6081 - } 6082 - function addOnInit(cb) { 6083 - __ATINIT__.unshift(cb); 6084 - } 6085 - function addOnPostRun(cb) { 6086 - __ATPOSTRUN__.unshift(cb); 6087 - } 6088 - var runDependencies = 0; 6089 - var dependenciesFulfilled = null; 6090 - function addRunDependency(id) { 6091 - runDependencies++; 6092 - if (Module["monitorRunDependencies"]) { 6093 - Module["monitorRunDependencies"](runDependencies); 6094 - } 6095 - } 6096 - function removeRunDependency(id) { 6097 - runDependencies--; 6098 - if (Module["monitorRunDependencies"]) { 6099 - Module["monitorRunDependencies"](runDependencies); 6100 - } 6101 - if (runDependencies == 0) { 6102 - if (dependenciesFulfilled) { 6103 - var callback = dependenciesFulfilled; 6104 - dependenciesFulfilled = null; 6105 - callback(); 6106 - } 6107 - } 6108 - } 6109 - Module["preloadedImages"] = {}; 6110 - Module["preloadedAudios"] = {}; 6111 - function abort(what) { 6112 - if (Module["onAbort"]) { 6113 - Module["onAbort"](what); 6114 - } 6115 - what += ""; 6116 - err(what); 6117 - ABORT = true; 6118 - what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info."; 6119 - var e = new WebAssembly.RuntimeError(what); 6120 - readyPromiseReject(e); 6121 - throw e; 6122 - } 6123 - var dataURIPrefix = "data:application/octet-stream;base64,"; 6124 - function isDataURI(filename) { 6125 - return filename.startsWith(dataURIPrefix); 6126 - } 6127 - var wasmBinaryFile = "data:application/octet-stream;base64,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ACgCFC0AAiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQADIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAQgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAGIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAcgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAJIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAogACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAMIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA0gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAPIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhRBEGo2AhQgACAAKAIIQQFrIgE2AgggAQ0ACyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAwBCwsgACgCEARAA0AgACgCEEEQTwRAIAAgACgCEEEQazYCECAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYC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NgIYIAEoAgxCADcDICABKAIMQgA3AyggASgCDEEANgIwIAEoAgxBADYCNCABKAIMQQA2AjggASgCDEEANgI8IAEoAgxBADsBQCABKAIMQYCA2I14NgJEIAEoAgxCADcDSCABKAIMQQA7AVAgASgCDEEAOwFSIAEoAgxBADYCVAvSEwEBfyMAQbABayIDJAAgAyAANgKoASADIAE2AqQBIAMgAjYCoAEgA0EANgKQASADIAMoAqQBKAIwQQAQOjYClAEgAyADKAKkASgCOEEAEDo2ApgBAkACQAJAAkAgAygClAFBAkYEQCADKAKYAUEBRg0BCyADKAKUAUEBRgRAIAMoApgBQQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI4BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjgE2AkggAygCSEUEQCADKAKQARAjIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIyADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQVTYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAgsgAygCEEECEB8gAygCEEG9EkECEEEgAygCECADKAKkAS8BUkH/AXEQlgEgAygCECADKAKkASgCEEH//wNxEB8CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIyADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBVNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAQsgAygCTEHxEkH2EiADKAKgAUGAAnEbQQQQQSADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB8LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAfIAMoAkwgAygCpAEvAQwQHwJAIAMtAIUBQQFxBEAgAygCTEHjABAfDAELIAMoAkwgAygCpAEoAhBB//8DcRAfCyADKAKkASgCFCADQZ4BaiADQZwBahCNASADKAJMIAMvAZ4BEB8gAygCTCADLwGcARAfAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAhDAELIAMoAkwgAygCpAEoAhgQIQsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECEgAygCTEF/ECEMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAhDAELIAMoAkxBfxAhCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECEMAQsgAygCTEF/ECELCyADKAJMIAMoAqQBKAIwEFFB//8DcRAfIAMgAygCpAEoAjQgAygCoAEQkgFB//8DcSADKAKQAUGABhCSAUH//wNxajYCiAEgAygCTCADKAKIAUH//wNxEB8gAygCoAFBgAJxRQRAIAMoAkwgAygCpAEoAjgQUUH//wNxEB8gAygCTCADKAKkASgCPEH//wNxEB8gAygCTCADKAKkAS8BQBAfIAMoAkwgAygCpAEoAkQQIQJAIAMoAqQBKQNIQv////8PVARAIAMoAkwgAygCpAEpA0inECEMAQsgAygCTEF/ECELCwJ/IwBBEGsiACADKAJMNgIMIAAoAgwtAABBAXFFCwRAIAMoAqgBQQhqQRRBABAUIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCqAEgA0HQAGoCfiMAQRBrIgAgAygCTDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCTBAWIAMoApABECMgA0F/NgKsAQwBCyADKAJMEBYgAygCpAEoAjAEQCADKAKoASADKAKkASgCMBCFAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEEQCADKAKoASADKAKQAUGABhCRAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEQIyADKAKkASgCNARAIAMoAqgBIAMoAqQBKAI0IAMoAqABEJEBQQBIBEAgA0F/NgKsAQwCCwsgAygCoAFBgAJxRQRAIAMoAqQBKAI4BEAgAygCqAEgAygCpAEoAjgQhQFBAEgEQCADQX82AqwBDAMLCwsgAyADLQCHAUEBcTYCrAELIAMoAqwBIQAgA0GwAWokACAAC+ACAQF/IwBBIGsiBCQAIAQgADsBGiAEIAE7ARggBCACNgIUIAQgAzYCECAEQRAQGCIANgIMAkAg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AAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgAL1xMBA38jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAigoAgA2AiQgAiACKAIoKAIIKAIANgIgIAIgAigCKCgCCCgCDDYCHCACQX82AhAgAigCLEEANgLQKCACKAIsQb0ENgLUKCACQQA2AhgDQCACKAIYIAIoAhxIBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUEBazYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAU4EQCACKAIsIAIoAiQgAigCGBB5IAIgAigCGEEBazYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBAWs2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQeSACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQQFrIQAgBCAANgLUKCAA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AQsgAigCCEEANgIAIAIoAghCADcDECACKAIIQgA3AwggAigCCEIANwMgIAIoAghCADcDGCACKAIIQQA2AiggAigCCEEAOgAsIAIoAgggAikDECACKAIMEI8BQQFxRQRAIAIoAggQJSACQQA2AhwMAQsgAiACKAIINgIcCyACKAIcIQEgAkEgaiQAIAEL1gIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADQQxqQgQQKTYCCAJAIAMoAghFBEAgA0F/NgIcDAELA0AgAygCFARAIAMoAhQoAgQgAygCEHFBgAZxBEAgAygCCEIAECwaIAMoAgggAygCFC8BCBAfIAMoAgggAygCFC8BChAfAn8jAEEQayIAIAMoAgg2AgwgACgCDC0AAEEBcUULBEAgAygCGEEIakEUQQAQFCADKAIIEBYgA0F/NgIcDAQLIAMoAhggA0EMakIEEDZBAEgEQCADKAIIEBYgA0F/NgIcDAQLIAMoAhQvAQoEQCADKAIYIAMoAhQoAgwgAygCFC8BCq0QNkEASARAIAMoAggQFiADQX82AhwMBQsLCyADIAMoAhQoAgA2AhQMAQsLIAMoAggQFiADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtoAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA7AQYDQCACKAIMBEAgAigCDCgCBCACKAIIcUGABnEEQCACIAIoAgwvAQogAi8BBkEEamo7AQYLIAIgAigCDCgCADYCDAwBCwsgAi8BBgvwAQEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMNgIIIAFBADYCBANAIAEoAgwEQAJAAkAgASgCDC8BCEH1xgFGDQAgASgCDC8BCEH14AFGDQAgASgCDC8BCEGBsgJGDQAgASgCDC8BCEEBRw0BCyABIAEoAgwoAgA2AgAgASgCCCABKAIMRgRAIAEgASgCADYCCAsgASgCDEEANgIAIAEoAgwQIyABKAIEBEAgASgCBCABKAIANgIACyABIAEoAgA2AgwMAgsgASABKAIMNgIEIAEgASgCDCgCADYCDAwBCwsgASgCCCEAIAFBEGokACAAC7IEAQF/IwBBQGoiBSQAIAUgADYCOCAFIAE7ATYgBSACNgIwIAUgAzYCLCAFIAQ2AiggBSAFKAI4IAUvATatECkiADYC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IAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AyggASABKAKkARAxNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AzAgASABKAKkARAxNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCQASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQMEIWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJI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ECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzgBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADYCBCABKAIMQQA2AgggASgCDEEAOgAMC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEF0gAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdhogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdhogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBdIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHgEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIc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DQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQLgJ/IAEoAqQBBEAgASgCpAEQLkECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAsIAEEBQTgQfwszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMI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ADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBcAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABog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AS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyAB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AG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBwYXNzd29yZCBwcm92aWRlZABXcm9uZyBwYXNzd29yZCBwcm92aWRlZABVbmtub3duIGVycm9yICVkAHJiAHIrYgByd2EAJXMuWFhYWFhYAE5BTgBJTkYAQUUAMS4yLjExAC9wcm9jL3NlbGYvZmQvAC4AKG51bGwpADogAFBLBgcA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0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8="; 6128 - if (!isDataURI(wasmBinaryFile)) { 6129 - wasmBinaryFile = locateFile(wasmBinaryFile); 6130 - } 6131 - function getBinary(file) { 6132 - try { 6133 - if (file == wasmBinaryFile && wasmBinary) { 6134 - return new Uint8Array(wasmBinary); 6135 - } 6136 - var binary = tryParseAsDataURI(file); 6137 - if (binary) { 6138 - return binary; 6139 - } 6140 - if (readBinary) { 6141 - return readBinary(file); 6142 - } else { 6143 - throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)"; 6144 - } 6145 - } catch (err2) { 6146 - abort(err2); 6147 - } 6148 - } 6149 - function instantiateSync(file, info) { 6150 - var instance; 6151 - var module2; 6152 - var binary; 6153 - try { 6154 - binary = getBinary(file); 6155 - module2 = new WebAssembly.Module(binary); 6156 - instance = new WebAssembly.Instance(module2, info); 6157 - } catch (e) { 6158 - var str = e.toString(); 6159 - err("failed to compile wasm module: " + str); 6160 - if (str.includes("imported Memory") || str.includes("memory import")) { 6161 - err( 6162 - "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)." 6163 - ); 6164 - } 6165 - throw e; 6166 - } 6167 - return [instance, module2]; 6168 - } 6169 - function createWasm() { 6170 - var info = { a: asmLibraryArg }; 6171 - function receiveInstance(instance, module2) { 6172 - var exports3 = instance.exports; 6173 - Module["asm"] = exports3; 6174 - wasmMemory = Module["asm"]["u"]; 6175 - updateGlobalBufferAndViews(wasmMemory.buffer); 6176 - wasmTable = Module["asm"]["pa"]; 6177 - addOnInit(Module["asm"]["v"]); 6178 - removeRunDependency(); 6179 - } 6180 - addRunDependency(); 6181 - if (Module["instantiateWasm"]) { 6182 - try { 6183 - var exports2 = Module["instantiateWasm"](info, receiveInstance); 6184 - return exports2; 6185 - } catch (e) { 6186 - err("Module.instantiateWasm callback failed with error: " + e); 6187 - return false; 6188 - } 6189 - } 6190 - var result = instantiateSync(wasmBinaryFile, info); 6191 - receiveInstance(result[0]); 6192 - return Module["asm"]; 6193 - } 6194 - var tempDouble; 6195 - var tempI64; 6196 - function callRuntimeCallbacks(callbacks) { 6197 - while (callbacks.length > 0) { 6198 - var callback = callbacks.shift(); 6199 - if (typeof callback == "function") { 6200 - callback(Module); 6201 - continue; 6202 - } 6203 - var func = callback.func; 6204 - if (typeof func === "number") { 6205 - if (callback.arg === void 0) { 6206 - wasmTable.get(func)(); 6207 - } else { 6208 - wasmTable.get(func)(callback.arg); 6209 - } 6210 - } else { 6211 - func(callback.arg === void 0 ? null : callback.arg); 6212 - } 6213 - } 6214 - } 6215 - function _gmtime_r(time, tmPtr) { 6216 - var date = new Date(HEAP32[time >> 2] * 1e3); 6217 - HEAP32[tmPtr >> 2] = date.getUTCSeconds(); 6218 - HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes(); 6219 - HEAP32[tmPtr + 8 >> 2] = date.getUTCHours(); 6220 - HEAP32[tmPtr + 12 >> 2] = date.getUTCDate(); 6221 - HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth(); 6222 - HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900; 6223 - HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); 6224 - HEAP32[tmPtr + 36 >> 2] = 0; 6225 - HEAP32[tmPtr + 32 >> 2] = 0; 6226 - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); 6227 - var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; 6228 - HEAP32[tmPtr + 28 >> 2] = yday; 6229 - if (!_gmtime_r.GMTString) 6230 - _gmtime_r.GMTString = allocateUTF8("GMT"); 6231 - HEAP32[tmPtr + 40 >> 2] = _gmtime_r.GMTString; 6232 - return tmPtr; 6233 - } 6234 - function ___gmtime_r(a0, a1) { 6235 - return _gmtime_r(a0, a1); 6236 - } 6237 - var PATH = { 6238 - splitPath: function(filename) { 6239 - var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; 6240 - return splitPathRe.exec(filename).slice(1); 6241 - }, 6242 - normalizeArray: function(parts, allowAboveRoot) { 6243 - var up = 0; 6244 - for (var i = parts.length - 1; i >= 0; i--) { 6245 - var last = parts[i]; 6246 - if (last === ".") { 6247 - parts.splice(i, 1); 6248 - } else if (last === "..") { 6249 - parts.splice(i, 1); 6250 - up++; 6251 - } else if (up) { 6252 - parts.splice(i, 1); 6253 - up--; 6254 - } 6255 - } 6256 - if (allowAboveRoot) { 6257 - for (; up; up--) { 6258 - parts.unshift(".."); 6259 - } 6260 - } 6261 - return parts; 6262 - }, 6263 - normalize: function(path) { 6264 - var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/"; 6265 - path = PATH.normalizeArray( 6266 - path.split("/").filter(function(p) { 6267 - return !!p; 6268 - }), 6269 - !isAbsolute 6270 - ).join("/"); 6271 - if (!path && !isAbsolute) { 6272 - path = "."; 6273 - } 6274 - if (path && trailingSlash) { 6275 - path += "/"; 6276 - } 6277 - return (isAbsolute ? "/" : "") + path; 6278 - }, 6279 - dirname: function(path) { 6280 - var result = PATH.splitPath(path), root = result[0], dir = result[1]; 6281 - if (!root && !dir) { 6282 - return "."; 6283 - } 6284 - if (dir) { 6285 - dir = dir.substr(0, dir.length - 1); 6286 - } 6287 - return root + dir; 6288 - }, 6289 - basename: function(path) { 6290 - if (path === "/") 6291 - return "/"; 6292 - path = PATH.normalize(path); 6293 - path = path.replace(/\/$/, ""); 6294 - var lastSlash = path.lastIndexOf("/"); 6295 - if (lastSlash === -1) 6296 - return path; 6297 - return path.substr(lastSlash + 1); 6298 - }, 6299 - extname: function(path) { 6300 - return PATH.splitPath(path)[3]; 6301 - }, 6302 - join: function() { 6303 - var paths = Array.prototype.slice.call(arguments, 0); 6304 - return PATH.normalize(paths.join("/")); 6305 - }, 6306 - join2: function(l, r) { 6307 - return PATH.normalize(l + "/" + r); 6308 - } 6309 - }; 6310 - function getRandomDevice() { 6311 - { 6312 - try { 6313 - var crypto_module = require("crypto"); 6314 - return function() { 6315 - return crypto_module["randomBytes"](1)[0]; 6316 - }; 6317 - } catch (e) { 6318 - } 6319 - } 6320 - return function() { 6321 - abort("randomDevice"); 6322 - }; 6323 - } 6324 - var PATH_FS = { 6325 - resolve: function() { 6326 - var resolvedPath = "", resolvedAbsolute = false; 6327 - for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { 6328 - var path = i >= 0 ? arguments[i] : FS.cwd(); 6329 - if (typeof path !== "string") { 6330 - throw new TypeError("Arguments to path.resolve must be strings"); 6331 - } else if (!path) { 6332 - return ""; 6333 - } 6334 - resolvedPath = path + "/" + resolvedPath; 6335 - resolvedAbsolute = path.charAt(0) === "/"; 6336 - } 6337 - resolvedPath = PATH.normalizeArray( 6338 - resolvedPath.split("/").filter(function(p) { 6339 - return !!p; 6340 - }), 6341 - !resolvedAbsolute 6342 - ).join("/"); 6343 - return (resolvedAbsolute ? "/" : "") + resolvedPath || "."; 6344 - }, 6345 - relative: function(from, to) { 6346 - from = PATH_FS.resolve(from).substr(1); 6347 - to = PATH_FS.resolve(to).substr(1); 6348 - function trim(arr) { 6349 - var start = 0; 6350 - for (; start < arr.length; start++) { 6351 - if (arr[start] !== "") 6352 - break; 6353 - } 6354 - var end = arr.length - 1; 6355 - for (; end >= 0; end--) { 6356 - if (arr[end] !== "") 6357 - break; 6358 - } 6359 - if (start > end) 6360 - return []; 6361 - return arr.slice(start, end - start + 1); 6362 - } 6363 - var fromParts = trim(from.split("/")); 6364 - var toParts = trim(to.split("/")); 6365 - var length = Math.min(fromParts.length, toParts.length); 6366 - var samePartsLength = length; 6367 - for (var i = 0; i < length; i++) { 6368 - if (fromParts[i] !== toParts[i]) { 6369 - samePartsLength = i; 6370 - break; 6371 - } 6372 - } 6373 - var outputParts = []; 6374 - for (var i = samePartsLength; i < fromParts.length; i++) { 6375 - outputParts.push(".."); 6376 - } 6377 - outputParts = outputParts.concat(toParts.slice(samePartsLength)); 6378 - return outputParts.join("/"); 6379 - } 6380 - }; 6381 - var TTY = { 6382 - ttys: [], 6383 - init: function() { 6384 - }, 6385 - shutdown: function() { 6386 - }, 6387 - register: function(dev, ops) { 6388 - TTY.ttys[dev] = { input: [], output: [], ops }; 6389 - FS.registerDevice(dev, TTY.stream_ops); 6390 - }, 6391 - stream_ops: { 6392 - open: function(stream) { 6393 - var tty = TTY.ttys[stream.node.rdev]; 6394 - if (!tty) { 6395 - throw new FS.ErrnoError(43); 6396 - } 6397 - stream.tty = tty; 6398 - stream.seekable = false; 6399 - }, 6400 - close: function(stream) { 6401 - stream.tty.ops.flush(stream.tty); 6402 - }, 6403 - flush: function(stream) { 6404 - stream.tty.ops.flush(stream.tty); 6405 - }, 6406 - read: function(stream, buffer2, offset, length, pos) { 6407 - if (!stream.tty || !stream.tty.ops.get_char) { 6408 - throw new FS.ErrnoError(60); 6409 - } 6410 - var bytesRead = 0; 6411 - for (var i = 0; i < length; i++) { 6412 - var result; 6413 - try { 6414 - result = stream.tty.ops.get_char(stream.tty); 6415 - } catch (e) { 6416 - throw new FS.ErrnoError(29); 6417 - } 6418 - if (result === void 0 && bytesRead === 0) { 6419 - throw new FS.ErrnoError(6); 6420 - } 6421 - if (result === null || result === void 0) 6422 - break; 6423 - bytesRead++; 6424 - buffer2[offset + i] = result; 6425 - } 6426 - if (bytesRead) { 6427 - stream.node.timestamp = Date.now(); 6428 - } 6429 - return bytesRead; 6430 - }, 6431 - write: function(stream, buffer2, offset, length, pos) { 6432 - if (!stream.tty || !stream.tty.ops.put_char) { 6433 - throw new FS.ErrnoError(60); 6434 - } 6435 - try { 6436 - for (var i = 0; i < length; i++) { 6437 - stream.tty.ops.put_char(stream.tty, buffer2[offset + i]); 6438 - } 6439 - } catch (e) { 6440 - throw new FS.ErrnoError(29); 6441 - } 6442 - if (length) { 6443 - stream.node.timestamp = Date.now(); 6444 - } 6445 - return i; 6446 - } 6447 - }, 6448 - default_tty_ops: { 6449 - get_char: function(tty) { 6450 - if (!tty.input.length) { 6451 - var result = null; 6452 - { 6453 - var BUFSIZE = 256; 6454 - var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE); 6455 - var bytesRead = 0; 6456 - try { 6457 - bytesRead = nodeFS.readSync( 6458 - process.stdin.fd, 6459 - buf, 6460 - 0, 6461 - BUFSIZE, 6462 - null 6463 - ); 6464 - } catch (e) { 6465 - if (e.toString().includes("EOF")) 6466 - bytesRead = 0; 6467 - else 6468 - throw e; 6469 - } 6470 - if (bytesRead > 0) { 6471 - result = buf.slice(0, bytesRead).toString("utf-8"); 6472 - } else { 6473 - result = null; 6474 - } 6475 - } 6476 - if (!result) { 6477 - return null; 6478 - } 6479 - tty.input = intArrayFromString(result, true); 6480 - } 6481 - return tty.input.shift(); 6482 - }, 6483 - put_char: function(tty, val) { 6484 - if (val === null || val === 10) { 6485 - out(UTF8ArrayToString(tty.output, 0)); 6486 - tty.output = []; 6487 - } else { 6488 - if (val != 0) 6489 - tty.output.push(val); 6490 - } 6491 - }, 6492 - flush: function(tty) { 6493 - if (tty.output && tty.output.length > 0) { 6494 - out(UTF8ArrayToString(tty.output, 0)); 6495 - tty.output = []; 6496 - } 6497 - } 6498 - }, 6499 - default_tty1_ops: { 6500 - put_char: function(tty, val) { 6501 - if (val === null || val === 10) { 6502 - err(UTF8ArrayToString(tty.output, 0)); 6503 - tty.output = []; 6504 - } else { 6505 - if (val != 0) 6506 - tty.output.push(val); 6507 - } 6508 - }, 6509 - flush: function(tty) { 6510 - if (tty.output && tty.output.length > 0) { 6511 - err(UTF8ArrayToString(tty.output, 0)); 6512 - tty.output = []; 6513 - } 6514 - } 6515 - } 6516 - }; 6517 - function mmapAlloc(size) { 6518 - var alignedSize = alignMemory(size, 65536); 6519 - var ptr = _malloc(alignedSize); 6520 - while (size < alignedSize) 6521 - HEAP8[ptr + size++] = 0; 6522 - return ptr; 6523 - } 6524 - var MEMFS = { 6525 - ops_table: null, 6526 - mount: function(mount) { 6527 - return MEMFS.createNode(null, "/", 16384 | 511, 0); 6528 - }, 6529 - createNode: function(parent, name, mode, dev) { 6530 - if (FS.isBlkdev(mode) || FS.isFIFO(mode)) { 6531 - throw new FS.ErrnoError(63); 6532 - } 6533 - if (!MEMFS.ops_table) { 6534 - MEMFS.ops_table = { 6535 - dir: { 6536 - node: { 6537 - getattr: MEMFS.node_ops.getattr, 6538 - setattr: MEMFS.node_ops.setattr, 6539 - lookup: MEMFS.node_ops.lookup, 6540 - mknod: MEMFS.node_ops.mknod, 6541 - rename: MEMFS.node_ops.rename, 6542 - unlink: MEMFS.node_ops.unlink, 6543 - rmdir: MEMFS.node_ops.rmdir, 6544 - readdir: MEMFS.node_ops.readdir, 6545 - symlink: MEMFS.node_ops.symlink 6546 - }, 6547 - stream: { llseek: MEMFS.stream_ops.llseek } 6548 - }, 6549 - file: { 6550 - node: { 6551 - getattr: MEMFS.node_ops.getattr, 6552 - setattr: MEMFS.node_ops.setattr 6553 - }, 6554 - stream: { 6555 - llseek: MEMFS.stream_ops.llseek, 6556 - read: MEMFS.stream_ops.read, 6557 - write: MEMFS.stream_ops.write, 6558 - allocate: MEMFS.stream_ops.allocate, 6559 - mmap: MEMFS.stream_ops.mmap, 6560 - msync: MEMFS.stream_ops.msync 6561 - } 6562 - }, 6563 - link: { 6564 - node: { 6565 - getattr: MEMFS.node_ops.getattr, 6566 - setattr: MEMFS.node_ops.setattr, 6567 - readlink: MEMFS.node_ops.readlink 6568 - }, 6569 - stream: {} 6570 - }, 6571 - chrdev: { 6572 - node: { 6573 - getattr: MEMFS.node_ops.getattr, 6574 - setattr: MEMFS.node_ops.setattr 6575 - }, 6576 - stream: FS.chrdev_stream_ops 6577 - } 6578 - }; 6579 - } 6580 - var node = FS.createNode(parent, name, mode, dev); 6581 - if (FS.isDir(node.mode)) { 6582 - node.node_ops = MEMFS.ops_table.dir.node; 6583 - node.stream_ops = MEMFS.ops_table.dir.stream; 6584 - node.contents = {}; 6585 - } else if (FS.isFile(node.mode)) { 6586 - node.node_ops = MEMFS.ops_table.file.node; 6587 - node.stream_ops = MEMFS.ops_table.file.stream; 6588 - node.usedBytes = 0; 6589 - node.contents = null; 6590 - } else if (FS.isLink(node.mode)) { 6591 - node.node_ops = MEMFS.ops_table.link.node; 6592 - node.stream_ops = MEMFS.ops_table.link.stream; 6593 - } else if (FS.isChrdev(node.mode)) { 6594 - node.node_ops = MEMFS.ops_table.chrdev.node; 6595 - node.stream_ops = MEMFS.ops_table.chrdev.stream; 6596 - } 6597 - node.timestamp = Date.now(); 6598 - if (parent) { 6599 - parent.contents[name] = node; 6600 - parent.timestamp = node.timestamp; 6601 - } 6602 - return node; 6603 - }, 6604 - getFileDataAsTypedArray: function(node) { 6605 - if (!node.contents) 6606 - return new Uint8Array(0); 6607 - if (node.contents.subarray) 6608 - return node.contents.subarray(0, node.usedBytes); 6609 - return new Uint8Array(node.contents); 6610 - }, 6611 - expandFileStorage: function(node, newCapacity) { 6612 - var prevCapacity = node.contents ? node.contents.length : 0; 6613 - if (prevCapacity >= newCapacity) 6614 - return; 6615 - var CAPACITY_DOUBLING_MAX = 1024 * 1024; 6616 - newCapacity = Math.max( 6617 - newCapacity, 6618 - prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0 6619 - ); 6620 - if (prevCapacity != 0) 6621 - newCapacity = Math.max(newCapacity, 256); 6622 - var oldContents = node.contents; 6623 - node.contents = new Uint8Array(newCapacity); 6624 - if (node.usedBytes > 0) 6625 - node.contents.set(oldContents.subarray(0, node.usedBytes), 0); 6626 - }, 6627 - resizeFileStorage: function(node, newSize) { 6628 - if (node.usedBytes == newSize) 6629 - return; 6630 - if (newSize == 0) { 6631 - node.contents = null; 6632 - node.usedBytes = 0; 6633 - } else { 6634 - var oldContents = node.contents; 6635 - node.contents = new Uint8Array(newSize); 6636 - if (oldContents) { 6637 - node.contents.set( 6638 - oldContents.subarray(0, Math.min(newSize, node.usedBytes)) 6639 - ); 6640 - } 6641 - node.usedBytes = newSize; 6642 - } 6643 - }, 6644 - node_ops: { 6645 - getattr: function(node) { 6646 - var attr = {}; 6647 - attr.dev = FS.isChrdev(node.mode) ? node.id : 1; 6648 - attr.ino = node.id; 6649 - attr.mode = node.mode; 6650 - attr.nlink = 1; 6651 - attr.uid = 0; 6652 - attr.gid = 0; 6653 - attr.rdev = node.rdev; 6654 - if (FS.isDir(node.mode)) { 6655 - attr.size = 4096; 6656 - } else if (FS.isFile(node.mode)) { 6657 - attr.size = node.usedBytes; 6658 - } else if (FS.isLink(node.mode)) { 6659 - attr.size = node.link.length; 6660 - } else { 6661 - attr.size = 0; 6662 - } 6663 - attr.atime = new Date(node.timestamp); 6664 - attr.mtime = new Date(node.timestamp); 6665 - attr.ctime = new Date(node.timestamp); 6666 - attr.blksize = 4096; 6667 - attr.blocks = Math.ceil(attr.size / attr.blksize); 6668 - return attr; 6669 - }, 6670 - setattr: function(node, attr) { 6671 - if (attr.mode !== void 0) { 6672 - node.mode = attr.mode; 6673 - } 6674 - if (attr.timestamp !== void 0) { 6675 - node.timestamp = attr.timestamp; 6676 - } 6677 - if (attr.size !== void 0) { 6678 - MEMFS.resizeFileStorage(node, attr.size); 6679 - } 6680 - }, 6681 - lookup: function(parent, name) { 6682 - throw FS.genericErrors[44]; 6683 - }, 6684 - mknod: function(parent, name, mode, dev) { 6685 - return MEMFS.createNode(parent, name, mode, dev); 6686 - }, 6687 - rename: function(old_node, new_dir, new_name) { 6688 - if (FS.isDir(old_node.mode)) { 6689 - var new_node; 6690 - try { 6691 - new_node = FS.lookupNode(new_dir, new_name); 6692 - } catch (e) { 6693 - } 6694 - if (new_node) { 6695 - for (var i in new_node.contents) { 6696 - throw new FS.ErrnoError(55); 6697 - } 6698 - } 6699 - } 6700 - delete old_node.parent.contents[old_node.name]; 6701 - old_node.parent.timestamp = Date.now(); 6702 - old_node.name = new_name; 6703 - new_dir.contents[new_name] = old_node; 6704 - new_dir.timestamp = old_node.parent.timestamp; 6705 - old_node.parent = new_dir; 6706 - }, 6707 - unlink: function(parent, name) { 6708 - delete parent.contents[name]; 6709 - parent.timestamp = Date.now(); 6710 - }, 6711 - rmdir: function(parent, name) { 6712 - var node = FS.lookupNode(parent, name); 6713 - for (var i in node.contents) { 6714 - throw new FS.ErrnoError(55); 6715 - } 6716 - delete parent.contents[name]; 6717 - parent.timestamp = Date.now(); 6718 - }, 6719 - readdir: function(node) { 6720 - var entries = [".", ".."]; 6721 - for (var key2 in node.contents) { 6722 - if (!node.contents.hasOwnProperty(key2)) { 6723 - continue; 6724 - } 6725 - entries.push(key2); 6726 - } 6727 - return entries; 6728 - }, 6729 - symlink: function(parent, newname, oldpath) { 6730 - var node = MEMFS.createNode(parent, newname, 511 | 40960, 0); 6731 - node.link = oldpath; 6732 - return node; 6733 - }, 6734 - readlink: function(node) { 6735 - if (!FS.isLink(node.mode)) { 6736 - throw new FS.ErrnoError(28); 6737 - } 6738 - return node.link; 6739 - } 6740 - }, 6741 - stream_ops: { 6742 - read: function(stream, buffer2, offset, length, position) { 6743 - var contents = stream.node.contents; 6744 - if (position >= stream.node.usedBytes) 6745 - return 0; 6746 - var size = Math.min(stream.node.usedBytes - position, length); 6747 - if (size > 8 && contents.subarray) { 6748 - buffer2.set(contents.subarray(position, position + size), offset); 6749 - } else { 6750 - for (var i = 0; i < size; i++) 6751 - buffer2[offset + i] = contents[position + i]; 6752 - } 6753 - return size; 6754 - }, 6755 - write: function(stream, buffer2, offset, length, position, canOwn) { 6756 - if (buffer2.buffer === HEAP8.buffer) { 6757 - canOwn = false; 6758 - } 6759 - if (!length) 6760 - return 0; 6761 - var node = stream.node; 6762 - node.timestamp = Date.now(); 6763 - if (buffer2.subarray && (!node.contents || node.contents.subarray)) { 6764 - if (canOwn) { 6765 - node.contents = buffer2.subarray(offset, offset + length); 6766 - node.usedBytes = length; 6767 - return length; 6768 - } else if (node.usedBytes === 0 && position === 0) { 6769 - node.contents = buffer2.slice(offset, offset + length); 6770 - node.usedBytes = length; 6771 - return length; 6772 - } else if (position + length <= node.usedBytes) { 6773 - node.contents.set( 6774 - buffer2.subarray(offset, offset + length), 6775 - position 6776 - ); 6777 - return length; 6778 - } 6779 - } 6780 - MEMFS.expandFileStorage(node, position + length); 6781 - if (node.contents.subarray && buffer2.subarray) { 6782 - node.contents.set( 6783 - buffer2.subarray(offset, offset + length), 6784 - position 6785 - ); 6786 - } else { 6787 - for (var i = 0; i < length; i++) { 6788 - node.contents[position + i] = buffer2[offset + i]; 6789 - } 6790 - } 6791 - node.usedBytes = Math.max(node.usedBytes, position + length); 6792 - return length; 6793 - }, 6794 - llseek: function(stream, offset, whence) { 6795 - var position = offset; 6796 - if (whence === 1) { 6797 - position += stream.position; 6798 - } else if (whence === 2) { 6799 - if (FS.isFile(stream.node.mode)) { 6800 - position += stream.node.usedBytes; 6801 - } 6802 - } 6803 - if (position < 0) { 6804 - throw new FS.ErrnoError(28); 6805 - } 6806 - return position; 6807 - }, 6808 - allocate: function(stream, offset, length) { 6809 - MEMFS.expandFileStorage(stream.node, offset + length); 6810 - stream.node.usedBytes = Math.max( 6811 - stream.node.usedBytes, 6812 - offset + length 6813 - ); 6814 - }, 6815 - mmap: function(stream, address, length, position, prot, flags) { 6816 - if (address !== 0) { 6817 - throw new FS.ErrnoError(28); 6818 - } 6819 - if (!FS.isFile(stream.node.mode)) { 6820 - throw new FS.ErrnoError(43); 6821 - } 6822 - var ptr; 6823 - var allocated; 6824 - var contents = stream.node.contents; 6825 - if (!(flags & 2) && contents.buffer === buffer) { 6826 - allocated = false; 6827 - ptr = contents.byteOffset; 6828 - } else { 6829 - if (position > 0 || position + length < contents.length) { 6830 - if (contents.subarray) { 6831 - contents = contents.subarray(position, position + length); 6832 - } else { 6833 - contents = Array.prototype.slice.call( 6834 - contents, 6835 - position, 6836 - position + length 6837 - ); 6838 - } 6839 - } 6840 - allocated = true; 6841 - ptr = mmapAlloc(length); 6842 - if (!ptr) { 6843 - throw new FS.ErrnoError(48); 6844 - } 6845 - HEAP8.set(contents, ptr); 6846 - } 6847 - return { ptr, allocated }; 6848 - }, 6849 - msync: function(stream, buffer2, offset, length, mmapFlags) { 6850 - if (!FS.isFile(stream.node.mode)) { 6851 - throw new FS.ErrnoError(43); 6852 - } 6853 - if (mmapFlags & 2) { 6854 - return 0; 6855 - } 6856 - MEMFS.stream_ops.write( 6857 - stream, 6858 - buffer2, 6859 - 0, 6860 - length, 6861 - offset, 6862 - false 6863 - ); 6864 - return 0; 6865 - } 6866 - } 6867 - }; 6868 - var ERRNO_CODES = { 6869 - EPERM: 63, 6870 - ENOENT: 44, 6871 - ESRCH: 71, 6872 - EINTR: 27, 6873 - EIO: 29, 6874 - ENXIO: 60, 6875 - E2BIG: 1, 6876 - ENOEXEC: 45, 6877 - EBADF: 8, 6878 - ECHILD: 12, 6879 - EAGAIN: 6, 6880 - EWOULDBLOCK: 6, 6881 - ENOMEM: 48, 6882 - EACCES: 2, 6883 - EFAULT: 21, 6884 - ENOTBLK: 105, 6885 - EBUSY: 10, 6886 - EEXIST: 20, 6887 - EXDEV: 75, 6888 - ENODEV: 43, 6889 - ENOTDIR: 54, 6890 - EISDIR: 31, 6891 - EINVAL: 28, 6892 - ENFILE: 41, 6893 - EMFILE: 33, 6894 - ENOTTY: 59, 6895 - ETXTBSY: 74, 6896 - EFBIG: 22, 6897 - ENOSPC: 51, 6898 - ESPIPE: 70, 6899 - EROFS: 69, 6900 - EMLINK: 34, 6901 - EPIPE: 64, 6902 - EDOM: 18, 6903 - ERANGE: 68, 6904 - ENOMSG: 49, 6905 - EIDRM: 24, 6906 - ECHRNG: 106, 6907 - EL2NSYNC: 156, 6908 - EL3HLT: 107, 6909 - EL3RST: 108, 6910 - ELNRNG: 109, 6911 - EUNATCH: 110, 6912 - ENOCSI: 111, 6913 - EL2HLT: 112, 6914 - EDEADLK: 16, 6915 - ENOLCK: 46, 6916 - EBADE: 113, 6917 - EBADR: 114, 6918 - EXFULL: 115, 6919 - ENOANO: 104, 6920 - EBADRQC: 103, 6921 - EBADSLT: 102, 6922 - EDEADLOCK: 16, 6923 - EBFONT: 101, 6924 - ENOSTR: 100, 6925 - ENODATA: 116, 6926 - ETIME: 117, 6927 - ENOSR: 118, 6928 - ENONET: 119, 6929 - ENOPKG: 120, 6930 - EREMOTE: 121, 6931 - ENOLINK: 47, 6932 - EADV: 122, 6933 - ESRMNT: 123, 6934 - ECOMM: 124, 6935 - EPROTO: 65, 6936 - EMULTIHOP: 36, 6937 - EDOTDOT: 125, 6938 - EBADMSG: 9, 6939 - ENOTUNIQ: 126, 6940 - EBADFD: 127, 6941 - EREMCHG: 128, 6942 - ELIBACC: 129, 6943 - ELIBBAD: 130, 6944 - ELIBSCN: 131, 6945 - ELIBMAX: 132, 6946 - ELIBEXEC: 133, 6947 - ENOSYS: 52, 6948 - ENOTEMPTY: 55, 6949 - ENAMETOOLONG: 37, 6950 - ELOOP: 32, 6951 - EOPNOTSUPP: 138, 6952 - EPFNOSUPPORT: 139, 6953 - ECONNRESET: 15, 6954 - ENOBUFS: 42, 6955 - EAFNOSUPPORT: 5, 6956 - EPROTOTYPE: 67, 6957 - ENOTSOCK: 57, 6958 - ENOPROTOOPT: 50, 6959 - ESHUTDOWN: 140, 6960 - ECONNREFUSED: 14, 6961 - EADDRINUSE: 3, 6962 - ECONNABORTED: 13, 6963 - ENETUNREACH: 40, 6964 - ENETDOWN: 38, 6965 - ETIMEDOUT: 73, 6966 - EHOSTDOWN: 142, 6967 - EHOSTUNREACH: 23, 6968 - EINPROGRESS: 26, 6969 - EALREADY: 7, 6970 - EDESTADDRREQ: 17, 6971 - EMSGSIZE: 35, 6972 - EPROTONOSUPPORT: 66, 6973 - ESOCKTNOSUPPORT: 137, 6974 - EADDRNOTAVAIL: 4, 6975 - ENETRESET: 39, 6976 - EISCONN: 30, 6977 - ENOTCONN: 53, 6978 - ETOOMANYREFS: 141, 6979 - EUSERS: 136, 6980 - EDQUOT: 19, 6981 - ESTALE: 72, 6982 - ENOTSUP: 138, 6983 - ENOMEDIUM: 148, 6984 - EILSEQ: 25, 6985 - EOVERFLOW: 61, 6986 - ECANCELED: 11, 6987 - ENOTRECOVERABLE: 56, 6988 - EOWNERDEAD: 62, 6989 - ESTRPIPE: 135 6990 - }; 6991 - var NODEFS = { 6992 - isWindows: false, 6993 - staticInit: function() { 6994 - NODEFS.isWindows = !!process.platform.match(/^win/); 6995 - var flags = { fs: fs.constants }; 6996 - if (flags["fs"]) { 6997 - flags = flags["fs"]; 6998 - } 6999 - NODEFS.flagsForNodeMap = { 7000 - 1024: flags["O_APPEND"], 7001 - 64: flags["O_CREAT"], 7002 - 128: flags["O_EXCL"], 7003 - 256: flags["O_NOCTTY"], 7004 - 0: flags["O_RDONLY"], 7005 - 2: flags["O_RDWR"], 7006 - 4096: flags["O_SYNC"], 7007 - 512: flags["O_TRUNC"], 7008 - 1: flags["O_WRONLY"] 7009 - }; 7010 - }, 7011 - bufferFrom: function(arrayBuffer) { 7012 - return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer); 7013 - }, 7014 - convertNodeCode: function(e) { 7015 - var code = e.code; 7016 - return ERRNO_CODES[code]; 7017 - }, 7018 - mount: function(mount) { 7019 - return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0); 7020 - }, 7021 - createNode: function(parent, name, mode, dev) { 7022 - if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) { 7023 - throw new FS.ErrnoError(28); 7024 - } 7025 - var node = FS.createNode(parent, name, mode); 7026 - node.node_ops = NODEFS.node_ops; 7027 - node.stream_ops = NODEFS.stream_ops; 7028 - return node; 7029 - }, 7030 - getMode: function(path) { 7031 - var stat; 7032 - try { 7033 - stat = fs.lstatSync(path); 7034 - if (NODEFS.isWindows) { 7035 - stat.mode = stat.mode | (stat.mode & 292) >> 2; 7036 - } 7037 - } catch (e) { 7038 - if (!e.code) 7039 - throw e; 7040 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7041 - } 7042 - return stat.mode; 7043 - }, 7044 - realPath: function(node) { 7045 - var parts = []; 7046 - while (node.parent !== node) { 7047 - parts.push(node.name); 7048 - node = node.parent; 7049 - } 7050 - parts.push(node.mount.opts.root); 7051 - parts.reverse(); 7052 - return PATH.join.apply(null, parts); 7053 - }, 7054 - flagsForNode: function(flags) { 7055 - flags &= ~2097152; 7056 - flags &= ~2048; 7057 - flags &= ~32768; 7058 - flags &= ~524288; 7059 - var newFlags = 0; 7060 - for (var k in NODEFS.flagsForNodeMap) { 7061 - if (flags & k) { 7062 - newFlags |= NODEFS.flagsForNodeMap[k]; 7063 - flags ^= k; 7064 - } 7065 - } 7066 - if (!flags) { 7067 - return newFlags; 7068 - } else { 7069 - throw new FS.ErrnoError(28); 7070 - } 7071 - }, 7072 - node_ops: { 7073 - getattr: function(node) { 7074 - var path = NODEFS.realPath(node); 7075 - var stat; 7076 - try { 7077 - stat = fs.lstatSync(path); 7078 - } catch (e) { 7079 - if (!e.code) 7080 - throw e; 7081 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7082 - } 7083 - if (NODEFS.isWindows && !stat.blksize) { 7084 - stat.blksize = 4096; 7085 - } 7086 - if (NODEFS.isWindows && !stat.blocks) { 7087 - stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0; 7088 - } 7089 - return { 7090 - dev: stat.dev, 7091 - ino: stat.ino, 7092 - mode: stat.mode, 7093 - nlink: stat.nlink, 7094 - uid: stat.uid, 7095 - gid: stat.gid, 7096 - rdev: stat.rdev, 7097 - size: stat.size, 7098 - atime: stat.atime, 7099 - mtime: stat.mtime, 7100 - ctime: stat.ctime, 7101 - blksize: stat.blksize, 7102 - blocks: stat.blocks 7103 - }; 7104 - }, 7105 - setattr: function(node, attr) { 7106 - var path = NODEFS.realPath(node); 7107 - try { 7108 - if (attr.mode !== void 0) { 7109 - fs.chmodSync(path, attr.mode); 7110 - node.mode = attr.mode; 7111 - } 7112 - if (attr.timestamp !== void 0) { 7113 - var date = new Date(attr.timestamp); 7114 - fs.utimesSync(path, date, date); 7115 - } 7116 - if (attr.size !== void 0) { 7117 - fs.truncateSync(path, attr.size); 7118 - } 7119 - } catch (e) { 7120 - if (!e.code) 7121 - throw e; 7122 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7123 - } 7124 - }, 7125 - lookup: function(parent, name) { 7126 - var path = PATH.join2(NODEFS.realPath(parent), name); 7127 - var mode = NODEFS.getMode(path); 7128 - return NODEFS.createNode(parent, name, mode); 7129 - }, 7130 - mknod: function(parent, name, mode, dev) { 7131 - var node = NODEFS.createNode(parent, name, mode, dev); 7132 - var path = NODEFS.realPath(node); 7133 - try { 7134 - if (FS.isDir(node.mode)) { 7135 - fs.mkdirSync(path, node.mode); 7136 - } else { 7137 - fs.writeFileSync(path, "", { mode: node.mode }); 7138 - } 7139 - } catch (e) { 7140 - if (!e.code) 7141 - throw e; 7142 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7143 - } 7144 - return node; 7145 - }, 7146 - rename: function(oldNode, newDir, newName) { 7147 - var oldPath = NODEFS.realPath(oldNode); 7148 - var newPath = PATH.join2(NODEFS.realPath(newDir), newName); 7149 - try { 7150 - fs.renameSync(oldPath, newPath); 7151 - } catch (e) { 7152 - if (!e.code) 7153 - throw e; 7154 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7155 - } 7156 - oldNode.name = newName; 7157 - }, 7158 - unlink: function(parent, name) { 7159 - var path = PATH.join2(NODEFS.realPath(parent), name); 7160 - try { 7161 - fs.unlinkSync(path); 7162 - } catch (e) { 7163 - if (!e.code) 7164 - throw e; 7165 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7166 - } 7167 - }, 7168 - rmdir: function(parent, name) { 7169 - var path = PATH.join2(NODEFS.realPath(parent), name); 7170 - try { 7171 - fs.rmdirSync(path); 7172 - } catch (e) { 7173 - if (!e.code) 7174 - throw e; 7175 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7176 - } 7177 - }, 7178 - readdir: function(node) { 7179 - var path = NODEFS.realPath(node); 7180 - try { 7181 - return fs.readdirSync(path); 7182 - } catch (e) { 7183 - if (!e.code) 7184 - throw e; 7185 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7186 - } 7187 - }, 7188 - symlink: function(parent, newName, oldPath) { 7189 - var newPath = PATH.join2(NODEFS.realPath(parent), newName); 7190 - try { 7191 - fs.symlinkSync(oldPath, newPath); 7192 - } catch (e) { 7193 - if (!e.code) 7194 - throw e; 7195 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7196 - } 7197 - }, 7198 - readlink: function(node) { 7199 - var path = NODEFS.realPath(node); 7200 - try { 7201 - path = fs.readlinkSync(path); 7202 - path = NODEJS_PATH.relative( 7203 - NODEJS_PATH.resolve(node.mount.opts.root), 7204 - path 7205 - ); 7206 - return path; 7207 - } catch (e) { 7208 - if (!e.code) 7209 - throw e; 7210 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7211 - } 7212 - } 7213 - }, 7214 - stream_ops: { 7215 - open: function(stream) { 7216 - var path = NODEFS.realPath(stream.node); 7217 - try { 7218 - if (FS.isFile(stream.node.mode)) { 7219 - stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags)); 7220 - } 7221 - } catch (e) { 7222 - if (!e.code) 7223 - throw e; 7224 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7225 - } 7226 - }, 7227 - close: function(stream) { 7228 - try { 7229 - if (FS.isFile(stream.node.mode) && stream.nfd) { 7230 - fs.closeSync(stream.nfd); 7231 - } 7232 - } catch (e) { 7233 - if (!e.code) 7234 - throw e; 7235 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7236 - } 7237 - }, 7238 - read: function(stream, buffer2, offset, length, position) { 7239 - if (length === 0) 7240 - return 0; 7241 - try { 7242 - return fs.readSync( 7243 - stream.nfd, 7244 - NODEFS.bufferFrom(buffer2.buffer), 7245 - offset, 7246 - length, 7247 - position 7248 - ); 7249 - } catch (e) { 7250 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7251 - } 7252 - }, 7253 - write: function(stream, buffer2, offset, length, position) { 7254 - try { 7255 - return fs.writeSync( 7256 - stream.nfd, 7257 - NODEFS.bufferFrom(buffer2.buffer), 7258 - offset, 7259 - length, 7260 - position 7261 - ); 7262 - } catch (e) { 7263 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7264 - } 7265 - }, 7266 - llseek: function(stream, offset, whence) { 7267 - var position = offset; 7268 - if (whence === 1) { 7269 - position += stream.position; 7270 - } else if (whence === 2) { 7271 - if (FS.isFile(stream.node.mode)) { 7272 - try { 7273 - var stat = fs.fstatSync(stream.nfd); 7274 - position += stat.size; 7275 - } catch (e) { 7276 - throw new FS.ErrnoError(NODEFS.convertNodeCode(e)); 7277 - } 7278 - } 7279 - } 7280 - if (position < 0) { 7281 - throw new FS.ErrnoError(28); 7282 - } 7283 - return position; 7284 - }, 7285 - mmap: function(stream, address, length, position, prot, flags) { 7286 - if (address !== 0) { 7287 - throw new FS.ErrnoError(28); 7288 - } 7289 - if (!FS.isFile(stream.node.mode)) { 7290 - throw new FS.ErrnoError(43); 7291 - } 7292 - var ptr = mmapAlloc(length); 7293 - NODEFS.stream_ops.read(stream, HEAP8, ptr, length, position); 7294 - return { ptr, allocated: true }; 7295 - }, 7296 - msync: function(stream, buffer2, offset, length, mmapFlags) { 7297 - if (!FS.isFile(stream.node.mode)) { 7298 - throw new FS.ErrnoError(43); 7299 - } 7300 - if (mmapFlags & 2) { 7301 - return 0; 7302 - } 7303 - NODEFS.stream_ops.write( 7304 - stream, 7305 - buffer2, 7306 - 0, 7307 - length, 7308 - offset, 7309 - false 7310 - ); 7311 - return 0; 7312 - } 7313 - } 7314 - }; 7315 - var NODERAWFS = { 7316 - lookupPath: function(path) { 7317 - return { path, node: { mode: NODEFS.getMode(path) } }; 7318 - }, 7319 - createStandardStreams: function() { 7320 - FS.streams[0] = { 7321 - fd: 0, 7322 - nfd: 0, 7323 - position: 0, 7324 - path: "", 7325 - flags: 0, 7326 - tty: true, 7327 - seekable: false 7328 - }; 7329 - for (var i = 1; i < 3; i++) { 7330 - FS.streams[i] = { 7331 - fd: i, 7332 - nfd: i, 7333 - position: 0, 7334 - path: "", 7335 - flags: 577, 7336 - tty: true, 7337 - seekable: false 7338 - }; 7339 - } 7340 - }, 7341 - cwd: function() { 7342 - return process.cwd(); 7343 - }, 7344 - chdir: function() { 7345 - process.chdir.apply(void 0, arguments); 7346 - }, 7347 - mknod: function(path, mode) { 7348 - if (FS.isDir(path)) { 7349 - fs.mkdirSync(path, mode); 7350 - } else { 7351 - fs.writeFileSync(path, "", { mode }); 7352 - } 7353 - }, 7354 - mkdir: function() { 7355 - fs.mkdirSync.apply(void 0, arguments); 7356 - }, 7357 - symlink: function() { 7358 - fs.symlinkSync.apply(void 0, arguments); 7359 - }, 7360 - rename: function() { 7361 - fs.renameSync.apply(void 0, arguments); 7362 - }, 7363 - rmdir: function() { 7364 - fs.rmdirSync.apply(void 0, arguments); 7365 - }, 7366 - readdir: function() { 7367 - fs.readdirSync.apply(void 0, arguments); 7368 - }, 7369 - unlink: function() { 7370 - fs.unlinkSync.apply(void 0, arguments); 7371 - }, 7372 - readlink: function() { 7373 - return fs.readlinkSync.apply(void 0, arguments); 7374 - }, 7375 - stat: function() { 7376 - return fs.statSync.apply(void 0, arguments); 7377 - }, 7378 - lstat: function() { 7379 - return fs.lstatSync.apply(void 0, arguments); 7380 - }, 7381 - chmod: function() { 7382 - fs.chmodSync.apply(void 0, arguments); 7383 - }, 7384 - fchmod: function() { 7385 - fs.fchmodSync.apply(void 0, arguments); 7386 - }, 7387 - chown: function() { 7388 - fs.chownSync.apply(void 0, arguments); 7389 - }, 7390 - fchown: function() { 7391 - fs.fchownSync.apply(void 0, arguments); 7392 - }, 7393 - truncate: function() { 7394 - fs.truncateSync.apply(void 0, arguments); 7395 - }, 7396 - ftruncate: function(fd, len) { 7397 - if (len < 0) { 7398 - throw new FS.ErrnoError(28); 7399 - } 7400 - fs.ftruncateSync.apply(void 0, arguments); 7401 - }, 7402 - utime: function() { 7403 - fs.utimesSync.apply(void 0, arguments); 7404 - }, 7405 - open: function(path, flags, mode, suggestFD) { 7406 - if (typeof flags === "string") { 7407 - flags = VFS.modeStringToFlags(flags); 7408 - } 7409 - var nfd = fs.openSync(path, NODEFS.flagsForNode(flags), mode); 7410 - var fd = suggestFD != null ? suggestFD : FS.nextfd(nfd); 7411 - var stream = { 7412 - fd, 7413 - nfd, 7414 - position: 0, 7415 - path, 7416 - flags, 7417 - seekable: true 7418 - }; 7419 - FS.streams[fd] = stream; 7420 - return stream; 7421 - }, 7422 - close: function(stream) { 7423 - if (!stream.stream_ops) { 7424 - fs.closeSync(stream.nfd); 7425 - } 7426 - FS.closeStream(stream.fd); 7427 - }, 7428 - llseek: function(stream, offset, whence) { 7429 - if (stream.stream_ops) { 7430 - return VFS.llseek(stream, offset, whence); 7431 - } 7432 - var position = offset; 7433 - if (whence === 1) { 7434 - position += stream.position; 7435 - } else if (whence === 2) { 7436 - position += fs.fstatSync(stream.nfd).size; 7437 - } else if (whence !== 0) { 7438 - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); 7439 - } 7440 - if (position < 0) { 7441 - throw new FS.ErrnoError(ERRNO_CODES.EINVAL); 7442 - } 7443 - stream.position = position; 7444 - return position; 7445 - }, 7446 - read: function(stream, buffer2, offset, length, position) { 7447 - if (stream.stream_ops) { 7448 - return VFS.read(stream, buffer2, offset, length, position); 7449 - } 7450 - var seeking = typeof position !== "undefined"; 7451 - if (!seeking && stream.seekable) 7452 - position = stream.position; 7453 - var bytesRead = fs.readSync( 7454 - stream.nfd, 7455 - NODEFS.bufferFrom(buffer2.buffer), 7456 - offset, 7457 - length, 7458 - position 7459 - ); 7460 - if (!seeking) 7461 - stream.position += bytesRead; 7462 - return bytesRead; 7463 - }, 7464 - write: function(stream, buffer2, offset, length, position) { 7465 - if (stream.stream_ops) { 7466 - return VFS.write(stream, buffer2, offset, length, position); 7467 - } 7468 - if (stream.flags & +"1024") { 7469 - FS.llseek(stream, 0, +"2"); 7470 - } 7471 - var seeking = typeof position !== "undefined"; 7472 - if (!seeking && stream.seekable) 7473 - position = stream.position; 7474 - var bytesWritten = fs.writeSync( 7475 - stream.nfd, 7476 - NODEFS.bufferFrom(buffer2.buffer), 7477 - offset, 7478 - length, 7479 - position 7480 - ); 7481 - if (!seeking) 7482 - stream.position += bytesWritten; 7483 - return bytesWritten; 7484 - }, 7485 - allocate: function() { 7486 - throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP); 7487 - }, 7488 - mmap: function(stream, address, length, position, prot, flags) { 7489 - if (stream.stream_ops) { 7490 - return VFS.mmap(stream, address, length, position, prot, flags); 7491 - } 7492 - if (address !== 0) { 7493 - throw new FS.ErrnoError(28); 7494 - } 7495 - var ptr = mmapAlloc(length); 7496 - FS.read(stream, HEAP8, ptr, length, position); 7497 - return { ptr, allocated: true }; 7498 - }, 7499 - msync: function(stream, buffer2, offset, length, mmapFlags) { 7500 - if (stream.stream_ops) { 7501 - return VFS.msync(stream, buffer2, offset, length, mmapFlags); 7502 - } 7503 - if (mmapFlags & 2) { 7504 - return 0; 7505 - } 7506 - FS.write(stream, buffer2, 0, length, offset); 7507 - return 0; 7508 - }, 7509 - munmap: function() { 7510 - return 0; 7511 - }, 7512 - ioctl: function() { 7513 - throw new FS.ErrnoError(ERRNO_CODES.ENOTTY); 7514 - } 7515 - }; 7516 - var FS = { 7517 - root: null, 7518 - mounts: [], 7519 - devices: {}, 7520 - streams: [], 7521 - nextInode: 1, 7522 - nameTable: null, 7523 - currentPath: "/", 7524 - initialized: false, 7525 - ignorePermissions: true, 7526 - trackingDelegate: {}, 7527 - tracking: { openFlags: { READ: 1, WRITE: 2 } }, 7528 - ErrnoError: null, 7529 - genericErrors: {}, 7530 - filesystems: null, 7531 - syncFSRequests: 0, 7532 - lookupPath: function(path, opts) { 7533 - path = PATH_FS.resolve(FS.cwd(), path); 7534 - opts = opts || {}; 7535 - if (!path) 7536 - return { path: "", node: null }; 7537 - var defaults = { follow_mount: true, recurse_count: 0 }; 7538 - for (var key2 in defaults) { 7539 - if (opts[key2] === void 0) { 7540 - opts[key2] = defaults[key2]; 7541 - } 7542 - } 7543 - if (opts.recurse_count > 8) { 7544 - throw new FS.ErrnoError(32); 7545 - } 7546 - var parts = PATH.normalizeArray( 7547 - path.split("/").filter(function(p) { 7548 - return !!p; 7549 - }), 7550 - false 7551 - ); 7552 - var current = FS.root; 7553 - var current_path = "/"; 7554 - for (var i = 0; i < parts.length; i++) { 7555 - var islast = i === parts.length - 1; 7556 - if (islast && opts.parent) { 7557 - break; 7558 - } 7559 - current = FS.lookupNode(current, parts[i]); 7560 - current_path = PATH.join2(current_path, parts[i]); 7561 - if (FS.isMountpoint(current)) { 7562 - if (!islast || islast && opts.follow_mount) { 7563 - current = current.mounted.root; 7564 - } 7565 - } 7566 - if (!islast || opts.follow) { 7567 - var count = 0; 7568 - while (FS.isLink(current.mode)) { 7569 - var link = FS.readlink(current_path); 7570 - current_path = PATH_FS.resolve(PATH.dirname(current_path), link); 7571 - var lookup = FS.lookupPath(current_path, { 7572 - recurse_count: opts.recurse_count 7573 - }); 7574 - current = lookup.node; 7575 - if (count++ > 40) { 7576 - throw new FS.ErrnoError(32); 7577 - } 7578 - } 7579 - } 7580 - } 7581 - return { path: current_path, node: current }; 7582 - }, 7583 - getPath: function(node) { 7584 - var path; 7585 - while (true) { 7586 - if (FS.isRoot(node)) { 7587 - var mount = node.mount.mountpoint; 7588 - if (!path) 7589 - return mount; 7590 - return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path; 7591 - } 7592 - path = path ? node.name + "/" + path : node.name; 7593 - node = node.parent; 7594 - } 7595 - }, 7596 - hashName: function(parentid, name) { 7597 - var hash = 0; 7598 - for (var i = 0; i < name.length; i++) { 7599 - hash = (hash << 5) - hash + name.charCodeAt(i) | 0; 7600 - } 7601 - return (parentid + hash >>> 0) % FS.nameTable.length; 7602 - }, 7603 - hashAddNode: function(node) { 7604 - var hash = FS.hashName(node.parent.id, node.name); 7605 - node.name_next = FS.nameTable[hash]; 7606 - FS.nameTable[hash] = node; 7607 - }, 7608 - hashRemoveNode: function(node) { 7609 - var hash = FS.hashName(node.parent.id, node.name); 7610 - if (FS.nameTable[hash] === node) { 7611 - FS.nameTable[hash] = node.name_next; 7612 - } else { 7613 - var current = FS.nameTable[hash]; 7614 - while (current) { 7615 - if (current.name_next === node) { 7616 - current.name_next = node.name_next; 7617 - break; 7618 - } 7619 - current = current.name_next; 7620 - } 7621 - } 7622 - }, 7623 - lookupNode: function(parent, name) { 7624 - var errCode = FS.mayLookup(parent); 7625 - if (errCode) { 7626 - throw new FS.ErrnoError(errCode, parent); 7627 - } 7628 - var hash = FS.hashName(parent.id, name); 7629 - for (var node = FS.nameTable[hash]; node; node = node.name_next) { 7630 - var nodeName = node.name; 7631 - if (node.parent.id === parent.id && nodeName === name) { 7632 - return node; 7633 - } 7634 - } 7635 - return FS.lookup(parent, name); 7636 - }, 7637 - createNode: function(parent, name, mode, rdev) { 7638 - var node = new FS.FSNode(parent, name, mode, rdev); 7639 - FS.hashAddNode(node); 7640 - return node; 7641 - }, 7642 - destroyNode: function(node) { 7643 - FS.hashRemoveNode(node); 7644 - }, 7645 - isRoot: function(node) { 7646 - return node === node.parent; 7647 - }, 7648 - isMountpoint: function(node) { 7649 - return !!node.mounted; 7650 - }, 7651 - isFile: function(mode) { 7652 - return (mode & 61440) === 32768; 7653 - }, 7654 - isDir: function(mode) { 7655 - return (mode & 61440) === 16384; 7656 - }, 7657 - isLink: function(mode) { 7658 - return (mode & 61440) === 40960; 7659 - }, 7660 - isChrdev: function(mode) { 7661 - return (mode & 61440) === 8192; 7662 - }, 7663 - isBlkdev: function(mode) { 7664 - return (mode & 61440) === 24576; 7665 - }, 7666 - isFIFO: function(mode) { 7667 - return (mode & 61440) === 4096; 7668 - }, 7669 - isSocket: function(mode) { 7670 - return (mode & 49152) === 49152; 7671 - }, 7672 - flagModes: { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 }, 7673 - modeStringToFlags: function(str) { 7674 - var flags = FS.flagModes[str]; 7675 - if (typeof flags === "undefined") { 7676 - throw new Error("Unknown file open mode: " + str); 7677 - } 7678 - return flags; 7679 - }, 7680 - flagsToPermissionString: function(flag) { 7681 - var perms = ["r", "w", "rw"][flag & 3]; 7682 - if (flag & 512) { 7683 - perms += "w"; 7684 - } 7685 - return perms; 7686 - }, 7687 - nodePermissions: function(node, perms) { 7688 - if (FS.ignorePermissions) { 7689 - return 0; 7690 - } 7691 - if (perms.includes("r") && !(node.mode & 292)) { 7692 - return 2; 7693 - } else if (perms.includes("w") && !(node.mode & 146)) { 7694 - return 2; 7695 - } else if (perms.includes("x") && !(node.mode & 73)) { 7696 - return 2; 7697 - } 7698 - return 0; 7699 - }, 7700 - mayLookup: function(dir) { 7701 - var errCode = FS.nodePermissions(dir, "x"); 7702 - if (errCode) 7703 - return errCode; 7704 - if (!dir.node_ops.lookup) 7705 - return 2; 7706 - return 0; 7707 - }, 7708 - mayCreate: function(dir, name) { 7709 - try { 7710 - var node = FS.lookupNode(dir, name); 7711 - return 20; 7712 - } catch (e) { 7713 - } 7714 - return FS.nodePermissions(dir, "wx"); 7715 - }, 7716 - mayDelete: function(dir, name, isdir) { 7717 - var node; 7718 - try { 7719 - node = FS.lookupNode(dir, name); 7720 - } catch (e) { 7721 - return e.errno; 7722 - } 7723 - var errCode = FS.nodePermissions(dir, "wx"); 7724 - if (errCode) { 7725 - return errCode; 7726 - } 7727 - if (isdir) { 7728 - if (!FS.isDir(node.mode)) { 7729 - return 54; 7730 - } 7731 - if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) { 7732 - return 10; 7733 - } 7734 - } else { 7735 - if (FS.isDir(node.mode)) { 7736 - return 31; 7737 - } 7738 - } 7739 - return 0; 7740 - }, 7741 - mayOpen: function(node, flags) { 7742 - if (!node) { 7743 - return 44; 7744 - } 7745 - if (FS.isLink(node.mode)) { 7746 - return 32; 7747 - } else if (FS.isDir(node.mode)) { 7748 - if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) { 7749 - return 31; 7750 - } 7751 - } 7752 - return FS.nodePermissions(node, FS.flagsToPermissionString(flags)); 7753 - }, 7754 - MAX_OPEN_FDS: 4096, 7755 - nextfd: function(fd_start, fd_end) { 7756 - fd_start = fd_start || 0; 7757 - fd_end = fd_end || FS.MAX_OPEN_FDS; 7758 - for (var fd = fd_start; fd <= fd_end; fd++) { 7759 - if (!FS.streams[fd]) { 7760 - return fd; 7761 - } 7762 - } 7763 - throw new FS.ErrnoError(33); 7764 - }, 7765 - getStream: function(fd) { 7766 - return FS.streams[fd]; 7767 - }, 7768 - createStream: function(stream, fd_start, fd_end) { 7769 - if (!FS.FSStream) { 7770 - FS.FSStream = function() { 7771 - }; 7772 - FS.FSStream.prototype = { 7773 - object: { 7774 - get: function() { 7775 - return this.node; 7776 - }, 7777 - set: function(val) { 7778 - this.node = val; 7779 - } 7780 - }, 7781 - isRead: { 7782 - get: function() { 7783 - return (this.flags & 2097155) !== 1; 7784 - } 7785 - }, 7786 - isWrite: { 7787 - get: function() { 7788 - return (this.flags & 2097155) !== 0; 7789 - } 7790 - }, 7791 - isAppend: { 7792 - get: function() { 7793 - return this.flags & 1024; 7794 - } 7795 - } 7796 - }; 7797 - } 7798 - var newStream = new FS.FSStream(); 7799 - for (var p in stream) { 7800 - newStream[p] = stream[p]; 7801 - } 7802 - stream = newStream; 7803 - var fd = FS.nextfd(fd_start, fd_end); 7804 - stream.fd = fd; 7805 - FS.streams[fd] = stream; 7806 - return stream; 7807 - }, 7808 - closeStream: function(fd) { 7809 - FS.streams[fd] = null; 7810 - }, 7811 - chrdev_stream_ops: { 7812 - open: function(stream) { 7813 - var device = FS.getDevice(stream.node.rdev); 7814 - stream.stream_ops = device.stream_ops; 7815 - if (stream.stream_ops.open) { 7816 - stream.stream_ops.open(stream); 7817 - } 7818 - }, 7819 - llseek: function() { 7820 - throw new FS.ErrnoError(70); 7821 - } 7822 - }, 7823 - major: function(dev) { 7824 - return dev >> 8; 7825 - }, 7826 - minor: function(dev) { 7827 - return dev & 255; 7828 - }, 7829 - makedev: function(ma, mi) { 7830 - return ma << 8 | mi; 7831 - }, 7832 - registerDevice: function(dev, ops) { 7833 - FS.devices[dev] = { stream_ops: ops }; 7834 - }, 7835 - getDevice: function(dev) { 7836 - return FS.devices[dev]; 7837 - }, 7838 - getMounts: function(mount) { 7839 - var mounts = []; 7840 - var check = [mount]; 7841 - while (check.length) { 7842 - var m = check.pop(); 7843 - mounts.push(m); 7844 - check.push.apply(check, m.mounts); 7845 - } 7846 - return mounts; 7847 - }, 7848 - syncfs: function(populate, callback) { 7849 - if (typeof populate === "function") { 7850 - callback = populate; 7851 - populate = false; 7852 - } 7853 - FS.syncFSRequests++; 7854 - if (FS.syncFSRequests > 1) { 7855 - err( 7856 - "warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work" 7857 - ); 7858 - } 7859 - var mounts = FS.getMounts(FS.root.mount); 7860 - var completed = 0; 7861 - function doCallback(errCode) { 7862 - FS.syncFSRequests--; 7863 - return callback(errCode); 7864 - } 7865 - function done(errCode) { 7866 - if (errCode) { 7867 - if (!done.errored) { 7868 - done.errored = true; 7869 - return doCallback(errCode); 7870 - } 7871 - return; 7872 - } 7873 - if (++completed >= mounts.length) { 7874 - doCallback(null); 7875 - } 7876 - } 7877 - mounts.forEach(function(mount) { 7878 - if (!mount.type.syncfs) { 7879 - return done(null); 7880 - } 7881 - mount.type.syncfs(mount, populate, done); 7882 - }); 7883 - }, 7884 - mount: function(type, opts, mountpoint) { 7885 - var root = mountpoint === "/"; 7886 - var pseudo = !mountpoint; 7887 - var node; 7888 - if (root && FS.root) { 7889 - throw new FS.ErrnoError(10); 7890 - } else if (!root && !pseudo) { 7891 - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); 7892 - mountpoint = lookup.path; 7893 - node = lookup.node; 7894 - if (FS.isMountpoint(node)) { 7895 - throw new FS.ErrnoError(10); 7896 - } 7897 - if (!FS.isDir(node.mode)) { 7898 - throw new FS.ErrnoError(54); 7899 - } 7900 - } 7901 - var mount = { 7902 - type, 7903 - opts, 7904 - mountpoint, 7905 - mounts: [] 7906 - }; 7907 - var mountRoot = type.mount(mount); 7908 - mountRoot.mount = mount; 7909 - mount.root = mountRoot; 7910 - if (root) { 7911 - FS.root = mountRoot; 7912 - } else if (node) { 7913 - node.mounted = mount; 7914 - if (node.mount) { 7915 - node.mount.mounts.push(mount); 7916 - } 7917 - } 7918 - return mountRoot; 7919 - }, 7920 - unmount: function(mountpoint) { 7921 - var lookup = FS.lookupPath(mountpoint, { follow_mount: false }); 7922 - if (!FS.isMountpoint(lookup.node)) { 7923 - throw new FS.ErrnoError(28); 7924 - } 7925 - var node = lookup.node; 7926 - var mount = node.mounted; 7927 - var mounts = FS.getMounts(mount); 7928 - Object.keys(FS.nameTable).forEach(function(hash) { 7929 - var current = FS.nameTable[hash]; 7930 - while (current) { 7931 - var next = current.name_next; 7932 - if (mounts.includes(current.mount)) { 7933 - FS.destroyNode(current); 7934 - } 7935 - current = next; 7936 - } 7937 - }); 7938 - node.mounted = null; 7939 - var idx = node.mount.mounts.indexOf(mount); 7940 - node.mount.mounts.splice(idx, 1); 7941 - }, 7942 - lookup: function(parent, name) { 7943 - return parent.node_ops.lookup(parent, name); 7944 - }, 7945 - mknod: function(path, mode, dev) { 7946 - var lookup = FS.lookupPath(path, { parent: true }); 7947 - var parent = lookup.node; 7948 - var name = PATH.basename(path); 7949 - if (!name || name === "." || name === "..") { 7950 - throw new FS.ErrnoError(28); 7951 - } 7952 - var errCode = FS.mayCreate(parent, name); 7953 - if (errCode) { 7954 - throw new FS.ErrnoError(errCode); 7955 - } 7956 - if (!parent.node_ops.mknod) { 7957 - throw new FS.ErrnoError(63); 7958 - } 7959 - return parent.node_ops.mknod(parent, name, mode, dev); 7960 - }, 7961 - create: function(path, mode) { 7962 - mode = mode !== void 0 ? mode : 438; 7963 - mode &= 4095; 7964 - mode |= 32768; 7965 - return FS.mknod(path, mode, 0); 7966 - }, 7967 - mkdir: function(path, mode) { 7968 - mode = mode !== void 0 ? mode : 511; 7969 - mode &= 511 | 512; 7970 - mode |= 16384; 7971 - return FS.mknod(path, mode, 0); 7972 - }, 7973 - mkdirTree: function(path, mode) { 7974 - var dirs = path.split("/"); 7975 - var d = ""; 7976 - for (var i = 0; i < dirs.length; ++i) { 7977 - if (!dirs[i]) 7978 - continue; 7979 - d += "/" + dirs[i]; 7980 - try { 7981 - FS.mkdir(d, mode); 7982 - } catch (e) { 7983 - if (e.errno != 20) 7984 - throw e; 7985 - } 7986 - } 7987 - }, 7988 - mkdev: function(path, mode, dev) { 7989 - if (typeof dev === "undefined") { 7990 - dev = mode; 7991 - mode = 438; 7992 - } 7993 - mode |= 8192; 7994 - return FS.mknod(path, mode, dev); 7995 - }, 7996 - symlink: function(oldpath, newpath) { 7997 - if (!PATH_FS.resolve(oldpath)) { 7998 - throw new FS.ErrnoError(44); 7999 - } 8000 - var lookup = FS.lookupPath(newpath, { parent: true }); 8001 - var parent = lookup.node; 8002 - if (!parent) { 8003 - throw new FS.ErrnoError(44); 8004 - } 8005 - var newname = PATH.basename(newpath); 8006 - var errCode = FS.mayCreate(parent, newname); 8007 - if (errCode) { 8008 - throw new FS.ErrnoError(errCode); 8009 - } 8010 - if (!parent.node_ops.symlink) { 8011 - throw new FS.ErrnoError(63); 8012 - } 8013 - return parent.node_ops.symlink(parent, newname, oldpath); 8014 - }, 8015 - rename: function(old_path, new_path) { 8016 - var old_dirname = PATH.dirname(old_path); 8017 - var new_dirname = PATH.dirname(new_path); 8018 - var old_name = PATH.basename(old_path); 8019 - var new_name = PATH.basename(new_path); 8020 - var lookup, old_dir, new_dir; 8021 - lookup = FS.lookupPath(old_path, { parent: true }); 8022 - old_dir = lookup.node; 8023 - lookup = FS.lookupPath(new_path, { parent: true }); 8024 - new_dir = lookup.node; 8025 - if (!old_dir || !new_dir) 8026 - throw new FS.ErrnoError(44); 8027 - if (old_dir.mount !== new_dir.mount) { 8028 - throw new FS.ErrnoError(75); 8029 - } 8030 - var old_node = FS.lookupNode(old_dir, old_name); 8031 - var relative = PATH_FS.relative(old_path, new_dirname); 8032 - if (relative.charAt(0) !== ".") { 8033 - throw new FS.ErrnoError(28); 8034 - } 8035 - relative = PATH_FS.relative(new_path, old_dirname); 8036 - if (relative.charAt(0) !== ".") { 8037 - throw new FS.ErrnoError(55); 8038 - } 8039 - var new_node; 8040 - try { 8041 - new_node = FS.lookupNode(new_dir, new_name); 8042 - } catch (e) { 8043 - } 8044 - if (old_node === new_node) { 8045 - return; 8046 - } 8047 - var isdir = FS.isDir(old_node.mode); 8048 - var errCode = FS.mayDelete(old_dir, old_name, isdir); 8049 - if (errCode) { 8050 - throw new FS.ErrnoError(errCode); 8051 - } 8052 - errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name); 8053 - if (errCode) { 8054 - throw new FS.ErrnoError(errCode); 8055 - } 8056 - if (!old_dir.node_ops.rename) { 8057 - throw new FS.ErrnoError(63); 8058 - } 8059 - if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) { 8060 - throw new FS.ErrnoError(10); 8061 - } 8062 - if (new_dir !== old_dir) { 8063 - errCode = FS.nodePermissions(old_dir, "w"); 8064 - if (errCode) { 8065 - throw new FS.ErrnoError(errCode); 8066 - } 8067 - } 8068 - try { 8069 - if (FS.trackingDelegate["willMovePath"]) { 8070 - FS.trackingDelegate["willMovePath"](old_path, new_path); 8071 - } 8072 - } catch (e) { 8073 - err( 8074 - "FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message 8075 - ); 8076 - } 8077 - FS.hashRemoveNode(old_node); 8078 - try { 8079 - old_dir.node_ops.rename(old_node, new_dir, new_name); 8080 - } catch (e) { 8081 - throw e; 8082 - } finally { 8083 - FS.hashAddNode(old_node); 8084 - } 8085 - try { 8086 - if (FS.trackingDelegate["onMovePath"]) 8087 - FS.trackingDelegate["onMovePath"](old_path, new_path); 8088 - } catch (e) { 8089 - err( 8090 - "FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message 8091 - ); 8092 - } 8093 - }, 8094 - rmdir: function(path) { 8095 - var lookup = FS.lookupPath(path, { parent: true }); 8096 - var parent = lookup.node; 8097 - var name = PATH.basename(path); 8098 - var node = FS.lookupNode(parent, name); 8099 - var errCode = FS.mayDelete(parent, name, true); 8100 - if (errCode) { 8101 - throw new FS.ErrnoError(errCode); 8102 - } 8103 - if (!parent.node_ops.rmdir) { 8104 - throw new FS.ErrnoError(63); 8105 - } 8106 - if (FS.isMountpoint(node)) { 8107 - throw new FS.ErrnoError(10); 8108 - } 8109 - try { 8110 - if (FS.trackingDelegate["willDeletePath"]) { 8111 - FS.trackingDelegate["willDeletePath"](path); 8112 - } 8113 - } catch (e) { 8114 - err( 8115 - "FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message 8116 - ); 8117 - } 8118 - parent.node_ops.rmdir(parent, name); 8119 - FS.destroyNode(node); 8120 - try { 8121 - if (FS.trackingDelegate["onDeletePath"]) 8122 - FS.trackingDelegate["onDeletePath"](path); 8123 - } catch (e) { 8124 - err( 8125 - "FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message 8126 - ); 8127 - } 8128 - }, 8129 - readdir: function(path) { 8130 - var lookup = FS.lookupPath(path, { follow: true }); 8131 - var node = lookup.node; 8132 - if (!node.node_ops.readdir) { 8133 - throw new FS.ErrnoError(54); 8134 - } 8135 - return node.node_ops.readdir(node); 8136 - }, 8137 - unlink: function(path) { 8138 - var lookup = FS.lookupPath(path, { parent: true }); 8139 - var parent = lookup.node; 8140 - var name = PATH.basename(path); 8141 - var node = FS.lookupNode(parent, name); 8142 - var errCode = FS.mayDelete(parent, name, false); 8143 - if (errCode) { 8144 - throw new FS.ErrnoError(errCode); 8145 - } 8146 - if (!parent.node_ops.unlink) { 8147 - throw new FS.ErrnoError(63); 8148 - } 8149 - if (FS.isMountpoint(node)) { 8150 - throw new FS.ErrnoError(10); 8151 - } 8152 - try { 8153 - if (FS.trackingDelegate["willDeletePath"]) { 8154 - FS.trackingDelegate["willDeletePath"](path); 8155 - } 8156 - } catch (e) { 8157 - err( 8158 - "FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message 8159 - ); 8160 - } 8161 - parent.node_ops.unlink(parent, name); 8162 - FS.destroyNode(node); 8163 - try { 8164 - if (FS.trackingDelegate["onDeletePath"]) 8165 - FS.trackingDelegate["onDeletePath"](path); 8166 - } catch (e) { 8167 - err( 8168 - "FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message 8169 - ); 8170 - } 8171 - }, 8172 - readlink: function(path) { 8173 - var lookup = FS.lookupPath(path); 8174 - var link = lookup.node; 8175 - if (!link) { 8176 - throw new FS.ErrnoError(44); 8177 - } 8178 - if (!link.node_ops.readlink) { 8179 - throw new FS.ErrnoError(28); 8180 - } 8181 - return PATH_FS.resolve( 8182 - FS.getPath(link.parent), 8183 - link.node_ops.readlink(link) 8184 - ); 8185 - }, 8186 - stat: function(path, dontFollow) { 8187 - var lookup = FS.lookupPath(path, { follow: !dontFollow }); 8188 - var node = lookup.node; 8189 - if (!node) { 8190 - throw new FS.ErrnoError(44); 8191 - } 8192 - if (!node.node_ops.getattr) { 8193 - throw new FS.ErrnoError(63); 8194 - } 8195 - return node.node_ops.getattr(node); 8196 - }, 8197 - lstat: function(path) { 8198 - return FS.stat(path, true); 8199 - }, 8200 - chmod: function(path, mode, dontFollow) { 8201 - var node; 8202 - if (typeof path === "string") { 8203 - var lookup = FS.lookupPath(path, { follow: !dontFollow }); 8204 - node = lookup.node; 8205 - } else { 8206 - node = path; 8207 - } 8208 - if (!node.node_ops.setattr) { 8209 - throw new FS.ErrnoError(63); 8210 - } 8211 - node.node_ops.setattr(node, { 8212 - mode: mode & 4095 | node.mode & ~4095, 8213 - timestamp: Date.now() 8214 - }); 8215 - }, 8216 - lchmod: function(path, mode) { 8217 - FS.chmod(path, mode, true); 8218 - }, 8219 - fchmod: function(fd, mode) { 8220 - var stream = FS.getStream(fd); 8221 - if (!stream) { 8222 - throw new FS.ErrnoError(8); 8223 - } 8224 - FS.chmod(stream.node, mode); 8225 - }, 8226 - chown: function(path, uid, gid, dontFollow) { 8227 - var node; 8228 - if (typeof path === "string") { 8229 - var lookup = FS.lookupPath(path, { follow: !dontFollow }); 8230 - node = lookup.node; 8231 - } else { 8232 - node = path; 8233 - } 8234 - if (!node.node_ops.setattr) { 8235 - throw new FS.ErrnoError(63); 8236 - } 8237 - node.node_ops.setattr(node, { timestamp: Date.now() }); 8238 - }, 8239 - lchown: function(path, uid, gid) { 8240 - FS.chown(path, uid, gid, true); 8241 - }, 8242 - fchown: function(fd, uid, gid) { 8243 - var stream = FS.getStream(fd); 8244 - if (!stream) { 8245 - throw new FS.ErrnoError(8); 8246 - } 8247 - FS.chown(stream.node, uid, gid); 8248 - }, 8249 - truncate: function(path, len) { 8250 - if (len < 0) { 8251 - throw new FS.ErrnoError(28); 8252 - } 8253 - var node; 8254 - if (typeof path === "string") { 8255 - var lookup = FS.lookupPath(path, { follow: true }); 8256 - node = lookup.node; 8257 - } else { 8258 - node = path; 8259 - } 8260 - if (!node.node_ops.setattr) { 8261 - throw new FS.ErrnoError(63); 8262 - } 8263 - if (FS.isDir(node.mode)) { 8264 - throw new FS.ErrnoError(31); 8265 - } 8266 - if (!FS.isFile(node.mode)) { 8267 - throw new FS.ErrnoError(28); 8268 - } 8269 - var errCode = FS.nodePermissions(node, "w"); 8270 - if (errCode) { 8271 - throw new FS.ErrnoError(errCode); 8272 - } 8273 - node.node_ops.setattr(node, { size: len, timestamp: Date.now() }); 8274 - }, 8275 - ftruncate: function(fd, len) { 8276 - var stream = FS.getStream(fd); 8277 - if (!stream) { 8278 - throw new FS.ErrnoError(8); 8279 - } 8280 - if ((stream.flags & 2097155) === 0) { 8281 - throw new FS.ErrnoError(28); 8282 - } 8283 - FS.truncate(stream.node, len); 8284 - }, 8285 - utime: function(path, atime, mtime) { 8286 - var lookup = FS.lookupPath(path, { follow: true }); 8287 - var node = lookup.node; 8288 - node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) }); 8289 - }, 8290 - open: function(path, flags, mode, fd_start, fd_end) { 8291 - if (path === "") { 8292 - throw new FS.ErrnoError(44); 8293 - } 8294 - flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags; 8295 - mode = typeof mode === "undefined" ? 438 : mode; 8296 - if (flags & 64) { 8297 - mode = mode & 4095 | 32768; 8298 - } else { 8299 - mode = 0; 8300 - } 8301 - var node; 8302 - if (typeof path === "object") { 8303 - node = path; 8304 - } else { 8305 - path = PATH.normalize(path); 8306 - try { 8307 - var lookup = FS.lookupPath(path, { follow: !(flags & 131072) }); 8308 - node = lookup.node; 8309 - } catch (e) { 8310 - } 8311 - } 8312 - var created = false; 8313 - if (flags & 64) { 8314 - if (node) { 8315 - if (flags & 128) { 8316 - throw new FS.ErrnoError(20); 8317 - } 8318 - } else { 8319 - node = FS.mknod(path, mode, 0); 8320 - created = true; 8321 - } 8322 - } 8323 - if (!node) { 8324 - throw new FS.ErrnoError(44); 8325 - } 8326 - if (FS.isChrdev(node.mode)) { 8327 - flags &= ~512; 8328 - } 8329 - if (flags & 65536 && !FS.isDir(node.mode)) { 8330 - throw new FS.ErrnoError(54); 8331 - } 8332 - if (!created) { 8333 - var errCode = FS.mayOpen(node, flags); 8334 - if (errCode) { 8335 - throw new FS.ErrnoError(errCode); 8336 - } 8337 - } 8338 - if (flags & 512) { 8339 - FS.truncate(node, 0); 8340 - } 8341 - flags &= ~(128 | 512 | 131072); 8342 - var stream = FS.createStream( 8343 - { 8344 - node, 8345 - path: FS.getPath(node), 8346 - flags, 8347 - seekable: true, 8348 - position: 0, 8349 - stream_ops: node.stream_ops, 8350 - ungotten: [], 8351 - error: false 8352 - }, 8353 - fd_start, 8354 - fd_end 8355 - ); 8356 - if (stream.stream_ops.open) { 8357 - stream.stream_ops.open(stream); 8358 - } 8359 - if (Module["logReadFiles"] && !(flags & 1)) { 8360 - if (!FS.readFiles) 8361 - FS.readFiles = {}; 8362 - if (!(path in FS.readFiles)) { 8363 - FS.readFiles[path] = 1; 8364 - err("FS.trackingDelegate error on read file: " + path); 8365 - } 8366 - } 8367 - try { 8368 - if (FS.trackingDelegate["onOpenFile"]) { 8369 - var trackingFlags = 0; 8370 - if ((flags & 2097155) !== 1) { 8371 - trackingFlags |= FS.tracking.openFlags.READ; 8372 - } 8373 - if ((flags & 2097155) !== 0) { 8374 - trackingFlags |= FS.tracking.openFlags.WRITE; 8375 - } 8376 - FS.trackingDelegate["onOpenFile"](path, trackingFlags); 8377 - } 8378 - } catch (e) { 8379 - err( 8380 - "FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message 8381 - ); 8382 - } 8383 - return stream; 8384 - }, 8385 - close: function(stream) { 8386 - if (FS.isClosed(stream)) { 8387 - throw new FS.ErrnoError(8); 8388 - } 8389 - if (stream.getdents) 8390 - stream.getdents = null; 8391 - try { 8392 - if (stream.stream_ops.close) { 8393 - stream.stream_ops.close(stream); 8394 - } 8395 - } catch (e) { 8396 - throw e; 8397 - } finally { 8398 - FS.closeStream(stream.fd); 8399 - } 8400 - stream.fd = null; 8401 - }, 8402 - isClosed: function(stream) { 8403 - return stream.fd === null; 8404 - }, 8405 - llseek: function(stream, offset, whence) { 8406 - if (FS.isClosed(stream)) { 8407 - throw new FS.ErrnoError(8); 8408 - } 8409 - if (!stream.seekable || !stream.stream_ops.llseek) { 8410 - throw new FS.ErrnoError(70); 8411 - } 8412 - if (whence != 0 && whence != 1 && whence != 2) { 8413 - throw new FS.ErrnoError(28); 8414 - } 8415 - stream.position = stream.stream_ops.llseek(stream, offset, whence); 8416 - stream.ungotten = []; 8417 - return stream.position; 8418 - }, 8419 - read: function(stream, buffer2, offset, length, position) { 8420 - if (length < 0 || position < 0) { 8421 - throw new FS.ErrnoError(28); 8422 - } 8423 - if (FS.isClosed(stream)) { 8424 - throw new FS.ErrnoError(8); 8425 - } 8426 - if ((stream.flags & 2097155) === 1) { 8427 - throw new FS.ErrnoError(8); 8428 - } 8429 - if (FS.isDir(stream.node.mode)) { 8430 - throw new FS.ErrnoError(31); 8431 - } 8432 - if (!stream.stream_ops.read) { 8433 - throw new FS.ErrnoError(28); 8434 - } 8435 - var seeking = typeof position !== "undefined"; 8436 - if (!seeking) { 8437 - position = stream.position; 8438 - } else if (!stream.seekable) { 8439 - throw new FS.ErrnoError(70); 8440 - } 8441 - var bytesRead = stream.stream_ops.read( 8442 - stream, 8443 - buffer2, 8444 - offset, 8445 - length, 8446 - position 8447 - ); 8448 - if (!seeking) 8449 - stream.position += bytesRead; 8450 - return bytesRead; 8451 - }, 8452 - write: function(stream, buffer2, offset, length, position, canOwn) { 8453 - if (length < 0 || position < 0) { 8454 - throw new FS.ErrnoError(28); 8455 - } 8456 - if (FS.isClosed(stream)) { 8457 - throw new FS.ErrnoError(8); 8458 - } 8459 - if ((stream.flags & 2097155) === 0) { 8460 - throw new FS.ErrnoError(8); 8461 - } 8462 - if (FS.isDir(stream.node.mode)) { 8463 - throw new FS.ErrnoError(31); 8464 - } 8465 - if (!stream.stream_ops.write) { 8466 - throw new FS.ErrnoError(28); 8467 - } 8468 - if (stream.seekable && stream.flags & 1024) { 8469 - FS.llseek(stream, 0, 2); 8470 - } 8471 - var seeking = typeof position !== "undefined"; 8472 - if (!seeking) { 8473 - position = stream.position; 8474 - } else if (!stream.seekable) { 8475 - throw new FS.ErrnoError(70); 8476 - } 8477 - var bytesWritten = stream.stream_ops.write( 8478 - stream, 8479 - buffer2, 8480 - offset, 8481 - length, 8482 - position, 8483 - canOwn 8484 - ); 8485 - if (!seeking) 8486 - stream.position += bytesWritten; 8487 - try { 8488 - if (stream.path && FS.trackingDelegate["onWriteToFile"]) 8489 - FS.trackingDelegate["onWriteToFile"](stream.path); 8490 - } catch (e) { 8491 - err( 8492 - "FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message 8493 - ); 8494 - } 8495 - return bytesWritten; 8496 - }, 8497 - allocate: function(stream, offset, length) { 8498 - if (FS.isClosed(stream)) { 8499 - throw new FS.ErrnoError(8); 8500 - } 8501 - if (offset < 0 || length <= 0) { 8502 - throw new FS.ErrnoError(28); 8503 - } 8504 - if ((stream.flags & 2097155) === 0) { 8505 - throw new FS.ErrnoError(8); 8506 - } 8507 - if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) { 8508 - throw new FS.ErrnoError(43); 8509 - } 8510 - if (!stream.stream_ops.allocate) { 8511 - throw new FS.ErrnoError(138); 8512 - } 8513 - stream.stream_ops.allocate(stream, offset, length); 8514 - }, 8515 - mmap: function(stream, address, length, position, prot, flags) { 8516 - if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) { 8517 - throw new FS.ErrnoError(2); 8518 - } 8519 - if ((stream.flags & 2097155) === 1) { 8520 - throw new FS.ErrnoError(2); 8521 - } 8522 - if (!stream.stream_ops.mmap) { 8523 - throw new FS.ErrnoError(43); 8524 - } 8525 - return stream.stream_ops.mmap( 8526 - stream, 8527 - address, 8528 - length, 8529 - position, 8530 - prot, 8531 - flags 8532 - ); 8533 - }, 8534 - msync: function(stream, buffer2, offset, length, mmapFlags) { 8535 - if (!stream || !stream.stream_ops.msync) { 8536 - return 0; 8537 - } 8538 - return stream.stream_ops.msync( 8539 - stream, 8540 - buffer2, 8541 - offset, 8542 - length, 8543 - mmapFlags 8544 - ); 8545 - }, 8546 - munmap: function(stream) { 8547 - return 0; 8548 - }, 8549 - ioctl: function(stream, cmd, arg) { 8550 - if (!stream.stream_ops.ioctl) { 8551 - throw new FS.ErrnoError(59); 8552 - } 8553 - return stream.stream_ops.ioctl(stream, cmd, arg); 8554 - }, 8555 - readFile: function(path, opts) { 8556 - opts = opts || {}; 8557 - opts.flags = opts.flags || 0; 8558 - opts.encoding = opts.encoding || "binary"; 8559 - if (opts.encoding !== "utf8" && opts.encoding !== "binary") { 8560 - throw new Error('Invalid encoding type "' + opts.encoding + '"'); 8561 - } 8562 - var ret; 8563 - var stream = FS.open(path, opts.flags); 8564 - var stat = FS.stat(path); 8565 - var length = stat.size; 8566 - var buf = new Uint8Array(length); 8567 - FS.read(stream, buf, 0, length, 0); 8568 - if (opts.encoding === "utf8") { 8569 - ret = UTF8ArrayToString(buf, 0); 8570 - } else if (opts.encoding === "binary") { 8571 - ret = buf; 8572 - } 8573 - FS.close(stream); 8574 - return ret; 8575 - }, 8576 - writeFile: function(path, data, opts) { 8577 - opts = opts || {}; 8578 - opts.flags = opts.flags || 577; 8579 - var stream = FS.open(path, opts.flags, opts.mode); 8580 - if (typeof data === "string") { 8581 - var buf = new Uint8Array(lengthBytesUTF8(data) + 1); 8582 - var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length); 8583 - FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn); 8584 - } else if (ArrayBuffer.isView(data)) { 8585 - FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn); 8586 - } else { 8587 - throw new Error("Unsupported data type"); 8588 - } 8589 - FS.close(stream); 8590 - }, 8591 - cwd: function() { 8592 - return FS.currentPath; 8593 - }, 8594 - chdir: function(path) { 8595 - var lookup = FS.lookupPath(path, { follow: true }); 8596 - if (lookup.node === null) { 8597 - throw new FS.ErrnoError(44); 8598 - } 8599 - if (!FS.isDir(lookup.node.mode)) { 8600 - throw new FS.ErrnoError(54); 8601 - } 8602 - var errCode = FS.nodePermissions(lookup.node, "x"); 8603 - if (errCode) { 8604 - throw new FS.ErrnoError(errCode); 8605 - } 8606 - FS.currentPath = lookup.path; 8607 - }, 8608 - createDefaultDirectories: function() { 8609 - FS.mkdir("/tmp"); 8610 - FS.mkdir("/home"); 8611 - FS.mkdir("/home/web_user"); 8612 - }, 8613 - createDefaultDevices: function() { 8614 - FS.mkdir("/dev"); 8615 - FS.registerDevice(FS.makedev(1, 3), { 8616 - read: function() { 8617 - return 0; 8618 - }, 8619 - write: function(stream, buffer2, offset, length, pos) { 8620 - return length; 8621 - } 8622 - }); 8623 - FS.mkdev("/dev/null", FS.makedev(1, 3)); 8624 - TTY.register(FS.makedev(5, 0), TTY.default_tty_ops); 8625 - TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops); 8626 - FS.mkdev("/dev/tty", FS.makedev(5, 0)); 8627 - FS.mkdev("/dev/tty1", FS.makedev(6, 0)); 8628 - var random_device = getRandomDevice(); 8629 - FS.createDevice("/dev", "random", random_device); 8630 - FS.createDevice("/dev", "urandom", random_device); 8631 - FS.mkdir("/dev/shm"); 8632 - FS.mkdir("/dev/shm/tmp"); 8633 - }, 8634 - createSpecialDirectories: function() { 8635 - FS.mkdir("/proc"); 8636 - var proc_self = FS.mkdir("/proc/self"); 8637 - FS.mkdir("/proc/self/fd"); 8638 - FS.mount( 8639 - { 8640 - mount: function() { 8641 - var node = FS.createNode(proc_self, "fd", 16384 | 511, 73); 8642 - node.node_ops = { 8643 - lookup: function(parent, name) { 8644 - var fd = +name; 8645 - var stream = FS.getStream(fd); 8646 - if (!stream) 8647 - throw new FS.ErrnoError(8); 8648 - var ret = { 8649 - parent: null, 8650 - mount: { mountpoint: "fake" }, 8651 - node_ops: { 8652 - readlink: function() { 8653 - return stream.path; 8654 - } 8655 - } 8656 - }; 8657 - ret.parent = ret; 8658 - return ret; 8659 - } 8660 - }; 8661 - return node; 8662 - } 8663 - }, 8664 - {}, 8665 - "/proc/self/fd" 8666 - ); 8667 - }, 8668 - createStandardStreams: function() { 8669 - if (Module["stdin"]) { 8670 - FS.createDevice("/dev", "stdin", Module["stdin"]); 8671 - } else { 8672 - FS.symlink("/dev/tty", "/dev/stdin"); 8673 - } 8674 - if (Module["stdout"]) { 8675 - FS.createDevice("/dev", "stdout", null, Module["stdout"]); 8676 - } else { 8677 - FS.symlink("/dev/tty", "/dev/stdout"); 8678 - } 8679 - if (Module["stderr"]) { 8680 - FS.createDevice("/dev", "stderr", null, Module["stderr"]); 8681 - } else { 8682 - FS.symlink("/dev/tty1", "/dev/stderr"); 8683 - } 8684 - FS.open("/dev/stdin", 0); 8685 - FS.open("/dev/stdout", 1); 8686 - FS.open("/dev/stderr", 1); 8687 - }, 8688 - ensureErrnoError: function() { 8689 - if (FS.ErrnoError) 8690 - return; 8691 - FS.ErrnoError = function ErrnoError(errno, node) { 8692 - this.node = node; 8693 - this.setErrno = function(errno2) { 8694 - this.errno = errno2; 8695 - }; 8696 - this.setErrno(errno); 8697 - this.message = "FS error"; 8698 - }; 8699 - FS.ErrnoError.prototype = new Error(); 8700 - FS.ErrnoError.prototype.constructor = FS.ErrnoError; 8701 - [44].forEach(function(code) { 8702 - FS.genericErrors[code] = new FS.ErrnoError(code); 8703 - FS.genericErrors[code].stack = "<generic error, no stack>"; 8704 - }); 8705 - }, 8706 - staticInit: function() { 8707 - FS.ensureErrnoError(); 8708 - FS.nameTable = new Array(4096); 8709 - FS.mount(MEMFS, {}, "/"); 8710 - FS.createDefaultDirectories(); 8711 - FS.createDefaultDevices(); 8712 - FS.createSpecialDirectories(); 8713 - FS.filesystems = { MEMFS, NODEFS }; 8714 - }, 8715 - init: function(input, output, error) { 8716 - FS.init.initialized = true; 8717 - FS.ensureErrnoError(); 8718 - Module["stdin"] = input || Module["stdin"]; 8719 - Module["stdout"] = output || Module["stdout"]; 8720 - Module["stderr"] = error || Module["stderr"]; 8721 - FS.createStandardStreams(); 8722 - }, 8723 - quit: function() { 8724 - FS.init.initialized = false; 8725 - var fflush = Module["_fflush"]; 8726 - if (fflush) 8727 - fflush(0); 8728 - for (var i = 0; i < FS.streams.length; i++) { 8729 - var stream = FS.streams[i]; 8730 - if (!stream) { 8731 - continue; 8732 - } 8733 - FS.close(stream); 8734 - } 8735 - }, 8736 - getMode: function(canRead, canWrite) { 8737 - var mode = 0; 8738 - if (canRead) 8739 - mode |= 292 | 73; 8740 - if (canWrite) 8741 - mode |= 146; 8742 - return mode; 8743 - }, 8744 - findObject: function(path, dontResolveLastLink) { 8745 - var ret = FS.analyzePath(path, dontResolveLastLink); 8746 - if (ret.exists) { 8747 - return ret.object; 8748 - } else { 8749 - return null; 8750 - } 8751 - }, 8752 - analyzePath: function(path, dontResolveLastLink) { 8753 - try { 8754 - var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); 8755 - path = lookup.path; 8756 - } catch (e) { 8757 - } 8758 - var ret = { 8759 - isRoot: false, 8760 - exists: false, 8761 - error: 0, 8762 - name: null, 8763 - path: null, 8764 - object: null, 8765 - parentExists: false, 8766 - parentPath: null, 8767 - parentObject: null 8768 - }; 8769 - try { 8770 - var lookup = FS.lookupPath(path, { parent: true }); 8771 - ret.parentExists = true; 8772 - ret.parentPath = lookup.path; 8773 - ret.parentObject = lookup.node; 8774 - ret.name = PATH.basename(path); 8775 - lookup = FS.lookupPath(path, { follow: !dontResolveLastLink }); 8776 - ret.exists = true; 8777 - ret.path = lookup.path; 8778 - ret.object = lookup.node; 8779 - ret.name = lookup.node.name; 8780 - ret.isRoot = lookup.path === "/"; 8781 - } catch (e) { 8782 - ret.error = e.errno; 8783 - } 8784 - return ret; 8785 - }, 8786 - createPath: function(parent, path, canRead, canWrite) { 8787 - parent = typeof parent === "string" ? parent : FS.getPath(parent); 8788 - var parts = path.split("/").reverse(); 8789 - while (parts.length) { 8790 - var part = parts.pop(); 8791 - if (!part) 8792 - continue; 8793 - var current = PATH.join2(parent, part); 8794 - try { 8795 - FS.mkdir(current); 8796 - } catch (e) { 8797 - } 8798 - parent = current; 8799 - } 8800 - return current; 8801 - }, 8802 - createFile: function(parent, name, properties, canRead, canWrite) { 8803 - var path = PATH.join2( 8804 - typeof parent === "string" ? parent : FS.getPath(parent), 8805 - name 8806 - ); 8807 - var mode = FS.getMode(canRead, canWrite); 8808 - return FS.create(path, mode); 8809 - }, 8810 - createDataFile: function(parent, name, data, canRead, canWrite, canOwn) { 8811 - var path = name ? PATH.join2( 8812 - typeof parent === "string" ? parent : FS.getPath(parent), 8813 - name 8814 - ) : parent; 8815 - var mode = FS.getMode(canRead, canWrite); 8816 - var node = FS.create(path, mode); 8817 - if (data) { 8818 - if (typeof data === "string") { 8819 - var arr = new Array(data.length); 8820 - for (var i = 0, len = data.length; i < len; ++i) 8821 - arr[i] = data.charCodeAt(i); 8822 - data = arr; 8823 - } 8824 - FS.chmod(node, mode | 146); 8825 - var stream = FS.open(node, 577); 8826 - FS.write(stream, data, 0, data.length, 0, canOwn); 8827 - FS.close(stream); 8828 - FS.chmod(node, mode); 8829 - } 8830 - return node; 8831 - }, 8832 - createDevice: function(parent, name, input, output) { 8833 - var path = PATH.join2( 8834 - typeof parent === "string" ? parent : FS.getPath(parent), 8835 - name 8836 - ); 8837 - var mode = FS.getMode(!!input, !!output); 8838 - if (!FS.createDevice.major) 8839 - FS.createDevice.major = 64; 8840 - var dev = FS.makedev(FS.createDevice.major++, 0); 8841 - FS.registerDevice(dev, { 8842 - open: function(stream) { 8843 - stream.seekable = false; 8844 - }, 8845 - close: function(stream) { 8846 - if (output && output.buffer && output.buffer.length) { 8847 - output(10); 8848 - } 8849 - }, 8850 - read: function(stream, buffer2, offset, length, pos) { 8851 - var bytesRead = 0; 8852 - for (var i = 0; i < length; i++) { 8853 - var result; 8854 - try { 8855 - result = input(); 8856 - } catch (e) { 8857 - throw new FS.ErrnoError(29); 8858 - } 8859 - if (result === void 0 && bytesRead === 0) { 8860 - throw new FS.ErrnoError(6); 8861 - } 8862 - if (result === null || result === void 0) 8863 - break; 8864 - bytesRead++; 8865 - buffer2[offset + i] = result; 8866 - } 8867 - if (bytesRead) { 8868 - stream.node.timestamp = Date.now(); 8869 - } 8870 - return bytesRead; 8871 - }, 8872 - write: function(stream, buffer2, offset, length, pos) { 8873 - for (var i = 0; i < length; i++) { 8874 - try { 8875 - output(buffer2[offset + i]); 8876 - } catch (e) { 8877 - throw new FS.ErrnoError(29); 8878 - } 8879 - } 8880 - if (length) { 8881 - stream.node.timestamp = Date.now(); 8882 - } 8883 - return i; 8884 - } 8885 - }); 8886 - return FS.mkdev(path, mode, dev); 8887 - }, 8888 - forceLoadFile: function(obj) { 8889 - if (obj.isDevice || obj.isFolder || obj.link || obj.contents) 8890 - return true; 8891 - if (read_) { 8892 - try { 8893 - obj.contents = intArrayFromString(read_(obj.url), true); 8894 - obj.usedBytes = obj.contents.length; 8895 - } catch (e) { 8896 - throw new FS.ErrnoError(29); 8897 - } 8898 - } else { 8899 - throw new Error("Cannot load without read() or XMLHttpRequest."); 8900 - } 8901 - }, 8902 - createLazyFile: function(parent, name, url, canRead, canWrite) { 8903 - var properties; { 8904 - var properties = { isDevice: false, url }; 8905 - } 8906 - var node = FS.createFile(parent, name, properties, canRead, canWrite); 8907 - if (properties.contents) { 8908 - node.contents = properties.contents; 8909 - } else if (properties.url) { 8910 - node.contents = null; 8911 - node.url = properties.url; 8912 - } 8913 - Object.defineProperties(node, { 8914 - usedBytes: { 8915 - get: function() { 8916 - return this.contents.length; 8917 - } 8918 - } 8919 - }); 8920 - var stream_ops = {}; 8921 - var keys = Object.keys(node.stream_ops); 8922 - keys.forEach(function(key2) { 8923 - var fn = node.stream_ops[key2]; 8924 - stream_ops[key2] = function forceLoadLazyFile() { 8925 - FS.forceLoadFile(node); 8926 - return fn.apply(null, arguments); 8927 - }; 8928 - }); 8929 - stream_ops.read = function stream_ops_read(stream, buffer2, offset, length, position) { 8930 - FS.forceLoadFile(node); 8931 - var contents = stream.node.contents; 8932 - if (position >= contents.length) 8933 - return 0; 8934 - var size = Math.min(contents.length - position, length); 8935 - if (contents.slice) { 8936 - for (var i = 0; i < size; i++) { 8937 - buffer2[offset + i] = contents[position + i]; 8938 - } 8939 - } else { 8940 - for (var i = 0; i < size; i++) { 8941 - buffer2[offset + i] = contents.get(position + i); 8942 - } 8943 - } 8944 - return size; 8945 - }; 8946 - node.stream_ops = stream_ops; 8947 - return node; 8948 - }, 8949 - createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) { 8950 - Browser.init(); 8951 - var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent; 8952 - function processData(byteArray) { 8953 - function finish(byteArray2) { 8954 - if (preFinish) 8955 - preFinish(); 8956 - if (!dontCreateFile) { 8957 - FS.createDataFile( 8958 - parent, 8959 - name, 8960 - byteArray2, 8961 - canRead, 8962 - canWrite, 8963 - canOwn 8964 - ); 8965 - } 8966 - if (onload) 8967 - onload(); 8968 - removeRunDependency(); 8969 - } 8970 - var handled = false; 8971 - Module["preloadPlugins"].forEach(function(plugin) { 8972 - if (handled) 8973 - return; 8974 - if (plugin["canHandle"](fullname)) { 8975 - plugin["handle"](byteArray, fullname, finish, function() { 8976 - if (onerror) 8977 - onerror(); 8978 - removeRunDependency(); 8979 - }); 8980 - handled = true; 8981 - } 8982 - }); 8983 - if (!handled) 8984 - finish(byteArray); 8985 - } 8986 - addRunDependency(); 8987 - if (typeof url == "string") { 8988 - Browser.asyncLoad( 8989 - url, 8990 - function(byteArray) { 8991 - processData(byteArray); 8992 - }, 8993 - onerror 8994 - ); 8995 - } else { 8996 - processData(url); 8997 - } 8998 - }, 8999 - indexedDB: function() { 9000 - return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; 9001 - }, 9002 - DB_NAME: function() { 9003 - return "EM_FS_" + window.location.pathname; 9004 - }, 9005 - DB_VERSION: 20, 9006 - DB_STORE_NAME: "FILE_DATA", 9007 - saveFilesToDB: function(paths, onload, onerror) { 9008 - onload = onload || function() { 9009 - }; 9010 - onerror = onerror || function() { 9011 - }; 9012 - var indexedDB = FS.indexedDB(); 9013 - try { 9014 - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); 9015 - } catch (e) { 9016 - return onerror(e); 9017 - } 9018 - openRequest.onupgradeneeded = function openRequest_onupgradeneeded() { 9019 - out("creating db"); 9020 - var db = openRequest.result; 9021 - db.createObjectStore(FS.DB_STORE_NAME); 9022 - }; 9023 - openRequest.onsuccess = function openRequest_onsuccess() { 9024 - var db = openRequest.result; 9025 - var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite"); 9026 - var files = transaction.objectStore(FS.DB_STORE_NAME); 9027 - var ok = 0, fail = 0, total = paths.length; 9028 - function finish() { 9029 - if (fail == 0) 9030 - onload(); 9031 - else 9032 - onerror(); 9033 - } 9034 - paths.forEach(function(path) { 9035 - var putRequest = files.put( 9036 - FS.analyzePath(path).object.contents, 9037 - path 9038 - ); 9039 - putRequest.onsuccess = function putRequest_onsuccess() { 9040 - ok++; 9041 - if (ok + fail == total) 9042 - finish(); 9043 - }; 9044 - putRequest.onerror = function putRequest_onerror() { 9045 - fail++; 9046 - if (ok + fail == total) 9047 - finish(); 9048 - }; 9049 - }); 9050 - transaction.onerror = onerror; 9051 - }; 9052 - openRequest.onerror = onerror; 9053 - }, 9054 - loadFilesFromDB: function(paths, onload, onerror) { 9055 - onload = onload || function() { 9056 - }; 9057 - onerror = onerror || function() { 9058 - }; 9059 - var indexedDB = FS.indexedDB(); 9060 - try { 9061 - var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION); 9062 - } catch (e) { 9063 - return onerror(e); 9064 - } 9065 - openRequest.onupgradeneeded = onerror; 9066 - openRequest.onsuccess = function openRequest_onsuccess() { 9067 - var db = openRequest.result; 9068 - try { 9069 - var transaction = db.transaction([FS.DB_STORE_NAME], "readonly"); 9070 - } catch (e) { 9071 - onerror(e); 9072 - return; 9073 - } 9074 - var files = transaction.objectStore(FS.DB_STORE_NAME); 9075 - var ok = 0, fail = 0, total = paths.length; 9076 - function finish() { 9077 - if (fail == 0) 9078 - onload(); 9079 - else 9080 - onerror(); 9081 - } 9082 - paths.forEach(function(path) { 9083 - var getRequest = files.get(path); 9084 - getRequest.onsuccess = function getRequest_onsuccess() { 9085 - if (FS.analyzePath(path).exists) { 9086 - FS.unlink(path); 9087 - } 9088 - FS.createDataFile( 9089 - PATH.dirname(path), 9090 - PATH.basename(path), 9091 - getRequest.result, 9092 - true, 9093 - true, 9094 - true 9095 - ); 9096 - ok++; 9097 - if (ok + fail == total) 9098 - finish(); 9099 - }; 9100 - getRequest.onerror = function getRequest_onerror() { 9101 - fail++; 9102 - if (ok + fail == total) 9103 - finish(); 9104 - }; 9105 - }); 9106 - transaction.onerror = onerror; 9107 - }; 9108 - openRequest.onerror = onerror; 9109 - } 9110 - }; 9111 - var SYSCALLS = { 9112 - mappings: {}, 9113 - DEFAULT_POLLMASK: 5, 9114 - umask: 511, 9115 - calculateAt: function(dirfd, path, allowEmpty) { 9116 - if (path[0] === "/") { 9117 - return path; 9118 - } 9119 - var dir; 9120 - if (dirfd === -100) { 9121 - dir = FS.cwd(); 9122 - } else { 9123 - var dirstream = FS.getStream(dirfd); 9124 - if (!dirstream) 9125 - throw new FS.ErrnoError(8); 9126 - dir = dirstream.path; 9127 - } 9128 - if (path.length == 0) { 9129 - if (!allowEmpty) { 9130 - throw new FS.ErrnoError(44); 9131 - } 9132 - return dir; 9133 - } 9134 - return PATH.join2(dir, path); 9135 - }, 9136 - doStat: function(func, path, buf) { 9137 - try { 9138 - var stat = func(path); 9139 - } catch (e) { 9140 - if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { 9141 - return -54; 9142 - } 9143 - throw e; 9144 - } 9145 - HEAP32[buf >> 2] = stat.dev; 9146 - HEAP32[buf + 4 >> 2] = 0; 9147 - HEAP32[buf + 8 >> 2] = stat.ino; 9148 - HEAP32[buf + 12 >> 2] = stat.mode; 9149 - HEAP32[buf + 16 >> 2] = stat.nlink; 9150 - HEAP32[buf + 20 >> 2] = stat.uid; 9151 - HEAP32[buf + 24 >> 2] = stat.gid; 9152 - HEAP32[buf + 28 >> 2] = stat.rdev; 9153 - HEAP32[buf + 32 >> 2] = 0; 9154 - tempI64 = [ 9155 - stat.size >>> 0, 9156 - (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil( 9157 - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 9158 - ) >>> 0 : 0) 9159 - ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1]; 9160 - HEAP32[buf + 48 >> 2] = 4096; 9161 - HEAP32[buf + 52 >> 2] = stat.blocks; 9162 - HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0; 9163 - HEAP32[buf + 60 >> 2] = 0; 9164 - HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0; 9165 - HEAP32[buf + 68 >> 2] = 0; 9166 - HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0; 9167 - HEAP32[buf + 76 >> 2] = 0; 9168 - tempI64 = [ 9169 - stat.ino >>> 0, 9170 - (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil( 9171 - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 9172 - ) >>> 0 : 0) 9173 - ], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1]; 9174 - return 0; 9175 - }, 9176 - doMsync: function(addr, stream, len, flags, offset) { 9177 - var buffer2 = HEAPU8.slice(addr, addr + len); 9178 - FS.msync(stream, buffer2, offset, len, flags); 9179 - }, 9180 - doMkdir: function(path, mode) { 9181 - path = PATH.normalize(path); 9182 - if (path[path.length - 1] === "/") 9183 - path = path.substr(0, path.length - 1); 9184 - FS.mkdir(path, mode, 0); 9185 - return 0; 9186 - }, 9187 - doMknod: function(path, mode, dev) { 9188 - switch (mode & 61440) { 9189 - case 32768: 9190 - case 8192: 9191 - case 24576: 9192 - case 4096: 9193 - case 49152: 9194 - break; 9195 - default: 9196 - return -28; 9197 - } 9198 - FS.mknod(path, mode, dev); 9199 - return 0; 9200 - }, 9201 - doReadlink: function(path, buf, bufsize) { 9202 - if (bufsize <= 0) 9203 - return -28; 9204 - var ret = FS.readlink(path); 9205 - var len = Math.min(bufsize, lengthBytesUTF8(ret)); 9206 - var endChar = HEAP8[buf + len]; 9207 - stringToUTF8(ret, buf, bufsize + 1); 9208 - HEAP8[buf + len] = endChar; 9209 - return len; 9210 - }, 9211 - doAccess: function(path, amode) { 9212 - if (amode & ~7) { 9213 - return -28; 9214 - } 9215 - var node; 9216 - var lookup = FS.lookupPath(path, { follow: true }); 9217 - node = lookup.node; 9218 - if (!node) { 9219 - return -44; 9220 - } 9221 - var perms = ""; 9222 - if (amode & 4) 9223 - perms += "r"; 9224 - if (amode & 2) 9225 - perms += "w"; 9226 - if (amode & 1) 9227 - perms += "x"; 9228 - if (perms && FS.nodePermissions(node, perms)) { 9229 - return -2; 9230 - } 9231 - return 0; 9232 - }, 9233 - doDup: function(path, flags, suggestFD) { 9234 - var suggest = FS.getStream(suggestFD); 9235 - if (suggest) 9236 - FS.close(suggest); 9237 - return FS.open(path, flags, 0, suggestFD, suggestFD).fd; 9238 - }, 9239 - doReadv: function(stream, iov, iovcnt, offset) { 9240 - var ret = 0; 9241 - for (var i = 0; i < iovcnt; i++) { 9242 - var ptr = HEAP32[iov + i * 8 >> 2]; 9243 - var len = HEAP32[iov + (i * 8 + 4) >> 2]; 9244 - var curr = FS.read(stream, HEAP8, ptr, len, offset); 9245 - if (curr < 0) 9246 - return -1; 9247 - ret += curr; 9248 - if (curr < len) 9249 - break; 9250 - } 9251 - return ret; 9252 - }, 9253 - doWritev: function(stream, iov, iovcnt, offset) { 9254 - var ret = 0; 9255 - for (var i = 0; i < iovcnt; i++) { 9256 - var ptr = HEAP32[iov + i * 8 >> 2]; 9257 - var len = HEAP32[iov + (i * 8 + 4) >> 2]; 9258 - var curr = FS.write(stream, HEAP8, ptr, len, offset); 9259 - if (curr < 0) 9260 - return -1; 9261 - ret += curr; 9262 - } 9263 - return ret; 9264 - }, 9265 - varargs: void 0, 9266 - get: function() { 9267 - SYSCALLS.varargs += 4; 9268 - var ret = HEAP32[SYSCALLS.varargs - 4 >> 2]; 9269 - return ret; 9270 - }, 9271 - getStr: function(ptr) { 9272 - var ret = UTF8ToString(ptr); 9273 - return ret; 9274 - }, 9275 - getStreamFromFD: function(fd) { 9276 - var stream = FS.getStream(fd); 9277 - if (!stream) 9278 - throw new FS.ErrnoError(8); 9279 - return stream; 9280 - }, 9281 - get64: function(low, high) { 9282 - return low; 9283 - } 9284 - }; 9285 - function ___sys_chmod(path, mode) { 9286 - try { 9287 - path = SYSCALLS.getStr(path); 9288 - FS.chmod(path, mode); 9289 - return 0; 9290 - } catch (e) { 9291 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9292 - abort(e); 9293 - return -e.errno; 9294 - } 9295 - } 9296 - function setErrNo(value) { 9297 - HEAP32[___errno_location() >> 2] = value; 9298 - return value; 9299 - } 9300 - function ___sys_fcntl64(fd, cmd, varargs) { 9301 - SYSCALLS.varargs = varargs; 9302 - try { 9303 - var stream = SYSCALLS.getStreamFromFD(fd); 9304 - switch (cmd) { 9305 - case 0: { 9306 - var arg = SYSCALLS.get(); 9307 - if (arg < 0) { 9308 - return -28; 9309 - } 9310 - var newStream; 9311 - newStream = FS.open(stream.path, stream.flags, 0, arg); 9312 - return newStream.fd; 9313 - } 9314 - case 1: 9315 - case 2: 9316 - return 0; 9317 - case 3: 9318 - return stream.flags; 9319 - case 4: { 9320 - var arg = SYSCALLS.get(); 9321 - stream.flags |= arg; 9322 - return 0; 9323 - } 9324 - case 12: { 9325 - var arg = SYSCALLS.get(); 9326 - var offset = 0; 9327 - HEAP16[arg + offset >> 1] = 2; 9328 - return 0; 9329 - } 9330 - case 13: 9331 - case 14: 9332 - return 0; 9333 - case 16: 9334 - case 8: 9335 - return -28; 9336 - case 9: 9337 - setErrNo(28); 9338 - return -1; 9339 - default: { 9340 - return -28; 9341 - } 9342 - } 9343 - } catch (e) { 9344 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9345 - abort(e); 9346 - return -e.errno; 9347 - } 9348 - } 9349 - function ___sys_fstat64(fd, buf) { 9350 - try { 9351 - var stream = SYSCALLS.getStreamFromFD(fd); 9352 - return SYSCALLS.doStat(FS.stat, stream.path, buf); 9353 - } catch (e) { 9354 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9355 - abort(e); 9356 - return -e.errno; 9357 - } 9358 - } 9359 - function ___sys_ioctl(fd, op, varargs) { 9360 - SYSCALLS.varargs = varargs; 9361 - try { 9362 - var stream = SYSCALLS.getStreamFromFD(fd); 9363 - switch (op) { 9364 - case 21509: 9365 - case 21505: { 9366 - if (!stream.tty) 9367 - return -59; 9368 - return 0; 9369 - } 9370 - case 21510: 9371 - case 21511: 9372 - case 21512: 9373 - case 21506: 9374 - case 21507: 9375 - case 21508: { 9376 - if (!stream.tty) 9377 - return -59; 9378 - return 0; 9379 - } 9380 - case 21519: { 9381 - if (!stream.tty) 9382 - return -59; 9383 - var argp = SYSCALLS.get(); 9384 - HEAP32[argp >> 2] = 0; 9385 - return 0; 9386 - } 9387 - case 21520: { 9388 - if (!stream.tty) 9389 - return -59; 9390 - return -28; 9391 - } 9392 - case 21531: { 9393 - var argp = SYSCALLS.get(); 9394 - return FS.ioctl(stream, op, argp); 9395 - } 9396 - case 21523: { 9397 - if (!stream.tty) 9398 - return -59; 9399 - return 0; 9400 - } 9401 - case 21524: { 9402 - if (!stream.tty) 9403 - return -59; 9404 - return 0; 9405 - } 9406 - default: 9407 - abort("bad ioctl syscall " + op); 9408 - } 9409 - } catch (e) { 9410 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9411 - abort(e); 9412 - return -e.errno; 9413 - } 9414 - } 9415 - function ___sys_open(path, flags, varargs) { 9416 - SYSCALLS.varargs = varargs; 9417 - try { 9418 - var pathname = SYSCALLS.getStr(path); 9419 - var mode = varargs ? SYSCALLS.get() : 0; 9420 - var stream = FS.open(pathname, flags, mode); 9421 - return stream.fd; 9422 - } catch (e) { 9423 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9424 - abort(e); 9425 - return -e.errno; 9426 - } 9427 - } 9428 - function ___sys_rename(old_path, new_path) { 9429 - try { 9430 - old_path = SYSCALLS.getStr(old_path); 9431 - new_path = SYSCALLS.getStr(new_path); 9432 - FS.rename(old_path, new_path); 9433 - return 0; 9434 - } catch (e) { 9435 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9436 - abort(e); 9437 - return -e.errno; 9438 - } 9439 - } 9440 - function ___sys_rmdir(path) { 9441 - try { 9442 - path = SYSCALLS.getStr(path); 9443 - FS.rmdir(path); 9444 - return 0; 9445 - } catch (e) { 9446 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9447 - abort(e); 9448 - return -e.errno; 9449 - } 9450 - } 9451 - function ___sys_stat64(path, buf) { 9452 - try { 9453 - path = SYSCALLS.getStr(path); 9454 - return SYSCALLS.doStat(FS.stat, path, buf); 9455 - } catch (e) { 9456 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9457 - abort(e); 9458 - return -e.errno; 9459 - } 9460 - } 9461 - function ___sys_unlink(path) { 9462 - try { 9463 - path = SYSCALLS.getStr(path); 9464 - FS.unlink(path); 9465 - return 0; 9466 - } catch (e) { 9467 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9468 - abort(e); 9469 - return -e.errno; 9470 - } 9471 - } 9472 - function _emscripten_memcpy_big(dest, src, num) { 9473 - HEAPU8.copyWithin(dest, src, src + num); 9474 - } 9475 - function emscripten_realloc_buffer(size) { 9476 - try { 9477 - wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); 9478 - updateGlobalBufferAndViews(wasmMemory.buffer); 9479 - return 1; 9480 - } catch (e) { 9481 - } 9482 - } 9483 - function _emscripten_resize_heap(requestedSize) { 9484 - var oldSize = HEAPU8.length; 9485 - requestedSize = requestedSize >>> 0; 9486 - var maxHeapSize = 2147483648; 9487 - if (requestedSize > maxHeapSize) { 9488 - return false; 9489 - } 9490 - for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { 9491 - var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); 9492 - overGrownHeapSize = Math.min( 9493 - overGrownHeapSize, 9494 - requestedSize + 100663296 9495 - ); 9496 - var newSize = Math.min( 9497 - maxHeapSize, 9498 - alignUp(Math.max(requestedSize, overGrownHeapSize), 65536) 9499 - ); 9500 - var replacement = emscripten_realloc_buffer(newSize); 9501 - if (replacement) { 9502 - return true; 9503 - } 9504 - } 9505 - return false; 9506 - } 9507 - function _fd_close(fd) { 9508 - try { 9509 - var stream = SYSCALLS.getStreamFromFD(fd); 9510 - FS.close(stream); 9511 - return 0; 9512 - } catch (e) { 9513 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9514 - abort(e); 9515 - return e.errno; 9516 - } 9517 - } 9518 - function _fd_fdstat_get(fd, pbuf) { 9519 - try { 9520 - var stream = SYSCALLS.getStreamFromFD(fd); 9521 - var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4; 9522 - HEAP8[pbuf >> 0] = type; 9523 - return 0; 9524 - } catch (e) { 9525 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9526 - abort(e); 9527 - return e.errno; 9528 - } 9529 - } 9530 - function _fd_read(fd, iov, iovcnt, pnum) { 9531 - try { 9532 - var stream = SYSCALLS.getStreamFromFD(fd); 9533 - var num = SYSCALLS.doReadv(stream, iov, iovcnt); 9534 - HEAP32[pnum >> 2] = num; 9535 - return 0; 9536 - } catch (e) { 9537 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9538 - abort(e); 9539 - return e.errno; 9540 - } 9541 - } 9542 - function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { 9543 - try { 9544 - var stream = SYSCALLS.getStreamFromFD(fd); 9545 - var HIGH_OFFSET = 4294967296; 9546 - var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); 9547 - var DOUBLE_LIMIT = 9007199254740992; 9548 - if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { 9549 - return -61; 9550 - } 9551 - FS.llseek(stream, offset, whence); 9552 - tempI64 = [ 9553 - stream.position >>> 0, 9554 - (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil( 9555 - (tempDouble - +(~~tempDouble >>> 0)) / 4294967296 9556 - ) >>> 0 : 0) 9557 - ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1]; 9558 - if (stream.getdents && offset === 0 && whence === 0) 9559 - stream.getdents = null; 9560 - return 0; 9561 - } catch (e) { 9562 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9563 - abort(e); 9564 - return e.errno; 9565 - } 9566 - } 9567 - function _fd_write(fd, iov, iovcnt, pnum) { 9568 - try { 9569 - var stream = SYSCALLS.getStreamFromFD(fd); 9570 - var num = SYSCALLS.doWritev(stream, iov, iovcnt); 9571 - HEAP32[pnum >> 2] = num; 9572 - return 0; 9573 - } catch (e) { 9574 - if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) 9575 - abort(e); 9576 - return e.errno; 9577 - } 9578 - } 9579 - function _setTempRet0(val) { 9580 - } 9581 - function _time(ptr) { 9582 - var ret = Date.now() / 1e3 | 0; 9583 - if (ptr) { 9584 - HEAP32[ptr >> 2] = ret; 9585 - } 9586 - return ret; 9587 - } 9588 - function _tzset() { 9589 - if (_tzset.called) 9590 - return; 9591 - _tzset.called = true; 9592 - var currentYear = new Date().getFullYear(); 9593 - var winter = new Date(currentYear, 0, 1); 9594 - var summer = new Date(currentYear, 6, 1); 9595 - var winterOffset = winter.getTimezoneOffset(); 9596 - var summerOffset = summer.getTimezoneOffset(); 9597 - var stdTimezoneOffset = Math.max(winterOffset, summerOffset); 9598 - HEAP32[__get_timezone() >> 2] = stdTimezoneOffset * 60; 9599 - HEAP32[__get_daylight() >> 2] = Number(winterOffset != summerOffset); 9600 - function extractZone(date) { 9601 - var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/); 9602 - return match ? match[1] : "GMT"; 9603 - } 9604 - var winterName = extractZone(winter); 9605 - var summerName = extractZone(summer); 9606 - var winterNamePtr = allocateUTF8(winterName); 9607 - var summerNamePtr = allocateUTF8(summerName); 9608 - if (summerOffset < winterOffset) { 9609 - HEAP32[__get_tzname() >> 2] = winterNamePtr; 9610 - HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr; 9611 - } else { 9612 - HEAP32[__get_tzname() >> 2] = summerNamePtr; 9613 - HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr; 9614 - } 9615 - } 9616 - function _timegm(tmPtr) { 9617 - _tzset(); 9618 - var time = Date.UTC( 9619 - HEAP32[tmPtr + 20 >> 2] + 1900, 9620 - HEAP32[tmPtr + 16 >> 2], 9621 - HEAP32[tmPtr + 12 >> 2], 9622 - HEAP32[tmPtr + 8 >> 2], 9623 - HEAP32[tmPtr + 4 >> 2], 9624 - HEAP32[tmPtr >> 2], 9625 - 0 9626 - ); 9627 - var date = new Date(time); 9628 - HEAP32[tmPtr + 24 >> 2] = date.getUTCDay(); 9629 - var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0); 9630 - var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0; 9631 - HEAP32[tmPtr + 28 >> 2] = yday; 9632 - return date.getTime() / 1e3 | 0; 9633 - } 9634 - var FSNode = function(parent, name, mode, rdev) { 9635 - if (!parent) { 9636 - parent = this; 9637 - } 9638 - this.parent = parent; 9639 - this.mount = parent.mount; 9640 - this.mounted = null; 9641 - this.id = FS.nextInode++; 9642 - this.name = name; 9643 - this.mode = mode; 9644 - this.node_ops = {}; 9645 - this.stream_ops = {}; 9646 - this.rdev = rdev; 9647 - }; 9648 - var readMode = 292 | 73; 9649 - var writeMode = 146; 9650 - Object.defineProperties(FSNode.prototype, { 9651 - read: { 9652 - get: function() { 9653 - return (this.mode & readMode) === readMode; 9654 - }, 9655 - set: function(val) { 9656 - val ? this.mode |= readMode : this.mode &= ~readMode; 9657 - } 9658 - }, 9659 - write: { 9660 - get: function() { 9661 - return (this.mode & writeMode) === writeMode; 9662 - }, 9663 - set: function(val) { 9664 - val ? this.mode |= writeMode : this.mode &= ~writeMode; 9665 - } 9666 - }, 9667 - isFolder: { 9668 - get: function() { 9669 - return FS.isDir(this.mode); 9670 - } 9671 - }, 9672 - isDevice: { 9673 - get: function() { 9674 - return FS.isChrdev(this.mode); 9675 - } 9676 - } 9677 - }); 9678 - FS.FSNode = FSNode; 9679 - FS.staticInit(); 9680 - { 9681 - var fs = frozenFs; 9682 - var NODEJS_PATH = path__default.default; 9683 - NODEFS.staticInit(); 9684 - } 9685 - { 9686 - var _wrapNodeError = function(func) { 9687 - return function() { 9688 - try { 9689 - return func.apply(this, arguments); 9690 - } catch (e) { 9691 - if (!e.code) 9692 - throw e; 9693 - throw new FS.ErrnoError(ERRNO_CODES[e.code]); 9694 - } 9695 - }; 9696 - }; 9697 - var VFS = Object.assign({}, FS); 9698 - for (var _key in NODERAWFS) 9699 - FS[_key] = _wrapNodeError(NODERAWFS[_key]); 9700 - } 9701 - function intArrayFromString(stringy, dontAddNull, length) { 9702 - var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; 9703 - var u8array = new Array(len); 9704 - var numBytesWritten = stringToUTF8Array( 9705 - stringy, 9706 - u8array, 9707 - 0, 9708 - u8array.length 9709 - ); 9710 - if (dontAddNull) 9711 - u8array.length = numBytesWritten; 9712 - return u8array; 9713 - } 9714 - function intArrayFromBase64(s) { 9715 - { 9716 - var buf; 9717 - try { 9718 - buf = Buffer.from(s, "base64"); 9719 - } catch (_) { 9720 - buf = new Buffer(s, "base64"); 9721 - } 9722 - return new Uint8Array( 9723 - buf["buffer"], 9724 - buf["byteOffset"], 9725 - buf["byteLength"] 9726 - ); 9727 - } 9728 - } 9729 - function tryParseAsDataURI(filename) { 9730 - if (!isDataURI(filename)) { 9731 - return; 9732 - } 9733 - return intArrayFromBase64(filename.slice(dataURIPrefix.length)); 9734 - } 9735 - var asmLibraryArg = { 9736 - s: ___gmtime_r, 9737 - p: ___sys_chmod, 9738 - e: ___sys_fcntl64, 9739 - k: ___sys_fstat64, 9740 - o: ___sys_ioctl, 9741 - q: ___sys_open, 9742 - i: ___sys_rename, 9743 - r: ___sys_rmdir, 9744 - c: ___sys_stat64, 9745 - h: ___sys_unlink, 9746 - l: _emscripten_memcpy_big, 9747 - m: _emscripten_resize_heap, 9748 - f: _fd_close, 9749 - j: _fd_fdstat_get, 9750 - g: _fd_read, 9751 - n: _fd_seek, 9752 - d: _fd_write, 9753 - a: _setTempRet0, 9754 - b: _time, 9755 - t: _timegm 9756 - }; 9757 - var asm = createWasm(); 9758 - Module["___wasm_call_ctors"] = asm["v"]; 9759 - Module["_zip_ext_count_symlinks"] = asm["w"]; 9760 - Module["_zip_file_get_external_attributes"] = asm["x"]; 9761 - Module["_zipstruct_stat"] = asm["y"]; 9762 - Module["_zipstruct_statS"] = asm["z"]; 9763 - Module["_zipstruct_stat_name"] = asm["A"]; 9764 - Module["_zipstruct_stat_index"] = asm["B"]; 9765 - Module["_zipstruct_stat_size"] = asm["C"]; 9766 - Module["_zipstruct_stat_mtime"] = asm["D"]; 9767 - Module["_zipstruct_stat_crc"] = asm["E"]; 9768 - Module["_zipstruct_error"] = asm["F"]; 9769 - Module["_zipstruct_errorS"] = asm["G"]; 9770 - Module["_zipstruct_error_code_zip"] = asm["H"]; 9771 - Module["_zipstruct_stat_comp_size"] = asm["I"]; 9772 - Module["_zipstruct_stat_comp_method"] = asm["J"]; 9773 - Module["_zip_close"] = asm["K"]; 9774 - Module["_zip_delete"] = asm["L"]; 9775 - Module["_zip_dir_add"] = asm["M"]; 9776 - Module["_zip_discard"] = asm["N"]; 9777 - Module["_zip_error_init_with_code"] = asm["O"]; 9778 - Module["_zip_get_error"] = asm["P"]; 9779 - Module["_zip_file_get_error"] = asm["Q"]; 9780 - Module["_zip_error_strerror"] = asm["R"]; 9781 - Module["_zip_fclose"] = asm["S"]; 9782 - Module["_zip_file_add"] = asm["T"]; 9783 - Module["_free"] = asm["U"]; 9784 - var _malloc = Module["_malloc"] = asm["V"]; 9785 - var ___errno_location = Module["___errno_location"] = asm["W"]; 9786 - Module["_zip_source_error"] = asm["X"]; 9787 - Module["_zip_source_seek"] = asm["Y"]; 9788 - Module["_zip_file_set_external_attributes"] = asm["Z"]; 9789 - Module["_zip_file_set_mtime"] = asm["_"]; 9790 - Module["_zip_fopen"] = asm["$"]; 9791 - Module["_zip_fopen_index"] = asm["aa"]; 9792 - Module["_zip_fread"] = asm["ba"]; 9793 - Module["_zip_get_name"] = asm["ca"]; 9794 - Module["_zip_get_num_entries"] = asm["da"]; 9795 - Module["_zip_source_read"] = asm["ea"]; 9796 - Module["_zip_name_locate"] = asm["fa"]; 9797 - Module["_zip_open"] = asm["ga"]; 9798 - Module["_zip_open_from_source"] = asm["ha"]; 9799 - Module["_zip_set_file_compression"] = asm["ia"]; 9800 - Module["_zip_source_buffer"] = asm["ja"]; 9801 - Module["_zip_source_buffer_create"] = asm["ka"]; 9802 - Module["_zip_source_close"] = asm["la"]; 9803 - Module["_zip_source_free"] = asm["ma"]; 9804 - Module["_zip_source_keep"] = asm["na"]; 9805 - Module["_zip_source_open"] = asm["oa"]; 9806 - Module["_zip_source_set_mtime"] = asm["qa"]; 9807 - Module["_zip_source_tell"] = asm["ra"]; 9808 - Module["_zip_stat"] = asm["sa"]; 9809 - Module["_zip_stat_index"] = asm["ta"]; 9810 - var __get_tzname = Module["__get_tzname"] = asm["ua"]; 9811 - var __get_daylight = Module["__get_daylight"] = asm["va"]; 9812 - var __get_timezone = Module["__get_timezone"] = asm["wa"]; 9813 - var stackSave = Module["stackSave"] = asm["xa"]; 9814 - var stackRestore = Module["stackRestore"] = asm["ya"]; 9815 - var stackAlloc = Module["stackAlloc"] = asm["za"]; 9816 - Module["cwrap"] = cwrap; 9817 - Module["getValue"] = getValue; 9818 - var calledRun; 9819 - dependenciesFulfilled = function runCaller() { 9820 - if (!calledRun) 9821 - run(); 9822 - if (!calledRun) 9823 - dependenciesFulfilled = runCaller; 9824 - }; 9825 - function run(args) { 9826 - if (runDependencies > 0) { 9827 - return; 9828 - } 9829 - preRun(); 9830 - if (runDependencies > 0) { 9831 - return; 9832 - } 9833 - function doRun() { 9834 - if (calledRun) 9835 - return; 9836 - calledRun = true; 9837 - Module["calledRun"] = true; 9838 - if (ABORT) 9839 - return; 9840 - initRuntime(); 9841 - readyPromiseResolve(Module); 9842 - if (Module["onRuntimeInitialized"]) 9843 - Module["onRuntimeInitialized"](); 9844 - postRun(); 9845 - } 9846 - if (Module["setStatus"]) { 9847 - Module["setStatus"]("Running..."); 9848 - setTimeout(function() { 9849 - setTimeout(function() { 9850 - Module["setStatus"](""); 9851 - }, 1); 9852 - doRun(); 9853 - }, 1); 9854 - } else { 9855 - doRun(); 9856 - } 9857 - } 9858 - Module["run"] = run; 9859 - if (Module["preInit"]) { 9860 - if (typeof Module["preInit"] == "function") 9861 - Module["preInit"] = [Module["preInit"]]; 9862 - while (Module["preInit"].length > 0) { 9863 - Module["preInit"].pop()(); 9864 - } 9865 - } 9866 - run(); 9867 - return createModule2; 9868 - }; 9869 - }(); 9870 - module.exports = createModule; 9871 - }(libzipSync)); 9872 - 9873 - const createModule = libzipSync.exports; 9874 - 9875 - const number64 = [ 9876 - `number`, 9877 - `number` 9878 - ]; 9879 - var Errors = /* @__PURE__ */ ((Errors2) => { 9880 - Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK"; 9881 - Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK"; 9882 - Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME"; 9883 - Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE"; 9884 - Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK"; 9885 - Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ"; 9886 - Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE"; 9887 - Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC"; 9888 - Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED"; 9889 - Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT"; 9890 - Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS"; 9891 - Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN"; 9892 - Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN"; 9893 - Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB"; 9894 - Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY"; 9895 - Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED"; 9896 - Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP"; 9897 - Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF"; 9898 - Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL"; 9899 - Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP"; 9900 - Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL"; 9901 - Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS"; 9902 - Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE"; 9903 - Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED"; 9904 - Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP"; 9905 - Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY"; 9906 - Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD"; 9907 - Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD"; 9908 - Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP"; 9909 - Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE"; 9910 - Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL"; 9911 - Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA"; 9912 - return Errors2; 9913 - })(Errors || {}); 9914 - const makeInterface = (libzip) => ({ 9915 - get HEAP8() { 9916 - return libzip.HEAP8; 9917 - }, 9918 - get HEAPU8() { 9919 - return libzip.HEAPU8; 9920 - }, 9921 - errors: Errors, 9922 - SEEK_SET: 0, 9923 - SEEK_CUR: 1, 9924 - SEEK_END: 2, 9925 - ZIP_CHECKCONS: 4, 9926 - ZIP_CREATE: 1, 9927 - ZIP_EXCL: 2, 9928 - ZIP_TRUNCATE: 8, 9929 - ZIP_RDONLY: 16, 9930 - ZIP_FL_OVERWRITE: 8192, 9931 - ZIP_FL_COMPRESSED: 4, 9932 - ZIP_OPSYS_DOS: 0, 9933 - ZIP_OPSYS_AMIGA: 1, 9934 - ZIP_OPSYS_OPENVMS: 2, 9935 - ZIP_OPSYS_UNIX: 3, 9936 - ZIP_OPSYS_VM_CMS: 4, 9937 - ZIP_OPSYS_ATARI_ST: 5, 9938 - ZIP_OPSYS_OS_2: 6, 9939 - ZIP_OPSYS_MACINTOSH: 7, 9940 - ZIP_OPSYS_Z_SYSTEM: 8, 9941 - ZIP_OPSYS_CPM: 9, 9942 - ZIP_OPSYS_WINDOWS_NTFS: 10, 9943 - ZIP_OPSYS_MVS: 11, 9944 - ZIP_OPSYS_VSE: 12, 9945 - ZIP_OPSYS_ACORN_RISC: 13, 9946 - ZIP_OPSYS_VFAT: 14, 9947 - ZIP_OPSYS_ALTERNATE_MVS: 15, 9948 - ZIP_OPSYS_BEOS: 16, 9949 - ZIP_OPSYS_TANDEM: 17, 9950 - ZIP_OPSYS_OS_400: 18, 9951 - ZIP_OPSYS_OS_X: 19, 9952 - ZIP_CM_DEFAULT: -1, 9953 - ZIP_CM_STORE: 0, 9954 - ZIP_CM_DEFLATE: 8, 9955 - uint08S: libzip._malloc(1), 9956 - uint16S: libzip._malloc(2), 9957 - uint32S: libzip._malloc(4), 9958 - uint64S: libzip._malloc(8), 9959 - malloc: libzip._malloc, 9960 - free: libzip._free, 9961 - getValue: libzip.getValue, 9962 - open: libzip.cwrap(`zip_open`, `number`, [`string`, `number`, `number`]), 9963 - openFromSource: libzip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]), 9964 - close: libzip.cwrap(`zip_close`, `number`, [`number`]), 9965 - discard: libzip.cwrap(`zip_discard`, null, [`number`]), 9966 - getError: libzip.cwrap(`zip_get_error`, `number`, [`number`]), 9967 - getName: libzip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]), 9968 - getNumEntries: libzip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]), 9969 - delete: libzip.cwrap(`zip_delete`, `number`, [`number`, `number`]), 9970 - stat: libzip.cwrap(`zip_stat`, `number`, [`number`, `string`, `number`, `number`]), 9971 - statIndex: libzip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]), 9972 - fopen: libzip.cwrap(`zip_fopen`, `number`, [`number`, `string`, `number`]), 9973 - fopenIndex: libzip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]), 9974 - fread: libzip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]), 9975 - fclose: libzip.cwrap(`zip_fclose`, `number`, [`number`]), 9976 - dir: { 9977 - add: libzip.cwrap(`zip_dir_add`, `number`, [`number`, `string`]) 9978 - }, 9979 - file: { 9980 - add: libzip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]), 9981 - getError: libzip.cwrap(`zip_file_get_error`, `number`, [`number`]), 9982 - getExternalAttributes: libzip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), 9983 - setExternalAttributes: libzip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]), 9984 - setMtime: libzip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]), 9985 - setCompression: libzip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`]) 9986 - }, 9987 - ext: { 9988 - countSymlinks: libzip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`]) 9989 - }, 9990 - error: { 9991 - initWithCode: libzip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]), 9992 - strerror: libzip.cwrap(`zip_error_strerror`, `string`, [`number`]) 9993 - }, 9994 - name: { 9995 - locate: libzip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`]) 9996 - }, 9997 - source: { 9998 - fromUnattachedBuffer: libzip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]), 9999 - fromBuffer: libzip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]), 10000 - free: libzip.cwrap(`zip_source_free`, null, [`number`]), 10001 - keep: libzip.cwrap(`zip_source_keep`, null, [`number`]), 10002 - open: libzip.cwrap(`zip_source_open`, `number`, [`number`]), 10003 - close: libzip.cwrap(`zip_source_close`, `number`, [`number`]), 10004 - seek: libzip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]), 10005 - tell: libzip.cwrap(`zip_source_tell`, `number`, [`number`]), 10006 - read: libzip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]), 10007 - error: libzip.cwrap(`zip_source_error`, `number`, [`number`]), 10008 - setMtime: libzip.cwrap(`zip_source_set_mtime`, `number`, [`number`, `number`]) 10009 - }, 10010 - struct: { 10011 - stat: libzip.cwrap(`zipstruct_stat`, `number`, []), 10012 - statS: libzip.cwrap(`zipstruct_statS`, `number`, []), 10013 - statName: libzip.cwrap(`zipstruct_stat_name`, `string`, [`number`]), 10014 - statIndex: libzip.cwrap(`zipstruct_stat_index`, `number`, [`number`]), 10015 - statSize: libzip.cwrap(`zipstruct_stat_size`, `number`, [`number`]), 10016 - statCompSize: libzip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]), 10017 - statCompMethod: libzip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]), 10018 - statMtime: libzip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]), 10019 - statCrc: libzip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]), 10020 - error: libzip.cwrap(`zipstruct_error`, `number`, []), 10021 - errorS: libzip.cwrap(`zipstruct_errorS`, `number`, []), 10022 - errorCodeZip: libzip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`]) 10023 - } 10024 - }); 10025 - 10026 - let mod = null; 10027 - function getLibzipSync() { 10028 - if (mod === null) 10029 - mod = makeInterface(createModule()); 10030 - return mod; 10031 - } 10032 - 10033 - var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => { 10034 - ErrorCode2["API_ERROR"] = `API_ERROR`; 10035 - ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`; 10036 - ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`; 10037 - ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`; 10038 - ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`; 10039 - ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`; 10040 - ErrorCode2["INTERNAL"] = `INTERNAL`; 10041 - ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`; 10042 - ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`; 10043 - return ErrorCode2; 10044 - })(ErrorCode || {}); 10045 - const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([ 10046 - "BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */, 10047 - "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */, 10048 - "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */, 10049 - "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */, 10050 - "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */ 10051 - ]); 10052 - function makeError(pnpCode, message, data = {}, code) { 10053 - code != null ? code : code = MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode; 10054 - const propertySpec = { 10055 - configurable: true, 10056 - writable: true, 10057 - enumerable: false 10058 - }; 10059 - return Object.defineProperties(new Error(message), { 10060 - code: { 10061 - ...propertySpec, 10062 - value: code 10063 - }, 10064 - pnpCode: { 10065 - ...propertySpec, 10066 - value: pnpCode 10067 - }, 10068 - data: { 10069 - ...propertySpec, 10070 - value: data 10071 - } 10072 - }); 10073 - } 10074 - function getIssuerModule(parent) { 10075 - let issuer = parent; 10076 - while (issuer && (issuer.id === `[eval]` || issuer.id === `<repl>` || !issuer.filename)) 10077 - issuer = issuer.parent; 10078 - return issuer || null; 10079 - } 10080 - function getPathForDisplay(p) { 10081 - return npath.normalize(npath.fromPortablePath(p)); 10082 - } 10083 - 10084 - const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); 10085 - const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13; 10086 - 10087 - const builtinModules = new Set(require$$0.Module.builtinModules || Object.keys(process.binding(`natives`))); 10088 - const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request); 10089 - function readPackageScope(checkPath) { 10090 - const rootSeparatorIndex = checkPath.indexOf(npath.sep); 10091 - let separatorIndex; 10092 - do { 10093 - separatorIndex = checkPath.lastIndexOf(npath.sep); 10094 - checkPath = checkPath.slice(0, separatorIndex); 10095 - if (checkPath.endsWith(`${npath.sep}node_modules`)) 10096 - return false; 10097 - const pjson = readPackage(checkPath + npath.sep); 10098 - if (pjson) { 10099 - return { 10100 - data: pjson, 10101 - path: checkPath 10102 - }; 10103 - } 10104 - } while (separatorIndex > rootSeparatorIndex); 10105 - return false; 10106 - } 10107 - function readPackage(requestPath) { 10108 - const jsonPath = npath.resolve(requestPath, `package.json`); 10109 - if (!fs__default.default.existsSync(jsonPath)) 10110 - return null; 10111 - return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`)); 10112 - } 10113 - function ERR_REQUIRE_ESM(filename, parentPath = null) { 10114 - const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename); 10115 - const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported. 10116 - Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`; 10117 - const err = new Error(msg); 10118 - err.code = `ERR_REQUIRE_ESM`; 10119 - return err; 10120 - } 10121 - function reportRequiredFilesToWatchMode(files) { 10122 - if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { 10123 - files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename)))); 10124 - if (WATCH_MODE_MESSAGE_USES_ARRAYS) { 10125 - process.send({ "watch:require": files }); 10126 - } else { 10127 - for (const filename of files) { 10128 - process.send({ "watch:require": filename }); 10129 - } 10130 - } 10131 - } 10132 - } 10133 - 10134 - function applyPatch(pnpapi, opts) { 10135 - const defaultCache = {}; 10136 - let enableNativeHooks = true; 10137 - process.versions.pnp = String(pnpapi.VERSIONS.std); 10138 - const moduleExports = require$$0__default.default; 10139 - moduleExports.findPnpApi = (lookupSource) => { 10140 - const lookupPath = lookupSource instanceof url.URL ? url.fileURLToPath(lookupSource) : lookupSource; 10141 - const apiPath = opts.manager.findApiPathFor(lookupPath); 10142 - if (apiPath === null) 10143 - return null; 10144 - const apiEntry = opts.manager.getApiEntry(apiPath, true); 10145 - return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null; 10146 - }; 10147 - function getRequireStack(parent) { 10148 - const requireStack = []; 10149 - for (let cursor = parent; cursor; cursor = cursor.parent) 10150 - requireStack.push(cursor.filename || cursor.id); 10151 - return requireStack; 10152 - } 10153 - const originalModuleLoad = require$$0.Module._load; 10154 - require$$0.Module._load = function(request, parent, isMain) { 10155 - if (!enableNativeHooks) 10156 - return originalModuleLoad.call(require$$0.Module, request, parent, isMain); 10157 - if (isBuiltinModule(request)) { 10158 - try { 10159 - enableNativeHooks = false; 10160 - return originalModuleLoad.call(require$$0.Module, request, parent, isMain); 10161 - } finally { 10162 - enableNativeHooks = true; 10163 - } 10164 - } 10165 - const parentApiPath = opts.manager.getApiPathFromParent(parent); 10166 - const parentApi = parentApiPath !== null ? opts.manager.getApiEntry(parentApiPath, true).instance : null; 10167 - if (parentApi === null) 10168 - return originalModuleLoad(request, parent, isMain); 10169 - if (request === `pnpapi`) 10170 - return parentApi; 10171 - const modulePath = require$$0.Module._resolveFilename(request, parent, isMain); 10172 - const isOwnedByRuntime = parentApi !== null ? parentApi.findPackageLocator(modulePath) !== null : false; 10173 - const moduleApiPath = isOwnedByRuntime ? parentApiPath : opts.manager.findApiPathFor(npath.dirname(modulePath)); 10174 - const entry = moduleApiPath !== null ? opts.manager.getApiEntry(moduleApiPath) : { instance: null, cache: defaultCache }; 10175 - const cacheEntry = entry.cache[modulePath]; 10176 - if (cacheEntry) { 10177 - if (cacheEntry.loaded === false && cacheEntry.isLoading !== true) { 10178 - try { 10179 - cacheEntry.isLoading = true; 10180 - if (isMain) { 10181 - process.mainModule = cacheEntry; 10182 - cacheEntry.id = `.`; 10183 - } 10184 - cacheEntry.load(modulePath); 10185 - } finally { 10186 - cacheEntry.isLoading = false; 10187 - } 10188 - } 10189 - return cacheEntry.exports; 10190 - } 10191 - const module = new require$$0.Module(modulePath, parent != null ? parent : void 0); 10192 - module.pnpApiPath = moduleApiPath; 10193 - reportRequiredFilesToWatchMode([modulePath]); 10194 - entry.cache[modulePath] = module; 10195 - if (isMain) { 10196 - process.mainModule = module; 10197 - module.id = `.`; 10198 - } 10199 - let hasThrown = true; 10200 - try { 10201 - module.isLoading = true; 10202 - module.load(modulePath); 10203 - hasThrown = false; 10204 - } finally { 10205 - module.isLoading = false; 10206 - if (hasThrown) { 10207 - delete require$$0.Module._cache[modulePath]; 10208 - } 10209 - } 10210 - return module.exports; 10211 - }; 10212 - function getIssuerSpecsFromPaths(paths) { 10213 - return paths.map((path) => ({ 10214 - apiPath: opts.manager.findApiPathFor(path), 10215 - path, 10216 - module: null 10217 - })); 10218 - } 10219 - function getIssuerSpecsFromModule(module) { 10220 - var _a; 10221 - if (module && module.id !== `<repl>` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) { 10222 - return [{ 10223 - apiPath: opts.manager.findApiPathFor(module.paths[0]), 10224 - path: module.paths[0], 10225 - module 10226 - }]; 10227 - } 10228 - const issuer = getIssuerModule(module); 10229 - if (issuer !== null) { 10230 - const path = npath.dirname(issuer.filename); 10231 - const apiPath = opts.manager.getApiPathFromParent(issuer); 10232 - return [{ apiPath, path, module }]; 10233 - } else { 10234 - const path = process.cwd(); 10235 - const apiPath = (_a = opts.manager.findApiPathFor(npath.join(path, `[file]`))) != null ? _a : opts.manager.getApiPathFromParent(null); 10236 - return [{ apiPath, path, module }]; 10237 - } 10238 - } 10239 - function makeFakeParent(path) { 10240 - const fakeParent = new require$$0.Module(``); 10241 - const fakeFilePath = npath.join(path, `[file]`); 10242 - fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath); 10243 - return fakeParent; 10244 - } 10245 - const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/; 10246 - const originalModuleResolveFilename = require$$0.Module._resolveFilename; 10247 - require$$0.Module._resolveFilename = function(request, parent, isMain, options) { 10248 - if (isBuiltinModule(request)) 10249 - return request; 10250 - if (!enableNativeHooks) 10251 - return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options); 10252 - if (options && options.plugnplay === false) { 10253 - const { plugnplay, ...rest } = options; 10254 - const forwardedOptions = Object.keys(rest).length > 0 ? rest : void 0; 10255 - try { 10256 - enableNativeHooks = false; 10257 - return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions); 10258 - } finally { 10259 - enableNativeHooks = true; 10260 - } 10261 - } 10262 - if (options) { 10263 - const optionNames = new Set(Object.keys(options)); 10264 - optionNames.delete(`paths`); 10265 - optionNames.delete(`plugnplay`); 10266 - if (optionNames.size > 0) { 10267 - throw makeError( 10268 - ErrorCode.UNSUPPORTED, 10269 - `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})` 10270 - ); 10271 - } 10272 - } 10273 - const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent); 10274 - if (request.match(pathRegExp) === null) { 10275 - const parentDirectory = (parent == null ? void 0 : parent.filename) != null ? npath.dirname(parent.filename) : null; 10276 - const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null; 10277 - if (absoluteRequest !== null) { 10278 - const apiPath = parentDirectory === npath.dirname(absoluteRequest) && (parent == null ? void 0 : parent.pnpApiPath) ? parent.pnpApiPath : opts.manager.findApiPathFor(absoluteRequest); 10279 - if (apiPath !== null) { 10280 - issuerSpecs.unshift({ 10281 - apiPath, 10282 - path: parentDirectory, 10283 - module: null 10284 - }); 10285 - } 10286 - } 10287 - } 10288 - let firstError; 10289 - for (const { apiPath, path, module } of issuerSpecs) { 10290 - let resolution; 10291 - const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null; 10292 - try { 10293 - if (issuerApi !== null) { 10294 - resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null); 10295 - } else { 10296 - if (path === null) 10297 - throw new Error(`Assertion failed: Expected the path to be set`); 10298 - resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain); 10299 - } 10300 - } catch (error) { 10301 - firstError = firstError || error; 10302 - continue; 10303 - } 10304 - if (resolution !== null) { 10305 - return resolution; 10306 - } 10307 - } 10308 - const requireStack = getRequireStack(parent); 10309 - Object.defineProperty(firstError, `requireStack`, { 10310 - configurable: true, 10311 - writable: true, 10312 - enumerable: false, 10313 - value: requireStack 10314 - }); 10315 - if (requireStack.length > 0) 10316 - firstError.message += ` 10317 - Require stack: 10318 - - ${requireStack.join(` 10319 - - `)}`; 10320 - if (typeof firstError.pnpCode === `string`) 10321 - Error.captureStackTrace(firstError); 10322 - throw firstError; 10323 - }; 10324 - const originalFindPath = require$$0.Module._findPath; 10325 - require$$0.Module._findPath = function(request, paths, isMain) { 10326 - if (request === `pnpapi`) 10327 - return false; 10328 - if (!enableNativeHooks) 10329 - return originalFindPath.call(require$$0.Module, request, paths, isMain); 10330 - const isAbsolute = npath.isAbsolute(request); 10331 - if (isAbsolute) 10332 - paths = [``]; 10333 - else if (!paths || paths.length === 0) 10334 - return false; 10335 - for (const path of paths) { 10336 - let resolution; 10337 - try { 10338 - const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path); 10339 - if (pnpApiPath !== null) { 10340 - const api = opts.manager.getApiEntry(pnpApiPath, true).instance; 10341 - resolution = api.resolveRequest(request, path) || false; 10342 - } else { 10343 - resolution = originalFindPath.call(require$$0.Module, request, [path], isMain); 10344 - } 10345 - } catch (error) { 10346 - continue; 10347 - } 10348 - if (resolution) { 10349 - return resolution; 10350 - } 10351 - } 10352 - return false; 10353 - }; 10354 - const originalExtensionJSFunction = require$$0.Module._extensions[`.js`]; 10355 - require$$0.Module._extensions[`.js`] = function(module, filename) { 10356 - var _a, _b; 10357 - if (filename.endsWith(`.js`)) { 10358 - const pkg = readPackageScope(filename); 10359 - if (pkg && ((_a = pkg.data) == null ? void 0 : _a.type) === `module`) { 10360 - const err = ERR_REQUIRE_ESM(filename, (_b = module.parent) == null ? void 0 : _b.filename); 10361 - Error.captureStackTrace(err); 10362 - throw err; 10363 - } 10364 - } 10365 - originalExtensionJSFunction.call(this, module, filename); 10366 - }; 10367 - const originalDlopen = process.dlopen; 10368 - process.dlopen = function(...args) { 10369 - const [module, filename, ...rest] = args; 10370 - return originalDlopen.call( 10371 - this, 10372 - module, 10373 - npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))), 10374 - ...rest 10375 - ); 10376 - }; 10377 - const originalEmit = process.emit; 10378 - process.emit = function(name, data, ...args) { 10379 - if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`))) 10380 - return false; 10381 - return originalEmit.apply(process, arguments); 10382 - }; 10383 - patchFs(fs__default.default, new PosixFS(opts.fakeFs)); 10384 - } 10385 - 10386 - function hydrateRuntimeState(data, { basePath }) { 10387 - const portablePath = npath.toPortablePath(basePath); 10388 - const absolutePortablePath = ppath.resolve(portablePath); 10389 - const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null; 10390 - const packageLocatorsByLocations = /* @__PURE__ */ new Map(); 10391 - const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => { 10392 - return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => { 10393 - var _a; 10394 - if (packageName === null !== (packageReference === null)) 10395 - throw new Error(`Assertion failed: The name and reference should be null, or neither should`); 10396 - const discardFromLookup = (_a = packageInformationData.discardFromLookup) != null ? _a : false; 10397 - const packageLocator = { name: packageName, reference: packageReference }; 10398 - const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation); 10399 - if (!entry) { 10400 - packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup }); 10401 - } else { 10402 - entry.discardFromLookup = entry.discardFromLookup && discardFromLookup; 10403 - if (!discardFromLookup) { 10404 - entry.locator = packageLocator; 10405 - } 10406 - } 10407 - let resolvedPackageLocation = null; 10408 - return [packageReference, { 10409 - packageDependencies: new Map(packageInformationData.packageDependencies), 10410 - packagePeers: new Set(packageInformationData.packagePeers), 10411 - linkType: packageInformationData.linkType, 10412 - discardFromLookup, 10413 - get packageLocation() { 10414 - return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation)); 10415 - } 10416 - }]; 10417 - }))]; 10418 - })); 10419 - const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => { 10420 - return [packageName, new Set(packageReferences)]; 10421 - })); 10422 - const fallbackPool = new Map(data.fallbackPool); 10423 - const dependencyTreeRoots = data.dependencyTreeRoots; 10424 - const enableTopLevelFallback = data.enableTopLevelFallback; 10425 - return { 10426 - basePath: portablePath, 10427 - dependencyTreeRoots, 10428 - enableTopLevelFallback, 10429 - fallbackExclusionList, 10430 - fallbackPool, 10431 - ignorePattern, 10432 - packageLocatorsByLocations, 10433 - packageRegistry 10434 - }; 10435 - } 10436 - 10437 - /** 10438 - * @param {object} exports 10439 - * @param {Set<string>} keys 10440 - */ 10441 - function loop(exports, keys) { 10442 - if (typeof exports === 'string') { 10443 - return exports; 10444 - } 10445 - 10446 - if (exports) { 10447 - let idx, tmp; 10448 - if (Array.isArray(exports)) { 10449 - for (idx=0; idx < exports.length; idx++) { 10450 - if (tmp = loop(exports[idx], keys)) return tmp; 10451 - } 10452 - } else { 10453 - for (idx in exports) { 10454 - if (keys.has(idx)) { 10455 - return loop(exports[idx], keys); 10456 - } 10457 - } 10458 - } 10459 - } 10460 - } 10461 - 10462 - /** 10463 - * @param {string} name The package name 10464 - * @param {string} entry The target entry, eg "." 10465 - * @param {number} [condition] Unmatched condition? 10466 - */ 10467 - function bail(name, entry, condition) { 10468 - throw new Error( 10469 - condition 10470 - ? `No known conditions for "${entry}" entry in "${name}" package` 10471 - : `Missing "${entry}" export in "${name}" package` 10472 - ); 10473 - } 10474 - 10475 - /** 10476 - * @param {string} name the package name 10477 - * @param {string} entry the target path/import 10478 - */ 10479 - function toName(name, entry) { 10480 - return entry === name ? '.' 10481 - : entry[0] === '.' ? entry 10482 - : entry.replace(new RegExp('^' + name + '\/'), './'); 10483 - } 10484 - 10485 - /** 10486 - * @param {object} pkg package.json contents 10487 - * @param {string} [entry] entry name or import path 10488 - * @param {object} [options] 10489 - * @param {boolean} [options.browser] 10490 - * @param {boolean} [options.require] 10491 - * @param {string[]} [options.conditions] 10492 - * @param {boolean} [options.unsafe] 10493 - */ 10494 - function resolve(pkg, entry='.', options={}) { 10495 - let { name, exports } = pkg; 10496 - 10497 - if (exports) { 10498 - let { browser, require, unsafe, conditions=[] } = options; 10499 - 10500 - let target = toName(name, entry); 10501 - if (target[0] !== '.') target = './' + target; 10502 - 10503 - if (typeof exports === 'string') { 10504 - return target === '.' ? exports : bail(name, target); 10505 - } 10506 - 10507 - let allows = new Set(['default', ...conditions]); 10508 - unsafe || allows.add(require ? 'require' : 'import'); 10509 - unsafe || allows.add(browser ? 'browser' : 'node'); 10510 - 10511 - let key, tmp, isSingle=false; 10512 - 10513 - for (key in exports) { 10514 - isSingle = key[0] !== '.'; 10515 - break; 10516 - } 10517 - 10518 - if (isSingle) { 10519 - return target === '.' 10520 - ? loop(exports, allows) || bail(name, target, 1) 10521 - : bail(name, target); 10522 - } 10523 - 10524 - if (tmp = exports[target]) { 10525 - return loop(tmp, allows) || bail(name, target, 1); 10526 - } 10527 - 10528 - for (key in exports) { 10529 - tmp = key[key.length - 1]; 10530 - if (tmp === '/' && target.startsWith(key)) { 10531 - return (tmp = loop(exports[key], allows)) 10532 - ? (tmp + target.substring(key.length)) 10533 - : bail(name, target, 1); 10534 - } 10535 - if (tmp === '*' && target.startsWith(key.slice(0, -1))) { 10536 - // do not trigger if no *content* to inject 10537 - if (target.substring(key.length - 1).length > 0) { 10538 - return (tmp = loop(exports[key], allows)) 10539 - ? tmp.replace('*', target.substring(key.length - 1)) 10540 - : bail(name, target, 1); 10541 - } 10542 - } 10543 - } 10544 - 10545 - return bail(name, target); 10546 - } 10547 - } 10548 - 10549 - const ArrayIsArray = Array.isArray; 10550 - const JSONStringify = JSON.stringify; 10551 - const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; 10552 - const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); 10553 - const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); 10554 - const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); 10555 - const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); 10556 - const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); 10557 - const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); 10558 - const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); 10559 - const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); 10560 - const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); 10561 - const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); 10562 - const SafeMap = Map; 10563 - const JSONParse = JSON.parse; 10564 - 10565 - function createErrorType(code, messageCreator, errorType) { 10566 - return class extends errorType { 10567 - constructor(...args) { 10568 - super(messageCreator(...args)); 10569 - this.code = code; 10570 - this.name = `${errorType.name} [${code}]`; 10571 - } 10572 - }; 10573 - } 10574 - const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( 10575 - `ERR_PACKAGE_IMPORT_NOT_DEFINED`, 10576 - (specifier, packagePath, base) => { 10577 - return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; 10578 - }, 10579 - TypeError 10580 - ); 10581 - const ERR_INVALID_MODULE_SPECIFIER = createErrorType( 10582 - `ERR_INVALID_MODULE_SPECIFIER`, 10583 - (request, reason, base = void 0) => { 10584 - return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; 10585 - }, 10586 - TypeError 10587 - ); 10588 - const ERR_INVALID_PACKAGE_TARGET = createErrorType( 10589 - `ERR_INVALID_PACKAGE_TARGET`, 10590 - (pkgPath, key, target, isImport = false, base = void 0) => { 10591 - const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); 10592 - if (key === `.`) { 10593 - assert__default.default(isImport === false); 10594 - return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; 10595 - } 10596 - return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( 10597 - target 10598 - )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; 10599 - }, 10600 - Error 10601 - ); 10602 - const ERR_INVALID_PACKAGE_CONFIG = createErrorType( 10603 - `ERR_INVALID_PACKAGE_CONFIG`, 10604 - (path, base, message) => { 10605 - return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; 10606 - }, 10607 - Error 10608 - ); 10609 - 10610 - function filterOwnProperties(source, keys) { 10611 - const filtered = /* @__PURE__ */ Object.create(null); 10612 - for (let i = 0; i < keys.length; i++) { 10613 - const key = keys[i]; 10614 - if (ObjectPrototypeHasOwnProperty(source, key)) { 10615 - filtered[key] = source[key]; 10616 - } 10617 - } 10618 - return filtered; 10619 - } 10620 - 10621 - const packageJSONCache = new SafeMap(); 10622 - function getPackageConfig(path, specifier, base, readFileSyncFn) { 10623 - const existing = packageJSONCache.get(path); 10624 - if (existing !== void 0) { 10625 - return existing; 10626 - } 10627 - const source = readFileSyncFn(path); 10628 - if (source === void 0) { 10629 - const packageConfig2 = { 10630 - pjsonPath: path, 10631 - exists: false, 10632 - main: void 0, 10633 - name: void 0, 10634 - type: "none", 10635 - exports: void 0, 10636 - imports: void 0 10637 - }; 10638 - packageJSONCache.set(path, packageConfig2); 10639 - return packageConfig2; 10640 - } 10641 - let packageJSON; 10642 - try { 10643 - packageJSON = JSONParse(source); 10644 - } catch (error) { 10645 - throw new ERR_INVALID_PACKAGE_CONFIG( 10646 - path, 10647 - (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier), 10648 - error.message 10649 - ); 10650 - } 10651 - let { imports, main, name, type } = filterOwnProperties(packageJSON, [ 10652 - "imports", 10653 - "main", 10654 - "name", 10655 - "type" 10656 - ]); 10657 - const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; 10658 - if (typeof imports !== "object" || imports === null) { 10659 - imports = void 0; 10660 - } 10661 - if (typeof main !== "string") { 10662 - main = void 0; 10663 - } 10664 - if (typeof name !== "string") { 10665 - name = void 0; 10666 - } 10667 - if (type !== "module" && type !== "commonjs") { 10668 - type = "none"; 10669 - } 10670 - const packageConfig = { 10671 - pjsonPath: path, 10672 - exists: true, 10673 - main, 10674 - name, 10675 - type, 10676 - exports, 10677 - imports 10678 - }; 10679 - packageJSONCache.set(path, packageConfig); 10680 - return packageConfig; 10681 - } 10682 - function getPackageScopeConfig(resolved, readFileSyncFn) { 10683 - let packageJSONUrl = new URL("./package.json", resolved); 10684 - while (true) { 10685 - const packageJSONPath2 = packageJSONUrl.pathname; 10686 - if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { 10687 - break; 10688 - } 10689 - const packageConfig2 = getPackageConfig( 10690 - url.fileURLToPath(packageJSONUrl), 10691 - resolved, 10692 - void 0, 10693 - readFileSyncFn 10694 - ); 10695 - if (packageConfig2.exists) { 10696 - return packageConfig2; 10697 - } 10698 - const lastPackageJSONUrl = packageJSONUrl; 10699 - packageJSONUrl = new URL("../package.json", packageJSONUrl); 10700 - if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { 10701 - break; 10702 - } 10703 - } 10704 - const packageJSONPath = url.fileURLToPath(packageJSONUrl); 10705 - const packageConfig = { 10706 - pjsonPath: packageJSONPath, 10707 - exists: false, 10708 - main: void 0, 10709 - name: void 0, 10710 - type: "none", 10711 - exports: void 0, 10712 - imports: void 0 10713 - }; 10714 - packageJSONCache.set(packageJSONPath, packageConfig); 10715 - return packageConfig; 10716 - } 10717 - 10718 - /** 10719 - @license 10720 - Copyright Node.js contributors. All rights reserved. 10721 - 10722 - Permission is hereby granted, free of charge, to any person obtaining a copy 10723 - of this software and associated documentation files (the "Software"), to 10724 - deal in the Software without restriction, including without limitation the 10725 - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 10726 - sell copies of the Software, and to permit persons to whom the Software is 10727 - furnished to do so, subject to the following conditions: 10728 - 10729 - The above copyright notice and this permission notice shall be included in 10730 - all copies or substantial portions of the Software. 10731 - 10732 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 10733 - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 10734 - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 10735 - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 10736 - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 10737 - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 10738 - IN THE SOFTWARE. 10739 - */ 10740 - function throwImportNotDefined(specifier, packageJSONUrl, base) { 10741 - throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( 10742 - specifier, 10743 - packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)), 10744 - url.fileURLToPath(base) 10745 - ); 10746 - } 10747 - function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { 10748 - const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`; 10749 - throw new ERR_INVALID_MODULE_SPECIFIER( 10750 - subpath, 10751 - reason, 10752 - base && url.fileURLToPath(base) 10753 - ); 10754 - } 10755 - function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { 10756 - if (typeof target === "object" && target !== null) { 10757 - target = JSONStringify(target, null, ""); 10758 - } else { 10759 - target = `${target}`; 10760 - } 10761 - throw new ERR_INVALID_PACKAGE_TARGET( 10762 - url.fileURLToPath(new URL(".", packageJSONUrl)), 10763 - subpath, 10764 - target, 10765 - internal, 10766 - base && url.fileURLToPath(base) 10767 - ); 10768 - } 10769 - const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; 10770 - const patternRegEx = /\*/g; 10771 - function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { 10772 - if (subpath !== "" && !pattern && target[target.length - 1] !== "/") 10773 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 10774 - if (!StringPrototypeStartsWith(target, "./")) { 10775 - if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { 10776 - let isURL = false; 10777 - try { 10778 - new URL(target); 10779 - isURL = true; 10780 - } catch { 10781 - } 10782 - if (!isURL) { 10783 - const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; 10784 - return exportTarget; 10785 - } 10786 - } 10787 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 10788 - } 10789 - if (RegExpPrototypeExec( 10790 - invalidSegmentRegEx, 10791 - StringPrototypeSlice(target, 2) 10792 - ) !== null) 10793 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 10794 - const resolved = new URL(target, packageJSONUrl); 10795 - const resolvedPath = resolved.pathname; 10796 - const packagePath = new URL(".", packageJSONUrl).pathname; 10797 - if (!StringPrototypeStartsWith(resolvedPath, packagePath)) 10798 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 10799 - if (subpath === "") 10800 - return resolved; 10801 - if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { 10802 - const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; 10803 - throwInvalidSubpath(request, packageJSONUrl, internal, base); 10804 - } 10805 - if (pattern) { 10806 - return new URL( 10807 - RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) 10808 - ); 10809 - } 10810 - return new URL(subpath, resolved); 10811 - } 10812 - function isArrayIndex(key) { 10813 - const keyNum = +key; 10814 - if (`${keyNum}` !== key) 10815 - return false; 10816 - return keyNum >= 0 && keyNum < 4294967295; 10817 - } 10818 - function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { 10819 - if (typeof target === "string") { 10820 - return resolvePackageTargetString( 10821 - target, 10822 - subpath, 10823 - packageSubpath, 10824 - packageJSONUrl, 10825 - base, 10826 - pattern, 10827 - internal); 10828 - } else if (ArrayIsArray(target)) { 10829 - if (target.length === 0) { 10830 - return null; 10831 - } 10832 - let lastException; 10833 - for (let i = 0; i < target.length; i++) { 10834 - const targetItem = target[i]; 10835 - let resolveResult; 10836 - try { 10837 - resolveResult = resolvePackageTarget( 10838 - packageJSONUrl, 10839 - targetItem, 10840 - subpath, 10841 - packageSubpath, 10842 - base, 10843 - pattern, 10844 - internal, 10845 - conditions 10846 - ); 10847 - } catch (e) { 10848 - lastException = e; 10849 - if (e.code === "ERR_INVALID_PACKAGE_TARGET") { 10850 - continue; 10851 - } 10852 - throw e; 10853 - } 10854 - if (resolveResult === void 0) { 10855 - continue; 10856 - } 10857 - if (resolveResult === null) { 10858 - lastException = null; 10859 - continue; 10860 - } 10861 - return resolveResult; 10862 - } 10863 - if (lastException === void 0 || lastException === null) 10864 - return lastException; 10865 - throw lastException; 10866 - } else if (typeof target === "object" && target !== null) { 10867 - const keys = ObjectGetOwnPropertyNames(target); 10868 - for (let i = 0; i < keys.length; i++) { 10869 - const key = keys[i]; 10870 - if (isArrayIndex(key)) { 10871 - throw new ERR_INVALID_PACKAGE_CONFIG( 10872 - url.fileURLToPath(packageJSONUrl), 10873 - base, 10874 - '"exports" cannot contain numeric property keys.' 10875 - ); 10876 - } 10877 - } 10878 - for (let i = 0; i < keys.length; i++) { 10879 - const key = keys[i]; 10880 - if (key === "default" || conditions.has(key)) { 10881 - const conditionalTarget = target[key]; 10882 - const resolveResult = resolvePackageTarget( 10883 - packageJSONUrl, 10884 - conditionalTarget, 10885 - subpath, 10886 - packageSubpath, 10887 - base, 10888 - pattern, 10889 - internal, 10890 - conditions 10891 - ); 10892 - if (resolveResult === void 0) 10893 - continue; 10894 - return resolveResult; 10895 - } 10896 - } 10897 - return void 0; 10898 - } else if (target === null) { 10899 - return null; 10900 - } 10901 - throwInvalidPackageTarget( 10902 - packageSubpath, 10903 - target, 10904 - packageJSONUrl, 10905 - internal, 10906 - base 10907 - ); 10908 - } 10909 - function patternKeyCompare(a, b) { 10910 - const aPatternIndex = StringPrototypeIndexOf(a, "*"); 10911 - const bPatternIndex = StringPrototypeIndexOf(b, "*"); 10912 - const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; 10913 - const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; 10914 - if (baseLenA > baseLenB) 10915 - return -1; 10916 - if (baseLenB > baseLenA) 10917 - return 1; 10918 - if (aPatternIndex === -1) 10919 - return 1; 10920 - if (bPatternIndex === -1) 10921 - return -1; 10922 - if (a.length > b.length) 10923 - return -1; 10924 - if (b.length > a.length) 10925 - return 1; 10926 - return 0; 10927 - } 10928 - function packageImportsResolve({ 10929 - name, 10930 - base, 10931 - conditions, 10932 - readFileSyncFn 10933 - }) { 10934 - if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { 10935 - const reason = "is not a valid internal imports specifier name"; 10936 - throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base)); 10937 - } 10938 - let packageJSONUrl; 10939 - const packageConfig = getPackageScopeConfig(base, readFileSyncFn); 10940 - if (packageConfig.exists) { 10941 - packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath); 10942 - const imports = packageConfig.imports; 10943 - if (imports) { 10944 - if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { 10945 - const resolveResult = resolvePackageTarget( 10946 - packageJSONUrl, 10947 - imports[name], 10948 - "", 10949 - name, 10950 - base, 10951 - false, 10952 - true, 10953 - conditions 10954 - ); 10955 - if (resolveResult != null) { 10956 - return resolveResult; 10957 - } 10958 - } else { 10959 - let bestMatch = ""; 10960 - let bestMatchSubpath; 10961 - const keys = ObjectGetOwnPropertyNames(imports); 10962 - for (let i = 0; i < keys.length; i++) { 10963 - const key = keys[i]; 10964 - const patternIndex = StringPrototypeIndexOf(key, "*"); 10965 - if (patternIndex !== -1 && StringPrototypeStartsWith( 10966 - name, 10967 - StringPrototypeSlice(key, 0, patternIndex) 10968 - )) { 10969 - const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); 10970 - if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { 10971 - bestMatch = key; 10972 - bestMatchSubpath = StringPrototypeSlice( 10973 - name, 10974 - patternIndex, 10975 - name.length - patternTrailer.length 10976 - ); 10977 - } 10978 - } 10979 - } 10980 - if (bestMatch) { 10981 - const target = imports[bestMatch]; 10982 - const resolveResult = resolvePackageTarget( 10983 - packageJSONUrl, 10984 - target, 10985 - bestMatchSubpath, 10986 - bestMatch, 10987 - base, 10988 - true, 10989 - true, 10990 - conditions 10991 - ); 10992 - if (resolveResult != null) { 10993 - return resolveResult; 10994 - } 10995 - } 10996 - } 10997 - } 10998 - } 10999 - throwImportNotDefined(name, packageJSONUrl, base); 11000 - } 11001 - 11002 - const flagSymbol = Symbol('arg flag'); 11003 - 11004 - class ArgError extends Error { 11005 - constructor(msg, code) { 11006 - super(msg); 11007 - this.name = 'ArgError'; 11008 - this.code = code; 11009 - 11010 - Object.setPrototypeOf(this, ArgError.prototype); 11011 - } 11012 - } 11013 - 11014 - function arg( 11015 - opts, 11016 - { 11017 - argv = process.argv.slice(2), 11018 - permissive = false, 11019 - stopAtPositional = false 11020 - } = {} 11021 - ) { 11022 - if (!opts) { 11023 - throw new ArgError( 11024 - 'argument specification object is required', 11025 - 'ARG_CONFIG_NO_SPEC' 11026 - ); 11027 - } 11028 - 11029 - const result = { _: [] }; 11030 - 11031 - const aliases = {}; 11032 - const handlers = {}; 11033 - 11034 - for (const key of Object.keys(opts)) { 11035 - if (!key) { 11036 - throw new ArgError( 11037 - 'argument key cannot be an empty string', 11038 - 'ARG_CONFIG_EMPTY_KEY' 11039 - ); 11040 - } 11041 - 11042 - if (key[0] !== '-') { 11043 - throw new ArgError( 11044 - `argument key must start with '-' but found: '${key}'`, 11045 - 'ARG_CONFIG_NONOPT_KEY' 11046 - ); 11047 - } 11048 - 11049 - if (key.length === 1) { 11050 - throw new ArgError( 11051 - `argument key must have a name; singular '-' keys are not allowed: ${key}`, 11052 - 'ARG_CONFIG_NONAME_KEY' 11053 - ); 11054 - } 11055 - 11056 - if (typeof opts[key] === 'string') { 11057 - aliases[key] = opts[key]; 11058 - continue; 11059 - } 11060 - 11061 - let type = opts[key]; 11062 - let isFlag = false; 11063 - 11064 - if ( 11065 - Array.isArray(type) && 11066 - type.length === 1 && 11067 - typeof type[0] === 'function' 11068 - ) { 11069 - const [fn] = type; 11070 - type = (value, name, prev = []) => { 11071 - prev.push(fn(value, name, prev[prev.length - 1])); 11072 - return prev; 11073 - }; 11074 - isFlag = fn === Boolean || fn[flagSymbol] === true; 11075 - } else if (typeof type === 'function') { 11076 - isFlag = type === Boolean || type[flagSymbol] === true; 11077 - } else { 11078 - throw new ArgError( 11079 - `type missing or not a function or valid array type: ${key}`, 11080 - 'ARG_CONFIG_VAD_TYPE' 11081 - ); 11082 - } 11083 - 11084 - if (key[1] !== '-' && key.length > 2) { 11085 - throw new ArgError( 11086 - `short argument keys (with a single hyphen) must have only one character: ${key}`, 11087 - 'ARG_CONFIG_SHORTOPT_TOOLONG' 11088 - ); 11089 - } 11090 - 11091 - handlers[key] = [type, isFlag]; 11092 - } 11093 - 11094 - for (let i = 0, len = argv.length; i < len; i++) { 11095 - const wholeArg = argv[i]; 11096 - 11097 - if (stopAtPositional && result._.length > 0) { 11098 - result._ = result._.concat(argv.slice(i)); 11099 - break; 11100 - } 11101 - 11102 - if (wholeArg === '--') { 11103 - result._ = result._.concat(argv.slice(i + 1)); 11104 - break; 11105 - } 11106 - 11107 - if (wholeArg.length > 1 && wholeArg[0] === '-') { 11108 - /* eslint-disable operator-linebreak */ 11109 - const separatedArguments = 11110 - wholeArg[1] === '-' || wholeArg.length === 2 11111 - ? [wholeArg] 11112 - : wholeArg 11113 - .slice(1) 11114 - .split('') 11115 - .map((a) => `-${a}`); 11116 - /* eslint-enable operator-linebreak */ 11117 - 11118 - for (let j = 0; j < separatedArguments.length; j++) { 11119 - const arg = separatedArguments[j]; 11120 - const [originalArgName, argStr] = 11121 - arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined]; 11122 - 11123 - let argName = originalArgName; 11124 - while (argName in aliases) { 11125 - argName = aliases[argName]; 11126 - } 11127 - 11128 - if (!(argName in handlers)) { 11129 - if (permissive) { 11130 - result._.push(arg); 11131 - continue; 11132 - } else { 11133 - throw new ArgError( 11134 - `unknown or unexpected option: ${originalArgName}`, 11135 - 'ARG_UNKNOWN_OPTION' 11136 - ); 11137 - } 11138 - } 11139 - 11140 - const [type, isFlag] = handlers[argName]; 11141 - 11142 - if (!isFlag && j + 1 < separatedArguments.length) { 11143 - throw new ArgError( 11144 - `option requires argument (but was followed by another short argument): ${originalArgName}`, 11145 - 'ARG_MISSING_REQUIRED_SHORTARG' 11146 - ); 11147 - } 11148 - 11149 - if (isFlag) { 11150 - result[argName] = type(true, argName, result[argName]); 11151 - } else if (argStr === undefined) { 11152 - if ( 11153 - argv.length < i + 2 || 11154 - (argv[i + 1].length > 1 && 11155 - argv[i + 1][0] === '-' && 11156 - !( 11157 - argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) && 11158 - (type === Number || 11159 - // eslint-disable-next-line no-undef 11160 - (typeof BigInt !== 'undefined' && type === BigInt)) 11161 - )) 11162 - ) { 11163 - const extended = 11164 - originalArgName === argName ? '' : ` (alias for ${argName})`; 11165 - throw new ArgError( 11166 - `option requires argument: ${originalArgName}${extended}`, 11167 - 'ARG_MISSING_REQUIRED_LONGARG' 11168 - ); 11169 - } 11170 - 11171 - result[argName] = type(argv[i + 1], argName, result[argName]); 11172 - ++i; 11173 - } else { 11174 - result[argName] = type(argStr, argName, result[argName]); 11175 - } 11176 - } 11177 - } else { 11178 - result._.push(wholeArg); 11179 - } 11180 - } 11181 - 11182 - return result; 11183 - } 11184 - 11185 - arg.flag = (fn) => { 11186 - fn[flagSymbol] = true; 11187 - return fn; 11188 - }; 11189 - 11190 - // Utility types 11191 - arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1); 11192 - 11193 - // Expose error class 11194 - arg.ArgError = ArgError; 11195 - 11196 - var arg_1 = arg; 11197 - 11198 - /** 11199 - @license 11200 - The MIT License (MIT) 11201 - 11202 - Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com) 11203 - 11204 - Permission is hereby granted, free of charge, to any person obtaining a copy 11205 - of this software and associated documentation files (the "Software"), to deal 11206 - in the Software without restriction, including without limitation the rights 11207 - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11208 - copies of the Software, and to permit persons to whom the Software is 11209 - furnished to do so, subject to the following conditions: 11210 - 11211 - The above copyright notice and this permission notice shall be included in 11212 - all copies or substantial portions of the Software. 11213 - 11214 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 11215 - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 11216 - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 11217 - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 11218 - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 11219 - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 11220 - THE SOFTWARE. 11221 - */ 11222 - function getOptionValue(opt) { 11223 - parseOptions(); 11224 - return options[opt]; 11225 - } 11226 - let options; 11227 - function parseOptions() { 11228 - if (!options) { 11229 - options = { 11230 - "--conditions": [], 11231 - ...parseArgv(getNodeOptionsEnvArgv()), 11232 - ...parseArgv(process.execArgv) 11233 - }; 11234 - } 11235 - } 11236 - function parseArgv(argv) { 11237 - return arg_1( 11238 - { 11239 - "--conditions": [String], 11240 - "-C": "--conditions" 11241 - }, 11242 - { 11243 - argv, 11244 - permissive: true 11245 - } 11246 - ); 11247 - } 11248 - function getNodeOptionsEnvArgv() { 11249 - const errors = []; 11250 - const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors); 11251 - if (errors.length !== 0) ; 11252 - return envArgv; 11253 - } 11254 - function ParseNodeOptionsEnvVar(node_options, errors) { 11255 - const env_argv = []; 11256 - let is_in_string = false; 11257 - let will_start_new_arg = true; 11258 - for (let index = 0; index < node_options.length; ++index) { 11259 - let c = node_options[index]; 11260 - if (c === "\\" && is_in_string) { 11261 - if (index + 1 === node_options.length) { 11262 - errors.push("invalid value for NODE_OPTIONS (invalid escape)\n"); 11263 - return env_argv; 11264 - } else { 11265 - c = node_options[++index]; 11266 - } 11267 - } else if (c === " " && !is_in_string) { 11268 - will_start_new_arg = true; 11269 - continue; 11270 - } else if (c === '"') { 11271 - is_in_string = !is_in_string; 11272 - continue; 11273 - } 11274 - if (will_start_new_arg) { 11275 - env_argv.push(c); 11276 - will_start_new_arg = false; 11277 - } else { 11278 - env_argv[env_argv.length - 1] += c; 11279 - } 11280 - } 11281 - if (is_in_string) { 11282 - errors.push("invalid value for NODE_OPTIONS (unterminated string)\n"); 11283 - } 11284 - return env_argv; 11285 - } 11286 - 11287 - function makeApi(runtimeState, opts) { 11288 - const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0; 11289 - const debugLevel = Number(process.env.PNP_DEBUG_LEVEL); 11290 - const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; 11291 - const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/; 11292 - const isDirRegExp = /\/$/; 11293 - const isRelativeRegexp = /^\.{0,2}\//; 11294 - const topLevelLocator = { name: null, reference: null }; 11295 - const fallbackLocators = []; 11296 - const emittedWarnings = /* @__PURE__ */ new Set(); 11297 - if (runtimeState.enableTopLevelFallback === true) 11298 - fallbackLocators.push(topLevelLocator); 11299 - if (opts.compatibilityMode !== false) { 11300 - for (const name of [`react-scripts`, `gatsby`]) { 11301 - const packageStore = runtimeState.packageRegistry.get(name); 11302 - if (packageStore) { 11303 - for (const reference of packageStore.keys()) { 11304 - if (reference === null) { 11305 - throw new Error(`Assertion failed: This reference shouldn't be null`); 11306 - } else { 11307 - fallbackLocators.push({ name, reference }); 11308 - } 11309 - } 11310 - } 11311 - } 11312 - } 11313 - const { 11314 - ignorePattern, 11315 - packageRegistry, 11316 - packageLocatorsByLocations 11317 - } = runtimeState; 11318 - function makeLogEntry(name, args) { 11319 - return { 11320 - fn: name, 11321 - args, 11322 - error: null, 11323 - result: null 11324 - }; 11325 - } 11326 - function trace(entry) { 11327 - var _a, _b, _c, _d, _e, _f; 11328 - const colors = (_c = (_b = (_a = process.stderr) == null ? void 0 : _a.hasColors) == null ? void 0 : _b.call(_a)) != null ? _c : process.stdout.isTTY; 11329 - const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`; 11330 - const error = entry.error; 11331 - if (error) 11332 - console.error(c(`31;1`, `\u2716 ${(_d = entry.error) == null ? void 0 : _d.message.replace(/\n.*/s, ``)}`)); 11333 - else 11334 - console.error(c(`33;1`, `\u203C Resolution`)); 11335 - if (entry.args.length > 0) 11336 - console.error(); 11337 - for (const arg of entry.args) 11338 - console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`); 11339 - if (entry.result) { 11340 - console.error(); 11341 - console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`); 11342 - } 11343 - const stack = (_f = (_e = new Error().stack.match(/(?<=^ +)at.*/gm)) == null ? void 0 : _e.slice(2)) != null ? _f : []; 11344 - if (stack.length > 0) { 11345 - console.error(); 11346 - for (const line of stack) { 11347 - console.error(` ${c(`38;5;244`, line)}`); 11348 - } 11349 - } 11350 - console.error(); 11351 - } 11352 - function maybeLog(name, fn) { 11353 - if (opts.allowDebug === false) 11354 - return fn; 11355 - if (Number.isFinite(debugLevel)) { 11356 - if (debugLevel >= 2) { 11357 - return (...args) => { 11358 - const logEntry = makeLogEntry(name, args); 11359 - try { 11360 - return logEntry.result = fn(...args); 11361 - } catch (error) { 11362 - throw logEntry.error = error; 11363 - } finally { 11364 - trace(logEntry); 11365 - } 11366 - }; 11367 - } else if (debugLevel >= 1) { 11368 - return (...args) => { 11369 - try { 11370 - return fn(...args); 11371 - } catch (error) { 11372 - const logEntry = makeLogEntry(name, args); 11373 - logEntry.error = error; 11374 - trace(logEntry); 11375 - throw error; 11376 - } 11377 - }; 11378 - } 11379 - } 11380 - return fn; 11381 - } 11382 - function getPackageInformationSafe(packageLocator) { 11383 - const packageInformation = getPackageInformation(packageLocator); 11384 - if (!packageInformation) { 11385 - throw makeError( 11386 - ErrorCode.INTERNAL, 11387 - `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)` 11388 - ); 11389 - } 11390 - return packageInformation; 11391 - } 11392 - function isDependencyTreeRoot(packageLocator) { 11393 - if (packageLocator.name === null) 11394 - return true; 11395 - for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots) 11396 - if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference) 11397 - return true; 11398 - return false; 11399 - } 11400 - const defaultExportsConditions = /* @__PURE__ */ new Set([ 11401 - `default`, 11402 - `node`, 11403 - `require`, 11404 - ...getOptionValue(`--conditions`) 11405 - ]); 11406 - function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions) { 11407 - const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), { 11408 - resolveIgnored: true, 11409 - includeDiscardFromLookup: true 11410 - }); 11411 - if (locator === null) { 11412 - throw makeError( 11413 - ErrorCode.INTERNAL, 11414 - `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)` 11415 - ); 11416 - } 11417 - const { packageLocation } = getPackageInformationSafe(locator); 11418 - const manifestPath = ppath.join(packageLocation, Filename.manifest); 11419 - if (!opts.fakeFs.existsSync(manifestPath)) 11420 - return null; 11421 - const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`)); 11422 - let subpath = ppath.contains(packageLocation, unqualifiedPath); 11423 - if (subpath === null) { 11424 - throw makeError( 11425 - ErrorCode.INTERNAL, 11426 - `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)` 11427 - ); 11428 - } 11429 - if (!isRelativeRegexp.test(subpath)) 11430 - subpath = `./${subpath}`; 11431 - let resolvedExport; 11432 - try { 11433 - resolvedExport = resolve(pkgJson, ppath.normalize(subpath), { 11434 - conditions, 11435 - unsafe: true 11436 - }); 11437 - } catch (error) { 11438 - throw makeError( 11439 - ErrorCode.EXPORTS_RESOLUTION_FAILED, 11440 - error.message, 11441 - { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions }, 11442 - `ERR_PACKAGE_PATH_NOT_EXPORTED` 11443 - ); 11444 - } 11445 - if (typeof resolvedExport === `string`) 11446 - return ppath.join(packageLocation, resolvedExport); 11447 - return null; 11448 - } 11449 - function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) { 11450 - let stat; 11451 - try { 11452 - candidates.push(unqualifiedPath); 11453 - stat = opts.fakeFs.statSync(unqualifiedPath); 11454 - } catch (error) { 11455 - } 11456 - if (stat && !stat.isDirectory()) 11457 - return opts.fakeFs.realpathSync(unqualifiedPath); 11458 - if (stat && stat.isDirectory()) { 11459 - let pkgJson; 11460 - try { 11461 - pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`)); 11462 - } catch (error) { 11463 - } 11464 - let nextUnqualifiedPath; 11465 - if (pkgJson && pkgJson.main) 11466 - nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main); 11467 - if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) { 11468 - const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions }); 11469 - if (resolution !== null) { 11470 - return resolution; 11471 - } 11472 - } 11473 - } 11474 - for (let i = 0, length = extensions.length; i < length; i++) { 11475 - const candidateFile = `${unqualifiedPath}${extensions[i]}`; 11476 - candidates.push(candidateFile); 11477 - if (opts.fakeFs.existsSync(candidateFile)) { 11478 - return candidateFile; 11479 - } 11480 - } 11481 - if (stat && stat.isDirectory()) { 11482 - for (let i = 0, length = extensions.length; i < length; i++) { 11483 - const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] }); 11484 - candidates.push(candidateFile); 11485 - if (opts.fakeFs.existsSync(candidateFile)) { 11486 - return candidateFile; 11487 - } 11488 - } 11489 - } 11490 - return null; 11491 - } 11492 - function makeFakeModule(path) { 11493 - const fakeModule = new require$$0.Module(path, null); 11494 - fakeModule.filename = path; 11495 - fakeModule.paths = require$$0.Module._nodeModulePaths(path); 11496 - return fakeModule; 11497 - } 11498 - function callNativeResolution(request, issuer) { 11499 - if (issuer.endsWith(`/`)) 11500 - issuer = ppath.join(issuer, `internal.js`); 11501 - return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false }); 11502 - } 11503 - function isPathIgnored(path) { 11504 - if (ignorePattern === null) 11505 - return false; 11506 - const subPath = ppath.contains(runtimeState.basePath, path); 11507 - if (subPath === null) 11508 - return false; 11509 - if (ignorePattern.test(subPath.replace(/\/$/, ``))) { 11510 - return true; 11511 - } else { 11512 - return false; 11513 - } 11514 - } 11515 - const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 }; 11516 - const topLevel = topLevelLocator; 11517 - function getPackageInformation({ name, reference }) { 11518 - const packageInformationStore = packageRegistry.get(name); 11519 - if (!packageInformationStore) 11520 - return null; 11521 - const packageInformation = packageInformationStore.get(reference); 11522 - if (!packageInformation) 11523 - return null; 11524 - return packageInformation; 11525 - } 11526 - function findPackageDependents({ name, reference }) { 11527 - const dependents = []; 11528 - for (const [dependentName, packageInformationStore] of packageRegistry) { 11529 - if (dependentName === null) 11530 - continue; 11531 - for (const [dependentReference, packageInformation] of packageInformationStore) { 11532 - if (dependentReference === null) 11533 - continue; 11534 - const dependencyReference = packageInformation.packageDependencies.get(name); 11535 - if (dependencyReference !== reference) 11536 - continue; 11537 - if (dependentName === name && dependentReference === reference) 11538 - continue; 11539 - dependents.push({ 11540 - name: dependentName, 11541 - reference: dependentReference 11542 - }); 11543 - } 11544 - } 11545 - return dependents; 11546 - } 11547 - function findBrokenPeerDependencies(dependency, initialPackage) { 11548 - const brokenPackages = /* @__PURE__ */ new Map(); 11549 - const alreadyVisited = /* @__PURE__ */ new Set(); 11550 - const traversal = (currentPackage) => { 11551 - const identifier = JSON.stringify(currentPackage.name); 11552 - if (alreadyVisited.has(identifier)) 11553 - return; 11554 - alreadyVisited.add(identifier); 11555 - const dependents = findPackageDependents(currentPackage); 11556 - for (const dependent of dependents) { 11557 - const dependentInformation = getPackageInformationSafe(dependent); 11558 - if (dependentInformation.packagePeers.has(dependency)) { 11559 - traversal(dependent); 11560 - } else { 11561 - let brokenSet = brokenPackages.get(dependent.name); 11562 - if (typeof brokenSet === `undefined`) 11563 - brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set()); 11564 - brokenSet.add(dependent.reference); 11565 - } 11566 - } 11567 - }; 11568 - traversal(initialPackage); 11569 - const brokenList = []; 11570 - for (const name of [...brokenPackages.keys()].sort()) 11571 - for (const reference of [...brokenPackages.get(name)].sort()) 11572 - brokenList.push({ name, reference }); 11573 - return brokenList; 11574 - } 11575 - function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) { 11576 - if (isPathIgnored(location) && !resolveIgnored) 11577 - return null; 11578 - let relativeLocation = ppath.relative(runtimeState.basePath, location); 11579 - if (!relativeLocation.match(isStrictRegExp)) 11580 - relativeLocation = `./${relativeLocation}`; 11581 - if (!relativeLocation.endsWith(`/`)) 11582 - relativeLocation = `${relativeLocation}/`; 11583 - do { 11584 - const entry = packageLocatorsByLocations.get(relativeLocation); 11585 - if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) { 11586 - relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1); 11587 - continue; 11588 - } 11589 - return entry.locator; 11590 - } while (relativeLocation !== ``); 11591 - return null; 11592 - } 11593 - function tryReadFile(filePath) { 11594 - try { 11595 - return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`); 11596 - } catch (err) { 11597 - if (err.code === `ENOENT`) 11598 - return void 0; 11599 - throw err; 11600 - } 11601 - } 11602 - function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) { 11603 - if (request.startsWith(`#`)) 11604 - throw new Error(`resolveToUnqualified can not handle private import mappings`); 11605 - if (request === `pnpapi`) 11606 - return npath.toPortablePath(opts.pnpapiResolution); 11607 - if (considerBuiltins && isBuiltinModule(request)) 11608 - return null; 11609 - const requestForDisplay = getPathForDisplay(request); 11610 - const issuerForDisplay = issuer && getPathForDisplay(issuer); 11611 - if (issuer && isPathIgnored(issuer)) { 11612 - if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) { 11613 - const result = callNativeResolution(request, issuer); 11614 - if (result === false) { 11615 - throw makeError( 11616 - ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, 11617 - `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp) 11618 - 11619 - Require request: "${requestForDisplay}" 11620 - Required by: ${issuerForDisplay} 11621 - `, 11622 - { request: requestForDisplay, issuer: issuerForDisplay } 11623 - ); 11624 - } 11625 - return npath.toPortablePath(result); 11626 - } 11627 - } 11628 - let unqualifiedPath; 11629 - const dependencyNameMatch = request.match(pathRegExp); 11630 - if (!dependencyNameMatch) { 11631 - if (ppath.isAbsolute(request)) { 11632 - unqualifiedPath = ppath.normalize(request); 11633 - } else { 11634 - if (!issuer) { 11635 - throw makeError( 11636 - ErrorCode.API_ERROR, 11637 - `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, 11638 - { request: requestForDisplay, issuer: issuerForDisplay } 11639 - ); 11640 - } 11641 - const absoluteIssuer = ppath.resolve(issuer); 11642 - if (issuer.match(isDirRegExp)) { 11643 - unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request)); 11644 - } else { 11645 - unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request)); 11646 - } 11647 - } 11648 - } else { 11649 - if (!issuer) { 11650 - throw makeError( 11651 - ErrorCode.API_ERROR, 11652 - `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`, 11653 - { request: requestForDisplay, issuer: issuerForDisplay } 11654 - ); 11655 - } 11656 - const [, dependencyName, subPath] = dependencyNameMatch; 11657 - const issuerLocator = findPackageLocator(issuer); 11658 - if (!issuerLocator) { 11659 - const result = callNativeResolution(request, issuer); 11660 - if (result === false) { 11661 - throw makeError( 11662 - ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED, 11663 - `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree). 11664 - 11665 - Require path: "${requestForDisplay}" 11666 - Required by: ${issuerForDisplay} 11667 - `, 11668 - { request: requestForDisplay, issuer: issuerForDisplay } 11669 - ); 11670 - } 11671 - return npath.toPortablePath(result); 11672 - } 11673 - const issuerInformation = getPackageInformationSafe(issuerLocator); 11674 - let dependencyReference = issuerInformation.packageDependencies.get(dependencyName); 11675 - let fallbackReference = null; 11676 - if (dependencyReference == null) { 11677 - if (issuerLocator.name !== null) { 11678 - const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name); 11679 - const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference); 11680 - if (canUseFallbacks) { 11681 - for (let t = 0, T = fallbackLocators.length; t < T; ++t) { 11682 - const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]); 11683 - const reference = fallbackInformation.packageDependencies.get(dependencyName); 11684 - if (reference == null) 11685 - continue; 11686 - if (alwaysWarnOnFallback) 11687 - fallbackReference = reference; 11688 - else 11689 - dependencyReference = reference; 11690 - break; 11691 - } 11692 - if (runtimeState.enableTopLevelFallback) { 11693 - if (dependencyReference == null && fallbackReference === null) { 11694 - const reference = runtimeState.fallbackPool.get(dependencyName); 11695 - if (reference != null) { 11696 - fallbackReference = reference; 11697 - } 11698 - } 11699 - } 11700 - } 11701 - } 11702 - } 11703 - let error = null; 11704 - if (dependencyReference === null) { 11705 - if (isDependencyTreeRoot(issuerLocator)) { 11706 - error = makeError( 11707 - ErrorCode.MISSING_PEER_DEPENDENCY, 11708 - `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed. 11709 - 11710 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11711 - Required by: ${issuerForDisplay} 11712 - `, 11713 - { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } 11714 - ); 11715 - } else { 11716 - const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator); 11717 - if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) { 11718 - error = makeError( 11719 - ErrorCode.MISSING_PEER_DEPENDENCY, 11720 - `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound. 11721 - 11722 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11723 - Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) 11724 - ${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} 11725 - `).join(``)} 11726 - `, 11727 - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } 11728 - ); 11729 - } else { 11730 - error = makeError( 11731 - ErrorCode.MISSING_PEER_DEPENDENCY, 11732 - `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound. 11733 - 11734 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11735 - Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) 11736 - 11737 - ${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference} 11738 - `).join(``)} 11739 - `, 11740 - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors } 11741 - ); 11742 - } 11743 - } 11744 - } else if (dependencyReference === void 0) { 11745 - if (!considerBuiltins && isBuiltinModule(request)) { 11746 - if (isDependencyTreeRoot(issuerLocator)) { 11747 - error = makeError( 11748 - ErrorCode.UNDECLARED_DEPENDENCY, 11749 - `Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound. 11750 - 11751 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11752 - Required by: ${issuerForDisplay} 11753 - `, 11754 - { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } 11755 - ); 11756 - } else { 11757 - error = makeError( 11758 - ErrorCode.UNDECLARED_DEPENDENCY, 11759 - `${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound. 11760 - 11761 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11762 - Required by: ${issuerForDisplay} 11763 - `, 11764 - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } 11765 - ); 11766 - } 11767 - } else { 11768 - if (isDependencyTreeRoot(issuerLocator)) { 11769 - error = makeError( 11770 - ErrorCode.UNDECLARED_DEPENDENCY, 11771 - `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound. 11772 - 11773 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11774 - Required by: ${issuerForDisplay} 11775 - `, 11776 - { request: requestForDisplay, issuer: issuerForDisplay, dependencyName } 11777 - ); 11778 - } else { 11779 - error = makeError( 11780 - ErrorCode.UNDECLARED_DEPENDENCY, 11781 - `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound. 11782 - 11783 - Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11784 - Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) 11785 - `, 11786 - { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName } 11787 - ); 11788 - } 11789 - } 11790 - } 11791 - if (dependencyReference == null) { 11792 - if (fallbackReference === null || error === null) 11793 - throw error || new Error(`Assertion failed: Expected an error to have been set`); 11794 - dependencyReference = fallbackReference; 11795 - const message = error.message.replace(/\n.*/g, ``); 11796 - error.message = message; 11797 - if (!emittedWarnings.has(message) && debugLevel !== 0) { 11798 - emittedWarnings.add(message); 11799 - process.emitWarning(error); 11800 - } 11801 - } 11802 - const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference }; 11803 - const dependencyInformation = getPackageInformationSafe(dependencyLocator); 11804 - if (!dependencyInformation.packageLocation) { 11805 - throw makeError( 11806 - ErrorCode.MISSING_DEPENDENCY, 11807 - `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod. 11808 - 11809 - Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``} 11810 - Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay}) 11811 - `, 11812 - { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) } 11813 - ); 11814 - } 11815 - const dependencyLocation = dependencyInformation.packageLocation; 11816 - if (subPath) { 11817 - unqualifiedPath = ppath.join(dependencyLocation, subPath); 11818 - } else { 11819 - unqualifiedPath = dependencyLocation; 11820 - } 11821 - } 11822 - return ppath.normalize(unqualifiedPath); 11823 - } 11824 - function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions) { 11825 - if (isStrictRegExp.test(request)) 11826 - return unqualifiedPath; 11827 - const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions); 11828 - if (unqualifiedExportPath) { 11829 - return ppath.normalize(unqualifiedExportPath); 11830 - } else { 11831 - return unqualifiedPath; 11832 - } 11833 - } 11834 - function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) { 11835 - var _a, _b; 11836 - const candidates = []; 11837 - const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }); 11838 - if (qualifiedPath) { 11839 - return ppath.normalize(qualifiedPath); 11840 - } else { 11841 - reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate))); 11842 - const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath); 11843 - const containingPackage = findPackageLocator(unqualifiedPath); 11844 - if (containingPackage) { 11845 - const { packageLocation } = getPackageInformationSafe(containingPackage); 11846 - let exists = true; 11847 - try { 11848 - opts.fakeFs.accessSync(packageLocation); 11849 - } catch (err) { 11850 - if ((err == null ? void 0 : err.code) === `ENOENT`) { 11851 - exists = false; 11852 - } else { 11853 - const readableError = ((_b = (_a = err == null ? void 0 : err.message) != null ? _a : err) != null ? _b : `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase()); 11854 - throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}). 11855 - 11856 - Missing package: ${containingPackage.name}@${containingPackage.reference} 11857 - Expected package location: ${getPathForDisplay(packageLocation)} 11858 - `, { unqualifiedPath: unqualifiedPathForDisplay, extensions }); 11859 - } 11860 - } 11861 - if (!exists) { 11862 - const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`; 11863 - throw makeError( 11864 - ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, 11865 - `${errorMessage} 11866 - 11867 - Missing package: ${containingPackage.name}@${containingPackage.reference} 11868 - Expected package location: ${getPathForDisplay(packageLocation)} 11869 - `, 11870 - { unqualifiedPath: unqualifiedPathForDisplay, extensions } 11871 - ); 11872 - } 11873 - } 11874 - throw makeError( 11875 - ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, 11876 - `Qualified path resolution failed: we looked for the following paths, but none could be accessed. 11877 - 11878 - Source path: ${unqualifiedPathForDisplay} 11879 - ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)} 11880 - `).join(``)}`, 11881 - { unqualifiedPath: unqualifiedPathForDisplay, extensions } 11882 - ); 11883 - } 11884 - } 11885 - function resolvePrivateRequest(request, issuer, opts2) { 11886 - var _a; 11887 - if (!issuer) 11888 - throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`); 11889 - const resolved = packageImportsResolve({ 11890 - name: request, 11891 - base: url.pathToFileURL(npath.fromPortablePath(issuer)), 11892 - conditions: (_a = opts2.conditions) != null ? _a : defaultExportsConditions, 11893 - readFileSyncFn: tryReadFile 11894 - }); 11895 - if (resolved instanceof url.URL) { 11896 - return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions }); 11897 - } else { 11898 - if (resolved.startsWith(`#`)) 11899 - throw new Error(`Mapping from one private import to another isn't allowed`); 11900 - return resolveRequest(resolved, issuer, opts2); 11901 - } 11902 - } 11903 - function resolveRequest(request, issuer, opts2 = {}) { 11904 - try { 11905 - if (request.startsWith(`#`)) 11906 - return resolvePrivateRequest(request, issuer, opts2); 11907 - const { considerBuiltins, extensions, conditions } = opts2; 11908 - const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins }); 11909 - if (request === `pnpapi`) 11910 - return unqualifiedPath; 11911 - if (unqualifiedPath === null) 11912 - return null; 11913 - const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false; 11914 - const remappedPath = (!considerBuiltins || !isBuiltinModule(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions) : unqualifiedPath; 11915 - return resolveUnqualified(remappedPath, { extensions }); 11916 - } catch (error) { 11917 - if (Object.prototype.hasOwnProperty.call(error, `pnpCode`)) 11918 - Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) }); 11919 - throw error; 11920 - } 11921 - } 11922 - function resolveVirtual(request) { 11923 - const normalized = ppath.normalize(request); 11924 - const resolved = VirtualFS.resolveVirtual(normalized); 11925 - return resolved !== normalized ? resolved : null; 11926 - } 11927 - return { 11928 - VERSIONS, 11929 - topLevel, 11930 - getLocator: (name, referencish) => { 11931 - if (Array.isArray(referencish)) { 11932 - return { name: referencish[0], reference: referencish[1] }; 11933 - } else { 11934 - return { name, reference: referencish }; 11935 - } 11936 - }, 11937 - getDependencyTreeRoots: () => { 11938 - return [...runtimeState.dependencyTreeRoots]; 11939 - }, 11940 - getAllLocators() { 11941 - const locators = []; 11942 - for (const [name, entry] of packageRegistry) 11943 - for (const reference of entry.keys()) 11944 - if (name !== null && reference !== null) 11945 - locators.push({ name, reference }); 11946 - return locators; 11947 - }, 11948 - getPackageInformation: (locator) => { 11949 - const info = getPackageInformation(locator); 11950 - if (info === null) 11951 - return null; 11952 - const packageLocation = npath.fromPortablePath(info.packageLocation); 11953 - const nativeInfo = { ...info, packageLocation }; 11954 - return nativeInfo; 11955 - }, 11956 - findPackageLocator: (path) => { 11957 - return findPackageLocator(npath.toPortablePath(path)); 11958 - }, 11959 - resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => { 11960 - const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; 11961 - const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2); 11962 - if (resolution === null) 11963 - return null; 11964 - return npath.fromPortablePath(resolution); 11965 - }), 11966 - resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => { 11967 - return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2)); 11968 - }), 11969 - resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => { 11970 - const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null; 11971 - const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2); 11972 - if (resolution === null) 11973 - return null; 11974 - return npath.fromPortablePath(resolution); 11975 - }), 11976 - resolveVirtual: maybeLog(`resolveVirtual`, (path) => { 11977 - const result = resolveVirtual(npath.toPortablePath(path)); 11978 - if (result !== null) { 11979 - return npath.fromPortablePath(result); 11980 - } else { 11981 - return null; 11982 - } 11983 - }) 11984 - }; 11985 - } 11986 - 11987 - function makeManager(pnpapi, opts) { 11988 - const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null)); 11989 - const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath)); 11990 - const apiMetadata = /* @__PURE__ */ new Map([ 11991 - [initialApiPath, { 11992 - cache: require$$0.Module._cache, 11993 - instance: pnpapi, 11994 - stats: initialApiStats, 11995 - lastRefreshCheck: Date.now() 11996 - }] 11997 - ]); 11998 - function loadApiInstance(pnpApiPath) { 11999 - const nativePath = npath.fromPortablePath(pnpApiPath); 12000 - const module = new require$$0.Module(nativePath, null); 12001 - module.load(nativePath); 12002 - return module.exports; 12003 - } 12004 - function refreshApiEntry(pnpApiPath, apiEntry) { 12005 - const timeNow = Date.now(); 12006 - if (timeNow - apiEntry.lastRefreshCheck < 500) 12007 - return; 12008 - apiEntry.lastRefreshCheck = timeNow; 12009 - const stats = opts.fakeFs.statSync(pnpApiPath); 12010 - if (stats.mtime > apiEntry.stats.mtime) { 12011 - process.emitWarning(`[Warning] The runtime detected new informations in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`); 12012 - apiEntry.stats = stats; 12013 - apiEntry.instance = loadApiInstance(pnpApiPath); 12014 - } 12015 - } 12016 - function getApiEntry(pnpApiPath, refresh = false) { 12017 - let apiEntry = apiMetadata.get(pnpApiPath); 12018 - if (typeof apiEntry !== `undefined`) { 12019 - if (refresh) { 12020 - refreshApiEntry(pnpApiPath, apiEntry); 12021 - } 12022 - } else { 12023 - apiMetadata.set(pnpApiPath, apiEntry = { 12024 - cache: {}, 12025 - instance: loadApiInstance(pnpApiPath), 12026 - stats: opts.fakeFs.statSync(pnpApiPath), 12027 - lastRefreshCheck: Date.now() 12028 - }); 12029 - } 12030 - return apiEntry; 12031 - } 12032 - const findApiPathCache = /* @__PURE__ */ new Map(); 12033 - function addToCacheAndReturn(start, end, target) { 12034 - if (target !== null) 12035 - target = VirtualFS.resolveVirtual(target); 12036 - let curr; 12037 - let next = start; 12038 - do { 12039 - curr = next; 12040 - findApiPathCache.set(curr, target); 12041 - next = ppath.dirname(curr); 12042 - } while (curr !== end); 12043 - return target; 12044 - } 12045 - function findApiPathFor(modulePath) { 12046 - let bestCandidate = null; 12047 - for (const [apiPath, apiEntry] of apiMetadata) { 12048 - const locator = apiEntry.instance.findPackageLocator(modulePath); 12049 - if (!locator) 12050 - continue; 12051 - if (apiMetadata.size === 1) 12052 - return apiPath; 12053 - const packageInformation = apiEntry.instance.getPackageInformation(locator); 12054 - if (!packageInformation) 12055 - throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`); 12056 - if (!bestCandidate) 12057 - bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] }; 12058 - if (packageInformation.packageLocation === bestCandidate.packageLocation) { 12059 - bestCandidate.apiPaths.push(apiPath); 12060 - } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) { 12061 - bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] }; 12062 - } 12063 - } 12064 - if (bestCandidate) { 12065 - if (bestCandidate.apiPaths.length === 1) 12066 - return bestCandidate.apiPaths[0]; 12067 - const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(` 12068 - `); 12069 - throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances. 12070 - This is usually caused by using the global cache (enableGlobalCache: true) 12071 - 12072 - Controlled by: 12073 - ${controlSegment} 12074 - `); 12075 - } 12076 - const start = ppath.resolve(npath.toPortablePath(modulePath)); 12077 - let curr; 12078 - let next = start; 12079 - do { 12080 - curr = next; 12081 - const cached = findApiPathCache.get(curr); 12082 - if (cached !== void 0) 12083 - return addToCacheAndReturn(start, curr, cached); 12084 - const cjsCandidate = ppath.join(curr, Filename.pnpCjs); 12085 - if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile()) 12086 - return addToCacheAndReturn(start, curr, cjsCandidate); 12087 - const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs); 12088 - if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile()) 12089 - return addToCacheAndReturn(start, curr, legacyCjsCandidate); 12090 - next = ppath.dirname(curr); 12091 - } while (curr !== PortablePath.root); 12092 - return addToCacheAndReturn(start, curr, null); 12093 - } 12094 - function getApiPathFromParent(parent) { 12095 - if (parent == null) 12096 - return initialApiPath; 12097 - if (typeof parent.pnpApiPath === `undefined`) { 12098 - if (parent.filename !== null) { 12099 - return parent.pnpApiPath = findApiPathFor(parent.filename); 12100 - } else { 12101 - return initialApiPath; 12102 - } 12103 - } 12104 - if (parent.pnpApiPath !== null) 12105 - return parent.pnpApiPath; 12106 - return null; 12107 - } 12108 - return { 12109 - getApiPathFromParent, 12110 - findApiPathFor, 12111 - getApiEntry 12112 - }; 12113 - } 12114 - 12115 - const localFs = { ...fs__default.default }; 12116 - const nodeFs = new NodeFS(localFs); 12117 - const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState); 12118 - const defaultPnpapiResolution = __filename; 12119 - const defaultFsLayer = new VirtualFS({ 12120 - baseFs: new ZipOpenFS({ 12121 - baseFs: nodeFs, 12122 - libzip: () => getLibzipSync(), 12123 - maxOpenFiles: 80, 12124 - readOnlyArchives: true 12125 - }) 12126 - }); 12127 - class DynamicFS extends ProxiedFS { 12128 - constructor() { 12129 - super(ppath); 12130 - this.baseFs = defaultFsLayer; 12131 - } 12132 - mapToBase(p) { 12133 - return p; 12134 - } 12135 - mapFromBase(p) { 12136 - return p; 12137 - } 12138 - } 12139 - const dynamicFsLayer = new DynamicFS(); 12140 - let manager; 12141 - const defaultApi = Object.assign(makeApi(defaultRuntimeState, { 12142 - fakeFs: dynamicFsLayer, 12143 - pnpapiResolution: defaultPnpapiResolution 12144 - }), { 12145 - makeApi: ({ 12146 - basePath = void 0, 12147 - fakeFs = dynamicFsLayer, 12148 - pnpapiResolution = defaultPnpapiResolution, 12149 - ...rest 12150 - }) => { 12151 - const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState; 12152 - return makeApi(apiRuntimeState, { 12153 - fakeFs, 12154 - pnpapiResolution, 12155 - ...rest 12156 - }); 12157 - }, 12158 - setup: (api) => { 12159 - applyPatch(api || defaultApi, { 12160 - fakeFs: defaultFsLayer, 12161 - manager 12162 - }); 12163 - dynamicFsLayer.baseFs = new NodeFS(fs__default.default); 12164 - } 12165 - }); 12166 - manager = makeManager(defaultApi, { 12167 - fakeFs: dynamicFsLayer 12168 - }); 12169 - if (module.parent && module.parent.id === `internal/preload`) { 12170 - defaultApi.setup(); 12171 - if (module.filename) { 12172 - delete require$$0__default.default._cache[module.filename]; 12173 - } 12174 - } 12175 - if (process.mainModule === module) { 12176 - const reportError = (code, message, data) => { 12177 - process.stdout.write(`${JSON.stringify([{ code, message, data }, null])} 12178 - `); 12179 - }; 12180 - const reportSuccess = (resolution) => { 12181 - process.stdout.write(`${JSON.stringify([null, resolution])} 12182 - `); 12183 - }; 12184 - const processResolution = (request, issuer) => { 12185 - try { 12186 - reportSuccess(defaultApi.resolveRequest(request, issuer)); 12187 - } catch (error) { 12188 - reportError(error.code, error.message, error.data); 12189 - } 12190 - }; 12191 - const processRequest = (data) => { 12192 - try { 12193 - const [request, issuer] = JSON.parse(data); 12194 - processResolution(request, issuer); 12195 - } catch (error) { 12196 - reportError(`INVALID_JSON`, error.message, error.data); 12197 - } 12198 - }; 12199 - if (process.argv.length > 2) { 12200 - if (process.argv.length !== 4) { 12201 - process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} <request> <issuer> 12202 - `); 12203 - process.exitCode = 64; 12204 - } else { 12205 - processResolution(process.argv[2], process.argv[3]); 12206 - } 12207 - } else { 12208 - let buffer = ``; 12209 - const decoder = new StringDecoder__default.default.StringDecoder(); 12210 - process.stdin.on(`data`, (chunk) => { 12211 - buffer += decoder.write(chunk); 12212 - do { 12213 - const index = buffer.indexOf(` 12214 - `); 12215 - if (index === -1) 12216 - break; 12217 - const line = buffer.slice(0, index); 12218 - buffer = buffer.slice(index + 1); 12219 - processRequest(line); 12220 - } while (true); 12221 - }); 12222 - } 12223 - } 12224 - 12225 - module.exports = defaultApi;
-2040
buttplug/buttplug-device-config/.pnp.loader.mjs
··· 1 - import { URL as URL$1, fileURLToPath, pathToFileURL } from 'url'; 2 - import fs from 'fs'; 3 - import path from 'path'; 4 - import moduleExports, { Module } from 'module'; 5 - import { EOL } from 'os'; 6 - import assert from 'assert'; 7 - 8 - const SAFE_TIME = 456789e3; 9 - 10 - const PortablePath = { 11 - root: `/`, 12 - dot: `.`, 13 - parent: `..` 14 - }; 15 - const npath = Object.create(path); 16 - const ppath = Object.create(path.posix); 17 - npath.cwd = () => process.cwd(); 18 - ppath.cwd = () => toPortablePath(process.cwd()); 19 - ppath.resolve = (...segments) => { 20 - if (segments.length > 0 && ppath.isAbsolute(segments[0])) { 21 - return path.posix.resolve(...segments); 22 - } else { 23 - return path.posix.resolve(ppath.cwd(), ...segments); 24 - } 25 - }; 26 - const contains = function(pathUtils, from, to) { 27 - from = pathUtils.normalize(from); 28 - to = pathUtils.normalize(to); 29 - if (from === to) 30 - return `.`; 31 - if (!from.endsWith(pathUtils.sep)) 32 - from = from + pathUtils.sep; 33 - if (to.startsWith(from)) { 34 - return to.slice(from.length); 35 - } else { 36 - return null; 37 - } 38 - }; 39 - npath.fromPortablePath = fromPortablePath; 40 - npath.toPortablePath = toPortablePath; 41 - npath.contains = (from, to) => contains(npath, from, to); 42 - ppath.contains = (from, to) => contains(ppath, from, to); 43 - const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/; 44 - const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/; 45 - const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/; 46 - const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/; 47 - function fromPortablePath(p) { 48 - if (process.platform !== `win32`) 49 - return p; 50 - let portablePathMatch, uncPortablePathMatch; 51 - if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP)) 52 - p = portablePathMatch[1]; 53 - else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP)) 54 - p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`; 55 - else 56 - return p; 57 - return p.replace(/\//g, `\\`); 58 - } 59 - function toPortablePath(p) { 60 - if (process.platform !== `win32`) 61 - return p; 62 - p = p.replace(/\\/g, `/`); 63 - let windowsPathMatch, uncWindowsPathMatch; 64 - if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP)) 65 - p = `/${windowsPathMatch[1]}`; 66 - else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP)) 67 - p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`; 68 - return p; 69 - } 70 - function convertPath(targetPathUtils, sourcePath) { 71 - return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath); 72 - } 73 - 74 - const defaultTime = new Date(SAFE_TIME * 1e3); 75 - async function copyPromise(destinationFs, destination, sourceFs, source, opts) { 76 - const normalizedDestination = destinationFs.pathUtils.normalize(destination); 77 - const normalizedSource = sourceFs.pathUtils.normalize(source); 78 - const prelayout = []; 79 - const postlayout = []; 80 - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource); 81 - await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] }); 82 - const updateTime = typeof destinationFs.lutimesPromise === `function` ? destinationFs.lutimesPromise.bind(destinationFs) : destinationFs.utimesPromise.bind(destinationFs); 83 - await copyImpl(prelayout, postlayout, updateTime, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true }); 84 - for (const operation of prelayout) 85 - await operation(); 86 - await Promise.all(postlayout.map((operation) => { 87 - return operation(); 88 - })); 89 - } 90 - async function copyImpl(prelayout, postlayout, updateTime, destinationFs, destination, sourceFs, source, opts) { 91 - var _a, _b; 92 - const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null; 93 - const sourceStat = await sourceFs.lstatPromise(source); 94 - const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat; 95 - let updated; 96 - switch (true) { 97 - case sourceStat.isDirectory(): 98 - { 99 - updated = await copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); 100 - } 101 - break; 102 - case sourceStat.isFile(): 103 - { 104 - updated = await copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); 105 - } 106 - break; 107 - case sourceStat.isSymbolicLink(): 108 - { 109 - updated = await copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts); 110 - } 111 - break; 112 - default: 113 - { 114 - throw new Error(`Unsupported file type (${sourceStat.mode})`); 115 - } 116 - } 117 - if (updated || ((_a = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _a.getTime()) !== mtime.getTime() || ((_b = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _b.getTime()) !== atime.getTime()) { 118 - postlayout.push(() => updateTime(destination, atime, mtime)); 119 - updated = true; 120 - } 121 - if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) { 122 - postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511)); 123 - updated = true; 124 - } 125 - return updated; 126 - } 127 - async function maybeLStat(baseFs, p) { 128 - try { 129 - return await baseFs.lstatPromise(p); 130 - } catch (e) { 131 - return null; 132 - } 133 - } 134 - async function copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { 135 - if (destinationStat !== null && !destinationStat.isDirectory()) { 136 - if (opts.overwrite) { 137 - prelayout.push(async () => destinationFs.removePromise(destination)); 138 - destinationStat = null; 139 - } else { 140 - return false; 141 - } 142 - } 143 - let updated = false; 144 - if (destinationStat === null) { 145 - prelayout.push(async () => { 146 - try { 147 - await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode }); 148 - } catch (err) { 149 - if (err.code !== `EEXIST`) { 150 - throw err; 151 - } 152 - } 153 - }); 154 - updated = true; 155 - } 156 - const entries = await sourceFs.readdirPromise(source); 157 - const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts; 158 - if (opts.stableSort) { 159 - for (const entry of entries.sort()) { 160 - if (await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) { 161 - updated = true; 162 - } 163 - } 164 - } else { 165 - const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => { 166 - await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts); 167 - })); 168 - if (entriesUpdateStatus.some((status) => status)) { 169 - updated = true; 170 - } 171 - } 172 - return updated; 173 - } 174 - const isCloneSupportedCache = /* @__PURE__ */ new WeakMap(); 175 - function makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy) { 176 - return async () => { 177 - await opFs.linkPromise(source, destination); 178 - if (linkStrategy === "readOnly" /* ReadOnly */) { 179 - sourceStat.mode &= ~146; 180 - await opFs.chmodPromise(destination, sourceStat.mode); 181 - } 182 - }; 183 - } 184 - function makeCloneLinkOperation(opFs, destination, source, sourceStat, linkStrategy) { 185 - const isCloneSupported = isCloneSupportedCache.get(opFs); 186 - if (typeof isCloneSupported === `undefined`) { 187 - return async () => { 188 - try { 189 - await opFs.copyFilePromise(source, destination, fs.constants.COPYFILE_FICLONE_FORCE); 190 - isCloneSupportedCache.set(opFs, true); 191 - } catch (err) { 192 - if (err.code === `ENOSYS` || err.code === `ENOTSUP`) { 193 - isCloneSupportedCache.set(opFs, false); 194 - await makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy)(); 195 - } else { 196 - throw err; 197 - } 198 - } 199 - }; 200 - } else { 201 - if (isCloneSupported) { 202 - return async () => opFs.copyFilePromise(source, destination, fs.constants.COPYFILE_FICLONE_FORCE); 203 - } else { 204 - return makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy); 205 - } 206 - } 207 - } 208 - async function copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { 209 - var _a; 210 - if (destinationStat !== null) { 211 - if (opts.overwrite) { 212 - prelayout.push(async () => destinationFs.removePromise(destination)); 213 - destinationStat = null; 214 - } else { 215 - return false; 216 - } 217 - } 218 - const linkStrategy = (_a = opts.linkStrategy) != null ? _a : null; 219 - const op = destinationFs === sourceFs ? linkStrategy !== null ? makeCloneLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.copyFilePromise(source, destination, fs.constants.COPYFILE_FICLONE) : linkStrategy !== null ? makeLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.writeFilePromise(destination, await sourceFs.readFilePromise(source)); 220 - prelayout.push(async () => op()); 221 - return true; 222 - } 223 - async function copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) { 224 - if (destinationStat !== null) { 225 - if (opts.overwrite) { 226 - prelayout.push(async () => destinationFs.removePromise(destination)); 227 - destinationStat = null; 228 - } else { 229 - return false; 230 - } 231 - } 232 - prelayout.push(async () => { 233 - await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination); 234 - }); 235 - return true; 236 - } 237 - 238 - function makeError(code, message) { 239 - return Object.assign(new Error(`${code}: ${message}`), { code }); 240 - } 241 - function ENOSYS(message, reason) { 242 - return makeError(`ENOSYS`, `${message}, ${reason}`); 243 - } 244 - 245 - class FakeFS { 246 - constructor(pathUtils) { 247 - this.pathUtils = pathUtils; 248 - } 249 - async *genTraversePromise(init, { stableSort = false } = {}) { 250 - const stack = [init]; 251 - while (stack.length > 0) { 252 - const p = stack.shift(); 253 - const entry = await this.lstatPromise(p); 254 - if (entry.isDirectory()) { 255 - const entries = await this.readdirPromise(p); 256 - if (stableSort) { 257 - for (const entry2 of entries.sort()) { 258 - stack.push(this.pathUtils.join(p, entry2)); 259 - } 260 - } else { 261 - throw new Error(`Not supported`); 262 - } 263 - } else { 264 - yield p; 265 - } 266 - } 267 - } 268 - async removePromise(p, { recursive = true, maxRetries = 5 } = {}) { 269 - let stat; 270 - try { 271 - stat = await this.lstatPromise(p); 272 - } catch (error) { 273 - if (error.code === `ENOENT`) { 274 - return; 275 - } else { 276 - throw error; 277 - } 278 - } 279 - if (stat.isDirectory()) { 280 - if (recursive) { 281 - const entries = await this.readdirPromise(p); 282 - await Promise.all(entries.map((entry) => { 283 - return this.removePromise(this.pathUtils.resolve(p, entry)); 284 - })); 285 - } 286 - for (let t = 0; t <= maxRetries; t++) { 287 - try { 288 - await this.rmdirPromise(p); 289 - break; 290 - } catch (error) { 291 - if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) { 292 - throw error; 293 - } else if (t < maxRetries) { 294 - await new Promise((resolve) => setTimeout(resolve, t * 100)); 295 - } 296 - } 297 - } 298 - } else { 299 - await this.unlinkPromise(p); 300 - } 301 - } 302 - removeSync(p, { recursive = true } = {}) { 303 - let stat; 304 - try { 305 - stat = this.lstatSync(p); 306 - } catch (error) { 307 - if (error.code === `ENOENT`) { 308 - return; 309 - } else { 310 - throw error; 311 - } 312 - } 313 - if (stat.isDirectory()) { 314 - if (recursive) 315 - for (const entry of this.readdirSync(p)) 316 - this.removeSync(this.pathUtils.resolve(p, entry)); 317 - this.rmdirSync(p); 318 - } else { 319 - this.unlinkSync(p); 320 - } 321 - } 322 - async mkdirpPromise(p, { chmod, utimes } = {}) { 323 - p = this.resolve(p); 324 - if (p === this.pathUtils.dirname(p)) 325 - return void 0; 326 - const parts = p.split(this.pathUtils.sep); 327 - let createdDirectory; 328 - for (let u = 2; u <= parts.length; ++u) { 329 - const subPath = parts.slice(0, u).join(this.pathUtils.sep); 330 - if (!this.existsSync(subPath)) { 331 - try { 332 - await this.mkdirPromise(subPath); 333 - } catch (error) { 334 - if (error.code === `EEXIST`) { 335 - continue; 336 - } else { 337 - throw error; 338 - } 339 - } 340 - createdDirectory != null ? createdDirectory : createdDirectory = subPath; 341 - if (chmod != null) 342 - await this.chmodPromise(subPath, chmod); 343 - if (utimes != null) { 344 - await this.utimesPromise(subPath, utimes[0], utimes[1]); 345 - } else { 346 - const parentStat = await this.statPromise(this.pathUtils.dirname(subPath)); 347 - await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime); 348 - } 349 - } 350 - } 351 - return createdDirectory; 352 - } 353 - mkdirpSync(p, { chmod, utimes } = {}) { 354 - p = this.resolve(p); 355 - if (p === this.pathUtils.dirname(p)) 356 - return void 0; 357 - const parts = p.split(this.pathUtils.sep); 358 - let createdDirectory; 359 - for (let u = 2; u <= parts.length; ++u) { 360 - const subPath = parts.slice(0, u).join(this.pathUtils.sep); 361 - if (!this.existsSync(subPath)) { 362 - try { 363 - this.mkdirSync(subPath); 364 - } catch (error) { 365 - if (error.code === `EEXIST`) { 366 - continue; 367 - } else { 368 - throw error; 369 - } 370 - } 371 - createdDirectory != null ? createdDirectory : createdDirectory = subPath; 372 - if (chmod != null) 373 - this.chmodSync(subPath, chmod); 374 - if (utimes != null) { 375 - this.utimesSync(subPath, utimes[0], utimes[1]); 376 - } else { 377 - const parentStat = this.statSync(this.pathUtils.dirname(subPath)); 378 - this.utimesSync(subPath, parentStat.atime, parentStat.mtime); 379 - } 380 - } 381 - } 382 - return createdDirectory; 383 - } 384 - async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) { 385 - return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy }); 386 - } 387 - copySync(destination, source, { baseFs = this, overwrite = true } = {}) { 388 - const stat = baseFs.lstatSync(source); 389 - const exists = this.existsSync(destination); 390 - if (stat.isDirectory()) { 391 - this.mkdirpSync(destination); 392 - const directoryListing = baseFs.readdirSync(source); 393 - for (const entry of directoryListing) { 394 - this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite }); 395 - } 396 - } else if (stat.isFile()) { 397 - if (!exists || overwrite) { 398 - if (exists) 399 - this.removeSync(destination); 400 - const content = baseFs.readFileSync(source); 401 - this.writeFileSync(destination, content); 402 - } 403 - } else if (stat.isSymbolicLink()) { 404 - if (!exists || overwrite) { 405 - if (exists) 406 - this.removeSync(destination); 407 - const target = baseFs.readlinkSync(source); 408 - this.symlinkSync(convertPath(this.pathUtils, target), destination); 409 - } 410 - } else { 411 - throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`); 412 - } 413 - const mode = stat.mode & 511; 414 - this.chmodSync(destination, mode); 415 - } 416 - async changeFilePromise(p, content, opts = {}) { 417 - if (Buffer.isBuffer(content)) { 418 - return this.changeFileBufferPromise(p, content, opts); 419 - } else { 420 - return this.changeFileTextPromise(p, content, opts); 421 - } 422 - } 423 - async changeFileBufferPromise(p, content, { mode } = {}) { 424 - let current = Buffer.alloc(0); 425 - try { 426 - current = await this.readFilePromise(p); 427 - } catch (error) { 428 - } 429 - if (Buffer.compare(current, content) === 0) 430 - return; 431 - await this.writeFilePromise(p, content, { mode }); 432 - } 433 - async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) { 434 - let current = ``; 435 - try { 436 - current = await this.readFilePromise(p, `utf8`); 437 - } catch (error) { 438 - } 439 - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; 440 - if (current === normalizedContent) 441 - return; 442 - await this.writeFilePromise(p, normalizedContent, { mode }); 443 - } 444 - changeFileSync(p, content, opts = {}) { 445 - if (Buffer.isBuffer(content)) { 446 - return this.changeFileBufferSync(p, content, opts); 447 - } else { 448 - return this.changeFileTextSync(p, content, opts); 449 - } 450 - } 451 - changeFileBufferSync(p, content, { mode } = {}) { 452 - let current = Buffer.alloc(0); 453 - try { 454 - current = this.readFileSync(p); 455 - } catch (error) { 456 - } 457 - if (Buffer.compare(current, content) === 0) 458 - return; 459 - this.writeFileSync(p, content, { mode }); 460 - } 461 - changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) { 462 - let current = ``; 463 - try { 464 - current = this.readFileSync(p, `utf8`); 465 - } catch (error) { 466 - } 467 - const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content; 468 - if (current === normalizedContent) 469 - return; 470 - this.writeFileSync(p, normalizedContent, { mode }); 471 - } 472 - async movePromise(fromP, toP) { 473 - try { 474 - await this.renamePromise(fromP, toP); 475 - } catch (error) { 476 - if (error.code === `EXDEV`) { 477 - await this.copyPromise(toP, fromP); 478 - await this.removePromise(fromP); 479 - } else { 480 - throw error; 481 - } 482 - } 483 - } 484 - moveSync(fromP, toP) { 485 - try { 486 - this.renameSync(fromP, toP); 487 - } catch (error) { 488 - if (error.code === `EXDEV`) { 489 - this.copySync(toP, fromP); 490 - this.removeSync(fromP); 491 - } else { 492 - throw error; 493 - } 494 - } 495 - } 496 - async lockPromise(affectedPath, callback) { 497 - const lockPath = `${affectedPath}.flock`; 498 - const interval = 1e3 / 60; 499 - const startTime = Date.now(); 500 - let fd = null; 501 - const isAlive = async () => { 502 - let pid; 503 - try { 504 - [pid] = await this.readJsonPromise(lockPath); 505 - } catch (error) { 506 - return Date.now() - startTime < 500; 507 - } 508 - try { 509 - process.kill(pid, 0); 510 - return true; 511 - } catch (error) { 512 - return false; 513 - } 514 - }; 515 - while (fd === null) { 516 - try { 517 - fd = await this.openPromise(lockPath, `wx`); 518 - } catch (error) { 519 - if (error.code === `EEXIST`) { 520 - if (!await isAlive()) { 521 - try { 522 - await this.unlinkPromise(lockPath); 523 - continue; 524 - } catch (error2) { 525 - } 526 - } 527 - if (Date.now() - startTime < 60 * 1e3) { 528 - await new Promise((resolve) => setTimeout(resolve, interval)); 529 - } else { 530 - throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`); 531 - } 532 - } else { 533 - throw error; 534 - } 535 - } 536 - } 537 - await this.writePromise(fd, JSON.stringify([process.pid])); 538 - try { 539 - return await callback(); 540 - } finally { 541 - try { 542 - await this.closePromise(fd); 543 - await this.unlinkPromise(lockPath); 544 - } catch (error) { 545 - } 546 - } 547 - } 548 - async readJsonPromise(p) { 549 - const content = await this.readFilePromise(p, `utf8`); 550 - try { 551 - return JSON.parse(content); 552 - } catch (error) { 553 - error.message += ` (in ${p})`; 554 - throw error; 555 - } 556 - } 557 - readJsonSync(p) { 558 - const content = this.readFileSync(p, `utf8`); 559 - try { 560 - return JSON.parse(content); 561 - } catch (error) { 562 - error.message += ` (in ${p})`; 563 - throw error; 564 - } 565 - } 566 - async writeJsonPromise(p, data) { 567 - return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)} 568 - `); 569 - } 570 - writeJsonSync(p, data) { 571 - return this.writeFileSync(p, `${JSON.stringify(data, null, 2)} 572 - `); 573 - } 574 - async preserveTimePromise(p, cb) { 575 - const stat = await this.lstatPromise(p); 576 - const result = await cb(); 577 - if (typeof result !== `undefined`) 578 - p = result; 579 - if (this.lutimesPromise) { 580 - await this.lutimesPromise(p, stat.atime, stat.mtime); 581 - } else if (!stat.isSymbolicLink()) { 582 - await this.utimesPromise(p, stat.atime, stat.mtime); 583 - } 584 - } 585 - async preserveTimeSync(p, cb) { 586 - const stat = this.lstatSync(p); 587 - const result = cb(); 588 - if (typeof result !== `undefined`) 589 - p = result; 590 - if (this.lutimesSync) { 591 - this.lutimesSync(p, stat.atime, stat.mtime); 592 - } else if (!stat.isSymbolicLink()) { 593 - this.utimesSync(p, stat.atime, stat.mtime); 594 - } 595 - } 596 - } 597 - class BasePortableFakeFS extends FakeFS { 598 - constructor() { 599 - super(ppath); 600 - } 601 - } 602 - function getEndOfLine(content) { 603 - const matches = content.match(/\r?\n/g); 604 - if (matches === null) 605 - return EOL; 606 - const crlf = matches.filter((nl) => nl === `\r 607 - `).length; 608 - const lf = matches.length - crlf; 609 - return crlf > lf ? `\r 610 - ` : ` 611 - `; 612 - } 613 - function normalizeLineEndings(originalContent, newContent) { 614 - return newContent.replace(/\r?\n/g, getEndOfLine(originalContent)); 615 - } 616 - 617 - class NodeFS extends BasePortableFakeFS { 618 - constructor(realFs = fs) { 619 - super(); 620 - this.realFs = realFs; 621 - if (typeof this.realFs.lutimes !== `undefined`) { 622 - this.lutimesPromise = this.lutimesPromiseImpl; 623 - this.lutimesSync = this.lutimesSyncImpl; 624 - } 625 - } 626 - getExtractHint() { 627 - return false; 628 - } 629 - getRealPath() { 630 - return PortablePath.root; 631 - } 632 - resolve(p) { 633 - return ppath.resolve(p); 634 - } 635 - async openPromise(p, flags, mode) { 636 - return await new Promise((resolve, reject) => { 637 - this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject)); 638 - }); 639 - } 640 - openSync(p, flags, mode) { 641 - return this.realFs.openSync(npath.fromPortablePath(p), flags, mode); 642 - } 643 - async opendirPromise(p, opts) { 644 - return await new Promise((resolve, reject) => { 645 - if (typeof opts !== `undefined`) { 646 - this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 647 - } else { 648 - this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 649 - } 650 - }).then((dir) => { 651 - return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true }); 652 - }); 653 - } 654 - opendirSync(p, opts) { 655 - const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p)); 656 - return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true }); 657 - } 658 - async readPromise(fd, buffer, offset = 0, length = 0, position = -1) { 659 - return await new Promise((resolve, reject) => { 660 - this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => { 661 - if (error) { 662 - reject(error); 663 - } else { 664 - resolve(bytesRead); 665 - } 666 - }); 667 - }); 668 - } 669 - readSync(fd, buffer, offset, length, position) { 670 - return this.realFs.readSync(fd, buffer, offset, length, position); 671 - } 672 - async writePromise(fd, buffer, offset, length, position) { 673 - return await new Promise((resolve, reject) => { 674 - if (typeof buffer === `string`) { 675 - return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject)); 676 - } else { 677 - return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject)); 678 - } 679 - }); 680 - } 681 - writeSync(fd, buffer, offset, length, position) { 682 - if (typeof buffer === `string`) { 683 - return this.realFs.writeSync(fd, buffer, offset); 684 - } else { 685 - return this.realFs.writeSync(fd, buffer, offset, length, position); 686 - } 687 - } 688 - async closePromise(fd) { 689 - await new Promise((resolve, reject) => { 690 - this.realFs.close(fd, this.makeCallback(resolve, reject)); 691 - }); 692 - } 693 - closeSync(fd) { 694 - this.realFs.closeSync(fd); 695 - } 696 - createReadStream(p, opts) { 697 - const realPath = p !== null ? npath.fromPortablePath(p) : p; 698 - return this.realFs.createReadStream(realPath, opts); 699 - } 700 - createWriteStream(p, opts) { 701 - const realPath = p !== null ? npath.fromPortablePath(p) : p; 702 - return this.realFs.createWriteStream(realPath, opts); 703 - } 704 - async realpathPromise(p) { 705 - return await new Promise((resolve, reject) => { 706 - this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject)); 707 - }).then((path) => { 708 - return npath.toPortablePath(path); 709 - }); 710 - } 711 - realpathSync(p) { 712 - return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {})); 713 - } 714 - async existsPromise(p) { 715 - return await new Promise((resolve) => { 716 - this.realFs.exists(npath.fromPortablePath(p), resolve); 717 - }); 718 - } 719 - accessSync(p, mode) { 720 - return this.realFs.accessSync(npath.fromPortablePath(p), mode); 721 - } 722 - async accessPromise(p, mode) { 723 - return await new Promise((resolve, reject) => { 724 - this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject)); 725 - }); 726 - } 727 - existsSync(p) { 728 - return this.realFs.existsSync(npath.fromPortablePath(p)); 729 - } 730 - async statPromise(p, opts) { 731 - return await new Promise((resolve, reject) => { 732 - if (opts) { 733 - this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 734 - } else { 735 - this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 736 - } 737 - }); 738 - } 739 - statSync(p, opts) { 740 - if (opts) { 741 - return this.realFs.statSync(npath.fromPortablePath(p), opts); 742 - } else { 743 - return this.realFs.statSync(npath.fromPortablePath(p)); 744 - } 745 - } 746 - async fstatPromise(fd, opts) { 747 - return await new Promise((resolve, reject) => { 748 - if (opts) { 749 - this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject)); 750 - } else { 751 - this.realFs.fstat(fd, this.makeCallback(resolve, reject)); 752 - } 753 - }); 754 - } 755 - fstatSync(fd, opts) { 756 - if (opts) { 757 - return this.realFs.fstatSync(fd, opts); 758 - } else { 759 - return this.realFs.fstatSync(fd); 760 - } 761 - } 762 - async lstatPromise(p, opts) { 763 - return await new Promise((resolve, reject) => { 764 - if (opts) { 765 - this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 766 - } else { 767 - this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 768 - } 769 - }); 770 - } 771 - lstatSync(p, opts) { 772 - if (opts) { 773 - return this.realFs.lstatSync(npath.fromPortablePath(p), opts); 774 - } else { 775 - return this.realFs.lstatSync(npath.fromPortablePath(p)); 776 - } 777 - } 778 - async fchmodPromise(fd, mask) { 779 - return await new Promise((resolve, reject) => { 780 - this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject)); 781 - }); 782 - } 783 - fchmodSync(fd, mask) { 784 - return this.realFs.fchmodSync(fd, mask); 785 - } 786 - async chmodPromise(p, mask) { 787 - return await new Promise((resolve, reject) => { 788 - this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject)); 789 - }); 790 - } 791 - chmodSync(p, mask) { 792 - return this.realFs.chmodSync(npath.fromPortablePath(p), mask); 793 - } 794 - async fchownPromise(fd, uid, gid) { 795 - return await new Promise((resolve, reject) => { 796 - this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject)); 797 - }); 798 - } 799 - fchownSync(fd, uid, gid) { 800 - return this.realFs.fchownSync(fd, uid, gid); 801 - } 802 - async chownPromise(p, uid, gid) { 803 - return await new Promise((resolve, reject) => { 804 - this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject)); 805 - }); 806 - } 807 - chownSync(p, uid, gid) { 808 - return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid); 809 - } 810 - async renamePromise(oldP, newP) { 811 - return await new Promise((resolve, reject) => { 812 - this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); 813 - }); 814 - } 815 - renameSync(oldP, newP) { 816 - return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP)); 817 - } 818 - async copyFilePromise(sourceP, destP, flags = 0) { 819 - return await new Promise((resolve, reject) => { 820 - this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject)); 821 - }); 822 - } 823 - copyFileSync(sourceP, destP, flags = 0) { 824 - return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags); 825 - } 826 - async appendFilePromise(p, content, opts) { 827 - return await new Promise((resolve, reject) => { 828 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 829 - if (opts) { 830 - this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); 831 - } else { 832 - this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject)); 833 - } 834 - }); 835 - } 836 - appendFileSync(p, content, opts) { 837 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 838 - if (opts) { 839 - this.realFs.appendFileSync(fsNativePath, content, opts); 840 - } else { 841 - this.realFs.appendFileSync(fsNativePath, content); 842 - } 843 - } 844 - async writeFilePromise(p, content, opts) { 845 - return await new Promise((resolve, reject) => { 846 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 847 - if (opts) { 848 - this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject)); 849 - } else { 850 - this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject)); 851 - } 852 - }); 853 - } 854 - writeFileSync(p, content, opts) { 855 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 856 - if (opts) { 857 - this.realFs.writeFileSync(fsNativePath, content, opts); 858 - } else { 859 - this.realFs.writeFileSync(fsNativePath, content); 860 - } 861 - } 862 - async unlinkPromise(p) { 863 - return await new Promise((resolve, reject) => { 864 - this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 865 - }); 866 - } 867 - unlinkSync(p) { 868 - return this.realFs.unlinkSync(npath.fromPortablePath(p)); 869 - } 870 - async utimesPromise(p, atime, mtime) { 871 - return await new Promise((resolve, reject) => { 872 - this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); 873 - }); 874 - } 875 - utimesSync(p, atime, mtime) { 876 - this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime); 877 - } 878 - async lutimesPromiseImpl(p, atime, mtime) { 879 - const lutimes = this.realFs.lutimes; 880 - if (typeof lutimes === `undefined`) 881 - throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`); 882 - return await new Promise((resolve, reject) => { 883 - lutimes.call(this.realFs, npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject)); 884 - }); 885 - } 886 - lutimesSyncImpl(p, atime, mtime) { 887 - const lutimesSync = this.realFs.lutimesSync; 888 - if (typeof lutimesSync === `undefined`) 889 - throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`); 890 - lutimesSync.call(this.realFs, npath.fromPortablePath(p), atime, mtime); 891 - } 892 - async mkdirPromise(p, opts) { 893 - return await new Promise((resolve, reject) => { 894 - this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 895 - }); 896 - } 897 - mkdirSync(p, opts) { 898 - return this.realFs.mkdirSync(npath.fromPortablePath(p), opts); 899 - } 900 - async rmdirPromise(p, opts) { 901 - return await new Promise((resolve, reject) => { 902 - if (opts) { 903 - this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject)); 904 - } else { 905 - this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 906 - } 907 - }); 908 - } 909 - rmdirSync(p, opts) { 910 - return this.realFs.rmdirSync(npath.fromPortablePath(p), opts); 911 - } 912 - async linkPromise(existingP, newP) { 913 - return await new Promise((resolve, reject) => { 914 - this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject)); 915 - }); 916 - } 917 - linkSync(existingP, newP) { 918 - return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP)); 919 - } 920 - async symlinkPromise(target, p, type) { 921 - return await new Promise((resolve, reject) => { 922 - this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject)); 923 - }); 924 - } 925 - symlinkSync(target, p, type) { 926 - return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type); 927 - } 928 - async readFilePromise(p, encoding) { 929 - return await new Promise((resolve, reject) => { 930 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 931 - this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject)); 932 - }); 933 - } 934 - readFileSync(p, encoding) { 935 - const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p; 936 - return this.realFs.readFileSync(fsNativePath, encoding); 937 - } 938 - async readdirPromise(p, opts) { 939 - return await new Promise((resolve, reject) => { 940 - if (opts == null ? void 0 : opts.withFileTypes) { 941 - this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject)); 942 - } else { 943 - this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject)); 944 - } 945 - }); 946 - } 947 - readdirSync(p, opts) { 948 - if (opts == null ? void 0 : opts.withFileTypes) { 949 - return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true }); 950 - } else { 951 - return this.realFs.readdirSync(npath.fromPortablePath(p)); 952 - } 953 - } 954 - async readlinkPromise(p) { 955 - return await new Promise((resolve, reject) => { 956 - this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject)); 957 - }).then((path) => { 958 - return npath.toPortablePath(path); 959 - }); 960 - } 961 - readlinkSync(p) { 962 - return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p))); 963 - } 964 - async truncatePromise(p, len) { 965 - return await new Promise((resolve, reject) => { 966 - this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject)); 967 - }); 968 - } 969 - truncateSync(p, len) { 970 - return this.realFs.truncateSync(npath.fromPortablePath(p), len); 971 - } 972 - async ftruncatePromise(fd, len) { 973 - return await new Promise((resolve, reject) => { 974 - this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject)); 975 - }); 976 - } 977 - ftruncateSync(fd, len) { 978 - return this.realFs.ftruncateSync(fd, len); 979 - } 980 - watch(p, a, b) { 981 - return this.realFs.watch( 982 - npath.fromPortablePath(p), 983 - a, 984 - b 985 - ); 986 - } 987 - watchFile(p, a, b) { 988 - return this.realFs.watchFile( 989 - npath.fromPortablePath(p), 990 - a, 991 - b 992 - ); 993 - } 994 - unwatchFile(p, cb) { 995 - return this.realFs.unwatchFile(npath.fromPortablePath(p), cb); 996 - } 997 - makeCallback(resolve, reject) { 998 - return (err, result) => { 999 - if (err) { 1000 - reject(err); 1001 - } else { 1002 - resolve(result); 1003 - } 1004 - }; 1005 - } 1006 - } 1007 - 1008 - class ProxiedFS extends FakeFS { 1009 - getExtractHint(hints) { 1010 - return this.baseFs.getExtractHint(hints); 1011 - } 1012 - resolve(path) { 1013 - return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path))); 1014 - } 1015 - getRealPath() { 1016 - return this.mapFromBase(this.baseFs.getRealPath()); 1017 - } 1018 - async openPromise(p, flags, mode) { 1019 - return this.baseFs.openPromise(this.mapToBase(p), flags, mode); 1020 - } 1021 - openSync(p, flags, mode) { 1022 - return this.baseFs.openSync(this.mapToBase(p), flags, mode); 1023 - } 1024 - async opendirPromise(p, opts) { 1025 - return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p }); 1026 - } 1027 - opendirSync(p, opts) { 1028 - return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p }); 1029 - } 1030 - async readPromise(fd, buffer, offset, length, position) { 1031 - return await this.baseFs.readPromise(fd, buffer, offset, length, position); 1032 - } 1033 - readSync(fd, buffer, offset, length, position) { 1034 - return this.baseFs.readSync(fd, buffer, offset, length, position); 1035 - } 1036 - async writePromise(fd, buffer, offset, length, position) { 1037 - if (typeof buffer === `string`) { 1038 - return await this.baseFs.writePromise(fd, buffer, offset); 1039 - } else { 1040 - return await this.baseFs.writePromise(fd, buffer, offset, length, position); 1041 - } 1042 - } 1043 - writeSync(fd, buffer, offset, length, position) { 1044 - if (typeof buffer === `string`) { 1045 - return this.baseFs.writeSync(fd, buffer, offset); 1046 - } else { 1047 - return this.baseFs.writeSync(fd, buffer, offset, length, position); 1048 - } 1049 - } 1050 - async closePromise(fd) { 1051 - return this.baseFs.closePromise(fd); 1052 - } 1053 - closeSync(fd) { 1054 - this.baseFs.closeSync(fd); 1055 - } 1056 - createReadStream(p, opts) { 1057 - return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts); 1058 - } 1059 - createWriteStream(p, opts) { 1060 - return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts); 1061 - } 1062 - async realpathPromise(p) { 1063 - return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p))); 1064 - } 1065 - realpathSync(p) { 1066 - return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p))); 1067 - } 1068 - async existsPromise(p) { 1069 - return this.baseFs.existsPromise(this.mapToBase(p)); 1070 - } 1071 - existsSync(p) { 1072 - return this.baseFs.existsSync(this.mapToBase(p)); 1073 - } 1074 - accessSync(p, mode) { 1075 - return this.baseFs.accessSync(this.mapToBase(p), mode); 1076 - } 1077 - async accessPromise(p, mode) { 1078 - return this.baseFs.accessPromise(this.mapToBase(p), mode); 1079 - } 1080 - async statPromise(p, opts) { 1081 - return this.baseFs.statPromise(this.mapToBase(p), opts); 1082 - } 1083 - statSync(p, opts) { 1084 - return this.baseFs.statSync(this.mapToBase(p), opts); 1085 - } 1086 - async fstatPromise(fd, opts) { 1087 - return this.baseFs.fstatPromise(fd, opts); 1088 - } 1089 - fstatSync(fd, opts) { 1090 - return this.baseFs.fstatSync(fd, opts); 1091 - } 1092 - lstatPromise(p, opts) { 1093 - return this.baseFs.lstatPromise(this.mapToBase(p), opts); 1094 - } 1095 - lstatSync(p, opts) { 1096 - return this.baseFs.lstatSync(this.mapToBase(p), opts); 1097 - } 1098 - async fchmodPromise(fd, mask) { 1099 - return this.baseFs.fchmodPromise(fd, mask); 1100 - } 1101 - fchmodSync(fd, mask) { 1102 - return this.baseFs.fchmodSync(fd, mask); 1103 - } 1104 - async chmodPromise(p, mask) { 1105 - return this.baseFs.chmodPromise(this.mapToBase(p), mask); 1106 - } 1107 - chmodSync(p, mask) { 1108 - return this.baseFs.chmodSync(this.mapToBase(p), mask); 1109 - } 1110 - async fchownPromise(fd, uid, gid) { 1111 - return this.baseFs.fchownPromise(fd, uid, gid); 1112 - } 1113 - fchownSync(fd, uid, gid) { 1114 - return this.baseFs.fchownSync(fd, uid, gid); 1115 - } 1116 - async chownPromise(p, uid, gid) { 1117 - return this.baseFs.chownPromise(this.mapToBase(p), uid, gid); 1118 - } 1119 - chownSync(p, uid, gid) { 1120 - return this.baseFs.chownSync(this.mapToBase(p), uid, gid); 1121 - } 1122 - async renamePromise(oldP, newP) { 1123 - return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP)); 1124 - } 1125 - renameSync(oldP, newP) { 1126 - return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP)); 1127 - } 1128 - async copyFilePromise(sourceP, destP, flags = 0) { 1129 - return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags); 1130 - } 1131 - copyFileSync(sourceP, destP, flags = 0) { 1132 - return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags); 1133 - } 1134 - async appendFilePromise(p, content, opts) { 1135 - return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts); 1136 - } 1137 - appendFileSync(p, content, opts) { 1138 - return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts); 1139 - } 1140 - async writeFilePromise(p, content, opts) { 1141 - return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts); 1142 - } 1143 - writeFileSync(p, content, opts) { 1144 - return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts); 1145 - } 1146 - async unlinkPromise(p) { 1147 - return this.baseFs.unlinkPromise(this.mapToBase(p)); 1148 - } 1149 - unlinkSync(p) { 1150 - return this.baseFs.unlinkSync(this.mapToBase(p)); 1151 - } 1152 - async utimesPromise(p, atime, mtime) { 1153 - return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime); 1154 - } 1155 - utimesSync(p, atime, mtime) { 1156 - return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime); 1157 - } 1158 - async mkdirPromise(p, opts) { 1159 - return this.baseFs.mkdirPromise(this.mapToBase(p), opts); 1160 - } 1161 - mkdirSync(p, opts) { 1162 - return this.baseFs.mkdirSync(this.mapToBase(p), opts); 1163 - } 1164 - async rmdirPromise(p, opts) { 1165 - return this.baseFs.rmdirPromise(this.mapToBase(p), opts); 1166 - } 1167 - rmdirSync(p, opts) { 1168 - return this.baseFs.rmdirSync(this.mapToBase(p), opts); 1169 - } 1170 - async linkPromise(existingP, newP) { 1171 - return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP)); 1172 - } 1173 - linkSync(existingP, newP) { 1174 - return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP)); 1175 - } 1176 - async symlinkPromise(target, p, type) { 1177 - const mappedP = this.mapToBase(p); 1178 - if (this.pathUtils.isAbsolute(target)) 1179 - return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type); 1180 - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); 1181 - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); 1182 - return this.baseFs.symlinkPromise(mappedTarget, mappedP, type); 1183 - } 1184 - symlinkSync(target, p, type) { 1185 - const mappedP = this.mapToBase(p); 1186 - if (this.pathUtils.isAbsolute(target)) 1187 - return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type); 1188 - const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target)); 1189 - const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget); 1190 - return this.baseFs.symlinkSync(mappedTarget, mappedP, type); 1191 - } 1192 - async readFilePromise(p, encoding) { 1193 - if (encoding === `utf8`) { 1194 - return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); 1195 - } else { 1196 - return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding); 1197 - } 1198 - } 1199 - readFileSync(p, encoding) { 1200 - if (encoding === `utf8`) { 1201 - return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); 1202 - } else { 1203 - return this.baseFs.readFileSync(this.fsMapToBase(p), encoding); 1204 - } 1205 - } 1206 - async readdirPromise(p, opts) { 1207 - return this.baseFs.readdirPromise(this.mapToBase(p), opts); 1208 - } 1209 - readdirSync(p, opts) { 1210 - return this.baseFs.readdirSync(this.mapToBase(p), opts); 1211 - } 1212 - async readlinkPromise(p) { 1213 - return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p))); 1214 - } 1215 - readlinkSync(p) { 1216 - return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p))); 1217 - } 1218 - async truncatePromise(p, len) { 1219 - return this.baseFs.truncatePromise(this.mapToBase(p), len); 1220 - } 1221 - truncateSync(p, len) { 1222 - return this.baseFs.truncateSync(this.mapToBase(p), len); 1223 - } 1224 - async ftruncatePromise(fd, len) { 1225 - return this.baseFs.ftruncatePromise(fd, len); 1226 - } 1227 - ftruncateSync(fd, len) { 1228 - return this.baseFs.ftruncateSync(fd, len); 1229 - } 1230 - watch(p, a, b) { 1231 - return this.baseFs.watch( 1232 - this.mapToBase(p), 1233 - a, 1234 - b 1235 - ); 1236 - } 1237 - watchFile(p, a, b) { 1238 - return this.baseFs.watchFile( 1239 - this.mapToBase(p), 1240 - a, 1241 - b 1242 - ); 1243 - } 1244 - unwatchFile(p, cb) { 1245 - return this.baseFs.unwatchFile(this.mapToBase(p), cb); 1246 - } 1247 - fsMapToBase(p) { 1248 - if (typeof p === `number`) { 1249 - return p; 1250 - } else { 1251 - return this.mapToBase(p); 1252 - } 1253 - } 1254 - } 1255 - 1256 - const NUMBER_REGEXP = /^[0-9]+$/; 1257 - const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/; 1258 - const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/; 1259 - class VirtualFS extends ProxiedFS { 1260 - constructor({ baseFs = new NodeFS() } = {}) { 1261 - super(ppath); 1262 - this.baseFs = baseFs; 1263 - } 1264 - static makeVirtualPath(base, component, to) { 1265 - if (ppath.basename(base) !== `__virtual__`) 1266 - throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`); 1267 - if (!ppath.basename(component).match(VALID_COMPONENT)) 1268 - throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`); 1269 - const target = ppath.relative(ppath.dirname(base), to); 1270 - const segments = target.split(`/`); 1271 - let depth = 0; 1272 - while (depth < segments.length && segments[depth] === `..`) 1273 - depth += 1; 1274 - const finalSegments = segments.slice(depth); 1275 - const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments); 1276 - return fullVirtualPath; 1277 - } 1278 - static resolveVirtual(p) { 1279 - const match = p.match(VIRTUAL_REGEXP); 1280 - if (!match || !match[3] && match[5]) 1281 - return p; 1282 - const target = ppath.dirname(match[1]); 1283 - if (!match[3] || !match[4]) 1284 - return target; 1285 - const isnum = NUMBER_REGEXP.test(match[4]); 1286 - if (!isnum) 1287 - return p; 1288 - const depth = Number(match[4]); 1289 - const backstep = `../`.repeat(depth); 1290 - const subpath = match[5] || `.`; 1291 - return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath)); 1292 - } 1293 - getExtractHint(hints) { 1294 - return this.baseFs.getExtractHint(hints); 1295 - } 1296 - getRealPath() { 1297 - return this.baseFs.getRealPath(); 1298 - } 1299 - realpathSync(p) { 1300 - const match = p.match(VIRTUAL_REGEXP); 1301 - if (!match) 1302 - return this.baseFs.realpathSync(p); 1303 - if (!match[5]) 1304 - return p; 1305 - const realpath = this.baseFs.realpathSync(this.mapToBase(p)); 1306 - return VirtualFS.makeVirtualPath(match[1], match[3], realpath); 1307 - } 1308 - async realpathPromise(p) { 1309 - const match = p.match(VIRTUAL_REGEXP); 1310 - if (!match) 1311 - return await this.baseFs.realpathPromise(p); 1312 - if (!match[5]) 1313 - return p; 1314 - const realpath = await this.baseFs.realpathPromise(this.mapToBase(p)); 1315 - return VirtualFS.makeVirtualPath(match[1], match[3], realpath); 1316 - } 1317 - mapToBase(p) { 1318 - if (p === ``) 1319 - return p; 1320 - if (this.pathUtils.isAbsolute(p)) 1321 - return VirtualFS.resolveVirtual(p); 1322 - const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot)); 1323 - const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p)); 1324 - return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot; 1325 - } 1326 - mapFromBase(p) { 1327 - return p; 1328 - } 1329 - } 1330 - 1331 - const builtinModules = new Set(Module.builtinModules || Object.keys(process.binding(`natives`))); 1332 - const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request); 1333 - function readPackageScope(checkPath) { 1334 - const rootSeparatorIndex = checkPath.indexOf(npath.sep); 1335 - let separatorIndex; 1336 - do { 1337 - separatorIndex = checkPath.lastIndexOf(npath.sep); 1338 - checkPath = checkPath.slice(0, separatorIndex); 1339 - if (checkPath.endsWith(`${npath.sep}node_modules`)) 1340 - return false; 1341 - const pjson = readPackage(checkPath + npath.sep); 1342 - if (pjson) { 1343 - return { 1344 - data: pjson, 1345 - path: checkPath 1346 - }; 1347 - } 1348 - } while (separatorIndex > rootSeparatorIndex); 1349 - return false; 1350 - } 1351 - function readPackage(requestPath) { 1352 - const jsonPath = npath.resolve(requestPath, `package.json`); 1353 - if (!fs.existsSync(jsonPath)) 1354 - return null; 1355 - return JSON.parse(fs.readFileSync(jsonPath, `utf8`)); 1356 - } 1357 - 1358 - const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10)); 1359 - const HAS_CONSOLIDATED_HOOKS = major > 16 || major === 16 && minor >= 12; 1360 - const HAS_UNFLAGGED_JSON_MODULES = major > 17 || major === 17 && minor >= 5 || major === 16 && minor >= 15; 1361 - const HAS_JSON_IMPORT_ASSERTION_REQUIREMENT = major > 17 || major === 17 && minor >= 1 || major === 16 && minor > 14; 1362 - 1363 - async function tryReadFile$1(path2) { 1364 - try { 1365 - return await fs.promises.readFile(path2, `utf8`); 1366 - } catch (error) { 1367 - if (error.code === `ENOENT`) 1368 - return null; 1369 - throw error; 1370 - } 1371 - } 1372 - function tryParseURL(str, base) { 1373 - try { 1374 - return new URL$1(str, base); 1375 - } catch { 1376 - return null; 1377 - } 1378 - } 1379 - let entrypointPath = null; 1380 - function setEntrypointPath(file) { 1381 - entrypointPath = file; 1382 - } 1383 - function getFileFormat(filepath) { 1384 - var _a, _b; 1385 - const ext = path.extname(filepath); 1386 - switch (ext) { 1387 - case `.mjs`: { 1388 - return `module`; 1389 - } 1390 - case `.cjs`: { 1391 - return `commonjs`; 1392 - } 1393 - case `.wasm`: { 1394 - throw new Error( 1395 - `Unknown file extension ".wasm" for ${filepath}` 1396 - ); 1397 - } 1398 - case `.json`: { 1399 - if (HAS_UNFLAGGED_JSON_MODULES) 1400 - return `json`; 1401 - throw new Error( 1402 - `Unknown file extension ".json" for ${filepath}` 1403 - ); 1404 - } 1405 - case `.js`: { 1406 - const pkg = readPackageScope(filepath); 1407 - if (!pkg) 1408 - return `commonjs`; 1409 - return (_a = pkg.data.type) != null ? _a : `commonjs`; 1410 - } 1411 - default: { 1412 - if (entrypointPath !== filepath) 1413 - return null; 1414 - const pkg = readPackageScope(filepath); 1415 - if (!pkg) 1416 - return `commonjs`; 1417 - if (pkg.data.type === `module`) 1418 - return null; 1419 - return (_b = pkg.data.type) != null ? _b : `commonjs`; 1420 - } 1421 - } 1422 - } 1423 - 1424 - async function getFormat$1(resolved, context, defaultGetFormat) { 1425 - const url = tryParseURL(resolved); 1426 - if ((url == null ? void 0 : url.protocol) !== `file:`) 1427 - return defaultGetFormat(resolved, context, defaultGetFormat); 1428 - const format = getFileFormat(fileURLToPath(url)); 1429 - if (format) { 1430 - return { 1431 - format 1432 - }; 1433 - } 1434 - return defaultGetFormat(resolved, context, defaultGetFormat); 1435 - } 1436 - 1437 - async function getSource$1(urlString, context, defaultGetSource) { 1438 - const url = tryParseURL(urlString); 1439 - if ((url == null ? void 0 : url.protocol) !== `file:`) 1440 - return defaultGetSource(urlString, context, defaultGetSource); 1441 - return { 1442 - source: await fs.promises.readFile(fileURLToPath(url), `utf8`) 1443 - }; 1444 - } 1445 - 1446 - async function load$1(urlString, context, nextLoad) { 1447 - var _a; 1448 - const url = tryParseURL(urlString); 1449 - if ((url == null ? void 0 : url.protocol) !== `file:`) 1450 - return nextLoad(urlString, context, nextLoad); 1451 - const filePath = fileURLToPath(url); 1452 - const format = getFileFormat(filePath); 1453 - if (!format) 1454 - return nextLoad(urlString, context, nextLoad); 1455 - if (HAS_JSON_IMPORT_ASSERTION_REQUIREMENT && format === `json` && ((_a = context.importAssertions) == null ? void 0 : _a.type) !== `json`) { 1456 - const err = new TypeError(`[ERR_IMPORT_ASSERTION_TYPE_MISSING]: Module "${urlString}" needs an import assertion of type "json"`); 1457 - err.code = `ERR_IMPORT_ASSERTION_TYPE_MISSING`; 1458 - throw err; 1459 - } 1460 - if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) { 1461 - process.send({ 1462 - "watch:import": pathToFileURL( 1463 - npath.fromPortablePath( 1464 - VirtualFS.resolveVirtual(npath.toPortablePath(filePath)) 1465 - ) 1466 - ).href 1467 - }); 1468 - } 1469 - return { 1470 - format, 1471 - source: await fs.promises.readFile(filePath, `utf8`), 1472 - shortCircuit: true 1473 - }; 1474 - } 1475 - 1476 - const ArrayIsArray = Array.isArray; 1477 - const JSONStringify = JSON.stringify; 1478 - const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames; 1479 - const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop); 1480 - const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string); 1481 - const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest); 1482 - const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest); 1483 - const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest); 1484 - const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest); 1485 - const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest); 1486 - const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest); 1487 - const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest); 1488 - const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest); 1489 - const SafeMap = Map; 1490 - const JSONParse = JSON.parse; 1491 - 1492 - function createErrorType(code, messageCreator, errorType) { 1493 - return class extends errorType { 1494 - constructor(...args) { 1495 - super(messageCreator(...args)); 1496 - this.code = code; 1497 - this.name = `${errorType.name} [${code}]`; 1498 - } 1499 - }; 1500 - } 1501 - const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType( 1502 - `ERR_PACKAGE_IMPORT_NOT_DEFINED`, 1503 - (specifier, packagePath, base) => { 1504 - return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`; 1505 - }, 1506 - TypeError 1507 - ); 1508 - const ERR_INVALID_MODULE_SPECIFIER = createErrorType( 1509 - `ERR_INVALID_MODULE_SPECIFIER`, 1510 - (request, reason, base = void 0) => { 1511 - return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`; 1512 - }, 1513 - TypeError 1514 - ); 1515 - const ERR_INVALID_PACKAGE_TARGET = createErrorType( 1516 - `ERR_INVALID_PACKAGE_TARGET`, 1517 - (pkgPath, key, target, isImport = false, base = void 0) => { 1518 - const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`); 1519 - if (key === `.`) { 1520 - assert(isImport === false); 1521 - return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; 1522 - } 1523 - return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify( 1524 - target 1525 - )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`; 1526 - }, 1527 - Error 1528 - ); 1529 - const ERR_INVALID_PACKAGE_CONFIG = createErrorType( 1530 - `ERR_INVALID_PACKAGE_CONFIG`, 1531 - (path, base, message) => { 1532 - return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`; 1533 - }, 1534 - Error 1535 - ); 1536 - 1537 - function filterOwnProperties(source, keys) { 1538 - const filtered = /* @__PURE__ */ Object.create(null); 1539 - for (let i = 0; i < keys.length; i++) { 1540 - const key = keys[i]; 1541 - if (ObjectPrototypeHasOwnProperty(source, key)) { 1542 - filtered[key] = source[key]; 1543 - } 1544 - } 1545 - return filtered; 1546 - } 1547 - 1548 - const packageJSONCache = new SafeMap(); 1549 - function getPackageConfig(path, specifier, base, readFileSyncFn) { 1550 - const existing = packageJSONCache.get(path); 1551 - if (existing !== void 0) { 1552 - return existing; 1553 - } 1554 - const source = readFileSyncFn(path); 1555 - if (source === void 0) { 1556 - const packageConfig2 = { 1557 - pjsonPath: path, 1558 - exists: false, 1559 - main: void 0, 1560 - name: void 0, 1561 - type: "none", 1562 - exports: void 0, 1563 - imports: void 0 1564 - }; 1565 - packageJSONCache.set(path, packageConfig2); 1566 - return packageConfig2; 1567 - } 1568 - let packageJSON; 1569 - try { 1570 - packageJSON = JSONParse(source); 1571 - } catch (error) { 1572 - throw new ERR_INVALID_PACKAGE_CONFIG( 1573 - path, 1574 - (base ? `"${specifier}" from ` : "") + fileURLToPath(base || specifier), 1575 - error.message 1576 - ); 1577 - } 1578 - let { imports, main, name, type } = filterOwnProperties(packageJSON, [ 1579 - "imports", 1580 - "main", 1581 - "name", 1582 - "type" 1583 - ]); 1584 - const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0; 1585 - if (typeof imports !== "object" || imports === null) { 1586 - imports = void 0; 1587 - } 1588 - if (typeof main !== "string") { 1589 - main = void 0; 1590 - } 1591 - if (typeof name !== "string") { 1592 - name = void 0; 1593 - } 1594 - if (type !== "module" && type !== "commonjs") { 1595 - type = "none"; 1596 - } 1597 - const packageConfig = { 1598 - pjsonPath: path, 1599 - exists: true, 1600 - main, 1601 - name, 1602 - type, 1603 - exports, 1604 - imports 1605 - }; 1606 - packageJSONCache.set(path, packageConfig); 1607 - return packageConfig; 1608 - } 1609 - function getPackageScopeConfig(resolved, readFileSyncFn) { 1610 - let packageJSONUrl = new URL("./package.json", resolved); 1611 - while (true) { 1612 - const packageJSONPath2 = packageJSONUrl.pathname; 1613 - if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) { 1614 - break; 1615 - } 1616 - const packageConfig2 = getPackageConfig( 1617 - fileURLToPath(packageJSONUrl), 1618 - resolved, 1619 - void 0, 1620 - readFileSyncFn 1621 - ); 1622 - if (packageConfig2.exists) { 1623 - return packageConfig2; 1624 - } 1625 - const lastPackageJSONUrl = packageJSONUrl; 1626 - packageJSONUrl = new URL("../package.json", packageJSONUrl); 1627 - if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) { 1628 - break; 1629 - } 1630 - } 1631 - const packageJSONPath = fileURLToPath(packageJSONUrl); 1632 - const packageConfig = { 1633 - pjsonPath: packageJSONPath, 1634 - exists: false, 1635 - main: void 0, 1636 - name: void 0, 1637 - type: "none", 1638 - exports: void 0, 1639 - imports: void 0 1640 - }; 1641 - packageJSONCache.set(packageJSONPath, packageConfig); 1642 - return packageConfig; 1643 - } 1644 - 1645 - /** 1646 - @license 1647 - Copyright Node.js contributors. All rights reserved. 1648 - 1649 - Permission is hereby granted, free of charge, to any person obtaining a copy 1650 - of this software and associated documentation files (the "Software"), to 1651 - deal in the Software without restriction, including without limitation the 1652 - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or 1653 - sell copies of the Software, and to permit persons to whom the Software is 1654 - furnished to do so, subject to the following conditions: 1655 - 1656 - The above copyright notice and this permission notice shall be included in 1657 - all copies or substantial portions of the Software. 1658 - 1659 - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1660 - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1661 - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 1662 - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 1663 - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 1664 - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS 1665 - IN THE SOFTWARE. 1666 - */ 1667 - function throwImportNotDefined(specifier, packageJSONUrl, base) { 1668 - throw new ERR_PACKAGE_IMPORT_NOT_DEFINED( 1669 - specifier, 1670 - packageJSONUrl && fileURLToPath(new URL(".", packageJSONUrl)), 1671 - fileURLToPath(base) 1672 - ); 1673 - } 1674 - function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) { 1675 - const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${fileURLToPath(packageJSONUrl)}`; 1676 - throw new ERR_INVALID_MODULE_SPECIFIER( 1677 - subpath, 1678 - reason, 1679 - base && fileURLToPath(base) 1680 - ); 1681 - } 1682 - function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) { 1683 - if (typeof target === "object" && target !== null) { 1684 - target = JSONStringify(target, null, ""); 1685 - } else { 1686 - target = `${target}`; 1687 - } 1688 - throw new ERR_INVALID_PACKAGE_TARGET( 1689 - fileURLToPath(new URL(".", packageJSONUrl)), 1690 - subpath, 1691 - target, 1692 - internal, 1693 - base && fileURLToPath(base) 1694 - ); 1695 - } 1696 - const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i; 1697 - const patternRegEx = /\*/g; 1698 - function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) { 1699 - if (subpath !== "" && !pattern && target[target.length - 1] !== "/") 1700 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 1701 - if (!StringPrototypeStartsWith(target, "./")) { 1702 - if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) { 1703 - let isURL = false; 1704 - try { 1705 - new URL(target); 1706 - isURL = true; 1707 - } catch { 1708 - } 1709 - if (!isURL) { 1710 - const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath; 1711 - return exportTarget; 1712 - } 1713 - } 1714 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 1715 - } 1716 - if (RegExpPrototypeExec( 1717 - invalidSegmentRegEx, 1718 - StringPrototypeSlice(target, 2) 1719 - ) !== null) 1720 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 1721 - const resolved = new URL(target, packageJSONUrl); 1722 - const resolvedPath = resolved.pathname; 1723 - const packagePath = new URL(".", packageJSONUrl).pathname; 1724 - if (!StringPrototypeStartsWith(resolvedPath, packagePath)) 1725 - throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base); 1726 - if (subpath === "") 1727 - return resolved; 1728 - if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) { 1729 - const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath; 1730 - throwInvalidSubpath(request, packageJSONUrl, internal, base); 1731 - } 1732 - if (pattern) { 1733 - return new URL( 1734 - RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath) 1735 - ); 1736 - } 1737 - return new URL(subpath, resolved); 1738 - } 1739 - function isArrayIndex(key) { 1740 - const keyNum = +key; 1741 - if (`${keyNum}` !== key) 1742 - return false; 1743 - return keyNum >= 0 && keyNum < 4294967295; 1744 - } 1745 - function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) { 1746 - if (typeof target === "string") { 1747 - return resolvePackageTargetString( 1748 - target, 1749 - subpath, 1750 - packageSubpath, 1751 - packageJSONUrl, 1752 - base, 1753 - pattern, 1754 - internal); 1755 - } else if (ArrayIsArray(target)) { 1756 - if (target.length === 0) { 1757 - return null; 1758 - } 1759 - let lastException; 1760 - for (let i = 0; i < target.length; i++) { 1761 - const targetItem = target[i]; 1762 - let resolveResult; 1763 - try { 1764 - resolveResult = resolvePackageTarget( 1765 - packageJSONUrl, 1766 - targetItem, 1767 - subpath, 1768 - packageSubpath, 1769 - base, 1770 - pattern, 1771 - internal, 1772 - conditions 1773 - ); 1774 - } catch (e) { 1775 - lastException = e; 1776 - if (e.code === "ERR_INVALID_PACKAGE_TARGET") { 1777 - continue; 1778 - } 1779 - throw e; 1780 - } 1781 - if (resolveResult === void 0) { 1782 - continue; 1783 - } 1784 - if (resolveResult === null) { 1785 - lastException = null; 1786 - continue; 1787 - } 1788 - return resolveResult; 1789 - } 1790 - if (lastException === void 0 || lastException === null) 1791 - return lastException; 1792 - throw lastException; 1793 - } else if (typeof target === "object" && target !== null) { 1794 - const keys = ObjectGetOwnPropertyNames(target); 1795 - for (let i = 0; i < keys.length; i++) { 1796 - const key = keys[i]; 1797 - if (isArrayIndex(key)) { 1798 - throw new ERR_INVALID_PACKAGE_CONFIG( 1799 - fileURLToPath(packageJSONUrl), 1800 - base, 1801 - '"exports" cannot contain numeric property keys.' 1802 - ); 1803 - } 1804 - } 1805 - for (let i = 0; i < keys.length; i++) { 1806 - const key = keys[i]; 1807 - if (key === "default" || conditions.has(key)) { 1808 - const conditionalTarget = target[key]; 1809 - const resolveResult = resolvePackageTarget( 1810 - packageJSONUrl, 1811 - conditionalTarget, 1812 - subpath, 1813 - packageSubpath, 1814 - base, 1815 - pattern, 1816 - internal, 1817 - conditions 1818 - ); 1819 - if (resolveResult === void 0) 1820 - continue; 1821 - return resolveResult; 1822 - } 1823 - } 1824 - return void 0; 1825 - } else if (target === null) { 1826 - return null; 1827 - } 1828 - throwInvalidPackageTarget( 1829 - packageSubpath, 1830 - target, 1831 - packageJSONUrl, 1832 - internal, 1833 - base 1834 - ); 1835 - } 1836 - function patternKeyCompare(a, b) { 1837 - const aPatternIndex = StringPrototypeIndexOf(a, "*"); 1838 - const bPatternIndex = StringPrototypeIndexOf(b, "*"); 1839 - const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1; 1840 - const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1; 1841 - if (baseLenA > baseLenB) 1842 - return -1; 1843 - if (baseLenB > baseLenA) 1844 - return 1; 1845 - if (aPatternIndex === -1) 1846 - return 1; 1847 - if (bPatternIndex === -1) 1848 - return -1; 1849 - if (a.length > b.length) 1850 - return -1; 1851 - if (b.length > a.length) 1852 - return 1; 1853 - return 0; 1854 - } 1855 - function packageImportsResolve({ 1856 - name, 1857 - base, 1858 - conditions, 1859 - readFileSyncFn 1860 - }) { 1861 - if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) { 1862 - const reason = "is not a valid internal imports specifier name"; 1863 - throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, fileURLToPath(base)); 1864 - } 1865 - let packageJSONUrl; 1866 - const packageConfig = getPackageScopeConfig(base, readFileSyncFn); 1867 - if (packageConfig.exists) { 1868 - packageJSONUrl = pathToFileURL(packageConfig.pjsonPath); 1869 - const imports = packageConfig.imports; 1870 - if (imports) { 1871 - if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) { 1872 - const resolveResult = resolvePackageTarget( 1873 - packageJSONUrl, 1874 - imports[name], 1875 - "", 1876 - name, 1877 - base, 1878 - false, 1879 - true, 1880 - conditions 1881 - ); 1882 - if (resolveResult != null) { 1883 - return resolveResult; 1884 - } 1885 - } else { 1886 - let bestMatch = ""; 1887 - let bestMatchSubpath; 1888 - const keys = ObjectGetOwnPropertyNames(imports); 1889 - for (let i = 0; i < keys.length; i++) { 1890 - const key = keys[i]; 1891 - const patternIndex = StringPrototypeIndexOf(key, "*"); 1892 - if (patternIndex !== -1 && StringPrototypeStartsWith( 1893 - name, 1894 - StringPrototypeSlice(key, 0, patternIndex) 1895 - )) { 1896 - const patternTrailer = StringPrototypeSlice(key, patternIndex + 1); 1897 - if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) { 1898 - bestMatch = key; 1899 - bestMatchSubpath = StringPrototypeSlice( 1900 - name, 1901 - patternIndex, 1902 - name.length - patternTrailer.length 1903 - ); 1904 - } 1905 - } 1906 - } 1907 - if (bestMatch) { 1908 - const target = imports[bestMatch]; 1909 - const resolveResult = resolvePackageTarget( 1910 - packageJSONUrl, 1911 - target, 1912 - bestMatchSubpath, 1913 - bestMatch, 1914 - base, 1915 - true, 1916 - true, 1917 - conditions 1918 - ); 1919 - if (resolveResult != null) { 1920 - return resolveResult; 1921 - } 1922 - } 1923 - } 1924 - } 1925 - } 1926 - throwImportNotDefined(name, packageJSONUrl, base); 1927 - } 1928 - 1929 - const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/; 1930 - const isRelativeRegexp = /^\.{0,2}\//; 1931 - function tryReadFile(filePath) { 1932 - try { 1933 - return fs.readFileSync(filePath, `utf8`); 1934 - } catch (err) { 1935 - if (err.code === `ENOENT`) 1936 - return void 0; 1937 - throw err; 1938 - } 1939 - } 1940 - async function resolvePrivateRequest(specifier, issuer, context, nextResolve) { 1941 - const resolved = packageImportsResolve({ 1942 - name: specifier, 1943 - base: pathToFileURL(issuer), 1944 - conditions: new Set(context.conditions), 1945 - readFileSyncFn: tryReadFile 1946 - }); 1947 - if (resolved instanceof URL) { 1948 - return { url: resolved.href, shortCircuit: true }; 1949 - } else { 1950 - if (resolved.startsWith(`#`)) 1951 - throw new Error(`Mapping from one private import to another isn't allowed`); 1952 - return resolve$1(resolved, context, nextResolve); 1953 - } 1954 - } 1955 - async function resolve$1(originalSpecifier, context, nextResolve) { 1956 - var _a; 1957 - const { findPnpApi } = moduleExports; 1958 - if (!findPnpApi || isBuiltinModule(originalSpecifier)) 1959 - return nextResolve(originalSpecifier, context, nextResolve); 1960 - let specifier = originalSpecifier; 1961 - const url = tryParseURL(specifier, isRelativeRegexp.test(specifier) ? context.parentURL : void 0); 1962 - if (url) { 1963 - if (url.protocol !== `file:`) 1964 - return nextResolve(originalSpecifier, context, nextResolve); 1965 - specifier = fileURLToPath(url); 1966 - } 1967 - const { parentURL, conditions = [] } = context; 1968 - const issuer = parentURL ? fileURLToPath(parentURL) : process.cwd(); 1969 - const pnpapi = (_a = findPnpApi(issuer)) != null ? _a : url ? findPnpApi(specifier) : null; 1970 - if (!pnpapi) 1971 - return nextResolve(originalSpecifier, context, nextResolve); 1972 - if (specifier.startsWith(`#`)) 1973 - return resolvePrivateRequest(specifier, issuer, context, nextResolve); 1974 - const dependencyNameMatch = specifier.match(pathRegExp); 1975 - let allowLegacyResolve = false; 1976 - if (dependencyNameMatch) { 1977 - const [, dependencyName, subPath] = dependencyNameMatch; 1978 - if (subPath === ``) { 1979 - const resolved = pnpapi.resolveToUnqualified(`${dependencyName}/package.json`, issuer); 1980 - if (resolved) { 1981 - const content = await tryReadFile$1(resolved); 1982 - if (content) { 1983 - const pkg = JSON.parse(content); 1984 - allowLegacyResolve = pkg.exports == null; 1985 - } 1986 - } 1987 - } 1988 - } 1989 - const result = pnpapi.resolveRequest(specifier, issuer, { 1990 - conditions: new Set(conditions), 1991 - extensions: allowLegacyResolve ? void 0 : [] 1992 - }); 1993 - if (!result) 1994 - throw new Error(`Resolving '${specifier}' from '${issuer}' failed`); 1995 - const resultURL = pathToFileURL(result); 1996 - if (url) { 1997 - resultURL.search = url.search; 1998 - resultURL.hash = url.hash; 1999 - } 2000 - if (!parentURL) 2001 - setEntrypointPath(fileURLToPath(resultURL)); 2002 - return { 2003 - url: resultURL.href, 2004 - shortCircuit: true 2005 - }; 2006 - } 2007 - 2008 - const binding = process.binding(`fs`); 2009 - const originalfstat = binding.fstat; 2010 - const ZIP_MASK = 4278190080; 2011 - const ZIP_MAGIC = 704643072; 2012 - binding.fstat = function(...args) { 2013 - const [fd, useBigint, req] = args; 2014 - if ((fd & ZIP_MASK) === ZIP_MAGIC && useBigint === false && req === void 0) { 2015 - try { 2016 - const stats = fs.fstatSync(fd); 2017 - return new Float64Array([ 2018 - stats.dev, 2019 - stats.mode, 2020 - stats.nlink, 2021 - stats.uid, 2022 - stats.gid, 2023 - stats.rdev, 2024 - stats.blksize, 2025 - stats.ino, 2026 - stats.size, 2027 - stats.blocks 2028 - ]); 2029 - } catch { 2030 - } 2031 - } 2032 - return originalfstat.apply(this, args); 2033 - }; 2034 - 2035 - const resolve = resolve$1; 2036 - const getFormat = HAS_CONSOLIDATED_HOOKS ? void 0 : getFormat$1; 2037 - const getSource = HAS_CONSOLIDATED_HOOKS ? void 0 : getSource$1; 2038 - const load = HAS_CONSOLIDATED_HOOKS ? load$1 : void 0; 2039 - 2040 - export { getFormat, getSource, load, resolve };