2023-08-06 03:52:45 -04:00
#!/usr/bin/env node
/* eslint-disable */
"use strict" ;
function $$SETUP _STATE ( hydrateRuntimeState , basePath ) {
return hydrateRuntimeState ( JSON . parse ( ' { \
"__info" : [ \
"This file is automatically generated. Do not touch it, or risk" , \
"your modifications being lost. We also recommend you not to read" , \
"it either without using the @yarnpkg/pnp package, as the data layout" , \
"is entirely unspecified and WILL change from a version to another." \
] , \
"dependencyTreeRoots" : [ \
{ \
"name" : "daggerbot-ts" , \
"reference" : "workspace:." \
} \
] , \
"enableTopLevelFallback" : true , \
"ignorePatternData" : "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)" , \
"fallbackExclusionList" : [ \
[ "daggerbot-ts" , [ "workspace:." ] ] \
] , \
"fallbackPool" : [ \
] , \
"packageRegistryData" : [ \
[ null , [ \
[ null , { \
"packageLocation" : "./" , \
"packageDependencies" : [ \
[ "@discord-player/extractor" , "npm:4.4.1" ] , \
[ "@discordjs/opus" , "npm:0.9.0" ] , \
[ "@octokit/auth-token" , "npm:4.0.0" ] , \
[ "@octokit/rest" , "npm:20.0.1" ] , \
[ "@types/ms" , "npm:0.7.31" ] , \
2023-08-12 12:40:18 -04:00
[ "@types/node" , "npm:20.4.10" ] , \
2023-08-06 03:52:45 -04:00
[ "axios" , "npm:1.4.0" ] , \
[ "canvas" , "npm:2.11.2" ] , \
[ "discord-player" , "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:6.6.2" ] , \
2023-08-12 13:18:46 -04:00
[ "discord.js" , "npm:14.13.0-dev.1691841828-9ed1b59df.0" ] , \
2023-08-11 08:40:26 -04:00
[ "libsodium-wrappers" , "npm:0.7.11" ] , \
2023-08-06 03:52:45 -04:00
[ "moment" , "npm:2.29.4" ] , \
2023-08-12 12:40:18 -04:00
[ "mongoose" , "npm:7.4.3" ] , \
2023-08-06 03:52:45 -04:00
[ "ms" , "npm:2.1.3" ] , \
[ "prism-media" , "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:1.3.5" ] , \
2023-08-12 12:40:18 -04:00
[ "systeminformation" , "npm:5.18.15" ] , \
2023-08-06 03:52:45 -04:00
[ "typescript" , "patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=5da071" ] , \
[ "xml-js" , "npm:1.6.11" ] , \
2023-08-07 04:14:08 -04:00
[ "youtube-sr" , "npm:4.3.4" ] , \
2023-08-06 03:52:45 -04:00
[ "ytdl-core" , "npm:4.11.5" ] \
] , \
"linkType" : "SOFT" \
} ] \
] ] , \
[ "@discord-player/equalizer" , [ \
[ "npm:0.2.2" , { \
"packageLocation" : "./.yarn/cache/@discord-player-equalizer-npm-0.2.2-4485821a15-33b9991a84.zip/node_modules/@discord-player/equalizer/" , \
"packageDependencies" : [ \
[ "@discord-player/equalizer" , "npm:0.2.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discord-player/extractor" , [ \
[ "npm:4.4.1" , { \
"packageLocation" : "./.yarn/cache/@discord-player-extractor-npm-4.4.1-0e54ee9101-5a2a2315dc.zip/node_modules/@discord-player/extractor/" , \
"packageDependencies" : [ \
[ "@discord-player/extractor" , "npm:4.4.1" ] , \
[ "file-type" , "npm:16.5.4" ] , \
[ "genius-lyrics" , "npm:4.4.3" ] , \
[ "isomorphic-unfetch" , "npm:4.0.2" ] , \
[ "node-html-parser" , "npm:6.1.5" ] , \
[ "reverbnation-scraper" , "npm:2.0.0" ] , \
[ "soundcloud.ts" , "npm:0.5.2" ] , \
[ "spotify-url-info" , "npm:3.2.6" ] , \
[ "youtube-sr" , "npm:4.3.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discord-player/ffmpeg" , [ \
[ "npm:0.1.0" , { \
"packageLocation" : "./.yarn/cache/@discord-player-ffmpeg-npm-0.1.0-9f0772387f-95653c0f78.zip/node_modules/@discord-player/ffmpeg/" , \
"packageDependencies" : [ \
[ "@discord-player/ffmpeg" , "npm:0.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discord-player/utils" , [ \
[ "npm:0.2.2" , { \
"packageLocation" : "./.yarn/cache/@discord-player-utils-npm-0.2.2-06a295dbb3-1e82767fa6.zip/node_modules/@discord-player/utils/" , \
"packageDependencies" : [ \
[ "@discord-player/utils" , "npm:0.2.2" ] , \
[ "@discordjs/collection" , "npm:1.5.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/builders" , [ \
[ "npm:1.6.4" , { \
"packageLocation" : "./.yarn/cache/@discordjs-builders-npm-1.6.4-73f25610c1-059ebe77b1.zip/node_modules/@discordjs/builders/" , \
"packageDependencies" : [ \
[ "@discordjs/builders" , "npm:1.6.4" ] , \
[ "@discordjs/formatters" , "npm:0.3.1" ] , \
[ "@discordjs/util" , "npm:1.0.0" ] , \
[ "@sapphire/shapeshift" , "npm:3.9.2" ] , \
[ "discord-api-types" , "npm:0.37.51" ] , \
[ "fast-deep-equal" , "npm:3.1.3" ] , \
[ "ts-mixer" , "npm:6.0.3" ] , \
[ "tslib" , "npm:2.6.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/collection" , [ \
[ "npm:1.5.2" , { \
"packageLocation" : "./.yarn/cache/@discordjs-collection-npm-1.5.2-782e42c28d-bf51b951c7.zip/node_modules/@discordjs/collection/" , \
"packageDependencies" : [ \
[ "@discordjs/collection" , "npm:1.5.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/formatters" , [ \
[ "npm:0.3.1" , { \
"packageLocation" : "./.yarn/cache/@discordjs-formatters-npm-0.3.1-7840a49252-9635568785.zip/node_modules/@discordjs/formatters/" , \
"packageDependencies" : [ \
[ "@discordjs/formatters" , "npm:0.3.1" ] , \
[ "discord-api-types" , "npm:0.37.51" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/node-pre-gyp" , [ \
[ "npm:0.4.5" , { \
"packageLocation" : "./.yarn/cache/@discordjs-node-pre-gyp-npm-0.4.5-8657d04c40-60ba7bfdb9.zip/node_modules/@discordjs/node-pre-gyp/" , \
"packageDependencies" : [ \
[ "@discordjs/node-pre-gyp" , "npm:0.4.5" ] , \
[ "detect-libc" , "npm:2.0.2" ] , \
[ "https-proxy-agent" , "npm:5.0.1" ] , \
[ "make-dir" , "npm:3.1.0" ] , \
[ "node-fetch" , "virtual:96190e77b0d1d9514198043e0d57ffc6ec9756bb40a6a375e74b503742f52d995fd945e4450439fc918585a43d04de7bc0829d40d03902827616828b235f2002#npm:2.6.12" ] , \
[ "nopt" , "npm:5.0.0" ] , \
[ "npmlog" , "npm:5.0.1" ] , \
[ "rimraf" , "npm:3.0.2" ] , \
[ "semver" , "npm:7.5.4" ] , \
[ "tar" , "npm:6.1.15" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/opus" , [ \
[ "npm:0.9.0" , { \
"packageLocation" : "./.yarn/unplugged/@discordjs-opus-npm-0.9.0-9d320d2b10/node_modules/@discordjs/opus/" , \
"packageDependencies" : [ \
[ "@discordjs/opus" , "npm:0.9.0" ] , \
[ "@discordjs/node-pre-gyp" , "npm:0.4.5" ] , \
[ "node-addon-api" , "npm:5.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/rest" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/@discordjs-rest-npm-2.0.0-124259cee8-df610f6bce.zip/node_modules/@discordjs/rest/" , \
"packageDependencies" : [ \
[ "@discordjs/rest" , "npm:2.0.0" ] , \
[ "@discordjs/collection" , "npm:1.5.2" ] , \
[ "@discordjs/util" , "npm:1.0.0" ] , \
[ "@sapphire/async-queue" , "npm:1.5.0" ] , \
[ "@sapphire/snowflake" , "npm:3.5.1" ] , \
[ "@vladfrangu/async_event_emitter" , "npm:2.2.2" ] , \
[ "discord-api-types" , "npm:0.37.51" ] , \
[ "magic-bytes.js" , "npm:1.0.15" ] , \
[ "tslib" , "npm:2.6.1" ] , \
[ "undici" , "npm:5.23.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/util" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/@discordjs-util-npm-1.0.0-5c10481950-bbd800408c.zip/node_modules/@discordjs/util/" , \
"packageDependencies" : [ \
[ "@discordjs/util" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/voice" , [ \
[ "npm:0.16.0" , { \
"packageLocation" : "./.yarn/cache/@discordjs-voice-npm-0.16.0-37f8ab283f-521824475c.zip/node_modules/@discordjs/voice/" , \
"packageDependencies" : [ \
[ "@discordjs/voice" , "npm:0.16.0" ] , \
[ "@types/ws" , "npm:8.5.5" ] , \
[ "discord-api-types" , "npm:0.37.51" ] , \
[ "prism-media" , "virtual:37f8ab283fb7abcf3fda3c5d430948901f33b8d771da32a273933562670e34608b1daf4394905868d946d64bc91643fb158184deae5131f973a7fcfafbc06afc#npm:1.3.5" ] , \
[ "tslib" , "npm:2.6.1" ] , \
[ "ws" , "virtual:9ce84a0604ad02832e33621299f919cd218b24239fb0c46d80371b76a2e2bb3fa8fbeca210d63d15caaa18cb4bd437d3b404ee91d06cb167e4b2efa32b8e514c#npm:8.13.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@discordjs/ws" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/@discordjs-ws-npm-1.0.0-9ce84a0604-1917361918.zip/node_modules/@discordjs/ws/" , \
"packageDependencies" : [ \
[ "@discordjs/ws" , "npm:1.0.0" ] , \
[ "@discordjs/collection" , "npm:1.5.2" ] , \
[ "@discordjs/rest" , "npm:2.0.0" ] , \
[ "@discordjs/util" , "npm:1.0.0" ] , \
[ "@sapphire/async-queue" , "npm:1.5.0" ] , \
[ "@types/ws" , "npm:8.5.5" ] , \
[ "@vladfrangu/async_event_emitter" , "npm:2.2.2" ] , \
[ "discord-api-types" , "npm:0.37.51" ] , \
[ "tslib" , "npm:2.6.1" ] , \
[ "ws" , "virtual:9ce84a0604ad02832e33621299f919cd218b24239fb0c46d80371b76a2e2bb3fa8fbeca210d63d15caaa18cb4bd437d3b404ee91d06cb167e4b2efa32b8e514c#npm:8.13.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@isaacs/cliui" , [ \
[ "npm:8.0.2" , { \
"packageLocation" : "./.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip/node_modules/@isaacs/cliui/" , \
"packageDependencies" : [ \
[ "@isaacs/cliui" , "npm:8.0.2" ] , \
[ "string-width" , "npm:5.1.2" ] , \
[ "string-width-cjs" , [ \
"string-width" , \
"npm:4.2.3" \
] ] , \
[ "strip-ansi" , "npm:7.1.0" ] , \
[ "strip-ansi-cjs" , [ \
"strip-ansi" , \
"npm:6.0.1" \
] ] , \
[ "wrap-ansi" , "npm:8.1.0" ] , \
[ "wrap-ansi-cjs" , [ \
"wrap-ansi" , \
"npm:7.0.0" \
] ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@mapbox/node-pre-gyp" , [ \
[ "npm:1.0.11" , { \
"packageLocation" : "./.yarn/cache/@mapbox-node-pre-gyp-npm-1.0.11-5547f15a2b-b848f6abc5.zip/node_modules/@mapbox/node-pre-gyp/" , \
"packageDependencies" : [ \
[ "@mapbox/node-pre-gyp" , "npm:1.0.11" ] , \
[ "detect-libc" , "npm:2.0.2" ] , \
[ "https-proxy-agent" , "npm:5.0.1" ] , \
[ "make-dir" , "npm:3.1.0" ] , \
[ "node-fetch" , "virtual:96190e77b0d1d9514198043e0d57ffc6ec9756bb40a6a375e74b503742f52d995fd945e4450439fc918585a43d04de7bc0829d40d03902827616828b235f2002#npm:2.6.12" ] , \
[ "nopt" , "npm:5.0.0" ] , \
[ "npmlog" , "npm:5.0.1" ] , \
[ "rimraf" , "npm:3.0.2" ] , \
[ "semver" , "npm:7.5.4" ] , \
[ "tar" , "npm:6.1.15" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@npmcli/fs" , [ \
[ "npm:3.1.0" , { \
"packageLocation" : "./.yarn/cache/@npmcli-fs-npm-3.1.0-0844a57978-a50a6818de.zip/node_modules/@npmcli/fs/" , \
"packageDependencies" : [ \
[ "@npmcli/fs" , "npm:3.1.0" ] , \
[ "semver" , "npm:7.5.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/auth-token" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-auth-token-npm-4.0.0-9ad78a752f-d78f4dc48b.zip/node_modules/@octokit/auth-token/" , \
"packageDependencies" : [ \
[ "@octokit/auth-token" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/core" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-core-npm-5.0.0-c9003d20df-1a5d1112a2.zip/node_modules/@octokit/core/" , \
"packageDependencies" : [ \
[ "@octokit/core" , "npm:5.0.0" ] , \
[ "@octokit/auth-token" , "npm:4.0.0" ] , \
[ "@octokit/graphql" , "npm:7.0.1" ] , \
[ "@octokit/request" , "npm:8.1.1" ] , \
[ "@octokit/request-error" , "npm:5.0.0" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "before-after-hook" , "npm:2.2.3" ] , \
[ "universal-user-agent" , "npm:6.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/endpoint" , [ \
[ "npm:9.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-endpoint-npm-9.0.0-0d4530e44e-0e402c4d0f.zip/node_modules/@octokit/endpoint/" , \
"packageDependencies" : [ \
[ "@octokit/endpoint" , "npm:9.0.0" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "is-plain-object" , "npm:5.0.0" ] , \
[ "universal-user-agent" , "npm:6.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/graphql" , [ \
[ "npm:7.0.1" , { \
"packageLocation" : "./.yarn/cache/@octokit-graphql-npm-7.0.1-5feff6ab44-7ee907987b.zip/node_modules/@octokit/graphql/" , \
"packageDependencies" : [ \
[ "@octokit/graphql" , "npm:7.0.1" ] , \
[ "@octokit/request" , "npm:8.1.1" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "universal-user-agent" , "npm:6.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/openapi-types" , [ \
[ "npm:18.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-openapi-types-npm-18.0.0-1586e405d6-d487d6c6c1.zip/node_modules/@octokit/openapi-types/" , \
"packageDependencies" : [ \
[ "@octokit/openapi-types" , "npm:18.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/plugin-paginate-rest" , [ \
[ "npm:8.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-plugin-paginate-rest-npm-8.0.0-3e517c8a85-b5d7cee505.zip/node_modules/@octokit/plugin-paginate-rest/" , \
"packageDependencies" : [ \
[ "@octokit/plugin-paginate-rest" , "npm:8.0.0" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:8.0.0" , { \
"packageLocation" : "./.yarn/__virtual__/@octokit-plugin-paginate-rest-virtual-d92d641765/0/cache/@octokit-plugin-paginate-rest-npm-8.0.0-3e517c8a85-b5d7cee505.zip/node_modules/@octokit/plugin-paginate-rest/" , \
"packageDependencies" : [ \
[ "@octokit/plugin-paginate-rest" , "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:8.0.0" ] , \
[ "@octokit/core" , "npm:5.0.0" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "@types/octokit__core" , null ] \
] , \
"packagePeers" : [ \
"@octokit/core" , \
"@types/octokit__core" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/plugin-request-log" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-plugin-request-log-npm-4.0.0-49c2f6ee8b-2a8a661964.zip/node_modules/@octokit/plugin-request-log/" , \
"packageDependencies" : [ \
[ "@octokit/plugin-request-log" , "npm:4.0.0" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:4.0.0" , { \
"packageLocation" : "./.yarn/__virtual__/@octokit-plugin-request-log-virtual-10c47d1e96/0/cache/@octokit-plugin-request-log-npm-4.0.0-49c2f6ee8b-2a8a661964.zip/node_modules/@octokit/plugin-request-log/" , \
"packageDependencies" : [ \
[ "@octokit/plugin-request-log" , "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:4.0.0" ] , \
[ "@octokit/core" , "npm:5.0.0" ] , \
[ "@types/octokit__core" , null ] \
] , \
"packagePeers" : [ \
"@octokit/core" , \
"@types/octokit__core" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/plugin-rest-endpoint-methods" , [ \
[ "npm:9.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-plugin-rest-endpoint-methods-npm-9.0.0-4d91ef0f8a-8795cb29be.zip/node_modules/@octokit/plugin-rest-endpoint-methods/" , \
"packageDependencies" : [ \
[ "@octokit/plugin-rest-endpoint-methods" , "npm:9.0.0" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:9.0.0" , { \
"packageLocation" : "./.yarn/__virtual__/@octokit-plugin-rest-endpoint-methods-virtual-4f5f2bef5c/0/cache/@octokit-plugin-rest-endpoint-methods-npm-9.0.0-4d91ef0f8a-8795cb29be.zip/node_modules/@octokit/plugin-rest-endpoint-methods/" , \
"packageDependencies" : [ \
[ "@octokit/plugin-rest-endpoint-methods" , "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:9.0.0" ] , \
[ "@octokit/core" , "npm:5.0.0" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "@types/octokit__core" , null ] \
] , \
"packagePeers" : [ \
"@octokit/core" , \
"@types/octokit__core" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/request" , [ \
[ "npm:8.1.1" , { \
"packageLocation" : "./.yarn/cache/@octokit-request-npm-8.1.1-404934a724-dec3ba2cba.zip/node_modules/@octokit/request/" , \
"packageDependencies" : [ \
[ "@octokit/request" , "npm:8.1.1" ] , \
[ "@octokit/endpoint" , "npm:9.0.0" ] , \
[ "@octokit/request-error" , "npm:5.0.0" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "is-plain-object" , "npm:5.0.0" ] , \
[ "universal-user-agent" , "npm:6.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/request-error" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-request-error-npm-5.0.0-262908a2c1-2012eca66f.zip/node_modules/@octokit/request-error/" , \
"packageDependencies" : [ \
[ "@octokit/request-error" , "npm:5.0.0" ] , \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "deprecation" , "npm:2.3.1" ] , \
[ "once" , "npm:1.4.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/rest" , [ \
[ "npm:20.0.1" , { \
"packageLocation" : "./.yarn/cache/@octokit-rest-npm-20.0.1-2d22cbfdae-9fb2e154a4.zip/node_modules/@octokit/rest/" , \
"packageDependencies" : [ \
[ "@octokit/rest" , "npm:20.0.1" ] , \
[ "@octokit/core" , "npm:5.0.0" ] , \
[ "@octokit/plugin-paginate-rest" , "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:8.0.0" ] , \
[ "@octokit/plugin-request-log" , "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:4.0.0" ] , \
[ "@octokit/plugin-rest-endpoint-methods" , "virtual:2d22cbfdae79b6abda987ead10a6368dc31e51658d98cd91aca4675883fef819131199263a4351eff81d45812b3ca94b5dd076cdea3272270e08dcc4f909733d#npm:9.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@octokit/types" , [ \
[ "npm:11.1.0" , { \
"packageLocation" : "./.yarn/cache/@octokit-types-npm-11.1.0-668299c1c7-72627a94dd.zip/node_modules/@octokit/types/" , \
"packageDependencies" : [ \
[ "@octokit/types" , "npm:11.1.0" ] , \
[ "@octokit/openapi-types" , "npm:18.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@pkgjs/parseargs" , [ \
[ "npm:0.11.0" , { \
"packageLocation" : "./.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip/node_modules/@pkgjs/parseargs/" , \
"packageDependencies" : [ \
[ "@pkgjs/parseargs" , "npm:0.11.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@sapphire/async-queue" , [ \
[ "npm:1.5.0" , { \
"packageLocation" : "./.yarn/cache/@sapphire-async-queue-npm-1.5.0-f065e42c78-983dbd1fd1.zip/node_modules/@sapphire/async-queue/" , \
"packageDependencies" : [ \
[ "@sapphire/async-queue" , "npm:1.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@sapphire/shapeshift" , [ \
[ "npm:3.9.2" , { \
"packageLocation" : "./.yarn/cache/@sapphire-shapeshift-npm-3.9.2-0a1ff5d126-0d4572281a.zip/node_modules/@sapphire/shapeshift/" , \
"packageDependencies" : [ \
[ "@sapphire/shapeshift" , "npm:3.9.2" ] , \
[ "fast-deep-equal" , "npm:3.1.3" ] , \
[ "lodash" , "npm:4.17.21" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@sapphire/snowflake" , [ \
[ "npm:3.5.1" , { \
"packageLocation" : "./.yarn/cache/@sapphire-snowflake-npm-3.5.1-cebf00e703-8fc025020a.zip/node_modules/@sapphire/snowflake/" , \
"packageDependencies" : [ \
[ "@sapphire/snowflake" , "npm:3.5.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@tokenizer/token" , [ \
[ "npm:0.3.0" , { \
"packageLocation" : "./.yarn/cache/@tokenizer-token-npm-0.3.0-4441352cc5-1d575d02d2.zip/node_modules/@tokenizer/token/" , \
"packageDependencies" : [ \
[ "@tokenizer/token" , "npm:0.3.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@tootallnate/once" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/@tootallnate-once-npm-2.0.0-e36cf4f140-ad87447820.zip/node_modules/@tootallnate/once/" , \
"packageDependencies" : [ \
[ "@tootallnate/once" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@types/ms" , [ \
[ "npm:0.7.31" , { \
"packageLocation" : "./.yarn/cache/@types-ms-npm-0.7.31-ea3b89342b-daadd354ae.zip/node_modules/@types/ms/" , \
"packageDependencies" : [ \
[ "@types/ms" , "npm:0.7.31" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@types/node" , [ \
2023-08-12 12:40:18 -04:00
[ "npm:20.4.10" , { \
"packageLocation" : "./.yarn/cache/@types-node-npm-20.4.10-a66bd58ee3-02a1ca415d.zip/node_modules/@types/node/" , \
"packageDependencies" : [ \
[ "@types/node" , "npm:20.4.10" ] \
] , \
"linkType" : "HARD" \
} ] , \
2023-08-06 03:52:45 -04:00
[ "npm:20.4.8" , { \
"packageLocation" : "./.yarn/cache/@types-node-npm-20.4.8-f8f2d8d349-86a3963c0c.zip/node_modules/@types/node/" , \
"packageDependencies" : [ \
[ "@types/node" , "npm:20.4.8" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@types/webidl-conversions" , [ \
[ "npm:7.0.0" , { \
"packageLocation" : "./.yarn/cache/@types-webidl-conversions-npm-7.0.0-0903313151-60142c7ddd.zip/node_modules/@types/webidl-conversions/" , \
"packageDependencies" : [ \
[ "@types/webidl-conversions" , "npm:7.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@types/whatwg-url" , [ \
[ "npm:8.2.2" , { \
"packageLocation" : "./.yarn/cache/@types-whatwg-url-npm-8.2.2-54c5c24e6c-5dc5afe078.zip/node_modules/@types/whatwg-url/" , \
"packageDependencies" : [ \
[ "@types/whatwg-url" , "npm:8.2.2" ] , \
[ "@types/node" , "npm:20.4.8" ] , \
[ "@types/webidl-conversions" , "npm:7.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@types/ws" , [ \
[ "npm:8.5.5" , { \
"packageLocation" : "./.yarn/cache/@types-ws-npm-8.5.5-5f5e3bde2d-d00bf8070e.zip/node_modules/@types/ws/" , \
"packageDependencies" : [ \
[ "@types/ws" , "npm:8.5.5" ] , \
[ "@types/node" , "npm:20.4.8" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "@vladfrangu/async_event_emitter" , [ \
[ "npm:2.2.2" , { \
"packageLocation" : "./.yarn/cache/@vladfrangu-async_event_emitter-npm-2.2.2-d94a9ff4bf-ed948294fe.zip/node_modules/@vladfrangu/async_event_emitter/" , \
"packageDependencies" : [ \
[ "@vladfrangu/async_event_emitter" , "npm:2.2.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "abbrev" , [ \
[ "npm:1.1.1" , { \
"packageLocation" : "./.yarn/cache/abbrev-npm-1.1.1-3659247eab-a4a97ec07d.zip/node_modules/abbrev/" , \
"packageDependencies" : [ \
[ "abbrev" , "npm:1.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "agent-base" , [ \
[ "npm:6.0.2" , { \
"packageLocation" : "./.yarn/cache/agent-base-npm-6.0.2-428f325a93-f52b6872cc.zip/node_modules/agent-base/" , \
"packageDependencies" : [ \
[ "agent-base" , "npm:6.0.2" ] , \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "agentkeepalive" , [ \
[ "npm:4.4.0" , { \
"packageLocation" : "./.yarn/cache/agentkeepalive-npm-4.4.0-e79a75e614-36e0919a75.zip/node_modules/agentkeepalive/" , \
"packageDependencies" : [ \
[ "agentkeepalive" , "npm:4.4.0" ] , \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] , \
[ "depd" , "npm:2.0.0" ] , \
[ "humanize-ms" , "npm:1.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "aggregate-error" , [ \
[ "npm:3.1.0" , { \
"packageLocation" : "./.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip/node_modules/aggregate-error/" , \
"packageDependencies" : [ \
[ "aggregate-error" , "npm:3.1.0" ] , \
[ "clean-stack" , "npm:2.2.0" ] , \
[ "indent-string" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ansi-regex" , [ \
[ "npm:5.0.1" , { \
"packageLocation" : "./.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip/node_modules/ansi-regex/" , \
"packageDependencies" : [ \
[ "ansi-regex" , "npm:5.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:6.0.1" , { \
"packageLocation" : "./.yarn/cache/ansi-regex-npm-6.0.1-8d663a607d-1ff8b7667c.zip/node_modules/ansi-regex/" , \
"packageDependencies" : [ \
[ "ansi-regex" , "npm:6.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ansi-styles" , [ \
[ "npm:4.3.0" , { \
"packageLocation" : "./.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip/node_modules/ansi-styles/" , \
"packageDependencies" : [ \
[ "ansi-styles" , "npm:4.3.0" ] , \
[ "color-convert" , "npm:2.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:6.2.1" , { \
"packageLocation" : "./.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-ef940f2f0c.zip/node_modules/ansi-styles/" , \
"packageDependencies" : [ \
[ "ansi-styles" , "npm:6.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "aproba" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/aproba-npm-2.0.0-8716bcfde6-5615cadcfb.zip/node_modules/aproba/" , \
"packageDependencies" : [ \
[ "aproba" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "are-we-there-yet" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/are-we-there-yet-npm-2.0.0-7d2f5201ce-6c80b4fd04.zip/node_modules/are-we-there-yet/" , \
"packageDependencies" : [ \
[ "are-we-there-yet" , "npm:2.0.0" ] , \
[ "delegates" , "npm:1.0.0" ] , \
[ "readable-stream" , "npm:3.6.2" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:3.0.1" , { \
"packageLocation" : "./.yarn/cache/are-we-there-yet-npm-3.0.1-3395b1512f-52590c2486.zip/node_modules/are-we-there-yet/" , \
"packageDependencies" : [ \
[ "are-we-there-yet" , "npm:3.0.1" ] , \
[ "delegates" , "npm:1.0.0" ] , \
[ "readable-stream" , "npm:3.6.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "asynckit" , [ \
[ "npm:0.4.0" , { \
"packageLocation" : "./.yarn/cache/asynckit-npm-0.4.0-c718858525-7b78c451df.zip/node_modules/asynckit/" , \
"packageDependencies" : [ \
[ "asynckit" , "npm:0.4.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "axios" , [ \
[ "npm:1.4.0" , { \
"packageLocation" : "./.yarn/cache/axios-npm-1.4.0-4d7ce8ca3e-7fb6a4313b.zip/node_modules/axios/" , \
"packageDependencies" : [ \
[ "axios" , "npm:1.4.0" ] , \
[ "follow-redirects" , "virtual:4d7ce8ca3e1e44d82523fba2ad95e1be18c4e9f8dec6d551377587540da3ed75bd8bd3e812280309a3b90cfdb0560f076f3552a20839f7f15665207a4fbd588a#npm:1.15.2" ] , \
[ "form-data" , "npm:4.0.0" ] , \
[ "proxy-from-env" , "npm:1.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "balanced-match" , [ \
[ "npm:1.0.2" , { \
"packageLocation" : "./.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip/node_modules/balanced-match/" , \
"packageDependencies" : [ \
[ "balanced-match" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "before-after-hook" , [ \
[ "npm:2.2.3" , { \
"packageLocation" : "./.yarn/cache/before-after-hook-npm-2.2.3-d79e3d6608-a1a2430976.zip/node_modules/before-after-hook/" , \
"packageDependencies" : [ \
[ "before-after-hook" , "npm:2.2.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "boolbase" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/boolbase-npm-1.0.0-965fe9af6d-3e25c80ef6.zip/node_modules/boolbase/" , \
"packageDependencies" : [ \
[ "boolbase" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "brace-expansion" , [ \
[ "npm:1.1.11" , { \
"packageLocation" : "./.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip/node_modules/brace-expansion/" , \
"packageDependencies" : [ \
[ "brace-expansion" , "npm:1.1.11" ] , \
[ "balanced-match" , "npm:1.0.2" ] , \
[ "concat-map" , "npm:0.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:2.0.1" , { \
"packageLocation" : "./.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip/node_modules/brace-expansion/" , \
"packageDependencies" : [ \
[ "brace-expansion" , "npm:2.0.1" ] , \
[ "balanced-match" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "bson" , [ \
[ "npm:5.4.0" , { \
"packageLocation" : "./.yarn/cache/bson-npm-5.4.0-2f854c8216-1c07e3d09f.zip/node_modules/bson/" , \
"packageDependencies" : [ \
[ "bson" , "npm:5.4.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "busboy" , [ \
[ "npm:1.6.0" , { \
"packageLocation" : "./.yarn/cache/busboy-npm-1.6.0-ebb5cbb04b-32801e2c01.zip/node_modules/busboy/" , \
"packageDependencies" : [ \
[ "busboy" , "npm:1.6.0" ] , \
[ "streamsearch" , "npm:1.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "cacache" , [ \
[ "npm:17.1.3" , { \
"packageLocation" : "./.yarn/cache/cacache-npm-17.1.3-f75f768a29-385756781e.zip/node_modules/cacache/" , \
"packageDependencies" : [ \
[ "cacache" , "npm:17.1.3" ] , \
[ "@npmcli/fs" , "npm:3.1.0" ] , \
[ "fs-minipass" , "npm:3.0.2" ] , \
[ "glob" , "npm:10.3.3" ] , \
[ "lru-cache" , "npm:7.18.3" ] , \
[ "minipass" , "npm:5.0.0" ] , \
[ "minipass-collect" , "npm:1.0.2" ] , \
[ "minipass-flush" , "npm:1.0.5" ] , \
[ "minipass-pipeline" , "npm:1.2.4" ] , \
[ "p-map" , "npm:4.0.0" ] , \
[ "ssri" , "npm:10.0.4" ] , \
[ "tar" , "npm:6.1.15" ] , \
[ "unique-filename" , "npm:3.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "canvas" , [ \
[ "npm:2.11.2" , { \
"packageLocation" : "./.yarn/unplugged/canvas-npm-2.11.2-824d893a31/node_modules/canvas/" , \
"packageDependencies" : [ \
[ "canvas" , "npm:2.11.2" ] , \
[ "@mapbox/node-pre-gyp" , "npm:1.0.11" ] , \
[ "nan" , "npm:2.17.0" ] , \
[ "node-gyp" , "npm:9.4.0" ] , \
[ "simple-get" , "npm:3.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "cheerio" , [ \
[ "npm:1.0.0-rc.12" , { \
"packageLocation" : "./.yarn/cache/cheerio-npm-1.0.0-rc.12-6785a97c2a-5d4c1b7a53.zip/node_modules/cheerio/" , \
"packageDependencies" : [ \
[ "cheerio" , "npm:1.0.0-rc.12" ] , \
[ "cheerio-select" , "npm:2.1.0" ] , \
[ "dom-serializer" , "npm:2.0.0" ] , \
[ "domhandler" , "npm:5.0.3" ] , \
[ "domutils" , "npm:3.1.0" ] , \
[ "htmlparser2" , "npm:8.0.2" ] , \
[ "parse5" , "npm:7.1.2" ] , \
[ "parse5-htmlparser2-tree-adapter" , "npm:7.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "cheerio-select" , [ \
[ "npm:2.1.0" , { \
"packageLocation" : "./.yarn/cache/cheerio-select-npm-2.1.0-e92bc2f296-843d6d4799.zip/node_modules/cheerio-select/" , \
"packageDependencies" : [ \
[ "cheerio-select" , "npm:2.1.0" ] , \
[ "boolbase" , "npm:1.0.0" ] , \
[ "css-select" , "npm:5.1.0" ] , \
[ "css-what" , "npm:6.1.0" ] , \
[ "domelementtype" , "npm:2.3.0" ] , \
[ "domhandler" , "npm:5.0.3" ] , \
[ "domutils" , "npm:3.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "chownr" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip/node_modules/chownr/" , \
"packageDependencies" : [ \
[ "chownr" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "clean-stack" , [ \
[ "npm:2.2.0" , { \
"packageLocation" : "./.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip/node_modules/clean-stack/" , \
"packageDependencies" : [ \
[ "clean-stack" , "npm:2.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "color-convert" , [ \
[ "npm:2.0.1" , { \
"packageLocation" : "./.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/" , \
"packageDependencies" : [ \
[ "color-convert" , "npm:2.0.1" ] , \
[ "color-name" , "npm:1.1.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "color-name" , [ \
[ "npm:1.1.4" , { \
"packageLocation" : "./.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip/node_modules/color-name/" , \
"packageDependencies" : [ \
[ "color-name" , "npm:1.1.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "color-support" , [ \
[ "npm:1.1.3" , { \
"packageLocation" : "./.yarn/cache/color-support-npm-1.1.3-3be5c53455-9b73568176.zip/node_modules/color-support/" , \
"packageDependencies" : [ \
[ "color-support" , "npm:1.1.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "combined-stream" , [ \
[ "npm:1.0.8" , { \
"packageLocation" : "./.yarn/cache/combined-stream-npm-1.0.8-dc14d4a63a-49fa4aeb49.zip/node_modules/combined-stream/" , \
"packageDependencies" : [ \
[ "combined-stream" , "npm:1.0.8" ] , \
[ "delayed-stream" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "concat-map" , [ \
[ "npm:0.0.1" , { \
"packageLocation" : "./.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/" , \
"packageDependencies" : [ \
[ "concat-map" , "npm:0.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "console-control-strings" , [ \
[ "npm:1.1.0" , { \
"packageLocation" : "./.yarn/cache/console-control-strings-npm-1.1.0-e3160e5275-8755d76787.zip/node_modules/console-control-strings/" , \
"packageDependencies" : [ \
[ "console-control-strings" , "npm:1.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "cross-spawn" , [ \
[ "npm:7.0.3" , { \
"packageLocation" : "./.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip/node_modules/cross-spawn/" , \
"packageDependencies" : [ \
[ "cross-spawn" , "npm:7.0.3" ] , \
[ "path-key" , "npm:3.1.1" ] , \
[ "shebang-command" , "npm:2.0.0" ] , \
[ "which" , "npm:2.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "css-select" , [ \
[ "npm:5.1.0" , { \
"packageLocation" : "./.yarn/cache/css-select-npm-5.1.0-9365a79de5-2772c049b1.zip/node_modules/css-select/" , \
"packageDependencies" : [ \
[ "css-select" , "npm:5.1.0" ] , \
[ "boolbase" , "npm:1.0.0" ] , \
[ "css-what" , "npm:6.1.0" ] , \
[ "domhandler" , "npm:5.0.3" ] , \
[ "domutils" , "npm:3.1.0" ] , \
[ "nth-check" , "npm:2.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "css-what" , [ \
[ "npm:6.1.0" , { \
"packageLocation" : "./.yarn/cache/css-what-npm-6.1.0-57f751efbb-b975e547e1.zip/node_modules/css-what/" , \
"packageDependencies" : [ \
[ "css-what" , "npm:6.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "daggerbot-ts" , [ \
[ "workspace:." , { \
"packageLocation" : "./" , \
"packageDependencies" : [ \
[ "daggerbot-ts" , "workspace:." ] , \
[ "@discord-player/extractor" , "npm:4.4.1" ] , \
[ "@discordjs/opus" , "npm:0.9.0" ] , \
[ "@octokit/auth-token" , "npm:4.0.0" ] , \
[ "@octokit/rest" , "npm:20.0.1" ] , \
[ "@types/ms" , "npm:0.7.31" ] , \
2023-08-12 12:40:18 -04:00
[ "@types/node" , "npm:20.4.10" ] , \
2023-08-06 03:52:45 -04:00
[ "axios" , "npm:1.4.0" ] , \
[ "canvas" , "npm:2.11.2" ] , \
[ "discord-player" , "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:6.6.2" ] , \
2023-08-12 13:18:46 -04:00
[ "discord.js" , "npm:14.13.0-dev.1691841828-9ed1b59df.0" ] , \
2023-08-11 08:40:26 -04:00
[ "libsodium-wrappers" , "npm:0.7.11" ] , \
2023-08-06 03:52:45 -04:00
[ "moment" , "npm:2.29.4" ] , \
2023-08-12 12:40:18 -04:00
[ "mongoose" , "npm:7.4.3" ] , \
2023-08-06 03:52:45 -04:00
[ "ms" , "npm:2.1.3" ] , \
[ "prism-media" , "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:1.3.5" ] , \
2023-08-12 12:40:18 -04:00
[ "systeminformation" , "npm:5.18.15" ] , \
2023-08-06 03:52:45 -04:00
[ "typescript" , "patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=5da071" ] , \
[ "xml-js" , "npm:1.6.11" ] , \
2023-08-07 04:14:08 -04:00
[ "youtube-sr" , "npm:4.3.4" ] , \
2023-08-06 03:52:45 -04:00
[ "ytdl-core" , "npm:4.11.5" ] \
] , \
"linkType" : "SOFT" \
} ] \
] ] , \
[ "data-uri-to-buffer" , [ \
[ "npm:4.0.1" , { \
"packageLocation" : "./.yarn/cache/data-uri-to-buffer-npm-4.0.1-5c66a78beb-0d0790b67f.zip/node_modules/data-uri-to-buffer/" , \
"packageDependencies" : [ \
[ "data-uri-to-buffer" , "npm:4.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "debug" , [ \
[ "npm:4.3.4" , { \
"packageLocation" : "./.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip/node_modules/debug/" , \
"packageDependencies" : [ \
[ "debug" , "npm:4.3.4" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" , { \
"packageLocation" : "./.yarn/__virtual__/debug-virtual-218613e218/0/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip/node_modules/debug/" , \
"packageDependencies" : [ \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] , \
[ "@types/supports-color" , null ] , \
[ "ms" , "npm:2.1.2" ] , \
[ "supports-color" , null ] \
] , \
"packagePeers" : [ \
"@types/supports-color" , \
"supports-color" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "decompress-response" , [ \
[ "npm:4.2.1" , { \
"packageLocation" : "./.yarn/cache/decompress-response-npm-4.2.1-abe5b4ebe4-4e783ca4df.zip/node_modules/decompress-response/" , \
"packageDependencies" : [ \
[ "decompress-response" , "npm:4.2.1" ] , \
[ "mimic-response" , "npm:2.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "delayed-stream" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/delayed-stream-npm-1.0.0-c5a4c4cc02-46fe6e83e2.zip/node_modules/delayed-stream/" , \
"packageDependencies" : [ \
[ "delayed-stream" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "delegates" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/delegates-npm-1.0.0-9b1942d75f-a51744d9b5.zip/node_modules/delegates/" , \
"packageDependencies" : [ \
[ "delegates" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "depd" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/depd-npm-2.0.0-b6c51a4b43-abbe19c768.zip/node_modules/depd/" , \
"packageDependencies" : [ \
[ "depd" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "deprecation" , [ \
[ "npm:2.3.1" , { \
"packageLocation" : "./.yarn/cache/deprecation-npm-2.3.1-e19c92d6e7-f56a05e182.zip/node_modules/deprecation/" , \
"packageDependencies" : [ \
[ "deprecation" , "npm:2.3.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "detect-libc" , [ \
[ "npm:2.0.2" , { \
"packageLocation" : "./.yarn/cache/detect-libc-npm-2.0.2-03afa59137-2b2cd3649b.zip/node_modules/detect-libc/" , \
"packageDependencies" : [ \
[ "detect-libc" , "npm:2.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "discord-api-types" , [ \
[ "npm:0.37.51" , { \
"packageLocation" : "./.yarn/cache/discord-api-types-npm-0.37.51-89cec04373-0f6c8a5c31.zip/node_modules/discord-api-types/" , \
"packageDependencies" : [ \
[ "discord-api-types" , "npm:0.37.51" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "discord-player" , [ \
[ "npm:6.6.2" , { \
"packageLocation" : "./.yarn/cache/discord-player-npm-6.6.2-fc0519baf7-1f3efa295c.zip/node_modules/discord-player/" , \
"packageDependencies" : [ \
[ "discord-player" , "npm:6.6.2" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:6.6.2" , { \
"packageLocation" : "./.yarn/__virtual__/discord-player-virtual-34bade91e7/0/cache/discord-player-npm-6.6.2-fc0519baf7-1f3efa295c.zip/node_modules/discord-player/" , \
"packageDependencies" : [ \
[ "discord-player" , "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:6.6.2" ] , \
[ "@discord-player/equalizer" , "npm:0.2.2" ] , \
[ "@discord-player/extractor" , "npm:4.4.1" ] , \
[ "@discord-player/ffmpeg" , "npm:0.1.0" ] , \
[ "@discord-player/utils" , "npm:0.2.2" ] , \
[ "@discordjs/voice" , "npm:0.16.0" ] , \
[ "@types/discord-player__extractor" , null ] , \
[ "@types/discord.js" , null ] , \
[ "@types/youtube-sr" , null ] , \
2023-08-12 13:18:46 -04:00
[ "discord.js" , "npm:14.13.0-dev.1691841828-9ed1b59df.0" ] , \
2023-08-06 03:52:45 -04:00
[ "libsodium-wrappers" , "npm:0.7.11" ] , \
2023-08-07 04:14:08 -04:00
[ "youtube-sr" , "npm:4.3.4" ] \
2023-08-06 03:52:45 -04:00
] , \
"packagePeers" : [ \
"@discord-player/extractor" , \
"@types/discord-player__extractor" , \
"@types/discord.js" , \
"@types/youtube-sr" , \
"discord.js" , \
"youtube-sr" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "discord.js" , [ \
2023-08-12 13:18:46 -04:00
[ "npm:14.13.0-dev.1691841828-9ed1b59df.0" , { \
"packageLocation" : "./.yarn/cache/discord.js-npm-14.13.0-dev.1691841828-9ed1b59df.0-5205132e1c-c584c642a6.zip/node_modules/discord.js/" , \
2023-08-06 03:52:45 -04:00
"packageDependencies" : [ \
2023-08-12 13:18:46 -04:00
[ "discord.js" , "npm:14.13.0-dev.1691841828-9ed1b59df.0" ] , \
2023-08-06 03:52:45 -04:00
[ "@discordjs/builders" , "npm:1.6.4" ] , \
[ "@discordjs/collection" , "npm:1.5.2" ] , \
[ "@discordjs/formatters" , "npm:0.3.1" ] , \
[ "@discordjs/rest" , "npm:2.0.0" ] , \
[ "@discordjs/util" , "npm:1.0.0" ] , \
[ "@discordjs/ws" , "npm:1.0.0" ] , \
[ "@sapphire/snowflake" , "npm:3.5.1" ] , \
[ "@types/ws" , "npm:8.5.5" ] , \
[ "discord-api-types" , "npm:0.37.51" ] , \
[ "fast-deep-equal" , "npm:3.1.3" ] , \
[ "lodash.snakecase" , "npm:4.1.1" ] , \
[ "tslib" , "npm:2.6.1" ] , \
[ "undici" , "npm:5.23.0" ] , \
[ "ws" , "virtual:9ce84a0604ad02832e33621299f919cd218b24239fb0c46d80371b76a2e2bb3fa8fbeca210d63d15caaa18cb4bd437d3b404ee91d06cb167e4b2efa32b8e514c#npm:8.13.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "dom-serializer" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/dom-serializer-npm-2.0.0-378ebc7200-cd1810544f.zip/node_modules/dom-serializer/" , \
"packageDependencies" : [ \
[ "dom-serializer" , "npm:2.0.0" ] , \
[ "domelementtype" , "npm:2.3.0" ] , \
[ "domhandler" , "npm:5.0.3" ] , \
[ "entities" , "npm:4.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "domelementtype" , [ \
[ "npm:2.3.0" , { \
"packageLocation" : "./.yarn/cache/domelementtype-npm-2.3.0-02de7cbfba-ee837a318f.zip/node_modules/domelementtype/" , \
"packageDependencies" : [ \
[ "domelementtype" , "npm:2.3.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "domhandler" , [ \
[ "npm:5.0.3" , { \
"packageLocation" : "./.yarn/cache/domhandler-npm-5.0.3-3ede73dc10-0f58f4a6af.zip/node_modules/domhandler/" , \
"packageDependencies" : [ \
[ "domhandler" , "npm:5.0.3" ] , \
[ "domelementtype" , "npm:2.3.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "domutils" , [ \
[ "npm:3.1.0" , { \
"packageLocation" : "./.yarn/cache/domutils-npm-3.1.0-66c92ef7eb-e5757456dd.zip/node_modules/domutils/" , \
"packageDependencies" : [ \
[ "domutils" , "npm:3.1.0" ] , \
[ "dom-serializer" , "npm:2.0.0" ] , \
[ "domelementtype" , "npm:2.3.0" ] , \
[ "domhandler" , "npm:5.0.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "eastasianwidth" , [ \
[ "npm:0.2.0" , { \
"packageLocation" : "./.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip/node_modules/eastasianwidth/" , \
"packageDependencies" : [ \
[ "eastasianwidth" , "npm:0.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "emoji-regex" , [ \
[ "npm:8.0.0" , { \
"packageLocation" : "./.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip/node_modules/emoji-regex/" , \
"packageDependencies" : [ \
[ "emoji-regex" , "npm:8.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:9.2.2" , { \
"packageLocation" : "./.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip/node_modules/emoji-regex/" , \
"packageDependencies" : [ \
[ "emoji-regex" , "npm:9.2.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "encoding" , [ \
[ "npm:0.1.13" , { \
"packageLocation" : "./.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip/node_modules/encoding/" , \
"packageDependencies" : [ \
[ "encoding" , "npm:0.1.13" ] , \
[ "iconv-lite" , "npm:0.6.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "entities" , [ \
[ "npm:4.5.0" , { \
"packageLocation" : "./.yarn/cache/entities-npm-4.5.0-7cdb83b832-853f8ebd5b.zip/node_modules/entities/" , \
"packageDependencies" : [ \
[ "entities" , "npm:4.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "env-paths" , [ \
[ "npm:2.2.1" , { \
"packageLocation" : "./.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip/node_modules/env-paths/" , \
"packageDependencies" : [ \
[ "env-paths" , "npm:2.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "err-code" , [ \
[ "npm:2.0.3" , { \
"packageLocation" : "./.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip/node_modules/err-code/" , \
"packageDependencies" : [ \
[ "err-code" , "npm:2.0.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "exponential-backoff" , [ \
[ "npm:3.1.1" , { \
"packageLocation" : "./.yarn/cache/exponential-backoff-npm-3.1.1-04df458b30-3d21519a4f.zip/node_modules/exponential-backoff/" , \
"packageDependencies" : [ \
[ "exponential-backoff" , "npm:3.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "fast-deep-equal" , [ \
[ "npm:3.1.3" , { \
"packageLocation" : "./.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip/node_modules/fast-deep-equal/" , \
"packageDependencies" : [ \
[ "fast-deep-equal" , "npm:3.1.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "fetch-blob" , [ \
[ "npm:3.2.0" , { \
"packageLocation" : "./.yarn/cache/fetch-blob-npm-3.2.0-28e01becfc-f19bc28a2a.zip/node_modules/fetch-blob/" , \
"packageDependencies" : [ \
[ "fetch-blob" , "npm:3.2.0" ] , \
[ "node-domexception" , "npm:1.0.0" ] , \
[ "web-streams-polyfill" , "npm:3.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "file-type" , [ \
[ "npm:16.5.4" , { \
"packageLocation" : "./.yarn/cache/file-type-npm-16.5.4-36faadc4ae-d983c0f364.zip/node_modules/file-type/" , \
"packageDependencies" : [ \
[ "file-type" , "npm:16.5.4" ] , \
[ "readable-web-to-node-stream" , "npm:3.0.2" ] , \
[ "strtok3" , "npm:6.3.0" ] , \
[ "token-types" , "npm:4.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "follow-redirects" , [ \
[ "npm:1.15.2" , { \
"packageLocation" : "./.yarn/cache/follow-redirects-npm-1.15.2-1ec1dd82be-faa66059b6.zip/node_modules/follow-redirects/" , \
"packageDependencies" : [ \
[ "follow-redirects" , "npm:1.15.2" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:4d7ce8ca3e1e44d82523fba2ad95e1be18c4e9f8dec6d551377587540da3ed75bd8bd3e812280309a3b90cfdb0560f076f3552a20839f7f15665207a4fbd588a#npm:1.15.2" , { \
"packageLocation" : "./.yarn/__virtual__/follow-redirects-virtual-359bc4c55c/0/cache/follow-redirects-npm-1.15.2-1ec1dd82be-faa66059b6.zip/node_modules/follow-redirects/" , \
"packageDependencies" : [ \
[ "follow-redirects" , "virtual:4d7ce8ca3e1e44d82523fba2ad95e1be18c4e9f8dec6d551377587540da3ed75bd8bd3e812280309a3b90cfdb0560f076f3552a20839f7f15665207a4fbd588a#npm:1.15.2" ] , \
[ "@types/debug" , null ] , \
[ "debug" , null ] \
] , \
"packagePeers" : [ \
"@types/debug" , \
"debug" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "foreground-child" , [ \
[ "npm:3.1.1" , { \
"packageLocation" : "./.yarn/cache/foreground-child-npm-3.1.1-77e78ed774-139d270bc8.zip/node_modules/foreground-child/" , \
"packageDependencies" : [ \
[ "foreground-child" , "npm:3.1.1" ] , \
[ "cross-spawn" , "npm:7.0.3" ] , \
[ "signal-exit" , "npm:4.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "form-data" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/form-data-npm-4.0.0-916facec2d-01135bf867.zip/node_modules/form-data/" , \
"packageDependencies" : [ \
[ "form-data" , "npm:4.0.0" ] , \
[ "asynckit" , "npm:0.4.0" ] , \
[ "combined-stream" , "npm:1.0.8" ] , \
[ "mime-types" , "npm:2.1.35" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "formdata-polyfill" , [ \
[ "npm:4.0.10" , { \
"packageLocation" : "./.yarn/cache/formdata-polyfill-npm-4.0.10-e03013c013-82a34df292.zip/node_modules/formdata-polyfill/" , \
"packageDependencies" : [ \
[ "formdata-polyfill" , "npm:4.0.10" ] , \
[ "fetch-blob" , "npm:3.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "fs-minipass" , [ \
[ "npm:2.1.0" , { \
"packageLocation" : "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/" , \
"packageDependencies" : [ \
[ "fs-minipass" , "npm:2.1.0" ] , \
[ "minipass" , "npm:3.3.6" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:3.0.2" , { \
"packageLocation" : "./.yarn/cache/fs-minipass-npm-3.0.2-a27ef235f5-e9cc0e1f2d.zip/node_modules/fs-minipass/" , \
"packageDependencies" : [ \
[ "fs-minipass" , "npm:3.0.2" ] , \
[ "minipass" , "npm:5.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "fs.realpath" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/" , \
"packageDependencies" : [ \
[ "fs.realpath" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "gauge" , [ \
[ "npm:3.0.2" , { \
"packageLocation" : "./.yarn/cache/gauge-npm-3.0.2-9e22f7af9e-81296c00c7.zip/node_modules/gauge/" , \
"packageDependencies" : [ \
[ "gauge" , "npm:3.0.2" ] , \
[ "aproba" , "npm:2.0.0" ] , \
[ "color-support" , "npm:1.1.3" ] , \
[ "console-control-strings" , "npm:1.1.0" ] , \
[ "has-unicode" , "npm:2.0.1" ] , \
[ "object-assign" , "npm:4.1.1" ] , \
[ "signal-exit" , "npm:3.0.7" ] , \
[ "string-width" , "npm:4.2.3" ] , \
[ "strip-ansi" , "npm:6.0.1" ] , \
[ "wide-align" , "npm:1.1.5" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:4.0.4" , { \
"packageLocation" : "./.yarn/cache/gauge-npm-4.0.4-8f878385e9-788b6bfe52.zip/node_modules/gauge/" , \
"packageDependencies" : [ \
[ "gauge" , "npm:4.0.4" ] , \
[ "aproba" , "npm:2.0.0" ] , \
[ "color-support" , "npm:1.1.3" ] , \
[ "console-control-strings" , "npm:1.1.0" ] , \
[ "has-unicode" , "npm:2.0.1" ] , \
[ "signal-exit" , "npm:3.0.7" ] , \
[ "string-width" , "npm:4.2.3" ] , \
[ "strip-ansi" , "npm:6.0.1" ] , \
[ "wide-align" , "npm:1.1.5" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "genius-lyrics" , [ \
[ "npm:4.4.3" , { \
"packageLocation" : "./.yarn/cache/genius-lyrics-npm-4.4.3-caaf25a1b9-5612f4b975.zip/node_modules/genius-lyrics/" , \
"packageDependencies" : [ \
[ "genius-lyrics" , "npm:4.4.3" ] , \
[ "cheerio" , "npm:1.0.0-rc.12" ] , \
[ "undici" , "npm:5.23.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "glob" , [ \
[ "npm:10.3.3" , { \
"packageLocation" : "./.yarn/cache/glob-npm-10.3.3-2d9abea8c7-29190d3291.zip/node_modules/glob/" , \
"packageDependencies" : [ \
[ "glob" , "npm:10.3.3" ] , \
[ "foreground-child" , "npm:3.1.1" ] , \
[ "jackspeak" , "npm:2.2.2" ] , \
[ "minimatch" , "npm:9.0.3" ] , \
[ "minipass" , "npm:7.0.2" ] , \
[ "path-scurry" , "npm:1.10.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:7.2.3" , { \
"packageLocation" : "./.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip/node_modules/glob/" , \
"packageDependencies" : [ \
[ "glob" , "npm:7.2.3" ] , \
[ "fs.realpath" , "npm:1.0.0" ] , \
[ "inflight" , "npm:1.0.6" ] , \
[ "inherits" , "npm:2.0.4" ] , \
[ "minimatch" , "npm:3.1.2" ] , \
[ "once" , "npm:1.4.0" ] , \
[ "path-is-absolute" , "npm:1.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "graceful-fs" , [ \
[ "npm:4.2.11" , { \
"packageLocation" : "./.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip/node_modules/graceful-fs/" , \
"packageDependencies" : [ \
[ "graceful-fs" , "npm:4.2.11" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "has-unicode" , [ \
[ "npm:2.0.1" , { \
"packageLocation" : "./.yarn/cache/has-unicode-npm-2.0.1-893adb4747-1eab07a743.zip/node_modules/has-unicode/" , \
"packageDependencies" : [ \
[ "has-unicode" , "npm:2.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "he" , [ \
[ "npm:1.2.0" , { \
"packageLocation" : "./.yarn/cache/he-npm-1.2.0-3b73a2ff07-3d4d6babcc.zip/node_modules/he/" , \
"packageDependencies" : [ \
[ "he" , "npm:1.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "himalaya" , [ \
[ "npm:1.1.0" , { \
"packageLocation" : "./.yarn/cache/himalaya-npm-1.1.0-40fd7e74ea-b07c165e78.zip/node_modules/himalaya/" , \
"packageDependencies" : [ \
[ "himalaya" , "npm:1.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "htmlparser2" , [ \
[ "npm:8.0.2" , { \
"packageLocation" : "./.yarn/cache/htmlparser2-npm-8.0.2-5d9f901bb6-29167a0f92.zip/node_modules/htmlparser2/" , \
"packageDependencies" : [ \
[ "htmlparser2" , "npm:8.0.2" ] , \
[ "domelementtype" , "npm:2.3.0" ] , \
[ "domhandler" , "npm:5.0.3" ] , \
[ "domutils" , "npm:3.1.0" ] , \
[ "entities" , "npm:4.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "http-cache-semantics" , [ \
[ "npm:4.1.1" , { \
"packageLocation" : "./.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip/node_modules/http-cache-semantics/" , \
"packageDependencies" : [ \
[ "http-cache-semantics" , "npm:4.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "http-proxy-agent" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/http-proxy-agent-npm-5.0.0-7f1f121b83-e2ee1ff165.zip/node_modules/http-proxy-agent/" , \
"packageDependencies" : [ \
[ "http-proxy-agent" , "npm:5.0.0" ] , \
[ "@tootallnate/once" , "npm:2.0.0" ] , \
[ "agent-base" , "npm:6.0.2" ] , \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "https-proxy-agent" , [ \
[ "npm:5.0.1" , { \
"packageLocation" : "./.yarn/cache/https-proxy-agent-npm-5.0.1-42d65f358e-571fccdf38.zip/node_modules/https-proxy-agent/" , \
"packageDependencies" : [ \
[ "https-proxy-agent" , "npm:5.0.1" ] , \
[ "agent-base" , "npm:6.0.2" ] , \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "humanize-ms" , [ \
[ "npm:1.2.1" , { \
"packageLocation" : "./.yarn/cache/humanize-ms-npm-1.2.1-e942bd7329-9c7a74a282.zip/node_modules/humanize-ms/" , \
"packageDependencies" : [ \
[ "humanize-ms" , "npm:1.2.1" ] , \
[ "ms" , "npm:2.1.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "iconv-lite" , [ \
[ "npm:0.6.3" , { \
"packageLocation" : "./.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip/node_modules/iconv-lite/" , \
"packageDependencies" : [ \
[ "iconv-lite" , "npm:0.6.3" ] , \
[ "safer-buffer" , "npm:2.1.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ieee754" , [ \
[ "npm:1.2.1" , { \
"packageLocation" : "./.yarn/cache/ieee754-npm-1.2.1-fb63b3caeb-5144c0c981.zip/node_modules/ieee754/" , \
"packageDependencies" : [ \
[ "ieee754" , "npm:1.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "imurmurhash" , [ \
[ "npm:0.1.4" , { \
"packageLocation" : "./.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip/node_modules/imurmurhash/" , \
"packageDependencies" : [ \
[ "imurmurhash" , "npm:0.1.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "indent-string" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip/node_modules/indent-string/" , \
"packageDependencies" : [ \
[ "indent-string" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "inflight" , [ \
[ "npm:1.0.6" , { \
"packageLocation" : "./.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip/node_modules/inflight/" , \
"packageDependencies" : [ \
[ "inflight" , "npm:1.0.6" ] , \
[ "once" , "npm:1.4.0" ] , \
[ "wrappy" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "inherits" , [ \
[ "npm:2.0.4" , { \
"packageLocation" : "./.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip/node_modules/inherits/" , \
"packageDependencies" : [ \
[ "inherits" , "npm:2.0.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ip" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip/node_modules/ip/" , \
"packageDependencies" : [ \
[ "ip" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "is-fullwidth-code-point" , [ \
[ "npm:3.0.0" , { \
"packageLocation" : "./.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip/node_modules/is-fullwidth-code-point/" , \
"packageDependencies" : [ \
[ "is-fullwidth-code-point" , "npm:3.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "is-lambda" , [ \
[ "npm:1.0.1" , { \
"packageLocation" : "./.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip/node_modules/is-lambda/" , \
"packageDependencies" : [ \
[ "is-lambda" , "npm:1.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "is-plain-object" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/is-plain-object-npm-5.0.0-285b70faa3-e32d27061e.zip/node_modules/is-plain-object/" , \
"packageDependencies" : [ \
[ "is-plain-object" , "npm:5.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "isexe" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/" , \
"packageDependencies" : [ \
[ "isexe" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "isomorphic-unfetch" , [ \
[ "npm:4.0.2" , { \
"packageLocation" : "./.yarn/cache/isomorphic-unfetch-npm-4.0.2-39843f2d46-a5c22569f1.zip/node_modules/isomorphic-unfetch/" , \
"packageDependencies" : [ \
[ "isomorphic-unfetch" , "npm:4.0.2" ] , \
[ "node-fetch" , "npm:3.3.2" ] , \
[ "unfetch" , "npm:5.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "jackspeak" , [ \
[ "npm:2.2.2" , { \
"packageLocation" : "./.yarn/cache/jackspeak-npm-2.2.2-374ca454fe-7b1468dd91.zip/node_modules/jackspeak/" , \
"packageDependencies" : [ \
[ "jackspeak" , "npm:2.2.2" ] , \
[ "@isaacs/cliui" , "npm:8.0.2" ] , \
[ "@pkgjs/parseargs" , "npm:0.11.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "kareem" , [ \
[ "npm:2.5.1" , { \
"packageLocation" : "./.yarn/cache/kareem-npm-2.5.1-79134fb43e-b019a960a7.zip/node_modules/kareem/" , \
"packageDependencies" : [ \
[ "kareem" , "npm:2.5.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "libsodium" , [ \
[ "npm:0.7.11" , { \
"packageLocation" : "./.yarn/cache/libsodium-npm-0.7.11-7f8f1452e8-0a3493ac18.zip/node_modules/libsodium/" , \
"packageDependencies" : [ \
[ "libsodium" , "npm:0.7.11" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "libsodium-wrappers" , [ \
[ "npm:0.7.11" , { \
"packageLocation" : "./.yarn/cache/libsodium-wrappers-npm-0.7.11-4378875344-6a6ef47b22.zip/node_modules/libsodium-wrappers/" , \
"packageDependencies" : [ \
[ "libsodium-wrappers" , "npm:0.7.11" ] , \
[ "libsodium" , "npm:0.7.11" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "lodash" , [ \
[ "npm:4.17.21" , { \
"packageLocation" : "./.yarn/cache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/" , \
"packageDependencies" : [ \
[ "lodash" , "npm:4.17.21" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "lodash.snakecase" , [ \
[ "npm:4.1.1" , { \
"packageLocation" : "./.yarn/cache/lodash.snakecase-npm-4.1.1-b12cdbecb4-1685ed3e83.zip/node_modules/lodash.snakecase/" , \
"packageDependencies" : [ \
[ "lodash.snakecase" , "npm:4.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "lru-cache" , [ \
[ "npm:10.0.0" , { \
"packageLocation" : "./.yarn/cache/lru-cache-npm-10.0.0-256d74bb20-18f101675f.zip/node_modules/lru-cache/" , \
"packageDependencies" : [ \
[ "lru-cache" , "npm:10.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:6.0.0" , { \
"packageLocation" : "./.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip/node_modules/lru-cache/" , \
"packageDependencies" : [ \
[ "lru-cache" , "npm:6.0.0" ] , \
[ "yallist" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:7.18.3" , { \
"packageLocation" : "./.yarn/cache/lru-cache-npm-7.18.3-e68be5b11c-e550d77238.zip/node_modules/lru-cache/" , \
"packageDependencies" : [ \
[ "lru-cache" , "npm:7.18.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "m3u8stream" , [ \
[ "npm:0.8.6" , { \
"packageLocation" : "./.yarn/cache/m3u8stream-npm-0.8.6-c85339dd6c-b8f61c1101.zip/node_modules/m3u8stream/" , \
"packageDependencies" : [ \
[ "m3u8stream" , "npm:0.8.6" ] , \
[ "miniget" , "npm:4.2.3" ] , \
[ "sax" , "npm:1.2.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "magic-bytes.js" , [ \
[ "npm:1.0.15" , { \
"packageLocation" : "./.yarn/cache/magic-bytes.js-npm-1.0.15-c06e224aad-cef9a3f928.zip/node_modules/magic-bytes.js/" , \
"packageDependencies" : [ \
[ "magic-bytes.js" , "npm:1.0.15" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "make-dir" , [ \
[ "npm:3.1.0" , { \
"packageLocation" : "./.yarn/cache/make-dir-npm-3.1.0-d1d7505142-484200020a.zip/node_modules/make-dir/" , \
"packageDependencies" : [ \
[ "make-dir" , "npm:3.1.0" ] , \
[ "semver" , "npm:6.3.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "make-fetch-happen" , [ \
[ "npm:11.1.1" , { \
"packageLocation" : "./.yarn/cache/make-fetch-happen-npm-11.1.1-f32b79aaaa-7268bf274a.zip/node_modules/make-fetch-happen/" , \
"packageDependencies" : [ \
[ "make-fetch-happen" , "npm:11.1.1" ] , \
[ "agentkeepalive" , "npm:4.4.0" ] , \
[ "cacache" , "npm:17.1.3" ] , \
[ "http-cache-semantics" , "npm:4.1.1" ] , \
[ "http-proxy-agent" , "npm:5.0.0" ] , \
[ "https-proxy-agent" , "npm:5.0.1" ] , \
[ "is-lambda" , "npm:1.0.1" ] , \
[ "lru-cache" , "npm:7.18.3" ] , \
[ "minipass" , "npm:5.0.0" ] , \
[ "minipass-fetch" , "npm:3.0.3" ] , \
[ "minipass-flush" , "npm:1.0.5" ] , \
[ "minipass-pipeline" , "npm:1.2.4" ] , \
[ "negotiator" , "npm:0.6.3" ] , \
[ "promise-retry" , "npm:2.0.1" ] , \
[ "socks-proxy-agent" , "npm:7.0.0" ] , \
[ "ssri" , "npm:10.0.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "memory-pager" , [ \
[ "npm:1.5.0" , { \
"packageLocation" : "./.yarn/cache/memory-pager-npm-1.5.0-46e20e6c81-d1a2e68458.zip/node_modules/memory-pager/" , \
"packageDependencies" : [ \
[ "memory-pager" , "npm:1.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mime-db" , [ \
[ "npm:1.52.0" , { \
"packageLocation" : "./.yarn/cache/mime-db-npm-1.52.0-b5371d6fd2-0d99a03585.zip/node_modules/mime-db/" , \
"packageDependencies" : [ \
[ "mime-db" , "npm:1.52.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mime-types" , [ \
[ "npm:2.1.35" , { \
"packageLocation" : "./.yarn/cache/mime-types-npm-2.1.35-dd9ea9f3e2-89a5b7f1de.zip/node_modules/mime-types/" , \
"packageDependencies" : [ \
[ "mime-types" , "npm:2.1.35" ] , \
[ "mime-db" , "npm:1.52.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mimic-response" , [ \
[ "npm:2.1.0" , { \
"packageLocation" : "./.yarn/cache/mimic-response-npm-2.1.0-037463e454-014fad6ab9.zip/node_modules/mimic-response/" , \
"packageDependencies" : [ \
[ "mimic-response" , "npm:2.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "miniget" , [ \
[ "npm:4.2.3" , { \
"packageLocation" : "./.yarn/cache/miniget-npm-4.2.3-c4b2251816-c2db18570b.zip/node_modules/miniget/" , \
"packageDependencies" : [ \
[ "miniget" , "npm:4.2.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minimatch" , [ \
[ "npm:3.1.2" , { \
"packageLocation" : "./.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip/node_modules/minimatch/" , \
"packageDependencies" : [ \
[ "minimatch" , "npm:3.1.2" ] , \
[ "brace-expansion" , "npm:1.1.11" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:9.0.3" , { \
"packageLocation" : "./.yarn/cache/minimatch-npm-9.0.3-69d7d6fad5-253487976b.zip/node_modules/minimatch/" , \
"packageDependencies" : [ \
[ "minimatch" , "npm:9.0.3" ] , \
[ "brace-expansion" , "npm:2.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minipass" , [ \
[ "npm:3.3.6" , { \
"packageLocation" : "./.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip/node_modules/minipass/" , \
"packageDependencies" : [ \
[ "minipass" , "npm:3.3.6" ] , \
[ "yallist" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip/node_modules/minipass/" , \
"packageDependencies" : [ \
[ "minipass" , "npm:5.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:7.0.2" , { \
"packageLocation" : "./.yarn/cache/minipass-npm-7.0.2-baa42a5a34-46776de732.zip/node_modules/minipass/" , \
"packageDependencies" : [ \
[ "minipass" , "npm:7.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minipass-collect" , [ \
[ "npm:1.0.2" , { \
"packageLocation" : "./.yarn/cache/minipass-collect-npm-1.0.2-3b4676eab5-14df761028.zip/node_modules/minipass-collect/" , \
"packageDependencies" : [ \
[ "minipass-collect" , "npm:1.0.2" ] , \
[ "minipass" , "npm:3.3.6" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minipass-fetch" , [ \
[ "npm:3.0.3" , { \
"packageLocation" : "./.yarn/cache/minipass-fetch-npm-3.0.3-2c4966d142-af5ab2552a.zip/node_modules/minipass-fetch/" , \
"packageDependencies" : [ \
[ "minipass-fetch" , "npm:3.0.3" ] , \
[ "encoding" , "npm:0.1.13" ] , \
[ "minipass" , "npm:5.0.0" ] , \
[ "minipass-sized" , "npm:1.0.3" ] , \
[ "minizlib" , "npm:2.1.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minipass-flush" , [ \
[ "npm:1.0.5" , { \
"packageLocation" : "./.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip/node_modules/minipass-flush/" , \
"packageDependencies" : [ \
[ "minipass-flush" , "npm:1.0.5" ] , \
[ "minipass" , "npm:3.3.6" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minipass-pipeline" , [ \
[ "npm:1.2.4" , { \
"packageLocation" : "./.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip/node_modules/minipass-pipeline/" , \
"packageDependencies" : [ \
[ "minipass-pipeline" , "npm:1.2.4" ] , \
[ "minipass" , "npm:3.3.6" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minipass-sized" , [ \
[ "npm:1.0.3" , { \
"packageLocation" : "./.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip/node_modules/minipass-sized/" , \
"packageDependencies" : [ \
[ "minipass-sized" , "npm:1.0.3" ] , \
[ "minipass" , "npm:3.3.6" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "minizlib" , [ \
[ "npm:2.1.2" , { \
"packageLocation" : "./.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip/node_modules/minizlib/" , \
"packageDependencies" : [ \
[ "minizlib" , "npm:2.1.2" ] , \
[ "minipass" , "npm:3.3.6" ] , \
[ "yallist" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mkdirp" , [ \
[ "npm:1.0.4" , { \
"packageLocation" : "./.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip/node_modules/mkdirp/" , \
"packageDependencies" : [ \
[ "mkdirp" , "npm:1.0.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "moment" , [ \
[ "npm:2.29.4" , { \
"packageLocation" : "./.yarn/cache/moment-npm-2.29.4-902943305d-0ec3f9c2bc.zip/node_modules/moment/" , \
"packageDependencies" : [ \
[ "moment" , "npm:2.29.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mongodb" , [ \
[ "npm:5.7.0" , { \
"packageLocation" : "./.yarn/cache/mongodb-npm-5.7.0-c5e415a2e7-16357b6229.zip/node_modules/mongodb/" , \
"packageDependencies" : [ \
[ "mongodb" , "npm:5.7.0" ] \
] , \
"linkType" : "SOFT" \
} ] , \
2023-08-12 12:40:18 -04:00
[ "virtual:de9b2a4bee48b47472569f051556d00472ad2cae24f303eab2885fcb163b9304e49630ec473487f25346e199b727589de8b538c4c4621c9a5e46486fe0dda3c9#npm:5.7.0" , { \
"packageLocation" : "./.yarn/__virtual__/mongodb-virtual-3d9fb5213a/0/cache/mongodb-npm-5.7.0-c5e415a2e7-16357b6229.zip/node_modules/mongodb/" , \
2023-08-06 03:52:45 -04:00
"packageDependencies" : [ \
2023-08-12 12:40:18 -04:00
[ "mongodb" , "virtual:de9b2a4bee48b47472569f051556d00472ad2cae24f303eab2885fcb163b9304e49630ec473487f25346e199b727589de8b538c4c4621c9a5e46486fe0dda3c9#npm:5.7.0" ] , \
2023-08-06 03:52:45 -04:00
[ "@aws-sdk/credential-providers" , null ] , \
[ "@mongodb-js/zstd" , null ] , \
[ "@types/aws-sdk__credential-providers" , null ] , \
[ "@types/kerberos" , null ] , \
[ "@types/mongodb-client-encryption" , null ] , \
[ "@types/mongodb-js__zstd" , null ] , \
[ "@types/snappy" , null ] , \
[ "bson" , "npm:5.4.0" ] , \
[ "kerberos" , null ] , \
[ "mongodb-client-encryption" , null ] , \
[ "mongodb-connection-string-url" , "npm:2.6.0" ] , \
[ "saslprep" , "npm:1.0.3" ] , \
[ "snappy" , null ] , \
[ "socks" , "npm:2.7.1" ] \
] , \
"packagePeers" : [ \
"@aws-sdk/credential-providers" , \
"@mongodb-js/zstd" , \
"@types/aws-sdk__credential-providers" , \
"@types/kerberos" , \
"@types/mongodb-client-encryption" , \
"@types/mongodb-js__zstd" , \
"@types/snappy" , \
"kerberos" , \
"mongodb-client-encryption" , \
"snappy" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mongodb-connection-string-url" , [ \
[ "npm:2.6.0" , { \
"packageLocation" : "./.yarn/cache/mongodb-connection-string-url-npm-2.6.0-af011ba17f-1d662f0ecf.zip/node_modules/mongodb-connection-string-url/" , \
"packageDependencies" : [ \
[ "mongodb-connection-string-url" , "npm:2.6.0" ] , \
[ "@types/whatwg-url" , "npm:8.2.2" ] , \
[ "whatwg-url" , "npm:11.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mongoose" , [ \
2023-08-12 12:40:18 -04:00
[ "npm:7.4.3" , { \
"packageLocation" : "./.yarn/cache/mongoose-npm-7.4.3-de9b2a4bee-e92feec9e7.zip/node_modules/mongoose/" , \
2023-08-06 03:52:45 -04:00
"packageDependencies" : [ \
2023-08-12 12:40:18 -04:00
[ "mongoose" , "npm:7.4.3" ] , \
2023-08-06 03:52:45 -04:00
[ "bson" , "npm:5.4.0" ] , \
[ "kareem" , "npm:2.5.1" ] , \
2023-08-12 12:40:18 -04:00
[ "mongodb" , "virtual:de9b2a4bee48b47472569f051556d00472ad2cae24f303eab2885fcb163b9304e49630ec473487f25346e199b727589de8b538c4c4621c9a5e46486fe0dda3c9#npm:5.7.0" ] , \
2023-08-06 03:52:45 -04:00
[ "mpath" , "npm:0.9.0" ] , \
[ "mquery" , "npm:5.0.0" ] , \
[ "ms" , "npm:2.1.3" ] , \
[ "sift" , "npm:16.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mpath" , [ \
[ "npm:0.9.0" , { \
"packageLocation" : "./.yarn/cache/mpath-npm-0.9.0-e79cc94aea-1052f1f926.zip/node_modules/mpath/" , \
"packageDependencies" : [ \
[ "mpath" , "npm:0.9.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "mquery" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/mquery-npm-5.0.0-e714f098ee-0617ead71e.zip/node_modules/mquery/" , \
"packageDependencies" : [ \
[ "mquery" , "npm:5.0.0" ] , \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ms" , [ \
[ "npm:2.1.2" , { \
"packageLocation" : "./.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip/node_modules/ms/" , \
"packageDependencies" : [ \
[ "ms" , "npm:2.1.2" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:2.1.3" , { \
"packageLocation" : "./.yarn/cache/ms-npm-2.1.3-81ff3cfac1-aa92de6080.zip/node_modules/ms/" , \
"packageDependencies" : [ \
[ "ms" , "npm:2.1.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "nan" , [ \
[ "npm:2.17.0" , { \
"packageLocation" : "./.yarn/unplugged/nan-npm-2.17.0-bf36a21d6f/node_modules/nan/" , \
"packageDependencies" : [ \
[ "nan" , "npm:2.17.0" ] , \
[ "node-gyp" , "npm:9.4.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "negotiator" , [ \
[ "npm:0.6.3" , { \
"packageLocation" : "./.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip/node_modules/negotiator/" , \
"packageDependencies" : [ \
[ "negotiator" , "npm:0.6.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "node-addon-api" , [ \
[ "npm:5.1.0" , { \
"packageLocation" : "./.yarn/unplugged/node-addon-api-npm-5.1.0-b50d00f739/node_modules/node-addon-api/" , \
"packageDependencies" : [ \
[ "node-addon-api" , "npm:5.1.0" ] , \
[ "node-gyp" , "npm:9.4.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "node-domexception" , [ \
[ "npm:1.0.0" , { \
"packageLocation" : "./.yarn/cache/node-domexception-npm-1.0.0-e1e813b76f-ee1d37dd2a.zip/node_modules/node-domexception/" , \
"packageDependencies" : [ \
[ "node-domexception" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "node-fetch" , [ \
[ "npm:2.6.12" , { \
"packageLocation" : "./.yarn/cache/node-fetch-npm-2.6.12-48619ce9d6-3bc1655203.zip/node_modules/node-fetch/" , \
"packageDependencies" : [ \
[ "node-fetch" , "npm:2.6.12" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "npm:3.3.2" , { \
"packageLocation" : "./.yarn/cache/node-fetch-npm-3.3.2-5267e015f2-06a04095a2.zip/node_modules/node-fetch/" , \
"packageDependencies" : [ \
[ "node-fetch" , "npm:3.3.2" ] , \
[ "data-uri-to-buffer" , "npm:4.0.1" ] , \
[ "fetch-blob" , "npm:3.2.0" ] , \
[ "formdata-polyfill" , "npm:4.0.10" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "virtual:96190e77b0d1d9514198043e0d57ffc6ec9756bb40a6a375e74b503742f52d995fd945e4450439fc918585a43d04de7bc0829d40d03902827616828b235f2002#npm:2.6.12" , { \
"packageLocation" : "./.yarn/__virtual__/node-fetch-virtual-fb47434e05/0/cache/node-fetch-npm-2.6.12-48619ce9d6-3bc1655203.zip/node_modules/node-fetch/" , \
"packageDependencies" : [ \
[ "node-fetch" , "virtual:96190e77b0d1d9514198043e0d57ffc6ec9756bb40a6a375e74b503742f52d995fd945e4450439fc918585a43d04de7bc0829d40d03902827616828b235f2002#npm:2.6.12" ] , \
[ "@types/encoding" , null ] , \
[ "encoding" , null ] , \
[ "whatwg-url" , "npm:5.0.0" ] \
] , \
"packagePeers" : [ \
"@types/encoding" , \
"encoding" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "node-gyp" , [ \
[ "npm:9.4.0" , { \
"packageLocation" : "./.yarn/unplugged/node-gyp-npm-9.4.0-ebf5f5573e/node_modules/node-gyp/" , \
"packageDependencies" : [ \
[ "node-gyp" , "npm:9.4.0" ] , \
[ "env-paths" , "npm:2.2.1" ] , \
[ "exponential-backoff" , "npm:3.1.1" ] , \
[ "glob" , "npm:7.2.3" ] , \
[ "graceful-fs" , "npm:4.2.11" ] , \
[ "make-fetch-happen" , "npm:11.1.1" ] , \
[ "nopt" , "npm:6.0.0" ] , \
[ "npmlog" , "npm:6.0.2" ] , \
[ "rimraf" , "npm:3.0.2" ] , \
[ "semver" , "npm:7.5.4" ] , \
[ "tar" , "npm:6.1.15" ] , \
[ "which" , "npm:2.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "node-html-parser" , [ \
[ "npm:6.1.5" , { \
"packageLocation" : "./.yarn/cache/node-html-parser-npm-6.1.5-b4e338af4b-b54257b319.zip/node_modules/node-html-parser/" , \
"packageDependencies" : [ \
[ "node-html-parser" , "npm:6.1.5" ] , \
[ "css-select" , "npm:5.1.0" ] , \
[ "he" , "npm:1.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "nopt" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/nopt-npm-5.0.0-304b40fbfe-d35fdec187.zip/node_modules/nopt/" , \
"packageDependencies" : [ \
[ "nopt" , "npm:5.0.0" ] , \
[ "abbrev" , "npm:1.1.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:6.0.0" , { \
"packageLocation" : "./.yarn/cache/nopt-npm-6.0.0-5ea8050815-82149371f8.zip/node_modules/nopt/" , \
"packageDependencies" : [ \
[ "nopt" , "npm:6.0.0" ] , \
[ "abbrev" , "npm:1.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "npmlog" , [ \
[ "npm:5.0.1" , { \
"packageLocation" : "./.yarn/cache/npmlog-npm-5.0.1-366cab64a2-516b266302.zip/node_modules/npmlog/" , \
"packageDependencies" : [ \
[ "npmlog" , "npm:5.0.1" ] , \
[ "are-we-there-yet" , "npm:2.0.0" ] , \
[ "console-control-strings" , "npm:1.1.0" ] , \
[ "gauge" , "npm:3.0.2" ] , \
[ "set-blocking" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:6.0.2" , { \
"packageLocation" : "./.yarn/cache/npmlog-npm-6.0.2-e0e69455c7-ae238cd264.zip/node_modules/npmlog/" , \
"packageDependencies" : [ \
[ "npmlog" , "npm:6.0.2" ] , \
[ "are-we-there-yet" , "npm:3.0.1" ] , \
[ "console-control-strings" , "npm:1.1.0" ] , \
[ "gauge" , "npm:4.0.4" ] , \
[ "set-blocking" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "nth-check" , [ \
[ "npm:2.1.1" , { \
"packageLocation" : "./.yarn/cache/nth-check-npm-2.1.1-f97afc8169-5afc3dafcd.zip/node_modules/nth-check/" , \
"packageDependencies" : [ \
[ "nth-check" , "npm:2.1.1" ] , \
[ "boolbase" , "npm:1.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "object-assign" , [ \
[ "npm:4.1.1" , { \
"packageLocation" : "./.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip/node_modules/object-assign/" , \
"packageDependencies" : [ \
[ "object-assign" , "npm:4.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "once" , [ \
[ "npm:1.4.0" , { \
"packageLocation" : "./.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip/node_modules/once/" , \
"packageDependencies" : [ \
[ "once" , "npm:1.4.0" ] , \
[ "wrappy" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "p-map" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip/node_modules/p-map/" , \
"packageDependencies" : [ \
[ "p-map" , "npm:4.0.0" ] , \
[ "aggregate-error" , "npm:3.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "parse5" , [ \
[ "npm:7.1.2" , { \
"packageLocation" : "./.yarn/cache/parse5-npm-7.1.2-aa9a92c270-59465dd05e.zip/node_modules/parse5/" , \
"packageDependencies" : [ \
[ "parse5" , "npm:7.1.2" ] , \
[ "entities" , "npm:4.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "parse5-htmlparser2-tree-adapter" , [ \
[ "npm:7.0.0" , { \
"packageLocation" : "./.yarn/cache/parse5-htmlparser2-tree-adapter-npm-7.0.0-38e1b3a974-fc5d01e077.zip/node_modules/parse5-htmlparser2-tree-adapter/" , \
"packageDependencies" : [ \
[ "parse5-htmlparser2-tree-adapter" , "npm:7.0.0" ] , \
[ "domhandler" , "npm:5.0.3" ] , \
[ "parse5" , "npm:7.1.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "path-is-absolute" , [ \
[ "npm:1.0.1" , { \
"packageLocation" : "./.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip/node_modules/path-is-absolute/" , \
"packageDependencies" : [ \
[ "path-is-absolute" , "npm:1.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "path-key" , [ \
[ "npm:3.1.1" , { \
"packageLocation" : "./.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip/node_modules/path-key/" , \
"packageDependencies" : [ \
[ "path-key" , "npm:3.1.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "path-scurry" , [ \
[ "npm:1.10.1" , { \
"packageLocation" : "./.yarn/cache/path-scurry-npm-1.10.1-52bd946f2e-e2557cff3a.zip/node_modules/path-scurry/" , \
"packageDependencies" : [ \
[ "path-scurry" , "npm:1.10.1" ] , \
[ "lru-cache" , "npm:10.0.0" ] , \
[ "minipass" , "npm:7.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "peek-readable" , [ \
[ "npm:4.1.0" , { \
"packageLocation" : "./.yarn/cache/peek-readable-npm-4.1.0-26439d9ff8-02c673f9bc.zip/node_modules/peek-readable/" , \
"packageDependencies" : [ \
[ "peek-readable" , "npm:4.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "prism-media" , [ \
[ "npm:1.3.5" , { \
"packageLocation" : "./.yarn/cache/prism-media-npm-1.3.5-f727c60102-a4fbe5c91f.zip/node_modules/prism-media/" , \
"packageDependencies" : [ \
[ "prism-media" , "npm:1.3.5" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:1.3.5" , { \
"packageLocation" : "./.yarn/__virtual__/prism-media-virtual-1dc84686ac/0/cache/prism-media-npm-1.3.5-f727c60102-a4fbe5c91f.zip/node_modules/prism-media/" , \
"packageDependencies" : [ \
[ "prism-media" , "virtual:20c353e2d6536e37339997f03975c6a660f4d296e664d291bd43620c6162cca8eb5ef90b0998dc9db75ff6862e5da587d0530bae26805f5fadc8f17aaa4ff794#npm:1.3.5" ] , \
[ "@discordjs/opus" , "npm:0.9.0" ] , \
[ "@types/discordjs__opus" , null ] , \
[ "@types/ffmpeg-static" , null ] , \
[ "@types/node-opus" , null ] , \
[ "@types/opusscript" , null ] , \
[ "ffmpeg-static" , null ] , \
[ "node-opus" , null ] , \
[ "opusscript" , null ] \
] , \
"packagePeers" : [ \
"@discordjs/opus" , \
"@types/discordjs__opus" , \
"@types/ffmpeg-static" , \
"@types/node-opus" , \
"@types/opusscript" , \
"ffmpeg-static" , \
"node-opus" , \
"opusscript" \
] , \
"linkType" : "HARD" \
} ] , \
[ "virtual:37f8ab283fb7abcf3fda3c5d430948901f33b8d771da32a273933562670e34608b1daf4394905868d946d64bc91643fb158184deae5131f973a7fcfafbc06afc#npm:1.3.5" , { \
"packageLocation" : "./.yarn/__virtual__/prism-media-virtual-01fa1f4255/0/cache/prism-media-npm-1.3.5-f727c60102-a4fbe5c91f.zip/node_modules/prism-media/" , \
"packageDependencies" : [ \
[ "prism-media" , "virtual:37f8ab283fb7abcf3fda3c5d430948901f33b8d771da32a273933562670e34608b1daf4394905868d946d64bc91643fb158184deae5131f973a7fcfafbc06afc#npm:1.3.5" ] , \
[ "@discordjs/opus" , null ] , \
[ "@types/discordjs__opus" , null ] , \
[ "@types/ffmpeg-static" , null ] , \
[ "@types/node-opus" , null ] , \
[ "@types/opusscript" , null ] , \
[ "ffmpeg-static" , null ] , \
[ "node-opus" , null ] , \
[ "opusscript" , null ] \
] , \
"packagePeers" : [ \
"@discordjs/opus" , \
"@types/discordjs__opus" , \
"@types/ffmpeg-static" , \
"@types/node-opus" , \
"@types/opusscript" , \
"ffmpeg-static" , \
"node-opus" , \
"opusscript" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "promise-retry" , [ \
[ "npm:2.0.1" , { \
"packageLocation" : "./.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip/node_modules/promise-retry/" , \
"packageDependencies" : [ \
[ "promise-retry" , "npm:2.0.1" ] , \
[ "err-code" , "npm:2.0.3" ] , \
[ "retry" , "npm:0.12.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "proxy-from-env" , [ \
[ "npm:1.1.0" , { \
"packageLocation" : "./.yarn/cache/proxy-from-env-npm-1.1.0-c13d07f26b-ed7fcc2ba0.zip/node_modules/proxy-from-env/" , \
"packageDependencies" : [ \
[ "proxy-from-env" , "npm:1.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "punycode" , [ \
[ "npm:2.3.0" , { \
"packageLocation" : "./.yarn/cache/punycode-npm-2.3.0-df4bdce06b-39f760e09a.zip/node_modules/punycode/" , \
"packageDependencies" : [ \
[ "punycode" , "npm:2.3.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "readable-stream" , [ \
[ "npm:3.6.2" , { \
"packageLocation" : "./.yarn/cache/readable-stream-npm-3.6.2-d2a6069158-bdcbe6c22e.zip/node_modules/readable-stream/" , \
"packageDependencies" : [ \
[ "readable-stream" , "npm:3.6.2" ] , \
[ "inherits" , "npm:2.0.4" ] , \
[ "string_decoder" , "npm:1.3.0" ] , \
[ "util-deprecate" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "readable-web-to-node-stream" , [ \
[ "npm:3.0.2" , { \
"packageLocation" : "./.yarn/cache/readable-web-to-node-stream-npm-3.0.2-682f5de297-8c56cc62c6.zip/node_modules/readable-web-to-node-stream/" , \
"packageDependencies" : [ \
[ "readable-web-to-node-stream" , "npm:3.0.2" ] , \
[ "readable-stream" , "npm:3.6.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "retry" , [ \
[ "npm:0.12.0" , { \
"packageLocation" : "./.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip/node_modules/retry/" , \
"packageDependencies" : [ \
[ "retry" , "npm:0.12.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "reverbnation-scraper" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/reverbnation-scraper-npm-2.0.0-96190e77b0-4d8f609a0b.zip/node_modules/reverbnation-scraper/" , \
"packageDependencies" : [ \
[ "reverbnation-scraper" , "npm:2.0.0" ] , \
[ "node-fetch" , "virtual:96190e77b0d1d9514198043e0d57ffc6ec9756bb40a6a375e74b503742f52d995fd945e4450439fc918585a43d04de7bc0829d40d03902827616828b235f2002#npm:2.6.12" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "rimraf" , [ \
[ "npm:3.0.2" , { \
"packageLocation" : "./.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip/node_modules/rimraf/" , \
"packageDependencies" : [ \
[ "rimraf" , "npm:3.0.2" ] , \
[ "glob" , "npm:7.2.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "safe-buffer" , [ \
[ "npm:5.2.1" , { \
"packageLocation" : "./.yarn/cache/safe-buffer-npm-5.2.1-3481c8aa9b-b99c4b41fd.zip/node_modules/safe-buffer/" , \
"packageDependencies" : [ \
[ "safe-buffer" , "npm:5.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "safer-buffer" , [ \
[ "npm:2.1.2" , { \
"packageLocation" : "./.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip/node_modules/safer-buffer/" , \
"packageDependencies" : [ \
[ "safer-buffer" , "npm:2.1.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "saslprep" , [ \
[ "npm:1.0.3" , { \
"packageLocation" : "./.yarn/cache/saslprep-npm-1.0.3-8db649c346-4fdc0b70fb.zip/node_modules/saslprep/" , \
"packageDependencies" : [ \
[ "saslprep" , "npm:1.0.3" ] , \
[ "sparse-bitfield" , "npm:3.0.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "sax" , [ \
[ "npm:1.2.4" , { \
"packageLocation" : "./.yarn/cache/sax-npm-1.2.4-178f05f12f-d3df7d32b8.zip/node_modules/sax/" , \
"packageDependencies" : [ \
[ "sax" , "npm:1.2.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "semver" , [ \
[ "npm:6.3.1" , { \
"packageLocation" : "./.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip/node_modules/semver/" , \
"packageDependencies" : [ \
[ "semver" , "npm:6.3.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:7.5.4" , { \
"packageLocation" : "./.yarn/cache/semver-npm-7.5.4-c4ad957fcd-12d8ad952f.zip/node_modules/semver/" , \
"packageDependencies" : [ \
[ "semver" , "npm:7.5.4" ] , \
[ "lru-cache" , "npm:6.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "set-blocking" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/set-blocking-npm-2.0.0-49e2cffa24-6e65a05f7c.zip/node_modules/set-blocking/" , \
"packageDependencies" : [ \
[ "set-blocking" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "shebang-command" , [ \
[ "npm:2.0.0" , { \
"packageLocation" : "./.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip/node_modules/shebang-command/" , \
"packageDependencies" : [ \
[ "shebang-command" , "npm:2.0.0" ] , \
[ "shebang-regex" , "npm:3.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "shebang-regex" , [ \
[ "npm:3.0.0" , { \
"packageLocation" : "./.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip/node_modules/shebang-regex/" , \
"packageDependencies" : [ \
[ "shebang-regex" , "npm:3.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "sift" , [ \
[ "npm:16.0.1" , { \
"packageLocation" : "./.yarn/cache/sift-npm-16.0.1-ad548f4923-5fe18a517a.zip/node_modules/sift/" , \
"packageDependencies" : [ \
[ "sift" , "npm:16.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "signal-exit" , [ \
[ "npm:3.0.7" , { \
"packageLocation" : "./.yarn/cache/signal-exit-npm-3.0.7-bd270458a3-a2f098f247.zip/node_modules/signal-exit/" , \
"packageDependencies" : [ \
[ "signal-exit" , "npm:3.0.7" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:4.1.0" , { \
"packageLocation" : "./.yarn/cache/signal-exit-npm-4.1.0-61fb957687-64c757b498.zip/node_modules/signal-exit/" , \
"packageDependencies" : [ \
[ "signal-exit" , "npm:4.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "simple-concat" , [ \
[ "npm:1.0.1" , { \
"packageLocation" : "./.yarn/cache/simple-concat-npm-1.0.1-48df70de29-4d211042cc.zip/node_modules/simple-concat/" , \
"packageDependencies" : [ \
[ "simple-concat" , "npm:1.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "simple-get" , [ \
[ "npm:3.1.1" , { \
"packageLocation" : "./.yarn/cache/simple-get-npm-3.1.1-dce5923dba-80195e70bf.zip/node_modules/simple-get/" , \
"packageDependencies" : [ \
[ "simple-get" , "npm:3.1.1" ] , \
[ "decompress-response" , "npm:4.2.1" ] , \
[ "once" , "npm:1.4.0" ] , \
[ "simple-concat" , "npm:1.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "smart-buffer" , [ \
[ "npm:4.2.0" , { \
"packageLocation" : "./.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip/node_modules/smart-buffer/" , \
"packageDependencies" : [ \
[ "smart-buffer" , "npm:4.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "socks" , [ \
[ "npm:2.7.1" , { \
"packageLocation" : "./.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip/node_modules/socks/" , \
"packageDependencies" : [ \
[ "socks" , "npm:2.7.1" ] , \
[ "ip" , "npm:2.0.0" ] , \
[ "smart-buffer" , "npm:4.2.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "socks-proxy-agent" , [ \
[ "npm:7.0.0" , { \
"packageLocation" : "./.yarn/cache/socks-proxy-agent-npm-7.0.0-7aacf32ea0-7205543701.zip/node_modules/socks-proxy-agent/" , \
"packageDependencies" : [ \
[ "socks-proxy-agent" , "npm:7.0.0" ] , \
[ "agent-base" , "npm:6.0.2" ] , \
[ "debug" , "virtual:428f325a939c2653ad822eb3d75efb02ac311523dd0d4f9645afc39ea00bd86eceac35a9d59c9b6977d76b670a4ef0ae057ea572338a44729aa592711a8c05a3#npm:4.3.4" ] , \
[ "socks" , "npm:2.7.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "soundcloud.ts" , [ \
[ "npm:0.5.2" , { \
"packageLocation" : "./.yarn/cache/soundcloud.ts-npm-0.5.2-e8bfadd02f-6abd85b629.zip/node_modules/soundcloud.ts/" , \
"packageDependencies" : [ \
[ "soundcloud.ts" , "npm:0.5.2" ] , \
[ "undici" , "npm:5.23.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "sparse-bitfield" , [ \
[ "npm:3.0.3" , { \
"packageLocation" : "./.yarn/cache/sparse-bitfield-npm-3.0.3-cb80d0c89f-174da88dbb.zip/node_modules/sparse-bitfield/" , \
"packageDependencies" : [ \
[ "sparse-bitfield" , "npm:3.0.3" ] , \
[ "memory-pager" , "npm:1.5.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "spotify-uri" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/spotify-uri-npm-4.0.0-746c613cee-272e1692a7.zip/node_modules/spotify-uri/" , \
"packageDependencies" : [ \
[ "spotify-uri" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "spotify-url-info" , [ \
[ "npm:3.2.6" , { \
"packageLocation" : "./.yarn/cache/spotify-url-info-npm-3.2.6-83fff60a09-4101df615b.zip/node_modules/spotify-url-info/" , \
"packageDependencies" : [ \
[ "spotify-url-info" , "npm:3.2.6" ] , \
[ "himalaya" , "npm:1.1.0" ] , \
[ "spotify-uri" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ssri" , [ \
[ "npm:10.0.4" , { \
"packageLocation" : "./.yarn/cache/ssri-npm-10.0.4-f583dafaf3-fb14da9f8a.zip/node_modules/ssri/" , \
"packageDependencies" : [ \
[ "ssri" , "npm:10.0.4" ] , \
[ "minipass" , "npm:5.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "streamsearch" , [ \
[ "npm:1.1.0" , { \
"packageLocation" : "./.yarn/cache/streamsearch-npm-1.1.0-fc3ad6536d-1cce16cea8.zip/node_modules/streamsearch/" , \
"packageDependencies" : [ \
[ "streamsearch" , "npm:1.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "string-width" , [ \
[ "npm:4.2.3" , { \
"packageLocation" : "./.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip/node_modules/string-width/" , \
"packageDependencies" : [ \
[ "string-width" , "npm:4.2.3" ] , \
[ "emoji-regex" , "npm:8.0.0" ] , \
[ "is-fullwidth-code-point" , "npm:3.0.0" ] , \
[ "strip-ansi" , "npm:6.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:5.1.2" , { \
"packageLocation" : "./.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip/node_modules/string-width/" , \
"packageDependencies" : [ \
[ "string-width" , "npm:5.1.2" ] , \
[ "eastasianwidth" , "npm:0.2.0" ] , \
[ "emoji-regex" , "npm:9.2.2" ] , \
[ "strip-ansi" , "npm:7.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "string_decoder" , [ \
[ "npm:1.3.0" , { \
"packageLocation" : "./.yarn/cache/string_decoder-npm-1.3.0-2422117fd0-8417646695.zip/node_modules/string_decoder/" , \
"packageDependencies" : [ \
[ "string_decoder" , "npm:1.3.0" ] , \
[ "safe-buffer" , "npm:5.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "strip-ansi" , [ \
[ "npm:6.0.1" , { \
"packageLocation" : "./.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip/node_modules/strip-ansi/" , \
"packageDependencies" : [ \
[ "strip-ansi" , "npm:6.0.1" ] , \
[ "ansi-regex" , "npm:5.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:7.1.0" , { \
"packageLocation" : "./.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-859c73fcf2.zip/node_modules/strip-ansi/" , \
"packageDependencies" : [ \
[ "strip-ansi" , "npm:7.1.0" ] , \
[ "ansi-regex" , "npm:6.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "strtok3" , [ \
[ "npm:6.3.0" , { \
"packageLocation" : "./.yarn/cache/strtok3-npm-6.3.0-73598951ca-90732cff3f.zip/node_modules/strtok3/" , \
"packageDependencies" : [ \
[ "strtok3" , "npm:6.3.0" ] , \
[ "@tokenizer/token" , "npm:0.3.0" ] , \
[ "peek-readable" , "npm:4.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "systeminformation" , [ \
2023-08-12 12:40:18 -04:00
[ "npm:5.18.15" , { \
"packageLocation" : "./.yarn/unplugged/systeminformation-npm-5.18.15-6e7be558fc/node_modules/systeminformation/" , \
2023-08-06 03:52:45 -04:00
"packageDependencies" : [ \
2023-08-12 12:40:18 -04:00
[ "systeminformation" , "npm:5.18.15" ] \
2023-08-06 03:52:45 -04:00
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "tar" , [ \
[ "npm:6.1.15" , { \
"packageLocation" : "./.yarn/cache/tar-npm-6.1.15-44c3e71720-f23832fcee.zip/node_modules/tar/" , \
"packageDependencies" : [ \
[ "tar" , "npm:6.1.15" ] , \
[ "chownr" , "npm:2.0.0" ] , \
[ "fs-minipass" , "npm:2.1.0" ] , \
[ "minipass" , "npm:5.0.0" ] , \
[ "minizlib" , "npm:2.1.2" ] , \
[ "mkdirp" , "npm:1.0.4" ] , \
[ "yallist" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "token-types" , [ \
[ "npm:4.2.1" , { \
"packageLocation" : "./.yarn/cache/token-types-npm-4.2.1-1d37f3d456-cce256766b.zip/node_modules/token-types/" , \
"packageDependencies" : [ \
[ "token-types" , "npm:4.2.1" ] , \
[ "@tokenizer/token" , "npm:0.3.0" ] , \
[ "ieee754" , "npm:1.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "tr46" , [ \
[ "npm:0.0.3" , { \
"packageLocation" : "./.yarn/cache/tr46-npm-0.0.3-de53018915-726321c5ea.zip/node_modules/tr46/" , \
"packageDependencies" : [ \
[ "tr46" , "npm:0.0.3" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:3.0.0" , { \
"packageLocation" : "./.yarn/cache/tr46-npm-3.0.0-e1ae1ea7c9-44c3cc6767.zip/node_modules/tr46/" , \
"packageDependencies" : [ \
[ "tr46" , "npm:3.0.0" ] , \
[ "punycode" , "npm:2.3.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ts-mixer" , [ \
[ "npm:6.0.3" , { \
"packageLocation" : "./.yarn/cache/ts-mixer-npm-6.0.3-d5b44d91b7-7fbaba0a41.zip/node_modules/ts-mixer/" , \
"packageDependencies" : [ \
[ "ts-mixer" , "npm:6.0.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "tslib" , [ \
[ "npm:2.6.1" , { \
"packageLocation" : "./.yarn/cache/tslib-npm-2.6.1-de28eba753-b0d176d176.zip/node_modules/tslib/" , \
"packageDependencies" : [ \
[ "tslib" , "npm:2.6.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "typescript" , [ \
[ "patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=5da071" , { \
"packageLocation" : "./.yarn/cache/typescript-patch-bd21d74a9d-f53bfe97f7.zip/node_modules/typescript/" , \
"packageDependencies" : [ \
[ "typescript" , "patch:typescript@npm%3A5.1.6#~builtin<compat/typescript>::version=5.1.6&hash=5da071" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "undici" , [ \
[ "npm:5.23.0" , { \
"packageLocation" : "./.yarn/cache/undici-npm-5.23.0-eb9e1b02e8-906ca4fb1d.zip/node_modules/undici/" , \
"packageDependencies" : [ \
[ "undici" , "npm:5.23.0" ] , \
[ "busboy" , "npm:1.6.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "unfetch" , [ \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/unfetch-npm-5.0.0-bb7408900a-005133bcdc.zip/node_modules/unfetch/" , \
"packageDependencies" : [ \
[ "unfetch" , "npm:5.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "unique-filename" , [ \
[ "npm:3.0.0" , { \
"packageLocation" : "./.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip/node_modules/unique-filename/" , \
"packageDependencies" : [ \
[ "unique-filename" , "npm:3.0.0" ] , \
[ "unique-slug" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "unique-slug" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/unique-slug-npm-4.0.0-e6b08f28aa-0884b58365.zip/node_modules/unique-slug/" , \
"packageDependencies" : [ \
[ "unique-slug" , "npm:4.0.0" ] , \
[ "imurmurhash" , "npm:0.1.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "universal-user-agent" , [ \
[ "npm:6.0.0" , { \
"packageLocation" : "./.yarn/cache/universal-user-agent-npm-6.0.0-b148fb997a-5092bbc80d.zip/node_modules/universal-user-agent/" , \
"packageDependencies" : [ \
[ "universal-user-agent" , "npm:6.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "util-deprecate" , [ \
[ "npm:1.0.2" , { \
"packageLocation" : "./.yarn/cache/util-deprecate-npm-1.0.2-e3fe1a219c-474acf1146.zip/node_modules/util-deprecate/" , \
"packageDependencies" : [ \
[ "util-deprecate" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "web-streams-polyfill" , [ \
[ "npm:3.2.1" , { \
"packageLocation" : "./.yarn/cache/web-streams-polyfill-npm-3.2.1-835bd3857e-b119c78574.zip/node_modules/web-streams-polyfill/" , \
"packageDependencies" : [ \
[ "web-streams-polyfill" , "npm:3.2.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "webidl-conversions" , [ \
[ "npm:3.0.1" , { \
"packageLocation" : "./.yarn/cache/webidl-conversions-npm-3.0.1-60310f6a2b-c92a0a6ab9.zip/node_modules/webidl-conversions/" , \
"packageDependencies" : [ \
[ "webidl-conversions" , "npm:3.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:7.0.0" , { \
"packageLocation" : "./.yarn/cache/webidl-conversions-npm-7.0.0-e8c8e30c68-f05588567a.zip/node_modules/webidl-conversions/" , \
"packageDependencies" : [ \
[ "webidl-conversions" , "npm:7.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "whatwg-url" , [ \
[ "npm:11.0.0" , { \
"packageLocation" : "./.yarn/cache/whatwg-url-npm-11.0.0-073529d93a-ed4826aaa5.zip/node_modules/whatwg-url/" , \
"packageDependencies" : [ \
[ "whatwg-url" , "npm:11.0.0" ] , \
[ "tr46" , "npm:3.0.0" ] , \
[ "webidl-conversions" , "npm:7.0.0" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:5.0.0" , { \
"packageLocation" : "./.yarn/cache/whatwg-url-npm-5.0.0-374fb45e60-b8daed4ad3.zip/node_modules/whatwg-url/" , \
"packageDependencies" : [ \
[ "whatwg-url" , "npm:5.0.0" ] , \
[ "tr46" , "npm:0.0.3" ] , \
[ "webidl-conversions" , "npm:3.0.1" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "which" , [ \
[ "npm:2.0.2" , { \
"packageLocation" : "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/" , \
"packageDependencies" : [ \
[ "which" , "npm:2.0.2" ] , \
[ "isexe" , "npm:2.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "wide-align" , [ \
[ "npm:1.1.5" , { \
"packageLocation" : "./.yarn/cache/wide-align-npm-1.1.5-889d77e592-d5fc37cd56.zip/node_modules/wide-align/" , \
"packageDependencies" : [ \
[ "wide-align" , "npm:1.1.5" ] , \
[ "string-width" , "npm:4.2.3" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "wrap-ansi" , [ \
[ "npm:7.0.0" , { \
"packageLocation" : "./.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip/node_modules/wrap-ansi/" , \
"packageDependencies" : [ \
[ "wrap-ansi" , "npm:7.0.0" ] , \
[ "ansi-styles" , "npm:4.3.0" ] , \
[ "string-width" , "npm:4.2.3" ] , \
[ "strip-ansi" , "npm:6.0.1" ] \
] , \
"linkType" : "HARD" \
} ] , \
[ "npm:8.1.0" , { \
"packageLocation" : "./.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip/node_modules/wrap-ansi/" , \
"packageDependencies" : [ \
[ "wrap-ansi" , "npm:8.1.0" ] , \
[ "ansi-styles" , "npm:6.2.1" ] , \
[ "string-width" , "npm:5.1.2" ] , \
[ "strip-ansi" , "npm:7.1.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "wrappy" , [ \
[ "npm:1.0.2" , { \
"packageLocation" : "./.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip/node_modules/wrappy/" , \
"packageDependencies" : [ \
[ "wrappy" , "npm:1.0.2" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ws" , [ \
[ "npm:8.13.0" , { \
"packageLocation" : "./.yarn/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip/node_modules/ws/" , \
"packageDependencies" : [ \
[ "ws" , "npm:8.13.0" ] \
] , \
"linkType" : "SOFT" \
} ] , \
[ "virtual:9ce84a0604ad02832e33621299f919cd218b24239fb0c46d80371b76a2e2bb3fa8fbeca210d63d15caaa18cb4bd437d3b404ee91d06cb167e4b2efa32b8e514c#npm:8.13.0" , { \
"packageLocation" : "./.yarn/__virtual__/ws-virtual-3a4860311b/0/cache/ws-npm-8.13.0-26ffa3016a-53e991bbf9.zip/node_modules/ws/" , \
"packageDependencies" : [ \
[ "ws" , "virtual:9ce84a0604ad02832e33621299f919cd218b24239fb0c46d80371b76a2e2bb3fa8fbeca210d63d15caaa18cb4bd437d3b404ee91d06cb167e4b2efa32b8e514c#npm:8.13.0" ] , \
[ "@types/bufferutil" , null ] , \
[ "@types/utf-8-validate" , null ] , \
[ "bufferutil" , null ] , \
[ "utf-8-validate" , null ] \
] , \
"packagePeers" : [ \
"@types/bufferutil" , \
"@types/utf-8-validate" , \
"bufferutil" , \
"utf-8-validate" \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "xml-js" , [ \
[ "npm:1.6.11" , { \
"packageLocation" : "./.yarn/cache/xml-js-npm-1.6.11-56742b7fb0-24a5547991.zip/node_modules/xml-js/" , \
"packageDependencies" : [ \
[ "xml-js" , "npm:1.6.11" ] , \
[ "sax" , "npm:1.2.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "yallist" , [ \
[ "npm:4.0.0" , { \
"packageLocation" : "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/" , \
"packageDependencies" : [ \
[ "yallist" , "npm:4.0.0" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "youtube-sr" , [ \
[ "npm:4.3.4" , { \
"packageLocation" : "./.yarn/cache/youtube-sr-npm-4.3.4-102d63be7a-e097f2a82d.zip/node_modules/youtube-sr/" , \
"packageDependencies" : [ \
[ "youtube-sr" , "npm:4.3.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] , \
[ "ytdl-core" , [ \
[ "npm:4.11.5" , { \
"packageLocation" : "./.yarn/cache/ytdl-core-npm-4.11.5-62c9f9ffe4-f81ae90778.zip/node_modules/ytdl-core/" , \
"packageDependencies" : [ \
[ "ytdl-core" , "npm:4.11.5" ] , \
[ "m3u8stream" , "npm:0.8.6" ] , \
[ "miniget" , "npm:4.2.3" ] , \
[ "sax" , "npm:1.2.4" ] \
] , \
"linkType" : "HARD" \
} ] \
] ] \
] \
} ' ) , { basePath : basePath || _ _dirname } ) ;
}
const fs = require ( 'fs' ) ;
const path = require ( 'path' ) ;
const require$$0 = require ( 'module' ) ;
const StringDecoder = require ( 'string_decoder' ) ;
const url = require ( 'url' ) ;
const os = require ( 'os' ) ;
const nodeUtils = require ( 'util' ) ;
const readline = require ( 'readline' ) ;
const assert = require ( 'assert' ) ;
const stream = require ( 'stream' ) ;
const zlib = require ( 'zlib' ) ;
const events = require ( 'events' ) ;
const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default : e } ;
function _interopNamespace ( e ) {
if ( e && e . _ _esModule ) return e ;
const n = Object . create ( null ) ;
if ( e ) {
for ( const k in e ) {
if ( k !== 'default' ) {
const d = Object . getOwnPropertyDescriptor ( e , k ) ;
Object . defineProperty ( n , k , d . get ? d : {
enumerable : true ,
get : ( ) => e [ k ]
} ) ;
}
}
}
n . default = e ;
return Object . freeze ( n ) ;
}
const fs _ _default = /*#__PURE__*/ _interopDefaultLegacy ( fs ) ;
const path _ _default = /*#__PURE__*/ _interopDefaultLegacy ( path ) ;
const require$$0 _ _default = /*#__PURE__*/ _interopDefaultLegacy ( require$$0 ) ;
const StringDecoder _ _default = /*#__PURE__*/ _interopDefaultLegacy ( StringDecoder ) ;
const nodeUtils _ _namespace = /*#__PURE__*/ _interopNamespace ( nodeUtils ) ;
const assert _ _default = /*#__PURE__*/ _interopDefaultLegacy ( assert ) ;
const zlib _ _default = /*#__PURE__*/ _interopDefaultLegacy ( zlib ) ;
const S _IFMT = 61440 ;
const S _IFDIR = 16384 ;
const S _IFREG = 32768 ;
const S _IFLNK = 40960 ;
const SAFE _TIME = 456789e3 ;
const DEFAULT _MODE = S _IFREG | 420 ;
class StatEntry {
constructor ( ) {
this . uid = 0 ;
this . gid = 0 ;
this . size = 0 ;
this . blksize = 0 ;
this . atimeMs = 0 ;
this . mtimeMs = 0 ;
this . ctimeMs = 0 ;
this . birthtimeMs = 0 ;
this . atime = new Date ( 0 ) ;
this . mtime = new Date ( 0 ) ;
this . ctime = new Date ( 0 ) ;
this . birthtime = new Date ( 0 ) ;
this . dev = 0 ;
this . ino = 0 ;
this . mode = DEFAULT _MODE ;
this . nlink = 1 ;
this . rdev = 0 ;
this . blocks = 1 ;
}
isBlockDevice ( ) {
return false ;
}
isCharacterDevice ( ) {
return false ;
}
isDirectory ( ) {
return ( this . mode & S _IFMT ) === S _IFDIR ;
}
isFIFO ( ) {
return false ;
}
isFile ( ) {
return ( this . mode & S _IFMT ) === S _IFREG ;
}
isSocket ( ) {
return false ;
}
isSymbolicLink ( ) {
return ( this . mode & S _IFMT ) === S _IFLNK ;
}
}
class BigIntStatsEntry {
constructor ( ) {
this . uid = BigInt ( 0 ) ;
this . gid = BigInt ( 0 ) ;
this . size = BigInt ( 0 ) ;
this . blksize = BigInt ( 0 ) ;
this . atimeMs = BigInt ( 0 ) ;
this . mtimeMs = BigInt ( 0 ) ;
this . ctimeMs = BigInt ( 0 ) ;
this . birthtimeMs = BigInt ( 0 ) ;
this . atimeNs = BigInt ( 0 ) ;
this . mtimeNs = BigInt ( 0 ) ;
this . ctimeNs = BigInt ( 0 ) ;
this . birthtimeNs = BigInt ( 0 ) ;
this . atime = new Date ( 0 ) ;
this . mtime = new Date ( 0 ) ;
this . ctime = new Date ( 0 ) ;
this . birthtime = new Date ( 0 ) ;
this . dev = BigInt ( 0 ) ;
this . ino = BigInt ( 0 ) ;
this . mode = BigInt ( DEFAULT _MODE ) ;
this . nlink = BigInt ( 1 ) ;
this . rdev = BigInt ( 0 ) ;
this . blocks = BigInt ( 1 ) ;
}
isBlockDevice ( ) {
return false ;
}
isCharacterDevice ( ) {
return false ;
}
isDirectory ( ) {
return ( this . mode & BigInt ( S _IFMT ) ) === BigInt ( S _IFDIR ) ;
}
isFIFO ( ) {
return false ;
}
isFile ( ) {
return ( this . mode & BigInt ( S _IFMT ) ) === BigInt ( S _IFREG ) ;
}
isSocket ( ) {
return false ;
}
isSymbolicLink ( ) {
return ( this . mode & BigInt ( S _IFMT ) ) === BigInt ( S _IFLNK ) ;
}
}
function makeDefaultStats ( ) {
return new StatEntry ( ) ;
}
function clearStats ( stats ) {
for ( const key in stats ) {
if ( Object . prototype . hasOwnProperty . call ( stats , key ) ) {
const element = stats [ key ] ;
if ( typeof element === ` number ` ) {
stats [ key ] = 0 ;
} else if ( typeof element === ` bigint ` ) {
stats [ key ] = BigInt ( 0 ) ;
} else if ( nodeUtils _ _namespace . types . isDate ( element ) ) {
stats [ key ] = new Date ( 0 ) ;
}
}
}
return stats ;
}
function convertToBigIntStats ( stats ) {
const bigintStats = new BigIntStatsEntry ( ) ;
for ( const key in stats ) {
if ( Object . prototype . hasOwnProperty . call ( stats , key ) ) {
const element = stats [ key ] ;
if ( typeof element === ` number ` ) {
bigintStats [ key ] = BigInt ( element ) ;
} else if ( nodeUtils _ _namespace . types . isDate ( element ) ) {
bigintStats [ key ] = new Date ( element ) ;
}
}
}
bigintStats . atimeNs = bigintStats . atimeMs * BigInt ( 1e6 ) ;
bigintStats . mtimeNs = bigintStats . mtimeMs * BigInt ( 1e6 ) ;
bigintStats . ctimeNs = bigintStats . ctimeMs * BigInt ( 1e6 ) ;
bigintStats . birthtimeNs = bigintStats . birthtimeMs * BigInt ( 1e6 ) ;
return bigintStats ;
}
function areStatsEqual ( a , b ) {
if ( a . atimeMs !== b . atimeMs )
return false ;
if ( a . birthtimeMs !== b . birthtimeMs )
return false ;
if ( a . blksize !== b . blksize )
return false ;
if ( a . blocks !== b . blocks )
return false ;
if ( a . ctimeMs !== b . ctimeMs )
return false ;
if ( a . dev !== b . dev )
return false ;
if ( a . gid !== b . gid )
return false ;
if ( a . ino !== b . ino )
return false ;
if ( a . isBlockDevice ( ) !== b . isBlockDevice ( ) )
return false ;
if ( a . isCharacterDevice ( ) !== b . isCharacterDevice ( ) )
return false ;
if ( a . isDirectory ( ) !== b . isDirectory ( ) )
return false ;
if ( a . isFIFO ( ) !== b . isFIFO ( ) )
return false ;
if ( a . isFile ( ) !== b . isFile ( ) )
return false ;
if ( a . isSocket ( ) !== b . isSocket ( ) )
return false ;
if ( a . isSymbolicLink ( ) !== b . isSymbolicLink ( ) )
return false ;
if ( a . mode !== b . mode )
return false ;
if ( a . mtimeMs !== b . mtimeMs )
return false ;
if ( a . nlink !== b . nlink )
return false ;
if ( a . rdev !== b . rdev )
return false ;
if ( a . size !== b . size )
return false ;
if ( a . uid !== b . uid )
return false ;
const aN = a ;
const bN = b ;
if ( aN . atimeNs !== bN . atimeNs )
return false ;
if ( aN . mtimeNs !== bN . mtimeNs )
return false ;
if ( aN . ctimeNs !== bN . ctimeNs )
return false ;
if ( aN . birthtimeNs !== bN . birthtimeNs )
return false ;
return true ;
}
const PortablePath = {
root : ` / ` ,
dot : ` . ` ,
parent : ` .. `
} ;
const Filename = {
nodeModules : ` node_modules ` ,
manifest : ` package.json ` ,
lockfile : ` yarn.lock ` ,
virtual : ` __virtual__ ` ,
pnpJs : ` .pnp.js ` ,
pnpCjs : ` .pnp.cjs ` ,
rc : ` .yarnrc.yml `
} ;
const npath = Object . create ( path _ _default . default ) ;
const ppath = Object . create ( path _ _default . default . posix ) ;
npath . cwd = ( ) => process . cwd ( ) ;
ppath . cwd = ( ) => toPortablePath ( process . cwd ( ) ) ;
ppath . resolve = ( ... segments ) => {
if ( segments . length > 0 && ppath . isAbsolute ( segments [ 0 ] ) ) {
return path _ _default . default . posix . resolve ( ... segments ) ;
} else {
return path _ _default . default . posix . resolve ( ppath . cwd ( ) , ... segments ) ;
}
} ;
const contains = function ( pathUtils , from , to ) {
from = pathUtils . normalize ( from ) ;
to = pathUtils . normalize ( to ) ;
if ( from === to )
return ` . ` ;
if ( ! from . endsWith ( pathUtils . sep ) )
from = from + pathUtils . sep ;
if ( to . startsWith ( from ) ) {
return to . slice ( from . length ) ;
} else {
return null ;
}
} ;
npath . fromPortablePath = fromPortablePath ;
npath . toPortablePath = toPortablePath ;
npath . contains = ( from , to ) => contains ( npath , from , to ) ;
ppath . contains = ( from , to ) => contains ( ppath , from , to ) ;
const WINDOWS _PATH _REGEXP = /^([a-zA-Z]:.*)$/ ;
const UNC _WINDOWS _PATH _REGEXP = /^\/\/(\.\/)?(.*)$/ ;
const PORTABLE _PATH _REGEXP = /^\/([a-zA-Z]:.*)$/ ;
const UNC _PORTABLE _PATH _REGEXP = /^\/unc\/(\.dot\/)?(.*)$/ ;
function fromPortablePath ( p ) {
if ( process . platform !== ` win32 ` )
return p ;
let portablePathMatch , uncPortablePathMatch ;
if ( portablePathMatch = p . match ( PORTABLE _PATH _REGEXP ) )
p = portablePathMatch [ 1 ] ;
else if ( uncPortablePathMatch = p . match ( UNC _PORTABLE _PATH _REGEXP ) )
p = ` \\ \\ ${ uncPortablePathMatch [ 1 ] ? ` . \\ ` : ` ` } ${ uncPortablePathMatch [ 2 ] } ` ;
else
return p ;
return p . replace ( /\//g , ` \\ ` ) ;
}
function toPortablePath ( p ) {
if ( process . platform !== ` win32 ` )
return p ;
p = p . replace ( /\\/g , ` / ` ) ;
let windowsPathMatch , uncWindowsPathMatch ;
if ( windowsPathMatch = p . match ( WINDOWS _PATH _REGEXP ) )
p = ` / ${ windowsPathMatch [ 1 ] } ` ;
else if ( uncWindowsPathMatch = p . match ( UNC _WINDOWS _PATH _REGEXP ) )
p = ` /unc/ ${ uncWindowsPathMatch [ 1 ] ? ` .dot/ ` : ` ` } ${ uncWindowsPathMatch [ 2 ] } ` ;
return p ;
}
function convertPath ( targetPathUtils , sourcePath ) {
return targetPathUtils === npath ? fromPortablePath ( sourcePath ) : toPortablePath ( sourcePath ) ;
}
const defaultTime = new Date ( SAFE _TIME * 1e3 ) ;
async function copyPromise ( destinationFs , destination , sourceFs , source , opts ) {
const normalizedDestination = destinationFs . pathUtils . normalize ( destination ) ;
const normalizedSource = sourceFs . pathUtils . normalize ( source ) ;
const prelayout = [ ] ;
const postlayout = [ ] ;
const { atime , mtime } = opts . stableTime ? { atime : defaultTime , mtime : defaultTime } : await sourceFs . lstatPromise ( normalizedSource ) ;
await destinationFs . mkdirpPromise ( destinationFs . pathUtils . dirname ( destination ) , { utimes : [ atime , mtime ] } ) ;
const updateTime = typeof destinationFs . lutimesPromise === ` function ` ? destinationFs . lutimesPromise . bind ( destinationFs ) : destinationFs . utimesPromise . bind ( destinationFs ) ;
await copyImpl ( prelayout , postlayout , updateTime , destinationFs , normalizedDestination , sourceFs , normalizedSource , { ... opts , didParentExist : true } ) ;
for ( const operation of prelayout )
await operation ( ) ;
await Promise . all ( postlayout . map ( ( operation ) => {
return operation ( ) ;
} ) ) ;
}
async function copyImpl ( prelayout , postlayout , updateTime , destinationFs , destination , sourceFs , source , opts ) {
var _a , _b ;
const destinationStat = opts . didParentExist ? await maybeLStat ( destinationFs , destination ) : null ;
const sourceStat = await sourceFs . lstatPromise ( source ) ;
const { atime , mtime } = opts . stableTime ? { atime : defaultTime , mtime : defaultTime } : sourceStat ;
let updated ;
switch ( true ) {
case sourceStat . isDirectory ( ) :
{
updated = await copyFolder ( prelayout , postlayout , updateTime , destinationFs , destination , destinationStat , sourceFs , source , sourceStat , opts ) ;
}
break ;
case sourceStat . isFile ( ) :
{
updated = await copyFile ( prelayout , postlayout , updateTime , destinationFs , destination , destinationStat , sourceFs , source , sourceStat , opts ) ;
}
break ;
case sourceStat . isSymbolicLink ( ) :
{
updated = await copySymlink ( prelayout , postlayout , updateTime , destinationFs , destination , destinationStat , sourceFs , source , sourceStat , opts ) ;
}
break ;
default :
{
throw new Error ( ` Unsupported file type ( ${ sourceStat . mode } ) ` ) ;
}
}
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 ( ) ) {
postlayout . push ( ( ) => updateTime ( destination , atime , mtime ) ) ;
updated = true ;
}
if ( destinationStat === null || ( destinationStat . mode & 511 ) !== ( sourceStat . mode & 511 ) ) {
postlayout . push ( ( ) => destinationFs . chmodPromise ( destination , sourceStat . mode & 511 ) ) ;
updated = true ;
}
return updated ;
}
async function maybeLStat ( baseFs , p ) {
try {
return await baseFs . lstatPromise ( p ) ;
} catch ( e ) {
return null ;
}
}
async function copyFolder ( prelayout , postlayout , updateTime , destinationFs , destination , destinationStat , sourceFs , source , sourceStat , opts ) {
if ( destinationStat !== null && ! destinationStat . isDirectory ( ) ) {
if ( opts . overwrite ) {
prelayout . push ( async ( ) => destinationFs . removePromise ( destination ) ) ;
destinationStat = null ;
} else {
return false ;
}
}
let updated = false ;
if ( destinationStat === null ) {
prelayout . push ( async ( ) => {
try {
await destinationFs . mkdirPromise ( destination , { mode : sourceStat . mode } ) ;
} catch ( err ) {
if ( err . code !== ` EEXIST ` ) {
throw err ;
}
}
} ) ;
updated = true ;
}
const entries = await sourceFs . readdirPromise ( source ) ;
const nextOpts = opts . didParentExist && ! destinationStat ? { ... opts , didParentExist : false } : opts ;
if ( opts . stableSort ) {
for ( const entry of entries . sort ( ) ) {
if ( await copyImpl ( prelayout , postlayout , updateTime , destinationFs , destinationFs . pathUtils . join ( destination , entry ) , sourceFs , sourceFs . pathUtils . join ( source , entry ) , nextOpts ) ) {
updated = true ;
}
}
} else {
const entriesUpdateStatus = await Promise . all ( entries . map ( async ( entry ) => {
await copyImpl ( prelayout , postlayout , updateTime , destinationFs , destinationFs . pathUtils . join ( destination , entry ) , sourceFs , sourceFs . pathUtils . join ( source , entry ) , nextOpts ) ;
} ) ) ;
if ( entriesUpdateStatus . some ( ( status ) => status ) ) {
updated = true ;
}
}
return updated ;
}
const isCloneSupportedCache = /* @__PURE__ */ new WeakMap ( ) ;
function makeLinkOperation ( opFs , destination , source , sourceStat , linkStrategy ) {
return async ( ) => {
await opFs . linkPromise ( source , destination ) ;
if ( linkStrategy === "readOnly" /* ReadOnly */ ) {
sourceStat . mode &= ~ 146 ;
await opFs . chmodPromise ( destination , sourceStat . mode ) ;
}
} ;
}
function makeCloneLinkOperation ( opFs , destination , source , sourceStat , linkStrategy ) {
const isCloneSupported = isCloneSupportedCache . get ( opFs ) ;
if ( typeof isCloneSupported === ` undefined ` ) {
return async ( ) => {
try {
await opFs . copyFilePromise ( source , destination , fs _ _default . default . constants . COPYFILE _FICLONE _FORCE ) ;
isCloneSupportedCache . set ( opFs , true ) ;
} catch ( err ) {
if ( err . code === ` ENOSYS ` || err . code === ` ENOTSUP ` ) {
isCloneSupportedCache . set ( opFs , false ) ;
await makeLinkOperation ( opFs , destination , source , sourceStat , linkStrategy ) ( ) ;
} else {
throw err ;
}
}
} ;
} else {
if ( isCloneSupported ) {
return async ( ) => opFs . copyFilePromise ( source , destination , fs _ _default . default . constants . COPYFILE _FICLONE _FORCE ) ;
} else {
return makeLinkOperation ( opFs , destination , source , sourceStat , linkStrategy ) ;
}
}
}
async function copyFile ( prelayout , postlayout , updateTime , destinationFs , destination , destinationStat , sourceFs , source , sourceStat , opts ) {
var _a ;
if ( destinationStat !== null ) {
if ( opts . overwrite ) {
prelayout . push ( async ( ) => destinationFs . removePromise ( destination ) ) ;
destinationStat = null ;
} else {
return false ;
}
}
const linkStrategy = ( _a = opts . linkStrategy ) != null ? _a : null ;
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 ) ) ;
prelayout . push ( async ( ) => op ( ) ) ;
return true ;
}
async function copySymlink ( prelayout , postlayout , updateTime , destinationFs , destination , destinationStat , sourceFs , source , sourceStat , opts ) {
if ( destinationStat !== null ) {
if ( opts . overwrite ) {
prelayout . push ( async ( ) => destinationFs . removePromise ( destination ) ) ;
destinationStat = null ;
} else {
return false ;
}
}
prelayout . push ( async ( ) => {
await destinationFs . symlinkPromise ( convertPath ( destinationFs . pathUtils , await sourceFs . readlinkPromise ( source ) ) , destination ) ;
} ) ;
return true ;
}
function makeError$1 ( code , message ) {
return Object . assign ( new Error ( ` ${ code } : ${ message } ` ) , { code } ) ;
}
function EBUSY ( message ) {
return makeError$1 ( ` EBUSY ` , message ) ;
}
function ENOSYS ( message , reason ) {
return makeError$1 ( ` ENOSYS ` , ` ${ message } , ${ reason } ` ) ;
}
function EINVAL ( reason ) {
return makeError$1 ( ` EINVAL ` , ` invalid argument, ${ reason } ` ) ;
}
function EBADF ( reason ) {
return makeError$1 ( ` EBADF ` , ` bad file descriptor, ${ reason } ` ) ;
}
function ENOENT ( reason ) {
return makeError$1 ( ` ENOENT ` , ` no such file or directory, ${ reason } ` ) ;
}
function ENOTDIR ( reason ) {
return makeError$1 ( ` ENOTDIR ` , ` not a directory, ${ reason } ` ) ;
}
function EISDIR ( reason ) {
return makeError$1 ( ` EISDIR ` , ` illegal operation on a directory, ${ reason } ` ) ;
}
function EEXIST ( reason ) {
return makeError$1 ( ` EEXIST ` , ` file already exists, ${ reason } ` ) ;
}
function EROFS ( reason ) {
return makeError$1 ( ` EROFS ` , ` read-only filesystem, ${ reason } ` ) ;
}
function ENOTEMPTY ( reason ) {
return makeError$1 ( ` ENOTEMPTY ` , ` directory not empty, ${ reason } ` ) ;
}
function EOPNOTSUPP ( reason ) {
return makeError$1 ( ` EOPNOTSUPP ` , ` operation not supported, ${ reason } ` ) ;
}
function ERR _DIR _CLOSED ( ) {
return makeError$1 ( ` ERR_DIR_CLOSED ` , ` Directory handle was closed ` ) ;
}
class LibzipError extends Error {
constructor ( message , code ) {
super ( message ) ;
this . name = ` Libzip Error ` ;
this . code = code ;
}
}
class CustomDir {
constructor ( path , nextDirent , opts = { } ) {
this . path = path ;
this . nextDirent = nextDirent ;
this . opts = opts ;
this . closed = false ;
}
throwIfClosed ( ) {
if ( this . closed ) {
throw ERR _DIR _CLOSED ( ) ;
}
}
async * [ Symbol . asyncIterator ] ( ) {
try {
let dirent ;
while ( ( dirent = await this . read ( ) ) !== null ) {
yield dirent ;
}
} finally {
await this . close ( ) ;
}
}
read ( cb ) {
const dirent = this . readSync ( ) ;
if ( typeof cb !== ` undefined ` )
return cb ( null , dirent ) ;
return Promise . resolve ( dirent ) ;
}
readSync ( ) {
this . throwIfClosed ( ) ;
return this . nextDirent ( ) ;
}
close ( cb ) {
this . closeSync ( ) ;
if ( typeof cb !== ` undefined ` )
return cb ( null ) ;
return Promise . resolve ( ) ;
}
closeSync ( ) {
var _a , _b ;
this . throwIfClosed ( ) ;
( _b = ( _a = this . opts ) . onClose ) == null ? void 0 : _b . call ( _a ) ;
this . closed = true ;
}
}
function opendir ( fakeFs , path , entries , opts ) {
const nextDirent = ( ) => {
const filename = entries . shift ( ) ;
if ( typeof filename === ` undefined ` )
return null ;
return Object . assign ( fakeFs . statSync ( fakeFs . pathUtils . join ( path , filename ) ) , {
name : filename
} ) ;
} ;
return new CustomDir ( path , nextDirent , opts ) ;
}
class FakeFS {
constructor ( pathUtils ) {
this . pathUtils = pathUtils ;
}
async * genTraversePromise ( init , { stableSort = false } = { } ) {
const stack = [ init ] ;
while ( stack . length > 0 ) {
const p = stack . shift ( ) ;
const entry = await this . lstatPromise ( p ) ;
if ( entry . isDirectory ( ) ) {
const entries = await this . readdirPromise ( p ) ;
if ( stableSort ) {
for ( const entry2 of entries . sort ( ) ) {
stack . push ( this . pathUtils . join ( p , entry2 ) ) ;
}
} else {
throw new Error ( ` Not supported ` ) ;
}
} else {
yield p ;
}
}
}
async removePromise ( p , { recursive = true , maxRetries = 5 } = { } ) {
let stat ;
try {
stat = await this . lstatPromise ( p ) ;
} catch ( error ) {
if ( error . code === ` ENOENT ` ) {
return ;
} else {
throw error ;
}
}
if ( stat . isDirectory ( ) ) {
if ( recursive ) {
const entries = await this . readdirPromise ( p ) ;
await Promise . all ( entries . map ( ( entry ) => {
return this . removePromise ( this . pathUtils . resolve ( p , entry ) ) ;
} ) ) ;
}
for ( let t = 0 ; t <= maxRetries ; t ++ ) {
try {
await this . rmdirPromise ( p ) ;
break ;
} catch ( error ) {
if ( error . code !== ` EBUSY ` && error . code !== ` ENOTEMPTY ` ) {
throw error ;
} else if ( t < maxRetries ) {
await new Promise ( ( resolve ) => setTimeout ( resolve , t * 100 ) ) ;
}
}
}
} else {
await this . unlinkPromise ( p ) ;
}
}
removeSync ( p , { recursive = true } = { } ) {
let stat ;
try {
stat = this . lstatSync ( p ) ;
} catch ( error ) {
if ( error . code === ` ENOENT ` ) {
return ;
} else {
throw error ;
}
}
if ( stat . isDirectory ( ) ) {
if ( recursive )
for ( const entry of this . readdirSync ( p ) )
this . removeSync ( this . pathUtils . resolve ( p , entry ) ) ;
this . rmdirSync ( p ) ;
} else {
this . unlinkSync ( p ) ;
}
}
async mkdirpPromise ( p , { chmod , utimes } = { } ) {
p = this . resolve ( p ) ;
if ( p === this . pathUtils . dirname ( p ) )
return void 0 ;
const parts = p . split ( this . pathUtils . sep ) ;
let createdDirectory ;
for ( let u = 2 ; u <= parts . length ; ++ u ) {
const subPath = parts . slice ( 0 , u ) . join ( this . pathUtils . sep ) ;
if ( ! this . existsSync ( subPath ) ) {
try {
await this . mkdirPromise ( subPath ) ;
} catch ( error ) {
if ( error . code === ` EEXIST ` ) {
continue ;
} else {
throw error ;
}
}
createdDirectory != null ? createdDirectory : createdDirectory = subPath ;
if ( chmod != null )
await this . chmodPromise ( subPath , chmod ) ;
if ( utimes != null ) {
await this . utimesPromise ( subPath , utimes [ 0 ] , utimes [ 1 ] ) ;
} else {
const parentStat = await this . statPromise ( this . pathUtils . dirname ( subPath ) ) ;
await this . utimesPromise ( subPath , parentStat . atime , parentStat . mtime ) ;
}
}
}
return createdDirectory ;
}
mkdirpSync ( p , { chmod , utimes } = { } ) {
p = this . resolve ( p ) ;
if ( p === this . pathUtils . dirname ( p ) )
return void 0 ;
const parts = p . split ( this . pathUtils . sep ) ;
let createdDirectory ;
for ( let u = 2 ; u <= parts . length ; ++ u ) {
const subPath = parts . slice ( 0 , u ) . join ( this . pathUtils . sep ) ;
if ( ! this . existsSync ( subPath ) ) {
try {
this . mkdirSync ( subPath ) ;
} catch ( error ) {
if ( error . code === ` EEXIST ` ) {
continue ;
} else {
throw error ;
}
}
createdDirectory != null ? createdDirectory : createdDirectory = subPath ;
if ( chmod != null )
this . chmodSync ( subPath , chmod ) ;
if ( utimes != null ) {
this . utimesSync ( subPath , utimes [ 0 ] , utimes [ 1 ] ) ;
} else {
const parentStat = this . statSync ( this . pathUtils . dirname ( subPath ) ) ;
this . utimesSync ( subPath , parentStat . atime , parentStat . mtime ) ;
}
}
}
return createdDirectory ;
}
async copyPromise ( destination , source , { baseFs = this , overwrite = true , stableSort = false , stableTime = false , linkStrategy = null } = { } ) {
return await copyPromise ( this , destination , baseFs , source , { overwrite , stableSort , stableTime , linkStrategy } ) ;
}
copySync ( destination , source , { baseFs = this , overwrite = true } = { } ) {
const stat = baseFs . lstatSync ( source ) ;
const exists = this . existsSync ( destination ) ;
if ( stat . isDirectory ( ) ) {
this . mkdirpSync ( destination ) ;
const directoryListing = baseFs . readdirSync ( source ) ;
for ( const entry of directoryListing ) {
this . copySync ( this . pathUtils . join ( destination , entry ) , baseFs . pathUtils . join ( source , entry ) , { baseFs , overwrite } ) ;
}
} else if ( stat . isFile ( ) ) {
if ( ! exists || overwrite ) {
if ( exists )
this . removeSync ( destination ) ;
const content = baseFs . readFileSync ( source ) ;
this . writeFileSync ( destination , content ) ;
}
} else if ( stat . isSymbolicLink ( ) ) {
if ( ! exists || overwrite ) {
if ( exists )
this . removeSync ( destination ) ;
const target = baseFs . readlinkSync ( source ) ;
this . symlinkSync ( convertPath ( this . pathUtils , target ) , destination ) ;
}
} else {
throw new Error ( ` Unsupported file type (file: ${ source } , mode: 0o ${ stat . mode . toString ( 8 ) . padStart ( 6 , ` 0 ` ) } ) ` ) ;
}
const mode = stat . mode & 511 ;
this . chmodSync ( destination , mode ) ;
}
async changeFilePromise ( p , content , opts = { } ) {
if ( Buffer . isBuffer ( content ) ) {
return this . changeFileBufferPromise ( p , content , opts ) ;
} else {
return this . changeFileTextPromise ( p , content , opts ) ;
}
}
async changeFileBufferPromise ( p , content , { mode } = { } ) {
let current = Buffer . alloc ( 0 ) ;
try {
current = await this . readFilePromise ( p ) ;
} catch ( error ) {
}
if ( Buffer . compare ( current , content ) === 0 )
return ;
await this . writeFilePromise ( p , content , { mode } ) ;
}
async changeFileTextPromise ( p , content , { automaticNewlines , mode } = { } ) {
let current = ` ` ;
try {
current = await this . readFilePromise ( p , ` utf8 ` ) ;
} catch ( error ) {
}
const normalizedContent = automaticNewlines ? normalizeLineEndings ( current , content ) : content ;
if ( current === normalizedContent )
return ;
await this . writeFilePromise ( p , normalizedContent , { mode } ) ;
}
changeFileSync ( p , content , opts = { } ) {
if ( Buffer . isBuffer ( content ) ) {
return this . changeFileBufferSync ( p , content , opts ) ;
} else {
return this . changeFileTextSync ( p , content , opts ) ;
}
}
changeFileBufferSync ( p , content , { mode } = { } ) {
let current = Buffer . alloc ( 0 ) ;
try {
current = this . readFileSync ( p ) ;
} catch ( error ) {
}
if ( Buffer . compare ( current , content ) === 0 )
return ;
this . writeFileSync ( p , content , { mode } ) ;
}
changeFileTextSync ( p , content , { automaticNewlines = false , mode } = { } ) {
let current = ` ` ;
try {
current = this . readFileSync ( p , ` utf8 ` ) ;
} catch ( error ) {
}
const normalizedContent = automaticNewlines ? normalizeLineEndings ( current , content ) : content ;
if ( current === normalizedContent )
return ;
this . writeFileSync ( p , normalizedContent , { mode } ) ;
}
async movePromise ( fromP , toP ) {
try {
await this . renamePromise ( fromP , toP ) ;
} catch ( error ) {
if ( error . code === ` EXDEV ` ) {
await this . copyPromise ( toP , fromP ) ;
await this . removePromise ( fromP ) ;
} else {
throw error ;
}
}
}
moveSync ( fromP , toP ) {
try {
this . renameSync ( fromP , toP ) ;
} catch ( error ) {
if ( error . code === ` EXDEV ` ) {
this . copySync ( toP , fromP ) ;
this . removeSync ( fromP ) ;
} else {
throw error ;
}
}
}
async lockPromise ( affectedPath , callback ) {
const lockPath = ` ${ affectedPath } .flock ` ;
const interval = 1e3 / 60 ;
const startTime = Date . now ( ) ;
let fd = null ;
const isAlive = async ( ) => {
let pid ;
try {
[ pid ] = await this . readJsonPromise ( lockPath ) ;
} catch ( error ) {
return Date . now ( ) - startTime < 500 ;
}
try {
process . kill ( pid , 0 ) ;
return true ;
} catch ( error ) {
return false ;
}
} ;
while ( fd === null ) {
try {
fd = await this . openPromise ( lockPath , ` wx ` ) ;
} catch ( error ) {
if ( error . code === ` EEXIST ` ) {
if ( ! await isAlive ( ) ) {
try {
await this . unlinkPromise ( lockPath ) ;
continue ;
} catch ( error2 ) {
}
}
if ( Date . now ( ) - startTime < 60 * 1e3 ) {
await new Promise ( ( resolve ) => setTimeout ( resolve , interval ) ) ;
} else {
throw new Error ( ` Couldn't acquire a lock in a reasonable time (via ${ lockPath } ) ` ) ;
}
} else {
throw error ;
}
}
}
await this . writePromise ( fd , JSON . stringify ( [ process . pid ] ) ) ;
try {
return await callback ( ) ;
} finally {
try {
await this . closePromise ( fd ) ;
await this . unlinkPromise ( lockPath ) ;
} catch ( error ) {
}
}
}
async readJsonPromise ( p ) {
const content = await this . readFilePromise ( p , ` utf8 ` ) ;
try {
return JSON . parse ( content ) ;
} catch ( error ) {
error . message += ` (in ${ p } ) ` ;
throw error ;
}
}
readJsonSync ( p ) {
const content = this . readFileSync ( p , ` utf8 ` ) ;
try {
return JSON . parse ( content ) ;
} catch ( error ) {
error . message += ` (in ${ p } ) ` ;
throw error ;
}
}
async writeJsonPromise ( p , data ) {
return await this . writeFilePromise ( p , ` ${ JSON . stringify ( data , null , 2 ) }
` );
}
writeJsonSync ( p , data ) {
return this . writeFileSync ( p , ` ${ JSON . stringify ( data , null , 2 ) }
` );
}
async preserveTimePromise ( p , cb ) {
const stat = await this . lstatPromise ( p ) ;
const result = await cb ( ) ;
if ( typeof result !== ` undefined ` )
p = result ;
if ( this . lutimesPromise ) {
await this . lutimesPromise ( p , stat . atime , stat . mtime ) ;
} else if ( ! stat . isSymbolicLink ( ) ) {
await this . utimesPromise ( p , stat . atime , stat . mtime ) ;
}
}
async preserveTimeSync ( p , cb ) {
const stat = this . lstatSync ( p ) ;
const result = cb ( ) ;
if ( typeof result !== ` undefined ` )
p = result ;
if ( this . lutimesSync ) {
this . lutimesSync ( p , stat . atime , stat . mtime ) ;
} else if ( ! stat . isSymbolicLink ( ) ) {
this . utimesSync ( p , stat . atime , stat . mtime ) ;
}
}
}
class BasePortableFakeFS extends FakeFS {
constructor ( ) {
super ( ppath ) ;
}
}
function getEndOfLine ( content ) {
const matches = content . match ( /\r?\n/g ) ;
if ( matches === null )
return os . EOL ;
const crlf = matches . filter ( ( nl ) => nl === ` \r
` ).length;
const lf = matches . length - crlf ;
return crlf > lf ? ` \r
` : `
` ;
}
function normalizeLineEndings ( originalContent , newContent ) {
return newContent . replace ( /\r?\n/g , getEndOfLine ( originalContent ) ) ;
}
class NodeFS extends BasePortableFakeFS {
constructor ( realFs = fs _ _default . default ) {
super ( ) ;
this . realFs = realFs ;
if ( typeof this . realFs . lutimes !== ` undefined ` ) {
this . lutimesPromise = this . lutimesPromiseImpl ;
this . lutimesSync = this . lutimesSyncImpl ;
}
}
getExtractHint ( ) {
return false ;
}
getRealPath ( ) {
return PortablePath . root ;
}
resolve ( p ) {
return ppath . resolve ( p ) ;
}
async openPromise ( p , flags , mode ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . open ( npath . fromPortablePath ( p ) , flags , mode , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
openSync ( p , flags , mode ) {
return this . realFs . openSync ( npath . fromPortablePath ( p ) , flags , mode ) ;
}
async opendirPromise ( p , opts ) {
return await new Promise ( ( resolve , reject ) => {
if ( typeof opts !== ` undefined ` ) {
this . realFs . opendir ( npath . fromPortablePath ( p ) , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . opendir ( npath . fromPortablePath ( p ) , this . makeCallback ( resolve , reject ) ) ;
}
} ) . then ( ( dir ) => {
return Object . defineProperty ( dir , ` path ` , { value : p , configurable : true , writable : true } ) ;
} ) ;
}
opendirSync ( p , opts ) {
const dir = typeof opts !== ` undefined ` ? this . realFs . opendirSync ( npath . fromPortablePath ( p ) , opts ) : this . realFs . opendirSync ( npath . fromPortablePath ( p ) ) ;
return Object . defineProperty ( dir , ` path ` , { value : p , configurable : true , writable : true } ) ;
}
async readPromise ( fd , buffer , offset = 0 , length = 0 , position = - 1 ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . read ( fd , buffer , offset , length , position , ( error , bytesRead ) => {
if ( error ) {
reject ( error ) ;
} else {
resolve ( bytesRead ) ;
}
} ) ;
} ) ;
}
readSync ( fd , buffer , offset , length , position ) {
return this . realFs . readSync ( fd , buffer , offset , length , position ) ;
}
async writePromise ( fd , buffer , offset , length , position ) {
return await new Promise ( ( resolve , reject ) => {
if ( typeof buffer === ` string ` ) {
return this . realFs . write ( fd , buffer , offset , this . makeCallback ( resolve , reject ) ) ;
} else {
return this . realFs . write ( fd , buffer , offset , length , position , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
writeSync ( fd , buffer , offset , length , position ) {
if ( typeof buffer === ` string ` ) {
return this . realFs . writeSync ( fd , buffer , offset ) ;
} else {
return this . realFs . writeSync ( fd , buffer , offset , length , position ) ;
}
}
async closePromise ( fd ) {
await new Promise ( ( resolve , reject ) => {
this . realFs . close ( fd , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
closeSync ( fd ) {
this . realFs . closeSync ( fd ) ;
}
createReadStream ( p , opts ) {
const realPath = p !== null ? npath . fromPortablePath ( p ) : p ;
return this . realFs . createReadStream ( realPath , opts ) ;
}
createWriteStream ( p , opts ) {
const realPath = p !== null ? npath . fromPortablePath ( p ) : p ;
return this . realFs . createWriteStream ( realPath , opts ) ;
}
async realpathPromise ( p ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . realpath ( npath . fromPortablePath ( p ) , { } , this . makeCallback ( resolve , reject ) ) ;
} ) . then ( ( path ) => {
return npath . toPortablePath ( path ) ;
} ) ;
}
realpathSync ( p ) {
return npath . toPortablePath ( this . realFs . realpathSync ( npath . fromPortablePath ( p ) , { } ) ) ;
}
async existsPromise ( p ) {
return await new Promise ( ( resolve ) => {
this . realFs . exists ( npath . fromPortablePath ( p ) , resolve ) ;
} ) ;
}
accessSync ( p , mode ) {
return this . realFs . accessSync ( npath . fromPortablePath ( p ) , mode ) ;
}
async accessPromise ( p , mode ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . access ( npath . fromPortablePath ( p ) , mode , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
existsSync ( p ) {
return this . realFs . existsSync ( npath . fromPortablePath ( p ) ) ;
}
async statPromise ( p , opts ) {
return await new Promise ( ( resolve , reject ) => {
if ( opts ) {
this . realFs . stat ( npath . fromPortablePath ( p ) , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . stat ( npath . fromPortablePath ( p ) , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
statSync ( p , opts ) {
if ( opts ) {
return this . realFs . statSync ( npath . fromPortablePath ( p ) , opts ) ;
} else {
return this . realFs . statSync ( npath . fromPortablePath ( p ) ) ;
}
}
async fstatPromise ( fd , opts ) {
return await new Promise ( ( resolve , reject ) => {
if ( opts ) {
this . realFs . fstat ( fd , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . fstat ( fd , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
fstatSync ( fd , opts ) {
if ( opts ) {
return this . realFs . fstatSync ( fd , opts ) ;
} else {
return this . realFs . fstatSync ( fd ) ;
}
}
async lstatPromise ( p , opts ) {
return await new Promise ( ( resolve , reject ) => {
if ( opts ) {
this . realFs . lstat ( npath . fromPortablePath ( p ) , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . lstat ( npath . fromPortablePath ( p ) , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
lstatSync ( p , opts ) {
if ( opts ) {
return this . realFs . lstatSync ( npath . fromPortablePath ( p ) , opts ) ;
} else {
return this . realFs . lstatSync ( npath . fromPortablePath ( p ) ) ;
}
}
async fchmodPromise ( fd , mask ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . fchmod ( fd , mask , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
fchmodSync ( fd , mask ) {
return this . realFs . fchmodSync ( fd , mask ) ;
}
async chmodPromise ( p , mask ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . chmod ( npath . fromPortablePath ( p ) , mask , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
chmodSync ( p , mask ) {
return this . realFs . chmodSync ( npath . fromPortablePath ( p ) , mask ) ;
}
async fchownPromise ( fd , uid , gid ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . fchown ( fd , uid , gid , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
fchownSync ( fd , uid , gid ) {
return this . realFs . fchownSync ( fd , uid , gid ) ;
}
async chownPromise ( p , uid , gid ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . chown ( npath . fromPortablePath ( p ) , uid , gid , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
chownSync ( p , uid , gid ) {
return this . realFs . chownSync ( npath . fromPortablePath ( p ) , uid , gid ) ;
}
async renamePromise ( oldP , newP ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . rename ( npath . fromPortablePath ( oldP ) , npath . fromPortablePath ( newP ) , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
renameSync ( oldP , newP ) {
return this . realFs . renameSync ( npath . fromPortablePath ( oldP ) , npath . fromPortablePath ( newP ) ) ;
}
async copyFilePromise ( sourceP , destP , flags = 0 ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . copyFile ( npath . fromPortablePath ( sourceP ) , npath . fromPortablePath ( destP ) , flags , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
copyFileSync ( sourceP , destP , flags = 0 ) {
return this . realFs . copyFileSync ( npath . fromPortablePath ( sourceP ) , npath . fromPortablePath ( destP ) , flags ) ;
}
async appendFilePromise ( p , content , opts ) {
return await new Promise ( ( resolve , reject ) => {
const fsNativePath = typeof p === ` string ` ? npath . fromPortablePath ( p ) : p ;
if ( opts ) {
this . realFs . appendFile ( fsNativePath , content , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . appendFile ( fsNativePath , content , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
appendFileSync ( p , content , opts ) {
const fsNativePath = typeof p === ` string ` ? npath . fromPortablePath ( p ) : p ;
if ( opts ) {
this . realFs . appendFileSync ( fsNativePath , content , opts ) ;
} else {
this . realFs . appendFileSync ( fsNativePath , content ) ;
}
}
async writeFilePromise ( p , content , opts ) {
return await new Promise ( ( resolve , reject ) => {
const fsNativePath = typeof p === ` string ` ? npath . fromPortablePath ( p ) : p ;
if ( opts ) {
this . realFs . writeFile ( fsNativePath , content , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . writeFile ( fsNativePath , content , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
writeFileSync ( p , content , opts ) {
const fsNativePath = typeof p === ` string ` ? npath . fromPortablePath ( p ) : p ;
if ( opts ) {
this . realFs . writeFileSync ( fsNativePath , content , opts ) ;
} else {
this . realFs . writeFileSync ( fsNativePath , content ) ;
}
}
async unlinkPromise ( p ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . unlink ( npath . fromPortablePath ( p ) , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
unlinkSync ( p ) {
return this . realFs . unlinkSync ( npath . fromPortablePath ( p ) ) ;
}
async utimesPromise ( p , atime , mtime ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . utimes ( npath . fromPortablePath ( p ) , atime , mtime , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
utimesSync ( p , atime , mtime ) {
this . realFs . utimesSync ( npath . fromPortablePath ( p ) , atime , mtime ) ;
}
async lutimesPromiseImpl ( p , atime , mtime ) {
const lutimes = this . realFs . lutimes ;
if ( typeof lutimes === ` undefined ` )
throw ENOSYS ( ` unavailable Node binding ` , ` lutimes ' ${ p } ' ` ) ;
return await new Promise ( ( resolve , reject ) => {
lutimes . call ( this . realFs , npath . fromPortablePath ( p ) , atime , mtime , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
lutimesSyncImpl ( p , atime , mtime ) {
const lutimesSync = this . realFs . lutimesSync ;
if ( typeof lutimesSync === ` undefined ` )
throw ENOSYS ( ` unavailable Node binding ` , ` lutimes ' ${ p } ' ` ) ;
lutimesSync . call ( this . realFs , npath . fromPortablePath ( p ) , atime , mtime ) ;
}
async mkdirPromise ( p , opts ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . mkdir ( npath . fromPortablePath ( p ) , opts , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
mkdirSync ( p , opts ) {
return this . realFs . mkdirSync ( npath . fromPortablePath ( p ) , opts ) ;
}
async rmdirPromise ( p , opts ) {
return await new Promise ( ( resolve , reject ) => {
if ( opts ) {
this . realFs . rmdir ( npath . fromPortablePath ( p ) , opts , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . rmdir ( npath . fromPortablePath ( p ) , this . makeCallback ( resolve , reject ) ) ;
}
} ) ;
}
rmdirSync ( p , opts ) {
return this . realFs . rmdirSync ( npath . fromPortablePath ( p ) , opts ) ;
}
async linkPromise ( existingP , newP ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . link ( npath . fromPortablePath ( existingP ) , npath . fromPortablePath ( newP ) , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
linkSync ( existingP , newP ) {
return this . realFs . linkSync ( npath . fromPortablePath ( existingP ) , npath . fromPortablePath ( newP ) ) ;
}
async symlinkPromise ( target , p , type ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . symlink ( npath . fromPortablePath ( target . replace ( /\/+$/ , ` ` ) ) , npath . fromPortablePath ( p ) , type , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
symlinkSync ( target , p , type ) {
return this . realFs . symlinkSync ( npath . fromPortablePath ( target . replace ( /\/+$/ , ` ` ) ) , npath . fromPortablePath ( p ) , type ) ;
}
async readFilePromise ( p , encoding ) {
return await new Promise ( ( resolve , reject ) => {
const fsNativePath = typeof p === ` string ` ? npath . fromPortablePath ( p ) : p ;
this . realFs . readFile ( fsNativePath , encoding , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
readFileSync ( p , encoding ) {
const fsNativePath = typeof p === ` string ` ? npath . fromPortablePath ( p ) : p ;
return this . realFs . readFileSync ( fsNativePath , encoding ) ;
}
async readdirPromise ( p , opts ) {
return await new Promise ( ( resolve , reject ) => {
if ( opts == null ? void 0 : opts . withFileTypes ) {
this . realFs . readdir ( npath . fromPortablePath ( p ) , { withFileTypes : true } , this . makeCallback ( resolve , reject ) ) ;
} else {
this . realFs . readdir ( npath . fromPortablePath ( p ) , this . makeCallback ( ( value ) => resolve ( value ) , reject ) ) ;
}
} ) ;
}
readdirSync ( p , opts ) {
if ( opts == null ? void 0 : opts . withFileTypes ) {
return this . realFs . readdirSync ( npath . fromPortablePath ( p ) , { withFileTypes : true } ) ;
} else {
return this . realFs . readdirSync ( npath . fromPortablePath ( p ) ) ;
}
}
async readlinkPromise ( p ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . readlink ( npath . fromPortablePath ( p ) , this . makeCallback ( resolve , reject ) ) ;
} ) . then ( ( path ) => {
return npath . toPortablePath ( path ) ;
} ) ;
}
readlinkSync ( p ) {
return npath . toPortablePath ( this . realFs . readlinkSync ( npath . fromPortablePath ( p ) ) ) ;
}
async truncatePromise ( p , len ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . truncate ( npath . fromPortablePath ( p ) , len , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
truncateSync ( p , len ) {
return this . realFs . truncateSync ( npath . fromPortablePath ( p ) , len ) ;
}
async ftruncatePromise ( fd , len ) {
return await new Promise ( ( resolve , reject ) => {
this . realFs . ftruncate ( fd , len , this . makeCallback ( resolve , reject ) ) ;
} ) ;
}
ftruncateSync ( fd , len ) {
return this . realFs . ftruncateSync ( fd , len ) ;
}
watch ( p , a , b ) {
return this . realFs . watch (
npath . fromPortablePath ( p ) ,
a ,
b
) ;
}
watchFile ( p , a , b ) {
return this . realFs . watchFile (
npath . fromPortablePath ( p ) ,
a ,
b
) ;
}
unwatchFile ( p , cb ) {
return this . realFs . unwatchFile ( npath . fromPortablePath ( p ) , cb ) ;
}
makeCallback ( resolve , reject ) {
return ( err , result ) => {
if ( err ) {
reject ( err ) ;
} else {
resolve ( result ) ;
}
} ;
}
}
function assertStatus ( current , expected ) {
if ( current !== expected ) {
throw new Error ( ` Invalid StatWatcher status: expected ' ${ expected } ', got ' ${ current } ' ` ) ;
}
}
class CustomStatWatcher extends events . EventEmitter {
constructor ( fakeFs , path , { bigint = false } = { } ) {
super ( ) ;
this . status = "ready" /* Ready */ ;
this . changeListeners = /* @__PURE__ */ new Map ( ) ;
this . startTimeout = null ;
this . fakeFs = fakeFs ;
this . path = path ;
this . bigint = bigint ;
this . lastStats = this . stat ( ) ;
}
static create ( fakeFs , path , opts ) {
const statWatcher = new CustomStatWatcher ( fakeFs , path , opts ) ;
statWatcher . start ( ) ;
return statWatcher ;
}
start ( ) {
assertStatus ( this . status , "ready" /* Ready */ ) ;
this . status = "running" /* Running */ ;
this . startTimeout = setTimeout ( ( ) => {
this . startTimeout = null ;
if ( ! this . fakeFs . existsSync ( this . path ) ) {
this . emit ( "change" /* Change */ , this . lastStats , this . lastStats ) ;
}
} , 3 ) ;
}
stop ( ) {
assertStatus ( this . status , "running" /* Running */ ) ;
this . status = "stopped" /* Stopped */ ;
if ( this . startTimeout !== null ) {
clearTimeout ( this . startTimeout ) ;
this . startTimeout = null ;
}
this . emit ( "stop" /* Stop */ ) ;
}
stat ( ) {
try {
return this . fakeFs . statSync ( this . path , { bigint : this . bigint } ) ;
} catch ( error ) {
const statInstance = this . bigint ? new BigIntStatsEntry ( ) : new StatEntry ( ) ;
return clearStats ( statInstance ) ;
}
}
makeInterval ( opts ) {
const interval = setInterval ( ( ) => {
const currentStats = this . stat ( ) ;
const previousStats = this . lastStats ;
if ( areStatsEqual ( currentStats , previousStats ) )
return ;
this . lastStats = currentStats ;
this . emit ( "change" /* Change */ , currentStats , previousStats ) ;
} , opts . interval ) ;
return opts . persistent ? interval : interval . unref ( ) ;
}
registerChangeListener ( listener , opts ) {
this . addListener ( "change" /* Change */ , listener ) ;
this . changeListeners . set ( listener , this . makeInterval ( opts ) ) ;
}
unregisterChangeListener ( listener ) {
this . removeListener ( "change" /* Change */ , listener ) ;
const interval = this . changeListeners . get ( listener ) ;
if ( typeof interval !== ` undefined ` )
clearInterval ( interval ) ;
this . changeListeners . delete ( listener ) ;
}
unregisterAllChangeListeners ( ) {
for ( const listener of this . changeListeners . keys ( ) ) {
this . unregisterChangeListener ( listener ) ;
}
}
hasChangeListeners ( ) {
return this . changeListeners . size > 0 ;
}
ref ( ) {
for ( const interval of this . changeListeners . values ( ) )
interval . ref ( ) ;
return this ;
}
unref ( ) {
for ( const interval of this . changeListeners . values ( ) )
interval . unref ( ) ;
return this ;
}
}
const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap ( ) ;
function watchFile ( fakeFs , path , a , b ) {
let bigint ;
let persistent ;
let interval ;
let listener ;
switch ( typeof a ) {
case ` function ` :
{
bigint = false ;
persistent = true ;
interval = 5007 ;
listener = a ;
}
break ;
default :
{
( {
bigint = false ,
persistent = true ,
interval = 5007
} = a ) ;
listener = b ;
}
break ;
}
let statWatchers = statWatchersByFakeFS . get ( fakeFs ) ;
if ( typeof statWatchers === ` undefined ` )
statWatchersByFakeFS . set ( fakeFs , statWatchers = /* @__PURE__ */ new Map ( ) ) ;
let statWatcher = statWatchers . get ( path ) ;
if ( typeof statWatcher === ` undefined ` ) {
statWatcher = CustomStatWatcher . create ( fakeFs , path , { bigint } ) ;
statWatchers . set ( path , statWatcher ) ;
}
statWatcher . registerChangeListener ( listener , { persistent , interval } ) ;
return statWatcher ;
}
function unwatchFile ( fakeFs , path , cb ) {
const statWatchers = statWatchersByFakeFS . get ( fakeFs ) ;
if ( typeof statWatchers === ` undefined ` )
return ;
const statWatcher = statWatchers . get ( path ) ;
if ( typeof statWatcher === ` undefined ` )
return ;
if ( typeof cb === ` undefined ` )
statWatcher . unregisterAllChangeListeners ( ) ;
else
statWatcher . unregisterChangeListener ( cb ) ;
if ( ! statWatcher . hasChangeListeners ( ) ) {
statWatcher . stop ( ) ;
statWatchers . delete ( path ) ;
}
}
function unwatchAllFiles ( fakeFs ) {
const statWatchers = statWatchersByFakeFS . get ( fakeFs ) ;
if ( typeof statWatchers === ` undefined ` )
return ;
for ( const path of statWatchers . keys ( ) ) {
unwatchFile ( fakeFs , path ) ;
}
}
const DEFAULT _COMPRESSION _LEVEL = ` mixed ` ;
function toUnixTimestamp ( time ) {
if ( typeof time === ` string ` && String ( + time ) === time )
return + time ;
if ( typeof time === ` number ` && Number . isFinite ( time ) ) {
if ( time < 0 ) {
return Date . now ( ) / 1e3 ;
} else {
return time ;
}
}
if ( nodeUtils . types . isDate ( time ) )
return time . getTime ( ) / 1e3 ;
throw new Error ( ` Invalid time ` ) ;
}
function makeEmptyArchive ( ) {
return Buffer . from ( [
80 ,
75 ,
5 ,
6 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0
] ) ;
}
class ZipFS extends BasePortableFakeFS {
constructor ( source , opts ) {
super ( ) ;
this . lzSource = null ;
this . listings = /* @__PURE__ */ new Map ( ) ;
this . entries = /* @__PURE__ */ new Map ( ) ;
this . fileSources = /* @__PURE__ */ new Map ( ) ;
this . fds = /* @__PURE__ */ new Map ( ) ;
this . nextFd = 0 ;
this . ready = false ;
this . readOnly = false ;
this . libzip = opts . libzip ;
const pathOptions = opts ;
this . level = typeof pathOptions . level !== ` undefined ` ? pathOptions . level : DEFAULT _COMPRESSION _LEVEL ;
source != null ? source : source = makeEmptyArchive ( ) ;
if ( typeof source === ` string ` ) {
const { baseFs = new NodeFS ( ) } = pathOptions ;
this . baseFs = baseFs ;
this . path = source ;
} else {
this . path = null ;
this . baseFs = null ;
}
if ( opts . stats ) {
this . stats = opts . stats ;
} else {
if ( typeof source === ` string ` ) {
try {
this . stats = this . baseFs . statSync ( source ) ;
} catch ( error ) {
if ( error . code === ` ENOENT ` && pathOptions . create ) {
this . stats = makeDefaultStats ( ) ;
} else {
throw error ;
}
}
} else {
this . stats = makeDefaultStats ( ) ;
}
}
const errPtr = this . libzip . malloc ( 4 ) ;
try {
let flags = 0 ;
if ( typeof source === ` string ` && pathOptions . create )
flags |= this . libzip . ZIP _CREATE | this . libzip . ZIP _TRUNCATE ;
if ( opts . readOnly ) {
flags |= this . libzip . ZIP _RDONLY ;
this . readOnly = true ;
}
if ( typeof source === ` string ` ) {
this . zip = this . libzip . open ( npath . fromPortablePath ( source ) , flags , errPtr ) ;
} else {
const lzSource = this . allocateUnattachedSource ( source ) ;
try {
this . zip = this . libzip . openFromSource ( lzSource , flags , errPtr ) ;
this . lzSource = lzSource ;
} catch ( error ) {
this . libzip . source . free ( lzSource ) ;
throw error ;
}
}
if ( this . zip === 0 ) {
const error = this . libzip . struct . errorS ( ) ;
this . libzip . error . initWithCode ( error , this . libzip . getValue ( errPtr , ` i32 ` ) ) ;
throw this . makeLibzipError ( error ) ;
}
} finally {
this . libzip . free ( errPtr ) ;
}
this . listings . set ( PortablePath . root , /* @__PURE__ */ new Set ( ) ) ;
const entryCount = this . libzip . getNumEntries ( this . zip , 0 ) ;
for ( let t = 0 ; t < entryCount ; ++ t ) {
const raw = this . libzip . getName ( this . zip , t , 0 ) ;
if ( ppath . isAbsolute ( raw ) )
continue ;
const p = ppath . resolve ( PortablePath . root , raw ) ;
this . registerEntry ( p , t ) ;
if ( raw . endsWith ( ` / ` ) ) {
this . registerListing ( p ) ;
}
}
this . symlinkCount = this . libzip . ext . countSymlinks ( this . zip ) ;
if ( this . symlinkCount === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
this . ready = true ;
}
makeLibzipError ( error ) {
const errorCode = this . libzip . struct . errorCodeZip ( error ) ;
const strerror = this . libzip . error . strerror ( error ) ;
const libzipError = new LibzipError ( strerror , this . libzip . errors [ errorCode ] ) ;
if ( errorCode === this . libzip . errors . ZIP _ER _CHANGED )
throw new Error ( ` Assertion failed: Unexpected libzip error: ${ libzipError . message } ` ) ;
return libzipError ;
}
getExtractHint ( hints ) {
for ( const fileName of this . entries . keys ( ) ) {
const ext = this . pathUtils . extname ( fileName ) ;
if ( hints . relevantExtensions . has ( ext ) ) {
return true ;
}
}
return false ;
}
getAllFiles ( ) {
return Array . from ( this . entries . keys ( ) ) ;
}
getRealPath ( ) {
if ( ! this . path )
throw new Error ( ` ZipFS don't have real paths when loaded from a buffer ` ) ;
return this . path ;
}
getBufferAndClose ( ) {
this . prepareClose ( ) ;
if ( ! this . lzSource )
throw new Error ( ` ZipFS was not created from a Buffer ` ) ;
if ( this . entries . size === 0 ) {
this . discardAndClose ( ) ;
return makeEmptyArchive ( ) ;
}
try {
this . libzip . source . keep ( this . lzSource ) ;
if ( this . libzip . close ( this . zip ) === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
if ( this . libzip . source . open ( this . lzSource ) === - 1 )
throw this . makeLibzipError ( this . libzip . source . error ( this . lzSource ) ) ;
if ( this . libzip . source . seek ( this . lzSource , 0 , 0 , this . libzip . SEEK _END ) === - 1 )
throw this . makeLibzipError ( this . libzip . source . error ( this . lzSource ) ) ;
const size = this . libzip . source . tell ( this . lzSource ) ;
if ( size === - 1 )
throw this . makeLibzipError ( this . libzip . source . error ( this . lzSource ) ) ;
if ( this . libzip . source . seek ( this . lzSource , 0 , 0 , this . libzip . SEEK _SET ) === - 1 )
throw this . makeLibzipError ( this . libzip . source . error ( this . lzSource ) ) ;
const buffer = this . libzip . malloc ( size ) ;
if ( ! buffer )
throw new Error ( ` Couldn't allocate enough memory ` ) ;
try {
const rc = this . libzip . source . read ( this . lzSource , buffer , size ) ;
if ( rc === - 1 )
throw this . makeLibzipError ( this . libzip . source . error ( this . lzSource ) ) ;
else if ( rc < size )
throw new Error ( ` Incomplete read ` ) ;
else if ( rc > size )
throw new Error ( ` Overread ` ) ;
const memory = this . libzip . HEAPU8 . subarray ( buffer , buffer + size ) ;
return Buffer . from ( memory ) ;
} finally {
this . libzip . free ( buffer ) ;
}
} finally {
this . libzip . source . close ( this . lzSource ) ;
this . libzip . source . free ( this . lzSource ) ;
this . ready = false ;
}
}
prepareClose ( ) {
if ( ! this . ready )
throw EBUSY ( ` archive closed, close ` ) ;
unwatchAllFiles ( this ) ;
}
saveAndClose ( ) {
if ( ! this . path || ! this . baseFs )
throw new Error ( ` ZipFS cannot be saved and must be discarded when loaded from a buffer ` ) ;
this . prepareClose ( ) ;
if ( this . readOnly ) {
this . discardAndClose ( ) ;
return ;
}
const newMode = this . baseFs . existsSync ( this . path ) || this . stats . mode === DEFAULT _MODE ? void 0 : this . stats . mode ;
if ( this . entries . size === 0 ) {
this . discardAndClose ( ) ;
this . baseFs . writeFileSync ( this . path , makeEmptyArchive ( ) , { mode : newMode } ) ;
} else {
const rc = this . libzip . close ( this . zip ) ;
if ( rc === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
if ( typeof newMode !== ` undefined ` ) {
this . baseFs . chmodSync ( this . path , newMode ) ;
}
}
this . ready = false ;
}
discardAndClose ( ) {
this . prepareClose ( ) ;
this . libzip . discard ( this . zip ) ;
this . ready = false ;
}
resolve ( p ) {
return ppath . resolve ( PortablePath . root , p ) ;
}
async openPromise ( p , flags , mode ) {
return this . openSync ( p , flags , mode ) ;
}
openSync ( p , flags , mode ) {
const fd = this . nextFd ++ ;
this . fds . set ( fd , { cursor : 0 , p } ) ;
return fd ;
}
hasOpenFileHandles ( ) {
return ! ! this . fds . size ;
}
async opendirPromise ( p , opts ) {
return this . opendirSync ( p , opts ) ;
}
opendirSync ( p , opts = { } ) {
const resolvedP = this . resolveFilename ( ` opendir ' ${ p } ' ` , p ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` opendir ' ${ p } ' ` ) ;
const directoryListing = this . listings . get ( resolvedP ) ;
if ( ! directoryListing )
throw ENOTDIR ( ` opendir ' ${ p } ' ` ) ;
const entries = [ ... directoryListing ] ;
const fd = this . openSync ( resolvedP , ` r ` ) ;
const onClose = ( ) => {
this . closeSync ( fd ) ;
} ;
return opendir ( this , resolvedP , entries , { onClose } ) ;
}
async readPromise ( fd , buffer , offset , length , position ) {
return this . readSync ( fd , buffer , offset , length , position ) ;
}
readSync ( fd , buffer , offset = 0 , length = buffer . byteLength , position = - 1 ) {
const entry = this . fds . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` read ` ) ;
const realPosition = position === - 1 || position === null ? entry . cursor : position ;
const source = this . readFileSync ( entry . p ) ;
source . copy ( buffer , offset , realPosition , realPosition + length ) ;
const bytesRead = Math . max ( 0 , Math . min ( source . length - realPosition , length ) ) ;
if ( position === - 1 || position === null )
entry . cursor += bytesRead ;
return bytesRead ;
}
async writePromise ( fd , buffer , offset , length , position ) {
if ( typeof buffer === ` string ` ) {
return this . writeSync ( fd , buffer , position ) ;
} else {
return this . writeSync ( fd , buffer , offset , length , position ) ;
}
}
writeSync ( fd , buffer , offset , length , position ) {
const entry = this . fds . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` read ` ) ;
throw new Error ( ` Unimplemented ` ) ;
}
async closePromise ( fd ) {
return this . closeSync ( fd ) ;
}
closeSync ( fd ) {
const entry = this . fds . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` read ` ) ;
this . fds . delete ( fd ) ;
}
createReadStream ( p , { encoding } = { } ) {
if ( p === null )
throw new Error ( ` Unimplemented ` ) ;
const fd = this . openSync ( p , ` r ` ) ;
const stream$1 = Object . assign (
new stream . PassThrough ( {
emitClose : true ,
autoDestroy : true ,
destroy : ( error , callback ) => {
clearImmediate ( immediate ) ;
this . closeSync ( fd ) ;
callback ( error ) ;
}
} ) ,
{
close ( ) {
stream$1 . destroy ( ) ;
} ,
bytesRead : 0 ,
path : p
}
) ;
const immediate = setImmediate ( async ( ) => {
try {
const data = await this . readFilePromise ( p , encoding ) ;
stream$1 . bytesRead = data . length ;
stream$1 . end ( data ) ;
} catch ( error ) {
stream$1 . destroy ( error ) ;
}
} ) ;
return stream$1 ;
}
createWriteStream ( p , { encoding } = { } ) {
if ( this . readOnly )
throw EROFS ( ` open ' ${ p } ' ` ) ;
if ( p === null )
throw new Error ( ` Unimplemented ` ) ;
const chunks = [ ] ;
const fd = this . openSync ( p , ` w ` ) ;
const stream$1 = Object . assign (
new stream . PassThrough ( {
autoDestroy : true ,
emitClose : true ,
destroy : ( error , callback ) => {
try {
if ( error ) {
callback ( error ) ;
} else {
this . writeFileSync ( p , Buffer . concat ( chunks ) , encoding ) ;
callback ( null ) ;
}
} catch ( err ) {
callback ( err ) ;
} finally {
this . closeSync ( fd ) ;
}
}
} ) ,
{
bytesWritten : 0 ,
path : p ,
close ( ) {
stream$1 . destroy ( ) ;
}
}
) ;
stream$1 . on ( ` data ` , ( chunk ) => {
const chunkBuffer = Buffer . from ( chunk ) ;
stream$1 . bytesWritten += chunkBuffer . length ;
chunks . push ( chunkBuffer ) ;
} ) ;
return stream$1 ;
}
async realpathPromise ( p ) {
return this . realpathSync ( p ) ;
}
realpathSync ( p ) {
const resolvedP = this . resolveFilename ( ` lstat ' ${ p } ' ` , p ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` lstat ' ${ p } ' ` ) ;
return resolvedP ;
}
async existsPromise ( p ) {
return this . existsSync ( p ) ;
}
existsSync ( p ) {
if ( ! this . ready )
throw EBUSY ( ` archive closed, existsSync ' ${ p } ' ` ) ;
if ( this . symlinkCount === 0 ) {
const resolvedP2 = ppath . resolve ( PortablePath . root , p ) ;
return this . entries . has ( resolvedP2 ) || this . listings . has ( resolvedP2 ) ;
}
let resolvedP ;
try {
resolvedP = this . resolveFilename ( ` stat ' ${ p } ' ` , p , void 0 , false ) ;
} catch ( error ) {
return false ;
}
if ( resolvedP === void 0 )
return false ;
return this . entries . has ( resolvedP ) || this . listings . has ( resolvedP ) ;
}
async accessPromise ( p , mode ) {
return this . accessSync ( p , mode ) ;
}
accessSync ( p , mode = fs . constants . F _OK ) {
const resolvedP = this . resolveFilename ( ` access ' ${ p } ' ` , p ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` access ' ${ p } ' ` ) ;
if ( this . readOnly && mode & fs . constants . W _OK ) {
throw EROFS ( ` access ' ${ p } ' ` ) ;
}
}
async statPromise ( p , opts = { bigint : false } ) {
if ( opts . bigint )
return this . statSync ( p , { bigint : true } ) ;
return this . statSync ( p ) ;
}
statSync ( p , opts = { bigint : false , throwIfNoEntry : true } ) {
const resolvedP = this . resolveFilename ( ` stat ' ${ p } ' ` , p , void 0 , opts . throwIfNoEntry ) ;
if ( resolvedP === void 0 )
return void 0 ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) ) {
if ( opts . throwIfNoEntry === false )
return void 0 ;
throw ENOENT ( ` stat ' ${ p } ' ` ) ;
}
if ( p [ p . length - 1 ] === ` / ` && ! this . listings . has ( resolvedP ) )
throw ENOTDIR ( ` stat ' ${ p } ' ` ) ;
return this . statImpl ( ` stat ' ${ p } ' ` , resolvedP , opts ) ;
}
async fstatPromise ( fd , opts ) {
return this . fstatSync ( fd , opts ) ;
}
fstatSync ( fd , opts ) {
const entry = this . fds . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fstatSync ` ) ;
const { p } = entry ;
const resolvedP = this . resolveFilename ( ` stat ' ${ p } ' ` , p ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` stat ' ${ p } ' ` ) ;
if ( p [ p . length - 1 ] === ` / ` && ! this . listings . has ( resolvedP ) )
throw ENOTDIR ( ` stat ' ${ p } ' ` ) ;
return this . statImpl ( ` fstat ' ${ p } ' ` , resolvedP , opts ) ;
}
async lstatPromise ( p , opts = { bigint : false } ) {
if ( opts . bigint )
return this . lstatSync ( p , { bigint : true } ) ;
return this . lstatSync ( p ) ;
}
lstatSync ( p , opts = { bigint : false , throwIfNoEntry : true } ) {
const resolvedP = this . resolveFilename ( ` lstat ' ${ p } ' ` , p , false , opts . throwIfNoEntry ) ;
if ( resolvedP === void 0 )
return void 0 ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) ) {
if ( opts . throwIfNoEntry === false )
return void 0 ;
throw ENOENT ( ` lstat ' ${ p } ' ` ) ;
}
if ( p [ p . length - 1 ] === ` / ` && ! this . listings . has ( resolvedP ) )
throw ENOTDIR ( ` lstat ' ${ p } ' ` ) ;
return this . statImpl ( ` lstat ' ${ p } ' ` , resolvedP , opts ) ;
}
statImpl ( reason , p , opts = { } ) {
const entry = this . entries . get ( p ) ;
if ( typeof entry !== ` undefined ` ) {
const stat = this . libzip . struct . statS ( ) ;
const rc = this . libzip . statIndex ( this . zip , entry , 0 , 0 , stat ) ;
if ( rc === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
const uid = this . stats . uid ;
const gid = this . stats . gid ;
const size = this . libzip . struct . statSize ( stat ) >>> 0 ;
const blksize = 512 ;
const blocks = Math . ceil ( size / blksize ) ;
const mtimeMs = ( this . libzip . struct . statMtime ( stat ) >>> 0 ) * 1e3 ;
const atimeMs = mtimeMs ;
const birthtimeMs = mtimeMs ;
const ctimeMs = mtimeMs ;
const atime = new Date ( atimeMs ) ;
const birthtime = new Date ( birthtimeMs ) ;
const ctime = new Date ( ctimeMs ) ;
const mtime = new Date ( mtimeMs ) ;
const type = this . listings . has ( p ) ? S _IFDIR : this . isSymbolicLink ( entry ) ? S _IFLNK : S _IFREG ;
const defaultMode = type === S _IFDIR ? 493 : 420 ;
const mode = type | this . getUnixMode ( entry , defaultMode ) & 511 ;
const crc = this . libzip . struct . statCrc ( stat ) ;
const statInstance = Object . assign ( new StatEntry ( ) , { uid , gid , size , blksize , blocks , atime , birthtime , ctime , mtime , atimeMs , birthtimeMs , ctimeMs , mtimeMs , mode , crc } ) ;
return opts . bigint === true ? convertToBigIntStats ( statInstance ) : statInstance ;
}
if ( this . listings . has ( p ) ) {
const uid = this . stats . uid ;
const gid = this . stats . gid ;
const size = 0 ;
const blksize = 512 ;
const blocks = 0 ;
const atimeMs = this . stats . mtimeMs ;
const birthtimeMs = this . stats . mtimeMs ;
const ctimeMs = this . stats . mtimeMs ;
const mtimeMs = this . stats . mtimeMs ;
const atime = new Date ( atimeMs ) ;
const birthtime = new Date ( birthtimeMs ) ;
const ctime = new Date ( ctimeMs ) ;
const mtime = new Date ( mtimeMs ) ;
const mode = S _IFDIR | 493 ;
const crc = 0 ;
const statInstance = Object . assign ( new StatEntry ( ) , { uid , gid , size , blksize , blocks , atime , birthtime , ctime , mtime , atimeMs , birthtimeMs , ctimeMs , mtimeMs , mode , crc } ) ;
return opts . bigint === true ? convertToBigIntStats ( statInstance ) : statInstance ;
}
throw new Error ( ` Unreachable ` ) ;
}
getUnixMode ( index , defaultMode ) {
const rc = this . libzip . file . getExternalAttributes ( this . zip , index , 0 , 0 , this . libzip . uint08S , this . libzip . uint32S ) ;
if ( rc === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
const opsys = this . libzip . getValue ( this . libzip . uint08S , ` i8 ` ) >>> 0 ;
if ( opsys !== this . libzip . ZIP _OPSYS _UNIX )
return defaultMode ;
return this . libzip . getValue ( this . libzip . uint32S , ` i32 ` ) >>> 16 ;
}
registerListing ( p ) {
const existingListing = this . listings . get ( p ) ;
if ( existingListing )
return existingListing ;
const parentListing = this . registerListing ( ppath . dirname ( p ) ) ;
parentListing . add ( ppath . basename ( p ) ) ;
const newListing = /* @__PURE__ */ new Set ( ) ;
this . listings . set ( p , newListing ) ;
return newListing ;
}
registerEntry ( p , index ) {
const parentListing = this . registerListing ( ppath . dirname ( p ) ) ;
parentListing . add ( ppath . basename ( p ) ) ;
this . entries . set ( p , index ) ;
}
unregisterListing ( p ) {
this . listings . delete ( p ) ;
const parentListing = this . listings . get ( ppath . dirname ( p ) ) ;
parentListing == null ? void 0 : parentListing . delete ( ppath . basename ( p ) ) ;
}
unregisterEntry ( p ) {
this . unregisterListing ( p ) ;
const entry = this . entries . get ( p ) ;
this . entries . delete ( p ) ;
if ( typeof entry === ` undefined ` )
return ;
this . fileSources . delete ( entry ) ;
if ( this . isSymbolicLink ( entry ) ) {
this . symlinkCount -- ;
}
}
deleteEntry ( p , index ) {
this . unregisterEntry ( p ) ;
const rc = this . libzip . delete ( this . zip , index ) ;
if ( rc === - 1 ) {
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
}
}
resolveFilename ( reason , p , resolveLastComponent = true , throwIfNoEntry = true ) {
if ( ! this . ready )
throw EBUSY ( ` archive closed, ${ reason } ` ) ;
let resolvedP = ppath . resolve ( PortablePath . root , p ) ;
if ( resolvedP === ` / ` )
return PortablePath . root ;
const fileIndex = this . entries . get ( resolvedP ) ;
if ( resolveLastComponent && fileIndex !== void 0 ) {
if ( this . symlinkCount !== 0 && this . isSymbolicLink ( fileIndex ) ) {
const target = this . getFileSource ( fileIndex ) . toString ( ) ;
return this . resolveFilename ( reason , ppath . resolve ( ppath . dirname ( resolvedP ) , target ) , true , throwIfNoEntry ) ;
} else {
return resolvedP ;
}
}
while ( true ) {
const parentP = this . resolveFilename ( reason , ppath . dirname ( resolvedP ) , true , throwIfNoEntry ) ;
if ( parentP === void 0 )
return parentP ;
const isDir = this . listings . has ( parentP ) ;
const doesExist = this . entries . has ( parentP ) ;
if ( ! isDir && ! doesExist ) {
if ( throwIfNoEntry === false )
return void 0 ;
throw ENOENT ( reason ) ;
}
if ( ! isDir )
throw ENOTDIR ( reason ) ;
resolvedP = ppath . resolve ( parentP , ppath . basename ( resolvedP ) ) ;
if ( ! resolveLastComponent || this . symlinkCount === 0 )
break ;
const index = this . libzip . name . locate ( this . zip , resolvedP . slice ( 1 ) , 0 ) ;
if ( index === - 1 )
break ;
if ( this . isSymbolicLink ( index ) ) {
const target = this . getFileSource ( index ) . toString ( ) ;
resolvedP = ppath . resolve ( ppath . dirname ( resolvedP ) , target ) ;
} else {
break ;
}
}
return resolvedP ;
}
allocateBuffer ( content ) {
if ( ! Buffer . isBuffer ( content ) )
content = Buffer . from ( content ) ;
const buffer = this . libzip . malloc ( content . byteLength ) ;
if ( ! buffer )
throw new Error ( ` Couldn't allocate enough memory ` ) ;
const heap = new Uint8Array ( this . libzip . HEAPU8 . buffer , buffer , content . byteLength ) ;
heap . set ( content ) ;
return { buffer , byteLength : content . byteLength } ;
}
allocateUnattachedSource ( content ) {
const error = this . libzip . struct . errorS ( ) ;
const { buffer , byteLength } = this . allocateBuffer ( content ) ;
const source = this . libzip . source . fromUnattachedBuffer ( buffer , byteLength , 0 , 1 , error ) ;
if ( source === 0 ) {
this . libzip . free ( error ) ;
throw this . makeLibzipError ( error ) ;
}
return source ;
}
allocateSource ( content ) {
const { buffer , byteLength } = this . allocateBuffer ( content ) ;
const source = this . libzip . source . fromBuffer ( this . zip , buffer , byteLength , 0 , 1 ) ;
if ( source === 0 ) {
this . libzip . free ( buffer ) ;
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
}
return source ;
}
setFileSource ( p , content ) {
const buffer = Buffer . isBuffer ( content ) ? content : Buffer . from ( content ) ;
const target = ppath . relative ( PortablePath . root , p ) ;
const lzSource = this . allocateSource ( content ) ;
try {
const newIndex = this . libzip . file . add ( this . zip , target , lzSource , this . libzip . ZIP _FL _OVERWRITE ) ;
if ( newIndex === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
if ( this . level !== ` mixed ` ) {
const method = this . level === 0 ? this . libzip . ZIP _CM _STORE : this . libzip . ZIP _CM _DEFLATE ;
const rc = this . libzip . file . setCompression ( this . zip , newIndex , 0 , method , this . level ) ;
if ( rc === - 1 ) {
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
}
}
this . fileSources . set ( newIndex , buffer ) ;
return newIndex ;
} catch ( error ) {
this . libzip . source . free ( lzSource ) ;
throw error ;
}
}
isSymbolicLink ( index ) {
if ( this . symlinkCount === 0 )
return false ;
const attrs = this . libzip . file . getExternalAttributes ( this . zip , index , 0 , 0 , this . libzip . uint08S , this . libzip . uint32S ) ;
if ( attrs === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
const opsys = this . libzip . getValue ( this . libzip . uint08S , ` i8 ` ) >>> 0 ;
if ( opsys !== this . libzip . ZIP _OPSYS _UNIX )
return false ;
const attributes = this . libzip . getValue ( this . libzip . uint32S , ` i32 ` ) >>> 16 ;
return ( attributes & S _IFMT ) === S _IFLNK ;
}
getFileSource ( index , opts = { asyncDecompress : false } ) {
const cachedFileSource = this . fileSources . get ( index ) ;
if ( typeof cachedFileSource !== ` undefined ` )
return cachedFileSource ;
const stat = this . libzip . struct . statS ( ) ;
const rc = this . libzip . statIndex ( this . zip , index , 0 , 0 , stat ) ;
if ( rc === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
const size = this . libzip . struct . statCompSize ( stat ) ;
const compressionMethod = this . libzip . struct . statCompMethod ( stat ) ;
const buffer = this . libzip . malloc ( size ) ;
try {
const file = this . libzip . fopenIndex ( this . zip , index , 0 , this . libzip . ZIP _FL _COMPRESSED ) ;
if ( file === 0 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
try {
const rc2 = this . libzip . fread ( file , buffer , size , 0 ) ;
if ( rc2 === - 1 )
throw this . makeLibzipError ( this . libzip . file . getError ( file ) ) ;
else if ( rc2 < size )
throw new Error ( ` Incomplete read ` ) ;
else if ( rc2 > size )
throw new Error ( ` Overread ` ) ;
const memory = this . libzip . HEAPU8 . subarray ( buffer , buffer + size ) ;
const data = Buffer . from ( memory ) ;
if ( compressionMethod === 0 ) {
this . fileSources . set ( index , data ) ;
return data ;
} else if ( opts . asyncDecompress ) {
return new Promise ( ( resolve , reject ) => {
zlib _ _default . default . inflateRaw ( data , ( error , result ) => {
if ( error ) {
reject ( error ) ;
} else {
this . fileSources . set ( index , result ) ;
resolve ( result ) ;
}
} ) ;
} ) ;
} else {
const decompressedData = zlib _ _default . default . inflateRawSync ( data ) ;
this . fileSources . set ( index , decompressedData ) ;
return decompressedData ;
}
} finally {
this . libzip . fclose ( file ) ;
}
} finally {
this . libzip . free ( buffer ) ;
}
}
async fchmodPromise ( fd , mask ) {
return this . chmodPromise ( this . fdToPath ( fd , ` fchmod ` ) , mask ) ;
}
fchmodSync ( fd , mask ) {
return this . chmodSync ( this . fdToPath ( fd , ` fchmodSync ` ) , mask ) ;
}
async chmodPromise ( p , mask ) {
return this . chmodSync ( p , mask ) ;
}
chmodSync ( p , mask ) {
if ( this . readOnly )
throw EROFS ( ` chmod ' ${ p } ' ` ) ;
mask &= 493 ;
const resolvedP = this . resolveFilename ( ` chmod ' ${ p } ' ` , p , false ) ;
const entry = this . entries . get ( resolvedP ) ;
if ( typeof entry === ` undefined ` )
throw new Error ( ` Assertion failed: The entry should have been registered ( ${ resolvedP } ) ` ) ;
const oldMod = this . getUnixMode ( entry , S _IFREG | 0 ) ;
const newMod = oldMod & ~ 511 | mask ;
const rc = this . libzip . file . setExternalAttributes ( this . zip , entry , 0 , 0 , this . libzip . ZIP _OPSYS _UNIX , newMod << 16 ) ;
if ( rc === - 1 ) {
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
}
}
async fchownPromise ( fd , uid , gid ) {
return this . chownPromise ( this . fdToPath ( fd , ` fchown ` ) , uid , gid ) ;
}
fchownSync ( fd , uid , gid ) {
return this . chownSync ( this . fdToPath ( fd , ` fchownSync ` ) , uid , gid ) ;
}
async chownPromise ( p , uid , gid ) {
return this . chownSync ( p , uid , gid ) ;
}
chownSync ( p , uid , gid ) {
throw new Error ( ` Unimplemented ` ) ;
}
async renamePromise ( oldP , newP ) {
return this . renameSync ( oldP , newP ) ;
}
renameSync ( oldP , newP ) {
throw new Error ( ` Unimplemented ` ) ;
}
async copyFilePromise ( sourceP , destP , flags ) {
const { indexSource , indexDest , resolvedDestP } = this . prepareCopyFile ( sourceP , destP , flags ) ;
const source = await this . getFileSource ( indexSource , { asyncDecompress : true } ) ;
const newIndex = this . setFileSource ( resolvedDestP , source ) ;
if ( newIndex !== indexDest ) {
this . registerEntry ( resolvedDestP , newIndex ) ;
}
}
copyFileSync ( sourceP , destP , flags = 0 ) {
const { indexSource , indexDest , resolvedDestP } = this . prepareCopyFile ( sourceP , destP , flags ) ;
const source = this . getFileSource ( indexSource ) ;
const newIndex = this . setFileSource ( resolvedDestP , source ) ;
if ( newIndex !== indexDest ) {
this . registerEntry ( resolvedDestP , newIndex ) ;
}
}
prepareCopyFile ( sourceP , destP , flags = 0 ) {
if ( this . readOnly )
throw EROFS ( ` copyfile ' ${ sourceP } -> ' ${ destP } ' ` ) ;
if ( ( flags & fs . constants . COPYFILE _FICLONE _FORCE ) !== 0 )
throw ENOSYS ( ` unsupported clone operation ` , ` copyfile ' ${ sourceP } ' -> ${ destP } ' ` ) ;
const resolvedSourceP = this . resolveFilename ( ` copyfile ' ${ sourceP } -> ${ destP } ' ` , sourceP ) ;
const indexSource = this . entries . get ( resolvedSourceP ) ;
if ( typeof indexSource === ` undefined ` )
throw EINVAL ( ` copyfile ' ${ sourceP } ' -> ' ${ destP } ' ` ) ;
const resolvedDestP = this . resolveFilename ( ` copyfile ' ${ sourceP } ' -> ${ destP } ' ` , destP ) ;
const indexDest = this . entries . get ( resolvedDestP ) ;
if ( ( flags & ( fs . constants . COPYFILE _EXCL | fs . constants . COPYFILE _FICLONE _FORCE ) ) !== 0 && typeof indexDest !== ` undefined ` )
throw EEXIST ( ` copyfile ' ${ sourceP } ' -> ' ${ destP } ' ` ) ;
return {
indexSource ,
resolvedDestP ,
indexDest
} ;
}
async appendFilePromise ( p , content , opts ) {
if ( this . readOnly )
throw EROFS ( ` open ' ${ p } ' ` ) ;
if ( typeof opts === ` undefined ` )
opts = { flag : ` a ` } ;
else if ( typeof opts === ` string ` )
opts = { flag : ` a ` , encoding : opts } ;
else if ( typeof opts . flag === ` undefined ` )
opts = { flag : ` a ` , ... opts } ;
return this . writeFilePromise ( p , content , opts ) ;
}
appendFileSync ( p , content , opts = { } ) {
if ( this . readOnly )
throw EROFS ( ` open ' ${ p } ' ` ) ;
if ( typeof opts === ` undefined ` )
opts = { flag : ` a ` } ;
else if ( typeof opts === ` string ` )
opts = { flag : ` a ` , encoding : opts } ;
else if ( typeof opts . flag === ` undefined ` )
opts = { flag : ` a ` , ... opts } ;
return this . writeFileSync ( p , content , opts ) ;
}
fdToPath ( fd , reason ) {
var _a ;
const path = ( _a = this . fds . get ( fd ) ) == null ? void 0 : _a . p ;
if ( typeof path === ` undefined ` )
throw EBADF ( reason ) ;
return path ;
}
async writeFilePromise ( p , content , opts ) {
const { encoding , mode , index , resolvedP } = this . prepareWriteFile ( p , opts ) ;
if ( index !== void 0 && typeof opts === ` object ` && opts . flag && opts . flag . includes ( ` a ` ) )
content = Buffer . concat ( [ await this . getFileSource ( index , { asyncDecompress : true } ) , Buffer . from ( content ) ] ) ;
if ( encoding !== null )
content = content . toString ( encoding ) ;
const newIndex = this . setFileSource ( resolvedP , content ) ;
if ( newIndex !== index )
this . registerEntry ( resolvedP , newIndex ) ;
if ( mode !== null ) {
await this . chmodPromise ( resolvedP , mode ) ;
}
}
writeFileSync ( p , content , opts ) {
const { encoding , mode , index , resolvedP } = this . prepareWriteFile ( p , opts ) ;
if ( index !== void 0 && typeof opts === ` object ` && opts . flag && opts . flag . includes ( ` a ` ) )
content = Buffer . concat ( [ this . getFileSource ( index ) , Buffer . from ( content ) ] ) ;
if ( encoding !== null )
content = content . toString ( encoding ) ;
const newIndex = this . setFileSource ( resolvedP , content ) ;
if ( newIndex !== index )
this . registerEntry ( resolvedP , newIndex ) ;
if ( mode !== null ) {
this . chmodSync ( resolvedP , mode ) ;
}
}
prepareWriteFile ( p , opts ) {
if ( typeof p === ` number ` )
p = this . fdToPath ( p , ` read ` ) ;
if ( this . readOnly )
throw EROFS ( ` open ' ${ p } ' ` ) ;
const resolvedP = this . resolveFilename ( ` open ' ${ p } ' ` , p ) ;
if ( this . listings . has ( resolvedP ) )
throw EISDIR ( ` open ' ${ p } ' ` ) ;
let encoding = null , mode = null ;
if ( typeof opts === ` string ` ) {
encoding = opts ;
} else if ( typeof opts === ` object ` ) {
( {
encoding = null ,
mode = null
} = opts ) ;
}
const index = this . entries . get ( resolvedP ) ;
return {
encoding ,
mode ,
resolvedP ,
index
} ;
}
async unlinkPromise ( p ) {
return this . unlinkSync ( p ) ;
}
unlinkSync ( p ) {
if ( this . readOnly )
throw EROFS ( ` unlink ' ${ p } ' ` ) ;
const resolvedP = this . resolveFilename ( ` unlink ' ${ p } ' ` , p ) ;
if ( this . listings . has ( resolvedP ) )
throw EISDIR ( ` unlink ' ${ p } ' ` ) ;
const index = this . entries . get ( resolvedP ) ;
if ( typeof index === ` undefined ` )
throw EINVAL ( ` unlink ' ${ p } ' ` ) ;
this . deleteEntry ( resolvedP , index ) ;
}
async utimesPromise ( p , atime , mtime ) {
return this . utimesSync ( p , atime , mtime ) ;
}
utimesSync ( p , atime , mtime ) {
if ( this . readOnly )
throw EROFS ( ` utimes ' ${ p } ' ` ) ;
const resolvedP = this . resolveFilename ( ` utimes ' ${ p } ' ` , p ) ;
this . utimesImpl ( resolvedP , mtime ) ;
}
async lutimesPromise ( p , atime , mtime ) {
return this . lutimesSync ( p , atime , mtime ) ;
}
lutimesSync ( p , atime , mtime ) {
if ( this . readOnly )
throw EROFS ( ` lutimes ' ${ p } ' ` ) ;
const resolvedP = this . resolveFilename ( ` utimes ' ${ p } ' ` , p , false ) ;
this . utimesImpl ( resolvedP , mtime ) ;
}
utimesImpl ( resolvedP , mtime ) {
if ( this . listings . has ( resolvedP ) ) {
if ( ! this . entries . has ( resolvedP ) )
this . hydrateDirectory ( resolvedP ) ;
}
const entry = this . entries . get ( resolvedP ) ;
if ( entry === void 0 )
throw new Error ( ` Unreachable ` ) ;
const rc = this . libzip . file . setMtime ( this . zip , entry , 0 , toUnixTimestamp ( mtime ) , 0 ) ;
if ( rc === - 1 ) {
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
}
}
async mkdirPromise ( p , opts ) {
return this . mkdirSync ( p , opts ) ;
}
mkdirSync ( p , { mode = 493 , recursive = false } = { } ) {
if ( recursive )
return this . mkdirpSync ( p , { chmod : mode } ) ;
if ( this . readOnly )
throw EROFS ( ` mkdir ' ${ p } ' ` ) ;
const resolvedP = this . resolveFilename ( ` mkdir ' ${ p } ' ` , p ) ;
if ( this . entries . has ( resolvedP ) || this . listings . has ( resolvedP ) )
throw EEXIST ( ` mkdir ' ${ p } ' ` ) ;
this . hydrateDirectory ( resolvedP ) ;
this . chmodSync ( resolvedP , mode ) ;
return void 0 ;
}
async rmdirPromise ( p , opts ) {
return this . rmdirSync ( p , opts ) ;
}
rmdirSync ( p , { recursive = false } = { } ) {
if ( this . readOnly )
throw EROFS ( ` rmdir ' ${ p } ' ` ) ;
if ( recursive ) {
this . removeSync ( p ) ;
return ;
}
const resolvedP = this . resolveFilename ( ` rmdir ' ${ p } ' ` , p ) ;
const directoryListing = this . listings . get ( resolvedP ) ;
if ( ! directoryListing )
throw ENOTDIR ( ` rmdir ' ${ p } ' ` ) ;
if ( directoryListing . size > 0 )
throw ENOTEMPTY ( ` rmdir ' ${ p } ' ` ) ;
const index = this . entries . get ( resolvedP ) ;
if ( typeof index === ` undefined ` )
throw EINVAL ( ` rmdir ' ${ p } ' ` ) ;
this . deleteEntry ( p , index ) ;
}
hydrateDirectory ( resolvedP ) {
const index = this . libzip . dir . add ( this . zip , ppath . relative ( PortablePath . root , resolvedP ) ) ;
if ( index === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
this . registerListing ( resolvedP ) ;
this . registerEntry ( resolvedP , index ) ;
return index ;
}
async linkPromise ( existingP , newP ) {
return this . linkSync ( existingP , newP ) ;
}
linkSync ( existingP , newP ) {
throw EOPNOTSUPP ( ` link ' ${ existingP } ' -> ' ${ newP } ' ` ) ;
}
async symlinkPromise ( target , p ) {
return this . symlinkSync ( target , p ) ;
}
symlinkSync ( target , p ) {
if ( this . readOnly )
throw EROFS ( ` symlink ' ${ target } ' -> ' ${ p } ' ` ) ;
const resolvedP = this . resolveFilename ( ` symlink ' ${ target } ' -> ' ${ p } ' ` , p ) ;
if ( this . listings . has ( resolvedP ) )
throw EISDIR ( ` symlink ' ${ target } ' -> ' ${ p } ' ` ) ;
if ( this . entries . has ( resolvedP ) )
throw EEXIST ( ` symlink ' ${ target } ' -> ' ${ p } ' ` ) ;
const index = this . setFileSource ( resolvedP , target ) ;
this . registerEntry ( resolvedP , index ) ;
const rc = this . libzip . file . setExternalAttributes ( this . zip , index , 0 , 0 , this . libzip . ZIP _OPSYS _UNIX , ( S _IFLNK | 511 ) << 16 ) ;
if ( rc === - 1 )
throw this . makeLibzipError ( this . libzip . getError ( this . zip ) ) ;
this . symlinkCount += 1 ;
}
async readFilePromise ( p , encoding ) {
if ( typeof encoding === ` object ` )
encoding = encoding ? encoding . encoding : void 0 ;
const data = await this . readFileBuffer ( p , { asyncDecompress : true } ) ;
return encoding ? data . toString ( encoding ) : data ;
}
readFileSync ( p , encoding ) {
if ( typeof encoding === ` object ` )
encoding = encoding ? encoding . encoding : void 0 ;
const data = this . readFileBuffer ( p ) ;
return encoding ? data . toString ( encoding ) : data ;
}
readFileBuffer ( p , opts = { asyncDecompress : false } ) {
if ( typeof p === ` number ` )
p = this . fdToPath ( p , ` read ` ) ;
const resolvedP = this . resolveFilename ( ` open ' ${ p } ' ` , p ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` open ' ${ p } ' ` ) ;
if ( p [ p . length - 1 ] === ` / ` && ! this . listings . has ( resolvedP ) )
throw ENOTDIR ( ` open ' ${ p } ' ` ) ;
if ( this . listings . has ( resolvedP ) )
throw EISDIR ( ` read ` ) ;
const entry = this . entries . get ( resolvedP ) ;
if ( entry === void 0 )
throw new Error ( ` Unreachable ` ) ;
return this . getFileSource ( entry , opts ) ;
}
async readdirPromise ( p , opts ) {
return this . readdirSync ( p , opts ) ;
}
readdirSync ( p , opts ) {
const resolvedP = this . resolveFilename ( ` scandir ' ${ p } ' ` , p ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` scandir ' ${ p } ' ` ) ;
const directoryListing = this . listings . get ( resolvedP ) ;
if ( ! directoryListing )
throw ENOTDIR ( ` scandir ' ${ p } ' ` ) ;
const entries = [ ... directoryListing ] ;
if ( ! ( opts == null ? void 0 : opts . withFileTypes ) )
return entries ;
return entries . map ( ( name ) => {
return Object . assign ( this . statImpl ( ` lstat ` , ppath . join ( p , name ) ) , {
name
} ) ;
} ) ;
}
async readlinkPromise ( p ) {
const entry = this . prepareReadlink ( p ) ;
return ( await this . getFileSource ( entry , { asyncDecompress : true } ) ) . toString ( ) ;
}
readlinkSync ( p ) {
const entry = this . prepareReadlink ( p ) ;
return this . getFileSource ( entry ) . toString ( ) ;
}
prepareReadlink ( p ) {
const resolvedP = this . resolveFilename ( ` readlink ' ${ p } ' ` , p , false ) ;
if ( ! this . entries . has ( resolvedP ) && ! this . listings . has ( resolvedP ) )
throw ENOENT ( ` readlink ' ${ p } ' ` ) ;
if ( p [ p . length - 1 ] === ` / ` && ! this . listings . has ( resolvedP ) )
throw ENOTDIR ( ` open ' ${ p } ' ` ) ;
if ( this . listings . has ( resolvedP ) )
throw EINVAL ( ` readlink ' ${ p } ' ` ) ;
const entry = this . entries . get ( resolvedP ) ;
if ( entry === void 0 )
throw new Error ( ` Unreachable ` ) ;
if ( ! this . isSymbolicLink ( entry ) )
throw EINVAL ( ` readlink ' ${ p } ' ` ) ;
return entry ;
}
async truncatePromise ( p , len = 0 ) {
const resolvedP = this . resolveFilename ( ` open ' ${ p } ' ` , p ) ;
const index = this . entries . get ( resolvedP ) ;
if ( typeof index === ` undefined ` )
throw EINVAL ( ` open ' ${ p } ' ` ) ;
const source = await this . getFileSource ( index , { asyncDecompress : true } ) ;
const truncated = Buffer . alloc ( len , 0 ) ;
source . copy ( truncated ) ;
return await this . writeFilePromise ( p , truncated ) ;
}
truncateSync ( p , len = 0 ) {
const resolvedP = this . resolveFilename ( ` open ' ${ p } ' ` , p ) ;
const index = this . entries . get ( resolvedP ) ;
if ( typeof index === ` undefined ` )
throw EINVAL ( ` open ' ${ p } ' ` ) ;
const source = this . getFileSource ( index ) ;
const truncated = Buffer . alloc ( len , 0 ) ;
source . copy ( truncated ) ;
return this . writeFileSync ( p , truncated ) ;
}
async ftruncatePromise ( fd , len ) {
return this . truncatePromise ( this . fdToPath ( fd , ` ftruncate ` ) , len ) ;
}
ftruncateSync ( fd , len ) {
return this . truncateSync ( this . fdToPath ( fd , ` ftruncateSync ` ) , len ) ;
}
watch ( p , a , b ) {
let persistent ;
switch ( typeof a ) {
case ` function ` :
case ` string ` :
case ` undefined ` :
{
persistent = true ;
}
break ;
default :
{
( { persistent = true } = a ) ;
}
break ;
}
if ( ! persistent )
return { on : ( ) => {
} , close : ( ) => {
} } ;
const interval = setInterval ( ( ) => {
} , 24 * 60 * 60 * 1e3 ) ;
return { on : ( ) => {
} , close : ( ) => {
clearInterval ( interval ) ;
} } ;
}
watchFile ( p , a , b ) {
const resolvedP = ppath . resolve ( PortablePath . root , p ) ;
return watchFile ( this , resolvedP , a , b ) ;
}
unwatchFile ( p , cb ) {
const resolvedP = ppath . resolve ( PortablePath . root , p ) ;
return unwatchFile ( this , resolvedP , cb ) ;
}
}
class ProxiedFS extends FakeFS {
getExtractHint ( hints ) {
return this . baseFs . getExtractHint ( hints ) ;
}
resolve ( path ) {
return this . mapFromBase ( this . baseFs . resolve ( this . mapToBase ( path ) ) ) ;
}
getRealPath ( ) {
return this . mapFromBase ( this . baseFs . getRealPath ( ) ) ;
}
async openPromise ( p , flags , mode ) {
return this . baseFs . openPromise ( this . mapToBase ( p ) , flags , mode ) ;
}
openSync ( p , flags , mode ) {
return this . baseFs . openSync ( this . mapToBase ( p ) , flags , mode ) ;
}
async opendirPromise ( p , opts ) {
return Object . assign ( await this . baseFs . opendirPromise ( this . mapToBase ( p ) , opts ) , { path : p } ) ;
}
opendirSync ( p , opts ) {
return Object . assign ( this . baseFs . opendirSync ( this . mapToBase ( p ) , opts ) , { path : p } ) ;
}
async readPromise ( fd , buffer , offset , length , position ) {
return await this . baseFs . readPromise ( fd , buffer , offset , length , position ) ;
}
readSync ( fd , buffer , offset , length , position ) {
return this . baseFs . readSync ( fd , buffer , offset , length , position ) ;
}
async writePromise ( fd , buffer , offset , length , position ) {
if ( typeof buffer === ` string ` ) {
return await this . baseFs . writePromise ( fd , buffer , offset ) ;
} else {
return await this . baseFs . writePromise ( fd , buffer , offset , length , position ) ;
}
}
writeSync ( fd , buffer , offset , length , position ) {
if ( typeof buffer === ` string ` ) {
return this . baseFs . writeSync ( fd , buffer , offset ) ;
} else {
return this . baseFs . writeSync ( fd , buffer , offset , length , position ) ;
}
}
async closePromise ( fd ) {
return this . baseFs . closePromise ( fd ) ;
}
closeSync ( fd ) {
this . baseFs . closeSync ( fd ) ;
}
createReadStream ( p , opts ) {
return this . baseFs . createReadStream ( p !== null ? this . mapToBase ( p ) : p , opts ) ;
}
createWriteStream ( p , opts ) {
return this . baseFs . createWriteStream ( p !== null ? this . mapToBase ( p ) : p , opts ) ;
}
async realpathPromise ( p ) {
return this . mapFromBase ( await this . baseFs . realpathPromise ( this . mapToBase ( p ) ) ) ;
}
realpathSync ( p ) {
return this . mapFromBase ( this . baseFs . realpathSync ( this . mapToBase ( p ) ) ) ;
}
async existsPromise ( p ) {
return this . baseFs . existsPromise ( this . mapToBase ( p ) ) ;
}
existsSync ( p ) {
return this . baseFs . existsSync ( this . mapToBase ( p ) ) ;
}
accessSync ( p , mode ) {
return this . baseFs . accessSync ( this . mapToBase ( p ) , mode ) ;
}
async accessPromise ( p , mode ) {
return this . baseFs . accessPromise ( this . mapToBase ( p ) , mode ) ;
}
async statPromise ( p , opts ) {
return this . baseFs . statPromise ( this . mapToBase ( p ) , opts ) ;
}
statSync ( p , opts ) {
return this . baseFs . statSync ( this . mapToBase ( p ) , opts ) ;
}
async fstatPromise ( fd , opts ) {
return this . baseFs . fstatPromise ( fd , opts ) ;
}
fstatSync ( fd , opts ) {
return this . baseFs . fstatSync ( fd , opts ) ;
}
lstatPromise ( p , opts ) {
return this . baseFs . lstatPromise ( this . mapToBase ( p ) , opts ) ;
}
lstatSync ( p , opts ) {
return this . baseFs . lstatSync ( this . mapToBase ( p ) , opts ) ;
}
async fchmodPromise ( fd , mask ) {
return this . baseFs . fchmodPromise ( fd , mask ) ;
}
fchmodSync ( fd , mask ) {
return this . baseFs . fchmodSync ( fd , mask ) ;
}
async chmodPromise ( p , mask ) {
return this . baseFs . chmodPromise ( this . mapToBase ( p ) , mask ) ;
}
chmodSync ( p , mask ) {
return this . baseFs . chmodSync ( this . mapToBase ( p ) , mask ) ;
}
async fchownPromise ( fd , uid , gid ) {
return this . baseFs . fchownPromise ( fd , uid , gid ) ;
}
fchownSync ( fd , uid , gid ) {
return this . baseFs . fchownSync ( fd , uid , gid ) ;
}
async chownPromise ( p , uid , gid ) {
return this . baseFs . chownPromise ( this . mapToBase ( p ) , uid , gid ) ;
}
chownSync ( p , uid , gid ) {
return this . baseFs . chownSync ( this . mapToBase ( p ) , uid , gid ) ;
}
async renamePromise ( oldP , newP ) {
return this . baseFs . renamePromise ( this . mapToBase ( oldP ) , this . mapToBase ( newP ) ) ;
}
renameSync ( oldP , newP ) {
return this . baseFs . renameSync ( this . mapToBase ( oldP ) , this . mapToBase ( newP ) ) ;
}
async copyFilePromise ( sourceP , destP , flags = 0 ) {
return this . baseFs . copyFilePromise ( this . mapToBase ( sourceP ) , this . mapToBase ( destP ) , flags ) ;
}
copyFileSync ( sourceP , destP , flags = 0 ) {
return this . baseFs . copyFileSync ( this . mapToBase ( sourceP ) , this . mapToBase ( destP ) , flags ) ;
}
async appendFilePromise ( p , content , opts ) {
return this . baseFs . appendFilePromise ( this . fsMapToBase ( p ) , content , opts ) ;
}
appendFileSync ( p , content , opts ) {
return this . baseFs . appendFileSync ( this . fsMapToBase ( p ) , content , opts ) ;
}
async writeFilePromise ( p , content , opts ) {
return this . baseFs . writeFilePromise ( this . fsMapToBase ( p ) , content , opts ) ;
}
writeFileSync ( p , content , opts ) {
return this . baseFs . writeFileSync ( this . fsMapToBase ( p ) , content , opts ) ;
}
async unlinkPromise ( p ) {
return this . baseFs . unlinkPromise ( this . mapToBase ( p ) ) ;
}
unlinkSync ( p ) {
return this . baseFs . unlinkSync ( this . mapToBase ( p ) ) ;
}
async utimesPromise ( p , atime , mtime ) {
return this . baseFs . utimesPromise ( this . mapToBase ( p ) , atime , mtime ) ;
}
utimesSync ( p , atime , mtime ) {
return this . baseFs . utimesSync ( this . mapToBase ( p ) , atime , mtime ) ;
}
async mkdirPromise ( p , opts ) {
return this . baseFs . mkdirPromise ( this . mapToBase ( p ) , opts ) ;
}
mkdirSync ( p , opts ) {
return this . baseFs . mkdirSync ( this . mapToBase ( p ) , opts ) ;
}
async rmdirPromise ( p , opts ) {
return this . baseFs . rmdirPromise ( this . mapToBase ( p ) , opts ) ;
}
rmdirSync ( p , opts ) {
return this . baseFs . rmdirSync ( this . mapToBase ( p ) , opts ) ;
}
async linkPromise ( existingP , newP ) {
return this . baseFs . linkPromise ( this . mapToBase ( existingP ) , this . mapToBase ( newP ) ) ;
}
linkSync ( existingP , newP ) {
return this . baseFs . linkSync ( this . mapToBase ( existingP ) , this . mapToBase ( newP ) ) ;
}
async symlinkPromise ( target , p , type ) {
const mappedP = this . mapToBase ( p ) ;
if ( this . pathUtils . isAbsolute ( target ) )
return this . baseFs . symlinkPromise ( this . mapToBase ( target ) , mappedP , type ) ;
const mappedAbsoluteTarget = this . mapToBase ( this . pathUtils . join ( this . pathUtils . dirname ( p ) , target ) ) ;
const mappedTarget = this . baseFs . pathUtils . relative ( this . baseFs . pathUtils . dirname ( mappedP ) , mappedAbsoluteTarget ) ;
return this . baseFs . symlinkPromise ( mappedTarget , mappedP , type ) ;
}
symlinkSync ( target , p , type ) {
const mappedP = this . mapToBase ( p ) ;
if ( this . pathUtils . isAbsolute ( target ) )
return this . baseFs . symlinkSync ( this . mapToBase ( target ) , mappedP , type ) ;
const mappedAbsoluteTarget = this . mapToBase ( this . pathUtils . join ( this . pathUtils . dirname ( p ) , target ) ) ;
const mappedTarget = this . baseFs . pathUtils . relative ( this . baseFs . pathUtils . dirname ( mappedP ) , mappedAbsoluteTarget ) ;
return this . baseFs . symlinkSync ( mappedTarget , mappedP , type ) ;
}
async readFilePromise ( p , encoding ) {
if ( encoding === ` utf8 ` ) {
return this . baseFs . readFilePromise ( this . fsMapToBase ( p ) , encoding ) ;
} else {
return this . baseFs . readFilePromise ( this . fsMapToBase ( p ) , encoding ) ;
}
}
readFileSync ( p , encoding ) {
if ( encoding === ` utf8 ` ) {
return this . baseFs . readFileSync ( this . fsMapToBase ( p ) , encoding ) ;
} else {
return this . baseFs . readFileSync ( this . fsMapToBase ( p ) , encoding ) ;
}
}
async readdirPromise ( p , opts ) {
return this . baseFs . readdirPromise ( this . mapToBase ( p ) , opts ) ;
}
readdirSync ( p , opts ) {
return this . baseFs . readdirSync ( this . mapToBase ( p ) , opts ) ;
}
async readlinkPromise ( p ) {
return this . mapFromBase ( await this . baseFs . readlinkPromise ( this . mapToBase ( p ) ) ) ;
}
readlinkSync ( p ) {
return this . mapFromBase ( this . baseFs . readlinkSync ( this . mapToBase ( p ) ) ) ;
}
async truncatePromise ( p , len ) {
return this . baseFs . truncatePromise ( this . mapToBase ( p ) , len ) ;
}
truncateSync ( p , len ) {
return this . baseFs . truncateSync ( this . mapToBase ( p ) , len ) ;
}
async ftruncatePromise ( fd , len ) {
return this . baseFs . ftruncatePromise ( fd , len ) ;
}
ftruncateSync ( fd , len ) {
return this . baseFs . ftruncateSync ( fd , len ) ;
}
watch ( p , a , b ) {
return this . baseFs . watch (
this . mapToBase ( p ) ,
a ,
b
) ;
}
watchFile ( p , a , b ) {
return this . baseFs . watchFile (
this . mapToBase ( p ) ,
a ,
b
) ;
}
unwatchFile ( p , cb ) {
return this . baseFs . unwatchFile ( this . mapToBase ( p ) , cb ) ;
}
fsMapToBase ( p ) {
if ( typeof p === ` number ` ) {
return p ;
} else {
return this . mapToBase ( p ) ;
}
}
}
class PosixFS extends ProxiedFS {
constructor ( baseFs ) {
super ( npath ) ;
this . baseFs = baseFs ;
}
mapFromBase ( path ) {
return npath . fromPortablePath ( path ) ;
}
mapToBase ( path ) {
return npath . toPortablePath ( path ) ;
}
}
const NUMBER _REGEXP = /^[0-9]+$/ ;
const VIRTUAL _REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/ ;
const VALID _COMPONENT = /^([^/]+-)?[a-f0-9]+$/ ;
class VirtualFS extends ProxiedFS {
constructor ( { baseFs = new NodeFS ( ) } = { } ) {
super ( ppath ) ;
this . baseFs = baseFs ;
}
static makeVirtualPath ( base , component , to ) {
if ( ppath . basename ( base ) !== ` __virtual__ ` )
throw new Error ( ` Assertion failed: Virtual folders must be named "__virtual__" ` ) ;
if ( ! ppath . basename ( component ) . match ( VALID _COMPONENT ) )
throw new Error ( ` Assertion failed: Virtual components must be ended by an hexadecimal hash ` ) ;
const target = ppath . relative ( ppath . dirname ( base ) , to ) ;
const segments = target . split ( ` / ` ) ;
let depth = 0 ;
while ( depth < segments . length && segments [ depth ] === ` .. ` )
depth += 1 ;
const finalSegments = segments . slice ( depth ) ;
const fullVirtualPath = ppath . join ( base , component , String ( depth ) , ... finalSegments ) ;
return fullVirtualPath ;
}
static resolveVirtual ( p ) {
const match = p . match ( VIRTUAL _REGEXP ) ;
if ( ! match || ! match [ 3 ] && match [ 5 ] )
return p ;
const target = ppath . dirname ( match [ 1 ] ) ;
if ( ! match [ 3 ] || ! match [ 4 ] )
return target ;
const isnum = NUMBER _REGEXP . test ( match [ 4 ] ) ;
if ( ! isnum )
return p ;
const depth = Number ( match [ 4 ] ) ;
const backstep = ` ../ ` . repeat ( depth ) ;
const subpath = match [ 5 ] || ` . ` ;
return VirtualFS . resolveVirtual ( ppath . join ( target , backstep , subpath ) ) ;
}
getExtractHint ( hints ) {
return this . baseFs . getExtractHint ( hints ) ;
}
getRealPath ( ) {
return this . baseFs . getRealPath ( ) ;
}
realpathSync ( p ) {
const match = p . match ( VIRTUAL _REGEXP ) ;
if ( ! match )
return this . baseFs . realpathSync ( p ) ;
if ( ! match [ 5 ] )
return p ;
const realpath = this . baseFs . realpathSync ( this . mapToBase ( p ) ) ;
return VirtualFS . makeVirtualPath ( match [ 1 ] , match [ 3 ] , realpath ) ;
}
async realpathPromise ( p ) {
const match = p . match ( VIRTUAL _REGEXP ) ;
if ( ! match )
return await this . baseFs . realpathPromise ( p ) ;
if ( ! match [ 5 ] )
return p ;
const realpath = await this . baseFs . realpathPromise ( this . mapToBase ( p ) ) ;
return VirtualFS . makeVirtualPath ( match [ 1 ] , match [ 3 ] , realpath ) ;
}
mapToBase ( p ) {
if ( p === ` ` )
return p ;
if ( this . pathUtils . isAbsolute ( p ) )
return VirtualFS . resolveVirtual ( p ) ;
const resolvedRoot = VirtualFS . resolveVirtual ( this . baseFs . resolve ( PortablePath . dot ) ) ;
const resolvedP = VirtualFS . resolveVirtual ( this . baseFs . resolve ( p ) ) ;
return ppath . relative ( resolvedRoot , resolvedP ) || PortablePath . dot ;
}
mapFromBase ( p ) {
return p ;
}
}
const ZIP _MASK = 4278190080 ;
const ZIP _MAGIC = 704643072 ;
const getArchivePart = ( path , extension ) => {
let idx = path . indexOf ( extension ) ;
if ( idx <= 0 )
return null ;
let nextCharIdx = idx ;
while ( idx >= 0 ) {
nextCharIdx = idx + extension . length ;
if ( path [ nextCharIdx ] === ppath . sep )
break ;
if ( path [ idx - 1 ] === ppath . sep )
return null ;
idx = path . indexOf ( extension , nextCharIdx ) ;
}
if ( path . length > nextCharIdx && path [ nextCharIdx ] !== ppath . sep )
return null ;
return path . slice ( 0 , nextCharIdx ) ;
} ;
class ZipOpenFS extends BasePortableFakeFS {
constructor ( { libzip , baseFs = new NodeFS ( ) , filter = null , maxOpenFiles = Infinity , readOnlyArchives = false , useCache = true , maxAge = 5e3 , fileExtensions = null } ) {
super ( ) ;
this . fdMap = /* @__PURE__ */ new Map ( ) ;
this . nextFd = 3 ;
this . isZip = /* @__PURE__ */ new Set ( ) ;
this . notZip = /* @__PURE__ */ new Set ( ) ;
this . realPaths = /* @__PURE__ */ new Map ( ) ;
this . limitOpenFilesTimeout = null ;
this . libzipFactory = typeof libzip !== ` function ` ? ( ) => libzip : libzip ;
this . baseFs = baseFs ;
this . zipInstances = useCache ? /* @__PURE__ */ new Map ( ) : null ;
this . filter = filter ;
this . maxOpenFiles = maxOpenFiles ;
this . readOnlyArchives = readOnlyArchives ;
this . maxAge = maxAge ;
this . fileExtensions = fileExtensions ;
}
static async openPromise ( fn , opts ) {
const zipOpenFs = new ZipOpenFS ( opts ) ;
try {
return await fn ( zipOpenFs ) ;
} finally {
zipOpenFs . saveAndClose ( ) ;
}
}
get libzip ( ) {
if ( typeof this . libzipInstance === ` undefined ` )
this . libzipInstance = this . libzipFactory ( ) ;
return this . libzipInstance ;
}
getExtractHint ( hints ) {
return this . baseFs . getExtractHint ( hints ) ;
}
getRealPath ( ) {
return this . baseFs . getRealPath ( ) ;
}
saveAndClose ( ) {
unwatchAllFiles ( this ) ;
if ( this . zipInstances ) {
for ( const [ path , { zipFs } ] of this . zipInstances . entries ( ) ) {
zipFs . saveAndClose ( ) ;
this . zipInstances . delete ( path ) ;
}
}
}
discardAndClose ( ) {
unwatchAllFiles ( this ) ;
if ( this . zipInstances ) {
for ( const [ path , { zipFs } ] of this . zipInstances . entries ( ) ) {
zipFs . discardAndClose ( ) ;
this . zipInstances . delete ( path ) ;
}
}
}
resolve ( p ) {
return this . baseFs . resolve ( p ) ;
}
remapFd ( zipFs , fd ) {
const remappedFd = this . nextFd ++ | ZIP _MAGIC ;
this . fdMap . set ( remappedFd , [ zipFs , fd ] ) ;
return remappedFd ;
}
async openPromise ( p , flags , mode ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . openPromise ( p , flags , mode ) ;
} , async ( zipFs , { subPath } ) => {
return this . remapFd ( zipFs , await zipFs . openPromise ( subPath , flags , mode ) ) ;
} ) ;
}
openSync ( p , flags , mode ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . openSync ( p , flags , mode ) ;
} , ( zipFs , { subPath } ) => {
return this . remapFd ( zipFs , zipFs . openSync ( subPath , flags , mode ) ) ;
} ) ;
}
async opendirPromise ( p , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . opendirPromise ( p , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . opendirPromise ( subPath , opts ) ;
} , {
requireSubpath : false
} ) ;
}
opendirSync ( p , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . opendirSync ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . opendirSync ( subPath , opts ) ;
} , {
requireSubpath : false
} ) ;
}
async readPromise ( fd , buffer , offset , length , position ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return await this . baseFs . readPromise ( fd , buffer , offset , length , position ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` read ` ) ;
const [ zipFs , realFd ] = entry ;
return await zipFs . readPromise ( realFd , buffer , offset , length , position ) ;
}
readSync ( fd , buffer , offset , length , position ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . readSync ( fd , buffer , offset , length , position ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` readSync ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . readSync ( realFd , buffer , offset , length , position ) ;
}
async writePromise ( fd , buffer , offset , length , position ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC ) {
if ( typeof buffer === ` string ` ) {
return await this . baseFs . writePromise ( fd , buffer , offset ) ;
} else {
return await this . baseFs . writePromise ( fd , buffer , offset , length , position ) ;
}
}
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` write ` ) ;
const [ zipFs , realFd ] = entry ;
if ( typeof buffer === ` string ` ) {
return await zipFs . writePromise ( realFd , buffer , offset ) ;
} else {
return await zipFs . writePromise ( realFd , buffer , offset , length , position ) ;
}
}
writeSync ( fd , buffer , offset , length , position ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC ) {
if ( typeof buffer === ` string ` ) {
return this . baseFs . writeSync ( fd , buffer , offset ) ;
} else {
return this . baseFs . writeSync ( fd , buffer , offset , length , position ) ;
}
}
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` writeSync ` ) ;
const [ zipFs , realFd ] = entry ;
if ( typeof buffer === ` string ` ) {
return zipFs . writeSync ( realFd , buffer , offset ) ;
} else {
return zipFs . writeSync ( realFd , buffer , offset , length , position ) ;
}
}
async closePromise ( fd ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return await this . baseFs . closePromise ( fd ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` close ` ) ;
this . fdMap . delete ( fd ) ;
const [ zipFs , realFd ] = entry ;
return await zipFs . closePromise ( realFd ) ;
}
closeSync ( fd ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . closeSync ( fd ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` closeSync ` ) ;
this . fdMap . delete ( fd ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . closeSync ( realFd ) ;
}
createReadStream ( p , opts ) {
if ( p === null )
return this . baseFs . createReadStream ( p , opts ) ;
return this . makeCallSync ( p , ( ) => {
return this . baseFs . createReadStream ( p , opts ) ;
} , ( zipFs , { archivePath , subPath } ) => {
const stream = zipFs . createReadStream ( subPath , opts ) ;
stream . path = npath . fromPortablePath ( this . pathUtils . join ( archivePath , subPath ) ) ;
return stream ;
} ) ;
}
createWriteStream ( p , opts ) {
if ( p === null )
return this . baseFs . createWriteStream ( p , opts ) ;
return this . makeCallSync ( p , ( ) => {
return this . baseFs . createWriteStream ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . createWriteStream ( subPath , opts ) ;
} ) ;
}
async realpathPromise ( p ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . realpathPromise ( p ) ;
} , async ( zipFs , { archivePath , subPath } ) => {
let realArchivePath = this . realPaths . get ( archivePath ) ;
if ( typeof realArchivePath === ` undefined ` ) {
realArchivePath = await this . baseFs . realpathPromise ( archivePath ) ;
this . realPaths . set ( archivePath , realArchivePath ) ;
}
return this . pathUtils . join ( realArchivePath , this . pathUtils . relative ( PortablePath . root , await zipFs . realpathPromise ( subPath ) ) ) ;
} ) ;
}
realpathSync ( p ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . realpathSync ( p ) ;
} , ( zipFs , { archivePath , subPath } ) => {
let realArchivePath = this . realPaths . get ( archivePath ) ;
if ( typeof realArchivePath === ` undefined ` ) {
realArchivePath = this . baseFs . realpathSync ( archivePath ) ;
this . realPaths . set ( archivePath , realArchivePath ) ;
}
return this . pathUtils . join ( realArchivePath , this . pathUtils . relative ( PortablePath . root , zipFs . realpathSync ( subPath ) ) ) ;
} ) ;
}
async existsPromise ( p ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . existsPromise ( p ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . existsPromise ( subPath ) ;
} ) ;
}
existsSync ( p ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . existsSync ( p ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . existsSync ( subPath ) ;
} ) ;
}
async accessPromise ( p , mode ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . accessPromise ( p , mode ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . accessPromise ( subPath , mode ) ;
} ) ;
}
accessSync ( p , mode ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . accessSync ( p , mode ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . accessSync ( subPath , mode ) ;
} ) ;
}
async statPromise ( p , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . statPromise ( p , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . statPromise ( subPath , opts ) ;
} ) ;
}
statSync ( p , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . statSync ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . statSync ( subPath , opts ) ;
} ) ;
}
async fstatPromise ( fd , opts ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . fstatPromise ( fd , opts ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fstat ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . fstatPromise ( realFd , opts ) ;
}
fstatSync ( fd , opts ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . fstatSync ( fd , opts ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fstatSync ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . fstatSync ( realFd , opts ) ;
}
async lstatPromise ( p , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . lstatPromise ( p , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . lstatPromise ( subPath , opts ) ;
} ) ;
}
lstatSync ( p , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . lstatSync ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . lstatSync ( subPath , opts ) ;
} ) ;
}
async fchmodPromise ( fd , mask ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . fchmodPromise ( fd , mask ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fchmod ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . fchmodPromise ( realFd , mask ) ;
}
fchmodSync ( fd , mask ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . fchmodSync ( fd , mask ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fchmodSync ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . fchmodSync ( realFd , mask ) ;
}
async chmodPromise ( p , mask ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . chmodPromise ( p , mask ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . chmodPromise ( subPath , mask ) ;
} ) ;
}
chmodSync ( p , mask ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . chmodSync ( p , mask ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . chmodSync ( subPath , mask ) ;
} ) ;
}
async fchownPromise ( fd , uid , gid ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . fchownPromise ( fd , uid , gid ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fchown ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . fchownPromise ( realFd , uid , gid ) ;
}
fchownSync ( fd , uid , gid ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . fchownSync ( fd , uid , gid ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` fchownSync ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . fchownSync ( realFd , uid , gid ) ;
}
async chownPromise ( p , uid , gid ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . chownPromise ( p , uid , gid ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . chownPromise ( subPath , uid , gid ) ;
} ) ;
}
chownSync ( p , uid , gid ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . chownSync ( p , uid , gid ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . chownSync ( subPath , uid , gid ) ;
} ) ;
}
async renamePromise ( oldP , newP ) {
return await this . makeCallPromise ( oldP , async ( ) => {
return await this . makeCallPromise ( newP , async ( ) => {
return await this . baseFs . renamePromise ( oldP , newP ) ;
} , async ( ) => {
throw Object . assign ( new Error ( ` EEXDEV: cross-device link not permitted ` ) , { code : ` EEXDEV ` } ) ;
} ) ;
} , async ( zipFsO , { subPath : subPathO } ) => {
return await this . makeCallPromise ( newP , async ( ) => {
throw Object . assign ( new Error ( ` EEXDEV: cross-device link not permitted ` ) , { code : ` EEXDEV ` } ) ;
} , async ( zipFsN , { subPath : subPathN } ) => {
if ( zipFsO !== zipFsN ) {
throw Object . assign ( new Error ( ` EEXDEV: cross-device link not permitted ` ) , { code : ` EEXDEV ` } ) ;
} else {
return await zipFsO . renamePromise ( subPathO , subPathN ) ;
}
} ) ;
} ) ;
}
renameSync ( oldP , newP ) {
return this . makeCallSync ( oldP , ( ) => {
return this . makeCallSync ( newP , ( ) => {
return this . baseFs . renameSync ( oldP , newP ) ;
} , ( ) => {
throw Object . assign ( new Error ( ` EEXDEV: cross-device link not permitted ` ) , { code : ` EEXDEV ` } ) ;
} ) ;
} , ( zipFsO , { subPath : subPathO } ) => {
return this . makeCallSync ( newP , ( ) => {
throw Object . assign ( new Error ( ` EEXDEV: cross-device link not permitted ` ) , { code : ` EEXDEV ` } ) ;
} , ( zipFsN , { subPath : subPathN } ) => {
if ( zipFsO !== zipFsN ) {
throw Object . assign ( new Error ( ` EEXDEV: cross-device link not permitted ` ) , { code : ` EEXDEV ` } ) ;
} else {
return zipFsO . renameSync ( subPathO , subPathN ) ;
}
} ) ;
} ) ;
}
async copyFilePromise ( sourceP , destP , flags = 0 ) {
const fallback = async ( sourceFs , sourceP2 , destFs , destP2 ) => {
if ( ( flags & fs . constants . COPYFILE _FICLONE _FORCE ) !== 0 )
throw Object . assign ( new Error ( ` EXDEV: cross-device clone not permitted, copyfile ' ${ sourceP2 } ' -> ${ destP2 } ' ` ) , { code : ` EXDEV ` } ) ;
if ( flags & fs . constants . COPYFILE _EXCL && await this . existsPromise ( sourceP2 ) )
throw Object . assign ( new Error ( ` EEXIST: file already exists, copyfile ' ${ sourceP2 } ' -> ' ${ destP2 } ' ` ) , { code : ` EEXIST ` } ) ;
let content ;
try {
content = await sourceFs . readFilePromise ( sourceP2 ) ;
} catch ( error ) {
throw Object . assign ( new Error ( ` EINVAL: invalid argument, copyfile ' ${ sourceP2 } ' -> ' ${ destP2 } ' ` ) , { code : ` EINVAL ` } ) ;
}
await destFs . writeFilePromise ( destP2 , content ) ;
} ;
return await this . makeCallPromise ( sourceP , async ( ) => {
return await this . makeCallPromise ( destP , async ( ) => {
return await this . baseFs . copyFilePromise ( sourceP , destP , flags ) ;
} , async ( zipFsD , { subPath : subPathD } ) => {
return await fallback ( this . baseFs , sourceP , zipFsD , subPathD ) ;
} ) ;
} , async ( zipFsS , { subPath : subPathS } ) => {
return await this . makeCallPromise ( destP , async ( ) => {
return await fallback ( zipFsS , subPathS , this . baseFs , destP ) ;
} , async ( zipFsD , { subPath : subPathD } ) => {
if ( zipFsS !== zipFsD ) {
return await fallback ( zipFsS , subPathS , zipFsD , subPathD ) ;
} else {
return await zipFsS . copyFilePromise ( subPathS , subPathD , flags ) ;
}
} ) ;
} ) ;
}
copyFileSync ( sourceP , destP , flags = 0 ) {
const fallback = ( sourceFs , sourceP2 , destFs , destP2 ) => {
if ( ( flags & fs . constants . COPYFILE _FICLONE _FORCE ) !== 0 )
throw Object . assign ( new Error ( ` EXDEV: cross-device clone not permitted, copyfile ' ${ sourceP2 } ' -> ${ destP2 } ' ` ) , { code : ` EXDEV ` } ) ;
if ( flags & fs . constants . COPYFILE _EXCL && this . existsSync ( sourceP2 ) )
throw Object . assign ( new Error ( ` EEXIST: file already exists, copyfile ' ${ sourceP2 } ' -> ' ${ destP2 } ' ` ) , { code : ` EEXIST ` } ) ;
let content ;
try {
content = sourceFs . readFileSync ( sourceP2 ) ;
} catch ( error ) {
throw Object . assign ( new Error ( ` EINVAL: invalid argument, copyfile ' ${ sourceP2 } ' -> ' ${ destP2 } ' ` ) , { code : ` EINVAL ` } ) ;
}
destFs . writeFileSync ( destP2 , content ) ;
} ;
return this . makeCallSync ( sourceP , ( ) => {
return this . makeCallSync ( destP , ( ) => {
return this . baseFs . copyFileSync ( sourceP , destP , flags ) ;
} , ( zipFsD , { subPath : subPathD } ) => {
return fallback ( this . baseFs , sourceP , zipFsD , subPathD ) ;
} ) ;
} , ( zipFsS , { subPath : subPathS } ) => {
return this . makeCallSync ( destP , ( ) => {
return fallback ( zipFsS , subPathS , this . baseFs , destP ) ;
} , ( zipFsD , { subPath : subPathD } ) => {
if ( zipFsS !== zipFsD ) {
return fallback ( zipFsS , subPathS , zipFsD , subPathD ) ;
} else {
return zipFsS . copyFileSync ( subPathS , subPathD , flags ) ;
}
} ) ;
} ) ;
}
async appendFilePromise ( p , content , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . appendFilePromise ( p , content , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . appendFilePromise ( subPath , content , opts ) ;
} ) ;
}
appendFileSync ( p , content , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . appendFileSync ( p , content , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . appendFileSync ( subPath , content , opts ) ;
} ) ;
}
async writeFilePromise ( p , content , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . writeFilePromise ( p , content , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . writeFilePromise ( subPath , content , opts ) ;
} ) ;
}
writeFileSync ( p , content , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . writeFileSync ( p , content , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . writeFileSync ( subPath , content , opts ) ;
} ) ;
}
async unlinkPromise ( p ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . unlinkPromise ( p ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . unlinkPromise ( subPath ) ;
} ) ;
}
unlinkSync ( p ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . unlinkSync ( p ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . unlinkSync ( subPath ) ;
} ) ;
}
async utimesPromise ( p , atime , mtime ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . utimesPromise ( p , atime , mtime ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . utimesPromise ( subPath , atime , mtime ) ;
} ) ;
}
utimesSync ( p , atime , mtime ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . utimesSync ( p , atime , mtime ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . utimesSync ( subPath , atime , mtime ) ;
} ) ;
}
async mkdirPromise ( p , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . mkdirPromise ( p , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . mkdirPromise ( subPath , opts ) ;
} ) ;
}
mkdirSync ( p , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . mkdirSync ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . mkdirSync ( subPath , opts ) ;
} ) ;
}
async rmdirPromise ( p , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . rmdirPromise ( p , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . rmdirPromise ( subPath , opts ) ;
} ) ;
}
rmdirSync ( p , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . rmdirSync ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . rmdirSync ( subPath , opts ) ;
} ) ;
}
async linkPromise ( existingP , newP ) {
return await this . makeCallPromise ( newP , async ( ) => {
return await this . baseFs . linkPromise ( existingP , newP ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . linkPromise ( existingP , subPath ) ;
} ) ;
}
linkSync ( existingP , newP ) {
return this . makeCallSync ( newP , ( ) => {
return this . baseFs . linkSync ( existingP , newP ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . linkSync ( existingP , subPath ) ;
} ) ;
}
async symlinkPromise ( target , p , type ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . symlinkPromise ( target , p , type ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . symlinkPromise ( target , subPath ) ;
} ) ;
}
symlinkSync ( target , p , type ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . symlinkSync ( target , p , type ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . symlinkSync ( target , subPath ) ;
} ) ;
}
async readFilePromise ( p , encoding ) {
return this . makeCallPromise ( p , async ( ) => {
switch ( encoding ) {
case ` utf8 ` :
return await this . baseFs . readFilePromise ( p , encoding ) ;
default :
return await this . baseFs . readFilePromise ( p , encoding ) ;
}
} , async ( zipFs , { subPath } ) => {
return await zipFs . readFilePromise ( subPath , encoding ) ;
} ) ;
}
readFileSync ( p , encoding ) {
return this . makeCallSync ( p , ( ) => {
switch ( encoding ) {
case ` utf8 ` :
return this . baseFs . readFileSync ( p , encoding ) ;
default :
return this . baseFs . readFileSync ( p , encoding ) ;
}
} , ( zipFs , { subPath } ) => {
return zipFs . readFileSync ( subPath , encoding ) ;
} ) ;
}
async readdirPromise ( p , opts ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . readdirPromise ( p , opts ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . readdirPromise ( subPath , opts ) ;
} , {
requireSubpath : false
} ) ;
}
readdirSync ( p , opts ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . readdirSync ( p , opts ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . readdirSync ( subPath , opts ) ;
} , {
requireSubpath : false
} ) ;
}
async readlinkPromise ( p ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . readlinkPromise ( p ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . readlinkPromise ( subPath ) ;
} ) ;
}
readlinkSync ( p ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . readlinkSync ( p ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . readlinkSync ( subPath ) ;
} ) ;
}
async truncatePromise ( p , len ) {
return await this . makeCallPromise ( p , async ( ) => {
return await this . baseFs . truncatePromise ( p , len ) ;
} , async ( zipFs , { subPath } ) => {
return await zipFs . truncatePromise ( subPath , len ) ;
} ) ;
}
truncateSync ( p , len ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . truncateSync ( p , len ) ;
} , ( zipFs , { subPath } ) => {
return zipFs . truncateSync ( subPath , len ) ;
} ) ;
}
async ftruncatePromise ( fd , len ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . ftruncatePromise ( fd , len ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` ftruncate ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . ftruncatePromise ( realFd , len ) ;
}
ftruncateSync ( fd , len ) {
if ( ( fd & ZIP _MASK ) !== ZIP _MAGIC )
return this . baseFs . ftruncateSync ( fd , len ) ;
const entry = this . fdMap . get ( fd ) ;
if ( typeof entry === ` undefined ` )
throw EBADF ( ` ftruncateSync ` ) ;
const [ zipFs , realFd ] = entry ;
return zipFs . ftruncateSync ( realFd , len ) ;
}
watch ( p , a , b ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . watch (
p ,
a ,
b
) ;
} , ( zipFs , { subPath } ) => {
return zipFs . watch (
subPath ,
a ,
b
) ;
} ) ;
}
watchFile ( p , a , b ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . watchFile (
p ,
a ,
b
) ;
} , ( ) => {
return watchFile ( this , p , a , b ) ;
} ) ;
}
unwatchFile ( p , cb ) {
return this . makeCallSync ( p , ( ) => {
return this . baseFs . unwatchFile ( p , cb ) ;
} , ( ) => {
return unwatchFile ( this , p , cb ) ;
} ) ;
}
async makeCallPromise ( p , discard , accept , { requireSubpath = true } = { } ) {
if ( typeof p !== ` string ` )
return await discard ( ) ;
const normalizedP = this . resolve ( p ) ;
const zipInfo = this . findZip ( normalizedP ) ;
if ( ! zipInfo )
return await discard ( ) ;
if ( requireSubpath && zipInfo . subPath === ` / ` )
return await discard ( ) ;
return await this . getZipPromise ( zipInfo . archivePath , async ( zipFs ) => await accept ( zipFs , zipInfo ) ) ;
}
makeCallSync ( p , discard , accept , { requireSubpath = true } = { } ) {
if ( typeof p !== ` string ` )
return discard ( ) ;
const normalizedP = this . resolve ( p ) ;
const zipInfo = this . findZip ( normalizedP ) ;
if ( ! zipInfo )
return discard ( ) ;
if ( requireSubpath && zipInfo . subPath === ` / ` )
return discard ( ) ;
return this . getZipSync ( zipInfo . archivePath , ( zipFs ) => accept ( zipFs , zipInfo ) ) ;
}
findZip ( p ) {
if ( this . filter && ! this . filter . test ( p ) )
return null ;
let filePath = ` ` ;
while ( true ) {
const pathPartWithArchive = p . substring ( filePath . length ) ;
let archivePart ;
if ( ! this . fileExtensions ) {
archivePart = getArchivePart ( pathPartWithArchive , ` .zip ` ) ;
} else {
for ( const ext of this . fileExtensions ) {
archivePart = getArchivePart ( pathPartWithArchive , ext ) ;
if ( archivePart ) {
break ;
}
}
}
if ( ! archivePart )
return null ;
filePath = this . pathUtils . join ( filePath , archivePart ) ;
if ( this . isZip . has ( filePath ) === false ) {
if ( this . notZip . has ( filePath ) )
continue ;
try {
if ( ! this . baseFs . lstatSync ( filePath ) . isFile ( ) ) {
this . notZip . add ( filePath ) ;
continue ;
}
} catch {
return null ;
}
this . isZip . add ( filePath ) ;
}
return {
archivePath : filePath ,
subPath : this . pathUtils . join ( PortablePath . root , p . substring ( filePath . length ) )
} ;
}
}
limitOpenFiles ( max ) {
if ( this . zipInstances === null )
return ;
const now = Date . now ( ) ;
let nextExpiresAt = now + this . maxAge ;
let closeCount = max === null ? 0 : this . zipInstances . size - max ;
for ( const [ path , { zipFs , expiresAt , refCount } ] of this . zipInstances . entries ( ) ) {
if ( refCount !== 0 || zipFs . hasOpenFileHandles ( ) ) {
continue ;
} else if ( now >= expiresAt ) {
zipFs . saveAndClose ( ) ;
this . zipInstances . delete ( path ) ;
closeCount -= 1 ;
continue ;
} else if ( max === null || closeCount <= 0 ) {
nextExpiresAt = expiresAt ;
break ;
}
zipFs . saveAndClose ( ) ;
this . zipInstances . delete ( path ) ;
closeCount -= 1 ;
}
if ( this . limitOpenFilesTimeout === null && ( max === null && this . zipInstances . size > 0 || max !== null ) ) {
this . limitOpenFilesTimeout = setTimeout ( ( ) => {
this . limitOpenFilesTimeout = null ;
this . limitOpenFiles ( null ) ;
} , nextExpiresAt - now ) . unref ( ) ;
}
}
async getZipPromise ( p , accept ) {
const getZipOptions = async ( ) => ( {
baseFs : this . baseFs ,
libzip : this . libzip ,
readOnly : this . readOnlyArchives ,
stats : await this . baseFs . statPromise ( p )
} ) ;
if ( this . zipInstances ) {
let cachedZipFs = this . zipInstances . get ( p ) ;
if ( ! cachedZipFs ) {
const zipOptions = await getZipOptions ( ) ;
cachedZipFs = this . zipInstances . get ( p ) ;
if ( ! cachedZipFs ) {
cachedZipFs = {
zipFs : new ZipFS ( p , zipOptions ) ,
expiresAt : 0 ,
refCount : 0
} ;
}
}
this . zipInstances . delete ( p ) ;
this . limitOpenFiles ( this . maxOpenFiles - 1 ) ;
this . zipInstances . set ( p , cachedZipFs ) ;
cachedZipFs . expiresAt = Date . now ( ) + this . maxAge ;
cachedZipFs . refCount += 1 ;
try {
return await accept ( cachedZipFs . zipFs ) ;
} finally {
cachedZipFs . refCount -= 1 ;
}
} else {
const zipFs = new ZipFS ( p , await getZipOptions ( ) ) ;
try {
return await accept ( zipFs ) ;
} finally {
zipFs . saveAndClose ( ) ;
}
}
}
getZipSync ( p , accept ) {
const getZipOptions = ( ) => ( {
baseFs : this . baseFs ,
libzip : this . libzip ,
readOnly : this . readOnlyArchives ,
stats : this . baseFs . statSync ( p )
} ) ;
if ( this . zipInstances ) {
let cachedZipFs = this . zipInstances . get ( p ) ;
if ( ! cachedZipFs ) {
cachedZipFs = {
zipFs : new ZipFS ( p , getZipOptions ( ) ) ,
expiresAt : 0 ,
refCount : 0
} ;
}
this . zipInstances . delete ( p ) ;
this . limitOpenFiles ( this . maxOpenFiles - 1 ) ;
this . zipInstances . set ( p , cachedZipFs ) ;
cachedZipFs . expiresAt = Date . now ( ) + this . maxAge ;
return accept ( cachedZipFs . zipFs ) ;
} else {
const zipFs = new ZipFS ( p , getZipOptions ( ) ) ;
try {
return accept ( zipFs ) ;
} finally {
zipFs . saveAndClose ( ) ;
}
}
}
}
class NodePathFS extends ProxiedFS {
constructor ( baseFs ) {
super ( npath ) ;
this . baseFs = baseFs ;
}
mapFromBase ( path ) {
return path ;
}
mapToBase ( path ) {
if ( typeof path === ` string ` )
return path ;
if ( path instanceof url . URL )
return url . fileURLToPath ( path ) ;
if ( Buffer . isBuffer ( path ) ) {
const str = path . toString ( ) ;
if ( Buffer . byteLength ( str ) !== path . byteLength )
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 ` ) ;
return str ;
}
throw new Error ( ` Unsupported path type: ${ nodeUtils . inspect ( path ) } ` ) ;
}
}
var _a , _b , _c , _d ;
const kBaseFs = Symbol ( ` kBaseFs ` ) ;
const kFd = Symbol ( ` kFd ` ) ;
const kClosePromise = Symbol ( ` kClosePromise ` ) ;
const kCloseResolve = Symbol ( ` kCloseResolve ` ) ;
const kCloseReject = Symbol ( ` kCloseReject ` ) ;
const kRefs = Symbol ( ` kRefs ` ) ;
const kRef = Symbol ( ` kRef ` ) ;
const kUnref = Symbol ( ` kUnref ` ) ;
class FileHandle {
constructor ( fd , baseFs ) {
this [ _a ] = 1 ;
this [ _b ] = void 0 ;
this [ _c ] = void 0 ;
this [ _d ] = void 0 ;
this [ kBaseFs ] = baseFs ;
this [ kFd ] = fd ;
}
get fd ( ) {
return this [ kFd ] ;
}
async appendFile ( data , options ) {
var _a2 ;
try {
this [ kRef ] ( this . appendFile ) ;
const encoding = ( _a2 = typeof options === ` string ` ? options : options == null ? void 0 : options . encoding ) != null ? _a2 : void 0 ;
return await this [ kBaseFs ] . appendFilePromise ( this . fd , data , encoding ? { encoding } : void 0 ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
async chown ( uid , gid ) {
try {
this [ kRef ] ( this . chown ) ;
return await this [ kBaseFs ] . fchownPromise ( this . fd , uid , gid ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
async chmod ( mode ) {
try {
this [ kRef ] ( this . chmod ) ;
return await this [ kBaseFs ] . fchmodPromise ( this . fd , mode ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
createReadStream ( options ) {
return this [ kBaseFs ] . createReadStream ( null , { ... options , fd : this . fd } ) ;
}
createWriteStream ( options ) {
return this [ kBaseFs ] . createWriteStream ( null , { ... options , fd : this . fd } ) ;
}
datasync ( ) {
throw new Error ( ` Method not implemented. ` ) ;
}
sync ( ) {
throw new Error ( ` Method not implemented. ` ) ;
}
async read ( bufferOrOptions , offset , length , position ) {
var _a2 , _b2 , _c2 ;
try {
this [ kRef ] ( this . read ) ;
let buffer ;
if ( ! Buffer . isBuffer ( bufferOrOptions ) ) {
bufferOrOptions != null ? bufferOrOptions : bufferOrOptions = { } ;
buffer = ( _a2 = bufferOrOptions . buffer ) != null ? _a2 : Buffer . alloc ( 16384 ) ;
offset = bufferOrOptions . offset || 0 ;
length = ( _b2 = bufferOrOptions . length ) != null ? _b2 : buffer . byteLength ;
position = ( _c2 = bufferOrOptions . position ) != null ? _c2 : null ;
} else {
buffer = bufferOrOptions ;
}
offset != null ? offset : offset = 0 ;
length != null ? length : length = 0 ;
if ( length === 0 ) {
return {
bytesRead : length ,
buffer
} ;
}
const bytesRead = await this [ kBaseFs ] . readPromise ( this . fd , buffer , offset , length , position ) ;
return {
bytesRead ,
buffer
} ;
} finally {
this [ kUnref ] ( ) ;
}
}
async readFile ( options ) {
var _a2 ;
try {
this [ kRef ] ( this . readFile ) ;
const encoding = ( _a2 = typeof options === ` string ` ? options : options == null ? void 0 : options . encoding ) != null ? _a2 : void 0 ;
return await this [ kBaseFs ] . readFilePromise ( this . fd , encoding ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
readLines ( options ) {
return readline . createInterface ( {
input : this . createReadStream ( options ) ,
crlfDelay : Infinity
} ) ;
}
async stat ( opts ) {
try {
this [ kRef ] ( this . stat ) ;
return await this [ kBaseFs ] . fstatPromise ( this . fd , opts ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
async truncate ( len ) {
try {
this [ kRef ] ( this . truncate ) ;
return await this [ kBaseFs ] . ftruncatePromise ( this . fd , len ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
utimes ( atime , mtime ) {
throw new Error ( ` Method not implemented. ` ) ;
}
async writeFile ( data , options ) {
var _a2 ;
try {
this [ kRef ] ( this . writeFile ) ;
const encoding = ( _a2 = typeof options === ` string ` ? options : options == null ? void 0 : options . encoding ) != null ? _a2 : void 0 ;
await this [ kBaseFs ] . writeFilePromise ( this . fd , data , encoding ) ;
} finally {
this [ kUnref ] ( ) ;
}
}
async write ( ... args ) {
try {
this [ kRef ] ( this . write ) ;
if ( ArrayBuffer . isView ( args [ 0 ] ) ) {
const [ buffer , offset , length , position ] = args ;
const bytesWritten = await this [ kBaseFs ] . writePromise ( this . fd , buffer , offset != null ? offset : void 0 , length != null ? length : void 0 , position != null ? position : void 0 ) ;
return { bytesWritten , buffer } ;
} else {
const [ data , position , encoding ] = args ;
const bytesWritten = await this [ kBaseFs ] . writePromise ( this . fd , data , position , encoding ) ;
return { bytesWritten , buffer : data } ;
}
} finally {
this [ kUnref ] ( ) ;
}
}
async writev ( buffers , position ) {
try {
this [ kRef ] ( this . writev ) ;
let bytesWritten = 0 ;
if ( typeof position !== ` undefined ` ) {
for ( const buffer of buffers ) {
const writeResult = await this . write ( buffer , void 0 , void 0 , position ) ;
bytesWritten += writeResult . bytesWritten ;
position += writeResult . bytesWritten ;
}
} else {
for ( const buffer of buffers ) {
const writeResult = await this . write ( buffer ) ;
bytesWritten += writeResult . bytesWritten ;
}
}
return {
buffers ,
bytesWritten
} ;
} finally {
this [ kUnref ] ( ) ;
}
}
readv ( buffers , position ) {
throw new Error ( ` Method not implemented. ` ) ;
}
close ( ) {
if ( this [ kFd ] === - 1 )
return Promise . resolve ( ) ;
if ( this [ kClosePromise ] )
return this [ kClosePromise ] ;
this [ kRefs ] -- ;
if ( this [ kRefs ] === 0 ) {
const fd = this [ kFd ] ;
this [ kFd ] = - 1 ;
this [ kClosePromise ] = this [ kBaseFs ] . closePromise ( fd ) . finally ( ( ) => {
this [ kClosePromise ] = void 0 ;
} ) ;
} else {
this [ kClosePromise ] = new Promise ( ( resolve , reject ) => {
this [ kCloseResolve ] = resolve ;
this [ kCloseReject ] = reject ;
} ) . finally ( ( ) => {
this [ kClosePromise ] = void 0 ;
this [ kCloseReject ] = void 0 ;
this [ kCloseResolve ] = void 0 ;
} ) ;
}
return this [ kClosePromise ] ;
}
[ ( _a = kRefs , _b = kClosePromise , _c = kCloseResolve , _d = kCloseReject , kRef ) ] ( caller ) {
if ( this [ kFd ] === - 1 ) {
const err = new Error ( ` file closed ` ) ;
err . code = ` EBADF ` ;
err . syscall = caller . name ;
throw err ;
}
this [ kRefs ] ++ ;
}
[ kUnref ] ( ) {
this [ kRefs ] -- ;
if ( this [ kRefs ] === 0 ) {
const fd = this [ kFd ] ;
this [ kFd ] = - 1 ;
this [ kBaseFs ] . closePromise ( fd ) . then ( this [ kCloseResolve ] , this [ kCloseReject ] ) ;
}
}
}
const SYNC _IMPLEMENTATIONS = /* @__PURE__ */ new Set ( [
` accessSync ` ,
` appendFileSync ` ,
` createReadStream ` ,
` createWriteStream ` ,
` chmodSync ` ,
` fchmodSync ` ,
` chownSync ` ,
` fchownSync ` ,
` closeSync ` ,
` copyFileSync ` ,
` linkSync ` ,
` lstatSync ` ,
` fstatSync ` ,
` lutimesSync ` ,
` mkdirSync ` ,
` openSync ` ,
` opendirSync ` ,
` readlinkSync ` ,
` readFileSync ` ,
` readdirSync ` ,
` readlinkSync ` ,
` realpathSync ` ,
` renameSync ` ,
` rmdirSync ` ,
` statSync ` ,
` symlinkSync ` ,
` truncateSync ` ,
` ftruncateSync ` ,
` unlinkSync ` ,
` unwatchFile ` ,
` utimesSync ` ,
` watch ` ,
` watchFile ` ,
` writeFileSync ` ,
` writeSync `
] ) ;
const ASYNC _IMPLEMENTATIONS = /* @__PURE__ */ new Set ( [
` accessPromise ` ,
` appendFilePromise ` ,
` fchmodPromise ` ,
` chmodPromise ` ,
` fchownPromise ` ,
` chownPromise ` ,
` closePromise ` ,
` copyFilePromise ` ,
` linkPromise ` ,
` fstatPromise ` ,
` lstatPromise ` ,
` lutimesPromise ` ,
` mkdirPromise ` ,
` openPromise ` ,
` opendirPromise ` ,
` readdirPromise ` ,
` realpathPromise ` ,
` readFilePromise ` ,
` readdirPromise ` ,
` readlinkPromise ` ,
` renamePromise ` ,
` rmdirPromise ` ,
` statPromise ` ,
` symlinkPromise ` ,
` truncatePromise ` ,
` ftruncatePromise ` ,
` unlinkPromise ` ,
` utimesPromise ` ,
` writeFilePromise ` ,
` writeSync `
] ) ;
function patchFs ( patchedFs , fakeFs ) {
fakeFs = new NodePathFS ( fakeFs ) ;
const setupFn = ( target , name , replacement ) => {
const orig = target [ name ] ;
target [ name ] = replacement ;
if ( typeof ( orig == null ? void 0 : orig [ nodeUtils . promisify . custom ] ) !== ` undefined ` ) {
replacement [ nodeUtils . promisify . custom ] = orig [ nodeUtils . promisify . custom ] ;
}
} ;
{
setupFn ( patchedFs , ` exists ` , ( p , ... args ) => {
const hasCallback = typeof args [ args . length - 1 ] === ` function ` ;
const callback = hasCallback ? args . pop ( ) : ( ) => {
} ;
process . nextTick ( ( ) => {
fakeFs . existsPromise ( p ) . then ( ( exists ) => {
callback ( exists ) ;
} , ( ) => {
callback ( false ) ;
} ) ;
} ) ;
} ) ;
setupFn ( patchedFs , ` read ` , ( ... args ) => {
let [ fd , buffer , offset , length , position , callback ] = args ;
if ( args . length <= 3 ) {
let options = { } ;
if ( args . length < 3 ) {
callback = args [ 1 ] ;
} else {
options = args [ 1 ] ;
callback = args [ 2 ] ;
}
( {
buffer = Buffer . alloc ( 16384 ) ,
offset = 0 ,
length = buffer . byteLength ,
position
} = options ) ;
}
if ( offset == null )
offset = 0 ;
length |= 0 ;
if ( length === 0 ) {
process . nextTick ( ( ) => {
callback ( null , 0 , buffer ) ;
} ) ;
return ;
}
if ( position == null )
position = - 1 ;
process . nextTick ( ( ) => {
fakeFs . readPromise ( fd , buffer , offset , length , position ) . then ( ( bytesRead ) => {
callback ( null , bytesRead , buffer ) ;
} , ( error ) => {
callback ( error , 0 , buffer ) ;
} ) ;
} ) ;
} ) ;
for ( const fnName of ASYNC _IMPLEMENTATIONS ) {
const origName = fnName . replace ( /Promise$/ , ` ` ) ;
if ( typeof patchedFs [ origName ] === ` undefined ` )
continue ;
const fakeImpl = fakeFs [ fnName ] ;
if ( typeof fakeImpl === ` undefined ` )
continue ;
const wrapper = ( ... args ) => {
const hasCallback = typeof args [ args . length - 1 ] === ` function ` ;
const callback = hasCallback ? args . pop ( ) : ( ) => {
} ;
process . nextTick ( ( ) => {
fakeImpl . apply ( fakeFs , args ) . then ( ( result ) => {
callback ( null , result ) ;
} , ( error ) => {
callback ( error ) ;
} ) ;
} ) ;
} ;
setupFn ( patchedFs , origName , wrapper ) ;
}
patchedFs . realpath . native = patchedFs . realpath ;
}
{
setupFn ( patchedFs , ` existsSync ` , ( p ) => {
try {
return fakeFs . existsSync ( p ) ;
} catch ( error ) {
return false ;
}
} ) ;
setupFn ( patchedFs , ` readSync ` , ( ... args ) => {
let [ fd , buffer , offset , length , position ] = args ;
if ( args . length <= 3 ) {
const options = args [ 2 ] || { } ;
( { offset = 0 , length = buffer . byteLength , position } = options ) ;
}
if ( offset == null )
offset = 0 ;
length |= 0 ;
if ( length === 0 )
return 0 ;
if ( position == null )
position = - 1 ;
return fakeFs . readSync ( fd , buffer , offset , length , position ) ;
} ) ;
for ( const fnName of SYNC _IMPLEMENTATIONS ) {
const origName = fnName ;
if ( typeof patchedFs [ origName ] === ` undefined ` )
continue ;
const fakeImpl = fakeFs [ fnName ] ;
if ( typeof fakeImpl === ` undefined ` )
continue ;
setupFn ( patchedFs , origName , fakeImpl . bind ( fakeFs ) ) ;
}
patchedFs . realpathSync . native = patchedFs . realpathSync ;
}
{
const origEmitWarning = process . emitWarning ;
process . emitWarning = ( ) => {
} ;
let patchedFsPromises ;
try {
patchedFsPromises = patchedFs . promises ;
} finally {
process . emitWarning = origEmitWarning ;
}
if ( typeof patchedFsPromises !== ` undefined ` ) {
for ( const fnName of ASYNC _IMPLEMENTATIONS ) {
const origName = fnName . replace ( /Promise$/ , ` ` ) ;
if ( typeof patchedFsPromises [ origName ] === ` undefined ` )
continue ;
const fakeImpl = fakeFs [ fnName ] ;
if ( typeof fakeImpl === ` undefined ` )
continue ;
if ( fnName === ` open ` )
continue ;
setupFn ( patchedFsPromises , origName , ( pathLike , ... args ) => {
if ( pathLike instanceof FileHandle ) {
return pathLike [ origName ] . apply ( pathLike , args ) ;
} else {
return fakeImpl . call ( fakeFs , pathLike , ... args ) ;
}
} ) ;
}
setupFn ( patchedFsPromises , ` open ` , async ( ... args ) => {
const fd = await fakeFs . openPromise ( ... args ) ;
return new FileHandle ( fd , fakeFs ) ;
} ) ;
}
}
{
patchedFs . read [ nodeUtils . promisify . custom ] = async ( fd , buffer , ... args ) => {
const res = fakeFs . readPromise ( fd , buffer , ... args ) ;
return { bytesRead : await res , buffer } ;
} ;
patchedFs . write [ nodeUtils . promisify . custom ] = async ( fd , buffer , ... args ) => {
const res = fakeFs . writePromise ( fd , buffer , ... args ) ;
return { bytesWritten : await res , buffer } ;
} ;
}
}
var libzipSync = { exports : { } } ;
( function ( module , exports ) {
var frozenFs = Object . assign ( { } , fs _ _default . default ) ;
var createModule = function ( ) {
var _scriptDir = void 0 ;
if ( typeof _ _filename !== "undefined" )
_scriptDir = _scriptDir || _ _filename ;
return function ( createModule2 ) {
createModule2 = createModule2 || { } ;
var Module = typeof createModule2 !== "undefined" ? createModule2 : { } ;
var readyPromiseResolve , readyPromiseReject ;
Module [ "ready" ] = new Promise ( function ( resolve , reject ) {
readyPromiseResolve = resolve ;
readyPromiseReject = reject ;
} ) ;
var moduleOverrides = { } ;
var key ;
for ( key in Module ) {
if ( Module . hasOwnProperty ( key ) ) {
moduleOverrides [ key ] = Module [ key ] ;
}
}
var scriptDirectory = "" ;
function locateFile ( path ) {
if ( Module [ "locateFile" ] ) {
return Module [ "locateFile" ] ( path , scriptDirectory ) ;
}
return scriptDirectory + path ;
}
var read _ , readBinary ;
var nodeFS ;
var nodePath ;
{
{
scriptDirectory = _ _dirname + "/" ;
}
read _ = function shell _read ( filename , binary ) {
var ret = tryParseAsDataURI ( filename ) ;
if ( ret ) {
return binary ? ret : ret . toString ( ) ;
}
if ( ! nodeFS )
nodeFS = frozenFs ;
if ( ! nodePath )
nodePath = path _ _default . default ;
filename = nodePath [ "normalize" ] ( filename ) ;
return nodeFS [ "readFileSync" ] ( filename , binary ? null : "utf8" ) ;
} ;
readBinary = function readBinary2 ( filename ) {
var ret = read _ ( filename , true ) ;
if ( ! ret . buffer ) {
ret = new Uint8Array ( ret ) ;
}
assert ( ret . buffer ) ;
return ret ;
} ;
if ( process [ "argv" ] . length > 1 ) {
process [ "argv" ] [ 1 ] . replace ( /\\/g , "/" ) ;
}
process [ "argv" ] . slice ( 2 ) ;
Module [ "inspect" ] = function ( ) {
return "[Emscripten Module object]" ;
} ;
}
var out = Module [ "print" ] || console . log . bind ( console ) ;
var err = Module [ "printErr" ] || console . warn . bind ( console ) ;
for ( key in moduleOverrides ) {
if ( moduleOverrides . hasOwnProperty ( key ) ) {
Module [ key ] = moduleOverrides [ key ] ;
}
}
moduleOverrides = null ;
if ( Module [ "arguments" ] )
;
if ( Module [ "thisProgram" ] )
;
if ( Module [ "quit" ] )
;
var STACK _ALIGN = 16 ;
function alignMemory ( size , factor ) {
if ( ! factor )
factor = STACK _ALIGN ;
return Math . ceil ( size / factor ) * factor ;
}
var wasmBinary ;
if ( Module [ "wasmBinary" ] )
wasmBinary = Module [ "wasmBinary" ] ;
Module [ "noExitRuntime" ] || true ;
if ( typeof WebAssembly !== "object" ) {
abort ( "no native wasm support detected" ) ;
}
function getValue ( ptr , type , noSafe ) {
type = type || "i8" ;
if ( type . charAt ( type . length - 1 ) === "*" )
type = "i32" ;
switch ( type ) {
case "i1" :
return HEAP8 [ ptr >> 0 ] ;
case "i8" :
return HEAP8 [ ptr >> 0 ] ;
case "i16" :
return HEAP16 [ ptr >> 1 ] ;
case "i32" :
return HEAP32 [ ptr >> 2 ] ;
case "i64" :
return HEAP32 [ ptr >> 2 ] ;
case "float" :
return HEAPF32 [ ptr >> 2 ] ;
case "double" :
return HEAPF64 [ ptr >> 3 ] ;
default :
abort ( "invalid type for getValue: " + type ) ;
}
return null ;
}
var wasmMemory ;
var ABORT = false ;
function assert ( condition , text ) {
if ( ! condition ) {
abort ( "Assertion failed: " + text ) ;
}
}
function getCFunc ( ident ) {
var func = Module [ "_" + ident ] ;
assert (
func ,
"Cannot call unknown function " + ident + ", make sure it is exported"
) ;
return func ;
}
function ccall ( ident , returnType , argTypes , args , opts ) {
var toC = {
string : function ( str ) {
var ret2 = 0 ;
if ( str !== null && str !== void 0 && str !== 0 ) {
var len = ( str . length << 2 ) + 1 ;
ret2 = stackAlloc ( len ) ;
stringToUTF8 ( str , ret2 , len ) ;
}
return ret2 ;
} ,
array : function ( arr ) {
var ret2 = stackAlloc ( arr . length ) ;
writeArrayToMemory ( arr , ret2 ) ;
return ret2 ;
}
} ;
function convertReturnValue ( ret2 ) {
if ( returnType === "string" )
return UTF8ToString ( ret2 ) ;
if ( returnType === "boolean" )
return Boolean ( ret2 ) ;
return ret2 ;
}
var func = getCFunc ( ident ) ;
var cArgs = [ ] ;
var stack = 0 ;
if ( args ) {
for ( var i = 0 ; i < args . length ; i ++ ) {
var converter = toC [ argTypes [ i ] ] ;
if ( converter ) {
if ( stack === 0 )
stack = stackSave ( ) ;
cArgs [ i ] = converter ( args [ i ] ) ;
} else {
cArgs [ i ] = args [ i ] ;
}
}
}
var ret = func . apply ( null , cArgs ) ;
ret = convertReturnValue ( ret ) ;
if ( stack !== 0 )
stackRestore ( stack ) ;
return ret ;
}
function cwrap ( ident , returnType , argTypes , opts ) {
argTypes = argTypes || [ ] ;
var numericArgs = argTypes . every ( function ( type ) {
return type === "number" ;
} ) ;
var numericRet = returnType !== "string" ;
if ( numericRet && numericArgs && ! opts ) {
return getCFunc ( ident ) ;
}
return function ( ) {
return ccall ( ident , returnType , argTypes , arguments ) ;
} ;
}
var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder ( "utf8" ) : void 0 ;
function UTF8ArrayToString ( heap , idx , maxBytesToRead ) {
var endIdx = idx + maxBytesToRead ;
var endPtr = idx ;
while ( heap [ endPtr ] && ! ( endPtr >= endIdx ) )
++ endPtr ;
if ( endPtr - idx > 16 && heap . subarray && UTF8Decoder ) {
return UTF8Decoder . decode ( heap . subarray ( idx , endPtr ) ) ;
} else {
var str = "" ;
while ( idx < endPtr ) {
var u0 = heap [ idx ++ ] ;
if ( ! ( u0 & 128 ) ) {
str += String . fromCharCode ( u0 ) ;
continue ;
}
var u1 = heap [ idx ++ ] & 63 ;
if ( ( u0 & 224 ) == 192 ) {
str += String . fromCharCode ( ( u0 & 31 ) << 6 | u1 ) ;
continue ;
}
var u2 = heap [ idx ++ ] & 63 ;
if ( ( u0 & 240 ) == 224 ) {
u0 = ( u0 & 15 ) << 12 | u1 << 6 | u2 ;
} else {
u0 = ( u0 & 7 ) << 18 | u1 << 12 | u2 << 6 | heap [ idx ++ ] & 63 ;
}
if ( u0 < 65536 ) {
str += String . fromCharCode ( u0 ) ;
} else {
var ch = u0 - 65536 ;
str += String . fromCharCode ( 55296 | ch >> 10 , 56320 | ch & 1023 ) ;
}
}
}
return str ;
}
function UTF8ToString ( ptr , maxBytesToRead ) {
return ptr ? UTF8ArrayToString ( HEAPU8 , ptr , maxBytesToRead ) : "" ;
}
function stringToUTF8Array ( str , heap , outIdx , maxBytesToWrite ) {
if ( ! ( maxBytesToWrite > 0 ) )
return 0 ;
var startIdx = outIdx ;
var endIdx = outIdx + maxBytesToWrite - 1 ;
for ( var i = 0 ; i < str . length ; ++ i ) {
var u = str . charCodeAt ( i ) ;
if ( u >= 55296 && u <= 57343 ) {
var u1 = str . charCodeAt ( ++ i ) ;
u = 65536 + ( ( u & 1023 ) << 10 ) | u1 & 1023 ;
}
if ( u <= 127 ) {
if ( outIdx >= endIdx )
break ;
heap [ outIdx ++ ] = u ;
} else if ( u <= 2047 ) {
if ( outIdx + 1 >= endIdx )
break ;
heap [ outIdx ++ ] = 192 | u >> 6 ;
heap [ outIdx ++ ] = 128 | u & 63 ;
} else if ( u <= 65535 ) {
if ( outIdx + 2 >= endIdx )
break ;
heap [ outIdx ++ ] = 224 | u >> 12 ;
heap [ outIdx ++ ] = 128 | u >> 6 & 63 ;
heap [ outIdx ++ ] = 128 | u & 63 ;
} else {
if ( outIdx + 3 >= endIdx )
break ;
heap [ outIdx ++ ] = 240 | u >> 18 ;
heap [ outIdx ++ ] = 128 | u >> 12 & 63 ;
heap [ outIdx ++ ] = 128 | u >> 6 & 63 ;
heap [ outIdx ++ ] = 128 | u & 63 ;
}
}
heap [ outIdx ] = 0 ;
return outIdx - startIdx ;
}
function stringToUTF8 ( str , outPtr , maxBytesToWrite ) {
return stringToUTF8Array ( str , HEAPU8 , outPtr , maxBytesToWrite ) ;
}
function lengthBytesUTF8 ( str ) {
var len = 0 ;
for ( var i = 0 ; i < str . length ; ++ i ) {
var u = str . charCodeAt ( i ) ;
if ( u >= 55296 && u <= 57343 )
u = 65536 + ( ( u & 1023 ) << 10 ) | str . charCodeAt ( ++ i ) & 1023 ;
if ( u <= 127 )
++ len ;
else if ( u <= 2047 )
len += 2 ;
else if ( u <= 65535 )
len += 3 ;
else
len += 4 ;
}
return len ;
}
function allocateUTF8 ( str ) {
var size = lengthBytesUTF8 ( str ) + 1 ;
var ret = _malloc ( size ) ;
if ( ret )
stringToUTF8Array ( str , HEAP8 , ret , size ) ;
return ret ;
}
function writeArrayToMemory ( array , buffer2 ) {
HEAP8 . set ( array , buffer2 ) ;
}
function alignUp ( x , multiple ) {
if ( x % multiple > 0 ) {
x += multiple - x % multiple ;
}
return x ;
}
var buffer , HEAP8 , HEAPU8 , HEAP16 , HEAP32 , HEAPF32 , HEAPF64 ;
function updateGlobalBufferAndViews ( buf ) {
buffer = buf ;
Module [ "HEAP8" ] = HEAP8 = new Int8Array ( buf ) ;
Module [ "HEAP16" ] = HEAP16 = new Int16Array ( buf ) ;
Module [ "HEAP32" ] = HEAP32 = new Int32Array ( buf ) ;
Module [ "HEAPU8" ] = HEAPU8 = new Uint8Array ( buf ) ;
Module [ "HEAPU16" ] = new Uint16Array ( buf ) ;
Module [ "HEAPU32" ] = new Uint32Array ( buf ) ;
Module [ "HEAPF32" ] = HEAPF32 = new Float32Array ( buf ) ;
Module [ "HEAPF64" ] = HEAPF64 = new Float64Array ( buf ) ;
}
Module [ "INITIAL_MEMORY" ] || 16777216 ;
var wasmTable ;
var _ _ATPRERUN _ _ = [ ] ;
var _ _ATINIT _ _ = [ ] ;
var _ _ATPOSTRUN _ _ = [ ] ;
function preRun ( ) {
if ( Module [ "preRun" ] ) {
if ( typeof Module [ "preRun" ] == "function" )
Module [ "preRun" ] = [ Module [ "preRun" ] ] ;
while ( Module [ "preRun" ] . length ) {
addOnPreRun ( Module [ "preRun" ] . shift ( ) ) ;
}
}
callRuntimeCallbacks ( _ _ATPRERUN _ _ ) ;
}
function initRuntime ( ) {
if ( ! Module [ "noFSInit" ] && ! FS . init . initialized )
FS . init ( ) ;
callRuntimeCallbacks ( _ _ATINIT _ _ ) ;
}
function postRun ( ) {
if ( Module [ "postRun" ] ) {
if ( typeof Module [ "postRun" ] == "function" )
Module [ "postRun" ] = [ Module [ "postRun" ] ] ;
while ( Module [ "postRun" ] . length ) {
addOnPostRun ( Module [ "postRun" ] . shift ( ) ) ;
}
}
callRuntimeCallbacks ( _ _ATPOSTRUN _ _ ) ;
}
function addOnPreRun ( cb ) {
_ _ATPRERUN _ _ . unshift ( cb ) ;
}
function addOnInit ( cb ) {
_ _ATINIT _ _ . unshift ( cb ) ;
}
function addOnPostRun ( cb ) {
_ _ATPOSTRUN _ _ . unshift ( cb ) ;
}
var runDependencies = 0 ;
var dependenciesFulfilled = null ;
function addRunDependency ( id ) {
runDependencies ++ ;
if ( Module [ "monitorRunDependencies" ] ) {
Module [ "monitorRunDependencies" ] ( runDependencies ) ;
}
}
function removeRunDependency ( id ) {
runDependencies -- ;
if ( Module [ "monitorRunDependencies" ] ) {
Module [ "monitorRunDependencies" ] ( runDependencies ) ;
}
if ( runDependencies == 0 ) {
if ( dependenciesFulfilled ) {
var callback = dependenciesFulfilled ;
dependenciesFulfilled = null ;
callback ( ) ;
}
}
}
Module [ "preloadedImages" ] = { } ;
Module [ "preloadedAudios" ] = { } ;
function abort ( what ) {
if ( Module [ "onAbort" ] ) {
Module [ "onAbort" ] ( what ) ;
}
what += "" ;
err ( what ) ;
ABORT = true ;
what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info." ;
var e = new WebAssembly . RuntimeError ( what ) ;
readyPromiseReject ( e ) ;
throw e ;
}
var dataURIPrefix = "data:application/octet-stream;base64," ;
function isDataURI ( filename ) {
return filename . startsWith ( dataURIPrefix ) ;
}
var wasmBinaryFile = " data : application / octet - stream ; base64 , AGFzbQEAAAABlAInYAF / AX9gA39 / fwF / YAF / AGACf38Bf2ACf38AYAV / f39 / fwF / YAR / f39 / AX9gA39 / fwBgBH9 + f38Bf2AAAX9gBX9 / f35 / AX5gA39 + fwF / YAF / AX5gAn9 + AX9gBH9 / fn8BfmADf35 / AX5gA39 / fgF / YAR / f35 / AX9gBn9 / f39 / fwF / YAR / f39 / AGADf39 + AX5gAn5 / AX9gA398fwBgBH9 / f38BfmADf39 / AX5gBn98f39 / fwF / YAV / f35 / fwF / YAV / fn9 / fwF / YAV / f39 / fwBgAn9 + AGACf38BfmACf3wAYAh / fn5 / f39 + fwF / YAV / f39 + fwBgAABgBX5 + f35 / AX5gBX9 / f39 / AX5gAnx / AXxgAn9 + AX4CeRQBYQFhAAIBYQFiAAABYQFjAAMBYQFkAAYBYQFlAAEBYQFmAAABYQFnAAYBYQFoAAABYQFpAAMBYQFqAAMBYQFrAAMBYQFsAAEBYQFtAAABYQFuAAUBYQFvAAEBYQFwAAMBYQFxAAEBYQFyAAABYQFzAAMBYQF0AAADggKAAgcCAgQAAQECAgANBA4EBwICAhwLEw0AFA0dAAAMDAIHHgwQAgIDAwICAQAIAAcIFBUEBgAADAAECAgDAQYAAgIBBgAfFwEBAwITAiAPBgIFEQMFAxgBCAIBAAAHBQEYABoSAQIABwQDIREIAyIGAAEBAwMAIwUbASQHAQsVAQMABQMEAA0bFw0BBAALCwMDDAwAAwAHJQMBAAgaAQECBQMBAgMDAAcHBwICAgImEQsICAsECQoJAgAAAAAAAAkFAAUFBQEGAwYGBgUSBgYBARIBAAIJBgABDgABAQ8ACQEEGQkJCQAAAAMECgoBAQIQAAAAAgEDAwAEAQoFAA4ACQAEBQFwAR8fBQcBAYACgIACBgkBfwFB0KDBAgsHvgI8AXUCAAF2AIABAXcAkwIBeADjAQF5APEBAXoA0QEBQQDQAQFCAM8BAUMAzgEBRADMAQFFAMsBAUYAyQEBRwCSAgFIAJECAUkAjwIBSgCKAgFLAOkBAUwA4gEBTQDhAQFOADwBTwD8AQFQAPkBAVEA + AEBUgDwAQFTAPoBAVQA4AEBVQAVAVYAGAFXAMcBAVgAzQEBWQDfAQFaAN4BAV8A3QEBJADkAQJhYQDcAQJiYQDbAQJjYQDaAQJkYQDZAQJlYQDYAQJmYQDXAQJnYQDqAQJoYQCcAQJpYQDWAQJqYQDVAQJrYQDUAQJsYQAvAm1hABsCbmEAygECb2EASAJwYQEAAnFhAGcCcmEA0wECc2EA6AECdGEA0gECdWEA9wECdmEA9gECd2EA9QECeGEA5wECeWEA5gECemEA5QEJQQEAQQELHsgBkAKNAo4CjAKLArcBiQKIAocChgKFAoQCgwKCAoECgAL / Af4B / QH7AVv0AfMB8gHvAe4B7QHsAesBCu + QCYACQAEBfyMAQRBrIgMgADYCDCADIAE2AgggAyACNgIEIAMoAgwEQCADKAIMIAMoAgg2AgAgAygCDCADKAIENgIECwvMDAEHfwJAIABFDQAgAEEIayIDIABBBGsoAgAiAUF4cSIAaiEFAkAgAUEBcQ0AIAFBA3FFDQEgAyADKAIAIgFrIgNB9JsBKAIASQ0BIAAgAWohACADQfibASgCAEcEQCABQf8BTQRAIAMoAggiAiABQQN2IgRBA3RBjJwBakYaIAIgAygCDCIBRgRAQeSbAUHkmwEoAgBBfiAEd3E2AgAMAwsgAiABNgIMIAEgAjYCCAwCCyADKAIYIQYCQCADIAMoAgwiAUcEQCADKAIIIgIgATYCDCABIAI2AggMAQsCQCADQRRqIgIoAgAiBA0AIANBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAQJAIAMgAygCHCICQQJ0QZSeAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQeibAUHomwEoAgBBfiACd3E2AgAMAwsgBkEQQRQgBigCECADRhtqIAE2AgAgAUUNAgsgASAGNgIYIAMoAhAiAgRAIAEgAjYCECACIAE2AhgLIAMoAhQiAkUNASABIAI2AhQgAiABNgIYDAELIAUoAgQiAUEDcUEDRw0AQeybASAANgIAIAUgAUF + cTYCBCADIABBAXI2AgQgACADaiAANgIADwsgAyAFTw0AIAUoAgQiAUEBcUUNAAJAIAFBAnFFBEAgBUH8mwEoAgBGBEBB / JsBIAM2AgBB8JsBQfCbASgCACAAaiIANgIAIAMgAEEBcjYCBCADQfibASgCAEcNA0HsmwFBADYCAEH4mwFBADYCAA8LIAVB + JsBKAIARgRAQfibASADNgIAQeybAUHsmwEoAgAgAGoiADYCACADIABBAXI2AgQgACADaiAANgIADwsgAUF4cSAAaiEAAkAgAUH / AU0EQCAFKAIIIgIgAUEDdiIEQQN0QYycAWpGGiACIAUoAgwiAUYEQEHkmwFB5JsBKAIAQX4gBHdxNgIADAILIAIgATYCDCABIAI2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgFHBEAgBSgCCCICQfSbASgCAEkaIAIgATYCDCABIAI2AggMAQsCQCAFQRRqIgIoAgAiBA0AIAVBEGoiAigCACIEDQBBACEBDAELA0AgAiEHIAQiAUEUaiICKAIAIgQNACABQRBqIQIgASgCECIEDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCICQQJ0QZSeAWoiBCgCAEYEQCAEIAE2AgAgAQ0BQeibAUHomwEoAgBBfiACd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAE2AgAgAUUNAQsgASAGNgIYIAUoAhAiAgRAIAEgAjYCECACIAE2AhgLIAUoAhQiAkUNACABIAI2AhQgAiABNgIYCyADIABBAXI2AgQgACADaiAANgIAIANB + JsBKAIARw0BQeybASAANgIADwsgBSABQX5xNgIEIAMgAEEBcjYCBCAAIANqIAA2AgALIABB / wFNBEAgAEEDdiIBQQN0QYycAWohAAJ / QeSbASgCACICQQEgAXQiAXFFBEBB5JsBIAEgAnI2AgAgAAwBCyAAKAIICyECIAAgAzYCCCACIAM2AgwgAyAANgIMIAMgAjYCCA8LQR8hAiADQgA3AhAgAEH ///8HTQRAIABBCHYiASABQYD+P2pBEHZBCHEiAXQiAiACQYDgH2pBEHZBBHEiAnQiBCAEQYCAD2pBEHZBAnEiBHRBD3YgASACciAEcmsiAUEBdCAAIAFBFWp2QQFxckEcaiECCyADIAI2AhwgAkECdEGUngFqIQECQAJAAkBB6JsBKAIAIgRBASACdCIHcUUEQEHomwEgBCAHcjYCACABIAM2AgAgAyABNgIYDAELIABBAEEZIAJBAXZrIAJBH0YbdCECIAEoAgAhAQNAIAEiBCgCBEF4cSAARg0CIAJBHXYhASACQQF0IQIgBCABQQRxaiIHQRBqKAIAIgENAAsgByADNgIQIAMgBDYCGAsgAyADNgIMIAMgAzYCCAwBCyAEKAIIIgAgAzYCDCAEIAM2AgggA0EANgIYIAMgBDYCDCADIAA2AggLQYScAUGEnAEoAgBBAWsiAEF/IAAbNgIACwtCAQF/IwBBEGsiASQAIAEgADYCDCABKAIMBEAgASgCDC0AAUEBcQRAIAEoAgwoAgQQFQsgASgCDBAVCyABQRBqJAALQwEBfyMAQRBrIgIkACACIAA2AgwgAiABNgIIIAIoAgwCfyMAQRBrIgAgAigCCDYCDCAAKAIMQQxqCxBFIAJBEGokAAuiLgEMfyMAQRBrIgwkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAQfQBTQRAQeSbASgCACIFQRAgAEELakF4cSAAQQtJGyIIQQN2IgJ2IgFBA3EEQCABQX9zQQFxIAJqIgNBA3QiAUGUnAFqKAIAIgRBCGoh
if ( ! isDataURI ( wasmBinaryFile ) ) {
wasmBinaryFile = locateFile ( wasmBinaryFile ) ;
}
function getBinary ( file ) {
try {
if ( file == wasmBinaryFile && wasmBinary ) {
return new Uint8Array ( wasmBinary ) ;
}
var binary = tryParseAsDataURI ( file ) ;
if ( binary ) {
return binary ;
}
if ( readBinary ) {
return readBinary ( file ) ;
} else {
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)" ;
}
} catch ( err2 ) {
abort ( err2 ) ;
}
}
function instantiateSync ( file , info ) {
var instance ;
var module2 ;
var binary ;
try {
binary = getBinary ( file ) ;
module2 = new WebAssembly . Module ( binary ) ;
instance = new WebAssembly . Instance ( module2 , info ) ;
} catch ( e ) {
var str = e . toString ( ) ;
err ( "failed to compile wasm module: " + str ) ;
if ( str . includes ( "imported Memory" ) || str . includes ( "memory import" ) ) {
err (
"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)."
) ;
}
throw e ;
}
return [ instance , module2 ] ;
}
function createWasm ( ) {
var info = { a : asmLibraryArg } ;
function receiveInstance ( instance , module2 ) {
var exports3 = instance . exports ;
Module [ "asm" ] = exports3 ;
wasmMemory = Module [ "asm" ] [ "u" ] ;
updateGlobalBufferAndViews ( wasmMemory . buffer ) ;
wasmTable = Module [ "asm" ] [ "pa" ] ;
addOnInit ( Module [ "asm" ] [ "v" ] ) ;
removeRunDependency ( ) ;
}
addRunDependency ( ) ;
if ( Module [ "instantiateWasm" ] ) {
try {
var exports2 = Module [ "instantiateWasm" ] ( info , receiveInstance ) ;
return exports2 ;
} catch ( e ) {
err ( "Module.instantiateWasm callback failed with error: " + e ) ;
return false ;
}
}
var result = instantiateSync ( wasmBinaryFile , info ) ;
receiveInstance ( result [ 0 ] ) ;
return Module [ "asm" ] ;
}
var tempDouble ;
var tempI64 ;
function callRuntimeCallbacks ( callbacks ) {
while ( callbacks . length > 0 ) {
var callback = callbacks . shift ( ) ;
if ( typeof callback == "function" ) {
callback ( Module ) ;
continue ;
}
var func = callback . func ;
if ( typeof func === "number" ) {
if ( callback . arg === void 0 ) {
wasmTable . get ( func ) ( ) ;
} else {
wasmTable . get ( func ) ( callback . arg ) ;
}
} else {
func ( callback . arg === void 0 ? null : callback . arg ) ;
}
}
}
function _gmtime _r ( time , tmPtr ) {
var date = new Date ( HEAP32 [ time >> 2 ] * 1e3 ) ;
HEAP32 [ tmPtr >> 2 ] = date . getUTCSeconds ( ) ;
HEAP32 [ tmPtr + 4 >> 2 ] = date . getUTCMinutes ( ) ;
HEAP32 [ tmPtr + 8 >> 2 ] = date . getUTCHours ( ) ;
HEAP32 [ tmPtr + 12 >> 2 ] = date . getUTCDate ( ) ;
HEAP32 [ tmPtr + 16 >> 2 ] = date . getUTCMonth ( ) ;
HEAP32 [ tmPtr + 20 >> 2 ] = date . getUTCFullYear ( ) - 1900 ;
HEAP32 [ tmPtr + 24 >> 2 ] = date . getUTCDay ( ) ;
HEAP32 [ tmPtr + 36 >> 2 ] = 0 ;
HEAP32 [ tmPtr + 32 >> 2 ] = 0 ;
var start = Date . UTC ( date . getUTCFullYear ( ) , 0 , 1 , 0 , 0 , 0 , 0 ) ;
var yday = ( date . getTime ( ) - start ) / ( 1e3 * 60 * 60 * 24 ) | 0 ;
HEAP32 [ tmPtr + 28 >> 2 ] = yday ;
if ( ! _gmtime _r . GMTString )
_gmtime _r . GMTString = allocateUTF8 ( "GMT" ) ;
HEAP32 [ tmPtr + 40 >> 2 ] = _gmtime _r . GMTString ;
return tmPtr ;
}
function _ _ _gmtime _r ( a0 , a1 ) {
return _gmtime _r ( a0 , a1 ) ;
}
var PATH = {
splitPath : function ( filename ) {
var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/ ;
return splitPathRe . exec ( filename ) . slice ( 1 ) ;
} ,
normalizeArray : function ( parts , allowAboveRoot ) {
var up = 0 ;
for ( var i = parts . length - 1 ; i >= 0 ; i -- ) {
var last = parts [ i ] ;
if ( last === "." ) {
parts . splice ( i , 1 ) ;
} else if ( last === ".." ) {
parts . splice ( i , 1 ) ;
up ++ ;
} else if ( up ) {
parts . splice ( i , 1 ) ;
up -- ;
}
}
if ( allowAboveRoot ) {
for ( ; up ; up -- ) {
parts . unshift ( ".." ) ;
}
}
return parts ;
} ,
normalize : function ( path ) {
var isAbsolute = path . charAt ( 0 ) === "/" , trailingSlash = path . substr ( - 1 ) === "/" ;
path = PATH . normalizeArray (
path . split ( "/" ) . filter ( function ( p ) {
return ! ! p ;
} ) ,
! isAbsolute
) . join ( "/" ) ;
if ( ! path && ! isAbsolute ) {
path = "." ;
}
if ( path && trailingSlash ) {
path += "/" ;
}
return ( isAbsolute ? "/" : "" ) + path ;
} ,
dirname : function ( path ) {
var result = PATH . splitPath ( path ) , root = result [ 0 ] , dir = result [ 1 ] ;
if ( ! root && ! dir ) {
return "." ;
}
if ( dir ) {
dir = dir . substr ( 0 , dir . length - 1 ) ;
}
return root + dir ;
} ,
basename : function ( path ) {
if ( path === "/" )
return "/" ;
path = PATH . normalize ( path ) ;
path = path . replace ( /\/$/ , "" ) ;
var lastSlash = path . lastIndexOf ( "/" ) ;
if ( lastSlash === - 1 )
return path ;
return path . substr ( lastSlash + 1 ) ;
} ,
extname : function ( path ) {
return PATH . splitPath ( path ) [ 3 ] ;
} ,
join : function ( ) {
var paths = Array . prototype . slice . call ( arguments , 0 ) ;
return PATH . normalize ( paths . join ( "/" ) ) ;
} ,
join2 : function ( l , r ) {
return PATH . normalize ( l + "/" + r ) ;
}
} ;
function getRandomDevice ( ) {
{
try {
var crypto _module = require ( "crypto" ) ;
return function ( ) {
return crypto _module [ "randomBytes" ] ( 1 ) [ 0 ] ;
} ;
} catch ( e ) {
}
}
return function ( ) {
abort ( "randomDevice" ) ;
} ;
}
var PATH _FS = {
resolve : function ( ) {
var resolvedPath = "" , resolvedAbsolute = false ;
for ( var i = arguments . length - 1 ; i >= - 1 && ! resolvedAbsolute ; i -- ) {
var path = i >= 0 ? arguments [ i ] : FS . cwd ( ) ;
if ( typeof path !== "string" ) {
throw new TypeError ( "Arguments to path.resolve must be strings" ) ;
} else if ( ! path ) {
return "" ;
}
resolvedPath = path + "/" + resolvedPath ;
resolvedAbsolute = path . charAt ( 0 ) === "/" ;
}
resolvedPath = PATH . normalizeArray (
resolvedPath . split ( "/" ) . filter ( function ( p ) {
return ! ! p ;
} ) ,
! resolvedAbsolute
) . join ( "/" ) ;
return ( resolvedAbsolute ? "/" : "" ) + resolvedPath || "." ;
} ,
relative : function ( from , to ) {
from = PATH _FS . resolve ( from ) . substr ( 1 ) ;
to = PATH _FS . resolve ( to ) . substr ( 1 ) ;
function trim ( arr ) {
var start = 0 ;
for ( ; start < arr . length ; start ++ ) {
if ( arr [ start ] !== "" )
break ;
}
var end = arr . length - 1 ;
for ( ; end >= 0 ; end -- ) {
if ( arr [ end ] !== "" )
break ;
}
if ( start > end )
return [ ] ;
return arr . slice ( start , end - start + 1 ) ;
}
var fromParts = trim ( from . split ( "/" ) ) ;
var toParts = trim ( to . split ( "/" ) ) ;
var length = Math . min ( fromParts . length , toParts . length ) ;
var samePartsLength = length ;
for ( var i = 0 ; i < length ; i ++ ) {
if ( fromParts [ i ] !== toParts [ i ] ) {
samePartsLength = i ;
break ;
}
}
var outputParts = [ ] ;
for ( var i = samePartsLength ; i < fromParts . length ; i ++ ) {
outputParts . push ( ".." ) ;
}
outputParts = outputParts . concat ( toParts . slice ( samePartsLength ) ) ;
return outputParts . join ( "/" ) ;
}
} ;
var TTY = {
ttys : [ ] ,
init : function ( ) {
} ,
shutdown : function ( ) {
} ,
register : function ( dev , ops ) {
TTY . ttys [ dev ] = { input : [ ] , output : [ ] , ops } ;
FS . registerDevice ( dev , TTY . stream _ops ) ;
} ,
stream _ops : {
open : function ( stream ) {
var tty = TTY . ttys [ stream . node . rdev ] ;
if ( ! tty ) {
throw new FS . ErrnoError ( 43 ) ;
}
stream . tty = tty ;
stream . seekable = false ;
} ,
close : function ( stream ) {
stream . tty . ops . flush ( stream . tty ) ;
} ,
flush : function ( stream ) {
stream . tty . ops . flush ( stream . tty ) ;
} ,
read : function ( stream , buffer2 , offset , length , pos ) {
if ( ! stream . tty || ! stream . tty . ops . get _char ) {
throw new FS . ErrnoError ( 60 ) ;
}
var bytesRead = 0 ;
for ( var i = 0 ; i < length ; i ++ ) {
var result ;
try {
result = stream . tty . ops . get _char ( stream . tty ) ;
} catch ( e ) {
throw new FS . ErrnoError ( 29 ) ;
}
if ( result === void 0 && bytesRead === 0 ) {
throw new FS . ErrnoError ( 6 ) ;
}
if ( result === null || result === void 0 )
break ;
bytesRead ++ ;
buffer2 [ offset + i ] = result ;
}
if ( bytesRead ) {
stream . node . timestamp = Date . now ( ) ;
}
return bytesRead ;
} ,
write : function ( stream , buffer2 , offset , length , pos ) {
if ( ! stream . tty || ! stream . tty . ops . put _char ) {
throw new FS . ErrnoError ( 60 ) ;
}
try {
for ( var i = 0 ; i < length ; i ++ ) {
stream . tty . ops . put _char ( stream . tty , buffer2 [ offset + i ] ) ;
}
} catch ( e ) {
throw new FS . ErrnoError ( 29 ) ;
}
if ( length ) {
stream . node . timestamp = Date . now ( ) ;
}
return i ;
}
} ,
default _tty _ops : {
get _char : function ( tty ) {
if ( ! tty . input . length ) {
var result = null ;
{
var BUFSIZE = 256 ;
var buf = Buffer . alloc ? Buffer . alloc ( BUFSIZE ) : new Buffer ( BUFSIZE ) ;
var bytesRead = 0 ;
try {
bytesRead = nodeFS . readSync (
process . stdin . fd ,
buf ,
0 ,
BUFSIZE ,
null
) ;
} catch ( e ) {
if ( e . toString ( ) . includes ( "EOF" ) )
bytesRead = 0 ;
else
throw e ;
}
if ( bytesRead > 0 ) {
result = buf . slice ( 0 , bytesRead ) . toString ( "utf-8" ) ;
} else {
result = null ;
}
}
if ( ! result ) {
return null ;
}
tty . input = intArrayFromString ( result , true ) ;
}
return tty . input . shift ( ) ;
} ,
put _char : function ( tty , val ) {
if ( val === null || val === 10 ) {
out ( UTF8ArrayToString ( tty . output , 0 ) ) ;
tty . output = [ ] ;
} else {
if ( val != 0 )
tty . output . push ( val ) ;
}
} ,
flush : function ( tty ) {
if ( tty . output && tty . output . length > 0 ) {
out ( UTF8ArrayToString ( tty . output , 0 ) ) ;
tty . output = [ ] ;
}
}
} ,
default _tty1 _ops : {
put _char : function ( tty , val ) {
if ( val === null || val === 10 ) {
err ( UTF8ArrayToString ( tty . output , 0 ) ) ;
tty . output = [ ] ;
} else {
if ( val != 0 )
tty . output . push ( val ) ;
}
} ,
flush : function ( tty ) {
if ( tty . output && tty . output . length > 0 ) {
err ( UTF8ArrayToString ( tty . output , 0 ) ) ;
tty . output = [ ] ;
}
}
}
} ;
function mmapAlloc ( size ) {
var alignedSize = alignMemory ( size , 65536 ) ;
var ptr = _malloc ( alignedSize ) ;
while ( size < alignedSize )
HEAP8 [ ptr + size ++ ] = 0 ;
return ptr ;
}
var MEMFS = {
ops _table : null ,
mount : function ( mount ) {
return MEMFS . createNode ( null , "/" , 16384 | 511 , 0 ) ;
} ,
createNode : function ( parent , name , mode , dev ) {
if ( FS . isBlkdev ( mode ) || FS . isFIFO ( mode ) ) {
throw new FS . ErrnoError ( 63 ) ;
}
if ( ! MEMFS . ops _table ) {
MEMFS . ops _table = {
dir : {
node : {
getattr : MEMFS . node _ops . getattr ,
setattr : MEMFS . node _ops . setattr ,
lookup : MEMFS . node _ops . lookup ,
mknod : MEMFS . node _ops . mknod ,
rename : MEMFS . node _ops . rename ,
unlink : MEMFS . node _ops . unlink ,
rmdir : MEMFS . node _ops . rmdir ,
readdir : MEMFS . node _ops . readdir ,
symlink : MEMFS . node _ops . symlink
} ,
stream : { llseek : MEMFS . stream _ops . llseek }
} ,
file : {
node : {
getattr : MEMFS . node _ops . getattr ,
setattr : MEMFS . node _ops . setattr
} ,
stream : {
llseek : MEMFS . stream _ops . llseek ,
read : MEMFS . stream _ops . read ,
write : MEMFS . stream _ops . write ,
allocate : MEMFS . stream _ops . allocate ,
mmap : MEMFS . stream _ops . mmap ,
msync : MEMFS . stream _ops . msync
}
} ,
link : {
node : {
getattr : MEMFS . node _ops . getattr ,
setattr : MEMFS . node _ops . setattr ,
readlink : MEMFS . node _ops . readlink
} ,
stream : { }
} ,
chrdev : {
node : {
getattr : MEMFS . node _ops . getattr ,
setattr : MEMFS . node _ops . setattr
} ,
stream : FS . chrdev _stream _ops
}
} ;
}
var node = FS . createNode ( parent , name , mode , dev ) ;
if ( FS . isDir ( node . mode ) ) {
node . node _ops = MEMFS . ops _table . dir . node ;
node . stream _ops = MEMFS . ops _table . dir . stream ;
node . contents = { } ;
} else if ( FS . isFile ( node . mode ) ) {
node . node _ops = MEMFS . ops _table . file . node ;
node . stream _ops = MEMFS . ops _table . file . stream ;
node . usedBytes = 0 ;
node . contents = null ;
} else if ( FS . isLink ( node . mode ) ) {
node . node _ops = MEMFS . ops _table . link . node ;
node . stream _ops = MEMFS . ops _table . link . stream ;
} else if ( FS . isChrdev ( node . mode ) ) {
node . node _ops = MEMFS . ops _table . chrdev . node ;
node . stream _ops = MEMFS . ops _table . chrdev . stream ;
}
node . timestamp = Date . now ( ) ;
if ( parent ) {
parent . contents [ name ] = node ;
parent . timestamp = node . timestamp ;
}
return node ;
} ,
getFileDataAsTypedArray : function ( node ) {
if ( ! node . contents )
return new Uint8Array ( 0 ) ;
if ( node . contents . subarray )
return node . contents . subarray ( 0 , node . usedBytes ) ;
return new Uint8Array ( node . contents ) ;
} ,
expandFileStorage : function ( node , newCapacity ) {
var prevCapacity = node . contents ? node . contents . length : 0 ;
if ( prevCapacity >= newCapacity )
return ;
var CAPACITY _DOUBLING _MAX = 1024 * 1024 ;
newCapacity = Math . max (
newCapacity ,
prevCapacity * ( prevCapacity < CAPACITY _DOUBLING _MAX ? 2 : 1.125 ) >>> 0
) ;
if ( prevCapacity != 0 )
newCapacity = Math . max ( newCapacity , 256 ) ;
var oldContents = node . contents ;
node . contents = new Uint8Array ( newCapacity ) ;
if ( node . usedBytes > 0 )
node . contents . set ( oldContents . subarray ( 0 , node . usedBytes ) , 0 ) ;
} ,
resizeFileStorage : function ( node , newSize ) {
if ( node . usedBytes == newSize )
return ;
if ( newSize == 0 ) {
node . contents = null ;
node . usedBytes = 0 ;
} else {
var oldContents = node . contents ;
node . contents = new Uint8Array ( newSize ) ;
if ( oldContents ) {
node . contents . set (
oldContents . subarray ( 0 , Math . min ( newSize , node . usedBytes ) )
) ;
}
node . usedBytes = newSize ;
}
} ,
node _ops : {
getattr : function ( node ) {
var attr = { } ;
attr . dev = FS . isChrdev ( node . mode ) ? node . id : 1 ;
attr . ino = node . id ;
attr . mode = node . mode ;
attr . nlink = 1 ;
attr . uid = 0 ;
attr . gid = 0 ;
attr . rdev = node . rdev ;
if ( FS . isDir ( node . mode ) ) {
attr . size = 4096 ;
} else if ( FS . isFile ( node . mode ) ) {
attr . size = node . usedBytes ;
} else if ( FS . isLink ( node . mode ) ) {
attr . size = node . link . length ;
} else {
attr . size = 0 ;
}
attr . atime = new Date ( node . timestamp ) ;
attr . mtime = new Date ( node . timestamp ) ;
attr . ctime = new Date ( node . timestamp ) ;
attr . blksize = 4096 ;
attr . blocks = Math . ceil ( attr . size / attr . blksize ) ;
return attr ;
} ,
setattr : function ( node , attr ) {
if ( attr . mode !== void 0 ) {
node . mode = attr . mode ;
}
if ( attr . timestamp !== void 0 ) {
node . timestamp = attr . timestamp ;
}
if ( attr . size !== void 0 ) {
MEMFS . resizeFileStorage ( node , attr . size ) ;
}
} ,
lookup : function ( parent , name ) {
throw FS . genericErrors [ 44 ] ;
} ,
mknod : function ( parent , name , mode , dev ) {
return MEMFS . createNode ( parent , name , mode , dev ) ;
} ,
rename : function ( old _node , new _dir , new _name ) {
if ( FS . isDir ( old _node . mode ) ) {
var new _node ;
try {
new _node = FS . lookupNode ( new _dir , new _name ) ;
} catch ( e ) {
}
if ( new _node ) {
for ( var i in new _node . contents ) {
throw new FS . ErrnoError ( 55 ) ;
}
}
}
delete old _node . parent . contents [ old _node . name ] ;
old _node . parent . timestamp = Date . now ( ) ;
old _node . name = new _name ;
new _dir . contents [ new _name ] = old _node ;
new _dir . timestamp = old _node . parent . timestamp ;
old _node . parent = new _dir ;
} ,
unlink : function ( parent , name ) {
delete parent . contents [ name ] ;
parent . timestamp = Date . now ( ) ;
} ,
rmdir : function ( parent , name ) {
var node = FS . lookupNode ( parent , name ) ;
for ( var i in node . contents ) {
throw new FS . ErrnoError ( 55 ) ;
}
delete parent . contents [ name ] ;
parent . timestamp = Date . now ( ) ;
} ,
readdir : function ( node ) {
var entries = [ "." , ".." ] ;
for ( var key2 in node . contents ) {
if ( ! node . contents . hasOwnProperty ( key2 ) ) {
continue ;
}
entries . push ( key2 ) ;
}
return entries ;
} ,
symlink : function ( parent , newname , oldpath ) {
var node = MEMFS . createNode ( parent , newname , 511 | 40960 , 0 ) ;
node . link = oldpath ;
return node ;
} ,
readlink : function ( node ) {
if ( ! FS . isLink ( node . mode ) ) {
throw new FS . ErrnoError ( 28 ) ;
}
return node . link ;
}
} ,
stream _ops : {
read : function ( stream , buffer2 , offset , length , position ) {
var contents = stream . node . contents ;
if ( position >= stream . node . usedBytes )
return 0 ;
var size = Math . min ( stream . node . usedBytes - position , length ) ;
if ( size > 8 && contents . subarray ) {
buffer2 . set ( contents . subarray ( position , position + size ) , offset ) ;
} else {
for ( var i = 0 ; i < size ; i ++ )
buffer2 [ offset + i ] = contents [ position + i ] ;
}
return size ;
} ,
write : function ( stream , buffer2 , offset , length , position , canOwn ) {
if ( buffer2 . buffer === HEAP8 . buffer ) {
canOwn = false ;
}
if ( ! length )
return 0 ;
var node = stream . node ;
node . timestamp = Date . now ( ) ;
if ( buffer2 . subarray && ( ! node . contents || node . contents . subarray ) ) {
if ( canOwn ) {
node . contents = buffer2 . subarray ( offset , offset + length ) ;
node . usedBytes = length ;
return length ;
} else if ( node . usedBytes === 0 && position === 0 ) {
node . contents = buffer2 . slice ( offset , offset + length ) ;
node . usedBytes = length ;
return length ;
} else if ( position + length <= node . usedBytes ) {
node . contents . set (
buffer2 . subarray ( offset , offset + length ) ,
position
) ;
return length ;
}
}
MEMFS . expandFileStorage ( node , position + length ) ;
if ( node . contents . subarray && buffer2 . subarray ) {
node . contents . set (
buffer2 . subarray ( offset , offset + length ) ,
position
) ;
} else {
for ( var i = 0 ; i < length ; i ++ ) {
node . contents [ position + i ] = buffer2 [ offset + i ] ;
}
}
node . usedBytes = Math . max ( node . usedBytes , position + length ) ;
return length ;
} ,
llseek : function ( stream , offset , whence ) {
var position = offset ;
if ( whence === 1 ) {
position += stream . position ;
} else if ( whence === 2 ) {
if ( FS . isFile ( stream . node . mode ) ) {
position += stream . node . usedBytes ;
}
}
if ( position < 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
return position ;
} ,
allocate : function ( stream , offset , length ) {
MEMFS . expandFileStorage ( stream . node , offset + length ) ;
stream . node . usedBytes = Math . max (
stream . node . usedBytes ,
offset + length
) ;
} ,
mmap : function ( stream , address , length , position , prot , flags ) {
if ( address !== 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
if ( ! FS . isFile ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 43 ) ;
}
var ptr ;
var allocated ;
var contents = stream . node . contents ;
if ( ! ( flags & 2 ) && contents . buffer === buffer ) {
allocated = false ;
ptr = contents . byteOffset ;
} else {
if ( position > 0 || position + length < contents . length ) {
if ( contents . subarray ) {
contents = contents . subarray ( position , position + length ) ;
} else {
contents = Array . prototype . slice . call (
contents ,
position ,
position + length
) ;
}
}
allocated = true ;
ptr = mmapAlloc ( length ) ;
if ( ! ptr ) {
throw new FS . ErrnoError ( 48 ) ;
}
HEAP8 . set ( contents , ptr ) ;
}
return { ptr , allocated } ;
} ,
msync : function ( stream , buffer2 , offset , length , mmapFlags ) {
if ( ! FS . isFile ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 43 ) ;
}
if ( mmapFlags & 2 ) {
return 0 ;
}
MEMFS . stream _ops . write (
stream ,
buffer2 ,
0 ,
length ,
offset ,
false
) ;
return 0 ;
}
}
} ;
var ERRNO _CODES = {
EPERM : 63 ,
ENOENT : 44 ,
ESRCH : 71 ,
EINTR : 27 ,
EIO : 29 ,
ENXIO : 60 ,
E2BIG : 1 ,
ENOEXEC : 45 ,
EBADF : 8 ,
ECHILD : 12 ,
EAGAIN : 6 ,
EWOULDBLOCK : 6 ,
ENOMEM : 48 ,
EACCES : 2 ,
EFAULT : 21 ,
ENOTBLK : 105 ,
EBUSY : 10 ,
EEXIST : 20 ,
EXDEV : 75 ,
ENODEV : 43 ,
ENOTDIR : 54 ,
EISDIR : 31 ,
EINVAL : 28 ,
ENFILE : 41 ,
EMFILE : 33 ,
ENOTTY : 59 ,
ETXTBSY : 74 ,
EFBIG : 22 ,
ENOSPC : 51 ,
ESPIPE : 70 ,
EROFS : 69 ,
EMLINK : 34 ,
EPIPE : 64 ,
EDOM : 18 ,
ERANGE : 68 ,
ENOMSG : 49 ,
EIDRM : 24 ,
ECHRNG : 106 ,
EL2NSYNC : 156 ,
EL3HLT : 107 ,
EL3RST : 108 ,
ELNRNG : 109 ,
EUNATCH : 110 ,
ENOCSI : 111 ,
EL2HLT : 112 ,
EDEADLK : 16 ,
ENOLCK : 46 ,
EBADE : 113 ,
EBADR : 114 ,
EXFULL : 115 ,
ENOANO : 104 ,
EBADRQC : 103 ,
EBADSLT : 102 ,
EDEADLOCK : 16 ,
EBFONT : 101 ,
ENOSTR : 100 ,
ENODATA : 116 ,
ETIME : 117 ,
ENOSR : 118 ,
ENONET : 119 ,
ENOPKG : 120 ,
EREMOTE : 121 ,
ENOLINK : 47 ,
EADV : 122 ,
ESRMNT : 123 ,
ECOMM : 124 ,
EPROTO : 65 ,
EMULTIHOP : 36 ,
EDOTDOT : 125 ,
EBADMSG : 9 ,
ENOTUNIQ : 126 ,
EBADFD : 127 ,
EREMCHG : 128 ,
ELIBACC : 129 ,
ELIBBAD : 130 ,
ELIBSCN : 131 ,
ELIBMAX : 132 ,
ELIBEXEC : 133 ,
ENOSYS : 52 ,
ENOTEMPTY : 55 ,
ENAMETOOLONG : 37 ,
ELOOP : 32 ,
EOPNOTSUPP : 138 ,
EPFNOSUPPORT : 139 ,
ECONNRESET : 15 ,
ENOBUFS : 42 ,
EAFNOSUPPORT : 5 ,
EPROTOTYPE : 67 ,
ENOTSOCK : 57 ,
ENOPROTOOPT : 50 ,
ESHUTDOWN : 140 ,
ECONNREFUSED : 14 ,
EADDRINUSE : 3 ,
ECONNABORTED : 13 ,
ENETUNREACH : 40 ,
ENETDOWN : 38 ,
ETIMEDOUT : 73 ,
EHOSTDOWN : 142 ,
EHOSTUNREACH : 23 ,
EINPROGRESS : 26 ,
EALREADY : 7 ,
EDESTADDRREQ : 17 ,
EMSGSIZE : 35 ,
EPROTONOSUPPORT : 66 ,
ESOCKTNOSUPPORT : 137 ,
EADDRNOTAVAIL : 4 ,
ENETRESET : 39 ,
EISCONN : 30 ,
ENOTCONN : 53 ,
ETOOMANYREFS : 141 ,
EUSERS : 136 ,
EDQUOT : 19 ,
ESTALE : 72 ,
ENOTSUP : 138 ,
ENOMEDIUM : 148 ,
EILSEQ : 25 ,
EOVERFLOW : 61 ,
ECANCELED : 11 ,
ENOTRECOVERABLE : 56 ,
EOWNERDEAD : 62 ,
ESTRPIPE : 135
} ;
var NODEFS = {
isWindows : false ,
staticInit : function ( ) {
NODEFS . isWindows = ! ! process . platform . match ( /^win/ ) ;
var flags = { fs : fs . constants } ;
if ( flags [ "fs" ] ) {
flags = flags [ "fs" ] ;
}
NODEFS . flagsForNodeMap = {
1024 : flags [ "O_APPEND" ] ,
64 : flags [ "O_CREAT" ] ,
128 : flags [ "O_EXCL" ] ,
256 : flags [ "O_NOCTTY" ] ,
0 : flags [ "O_RDONLY" ] ,
2 : flags [ "O_RDWR" ] ,
4096 : flags [ "O_SYNC" ] ,
512 : flags [ "O_TRUNC" ] ,
1 : flags [ "O_WRONLY" ]
} ;
} ,
bufferFrom : function ( arrayBuffer ) {
return Buffer [ "alloc" ] ? Buffer . from ( arrayBuffer ) : new Buffer ( arrayBuffer ) ;
} ,
convertNodeCode : function ( e ) {
var code = e . code ;
return ERRNO _CODES [ code ] ;
} ,
mount : function ( mount ) {
return NODEFS . createNode ( null , "/" , NODEFS . getMode ( mount . opts . root ) , 0 ) ;
} ,
createNode : function ( parent , name , mode , dev ) {
if ( ! FS . isDir ( mode ) && ! FS . isFile ( mode ) && ! FS . isLink ( mode ) ) {
throw new FS . ErrnoError ( 28 ) ;
}
var node = FS . createNode ( parent , name , mode ) ;
node . node _ops = NODEFS . node _ops ;
node . stream _ops = NODEFS . stream _ops ;
return node ;
} ,
getMode : function ( path ) {
var stat ;
try {
stat = fs . lstatSync ( path ) ;
if ( NODEFS . isWindows ) {
stat . mode = stat . mode | ( stat . mode & 292 ) >> 2 ;
}
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
return stat . mode ;
} ,
realPath : function ( node ) {
var parts = [ ] ;
while ( node . parent !== node ) {
parts . push ( node . name ) ;
node = node . parent ;
}
parts . push ( node . mount . opts . root ) ;
parts . reverse ( ) ;
return PATH . join . apply ( null , parts ) ;
} ,
flagsForNode : function ( flags ) {
flags &= ~ 2097152 ;
flags &= ~ 2048 ;
flags &= ~ 32768 ;
flags &= ~ 524288 ;
var newFlags = 0 ;
for ( var k in NODEFS . flagsForNodeMap ) {
if ( flags & k ) {
newFlags |= NODEFS . flagsForNodeMap [ k ] ;
flags ^= k ;
}
}
if ( ! flags ) {
return newFlags ;
} else {
throw new FS . ErrnoError ( 28 ) ;
}
} ,
node _ops : {
getattr : function ( node ) {
var path = NODEFS . realPath ( node ) ;
var stat ;
try {
stat = fs . lstatSync ( path ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
if ( NODEFS . isWindows && ! stat . blksize ) {
stat . blksize = 4096 ;
}
if ( NODEFS . isWindows && ! stat . blocks ) {
stat . blocks = ( stat . size + stat . blksize - 1 ) / stat . blksize | 0 ;
}
return {
dev : stat . dev ,
ino : stat . ino ,
mode : stat . mode ,
nlink : stat . nlink ,
uid : stat . uid ,
gid : stat . gid ,
rdev : stat . rdev ,
size : stat . size ,
atime : stat . atime ,
mtime : stat . mtime ,
ctime : stat . ctime ,
blksize : stat . blksize ,
blocks : stat . blocks
} ;
} ,
setattr : function ( node , attr ) {
var path = NODEFS . realPath ( node ) ;
try {
if ( attr . mode !== void 0 ) {
fs . chmodSync ( path , attr . mode ) ;
node . mode = attr . mode ;
}
if ( attr . timestamp !== void 0 ) {
var date = new Date ( attr . timestamp ) ;
fs . utimesSync ( path , date , date ) ;
}
if ( attr . size !== void 0 ) {
fs . truncateSync ( path , attr . size ) ;
}
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
lookup : function ( parent , name ) {
var path = PATH . join2 ( NODEFS . realPath ( parent ) , name ) ;
var mode = NODEFS . getMode ( path ) ;
return NODEFS . createNode ( parent , name , mode ) ;
} ,
mknod : function ( parent , name , mode , dev ) {
var node = NODEFS . createNode ( parent , name , mode , dev ) ;
var path = NODEFS . realPath ( node ) ;
try {
if ( FS . isDir ( node . mode ) ) {
fs . mkdirSync ( path , node . mode ) ;
} else {
fs . writeFileSync ( path , "" , { mode : node . mode } ) ;
}
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
return node ;
} ,
rename : function ( oldNode , newDir , newName ) {
var oldPath = NODEFS . realPath ( oldNode ) ;
var newPath = PATH . join2 ( NODEFS . realPath ( newDir ) , newName ) ;
try {
fs . renameSync ( oldPath , newPath ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
oldNode . name = newName ;
} ,
unlink : function ( parent , name ) {
var path = PATH . join2 ( NODEFS . realPath ( parent ) , name ) ;
try {
fs . unlinkSync ( path ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
rmdir : function ( parent , name ) {
var path = PATH . join2 ( NODEFS . realPath ( parent ) , name ) ;
try {
fs . rmdirSync ( path ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
readdir : function ( node ) {
var path = NODEFS . realPath ( node ) ;
try {
return fs . readdirSync ( path ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
symlink : function ( parent , newName , oldPath ) {
var newPath = PATH . join2 ( NODEFS . realPath ( parent ) , newName ) ;
try {
fs . symlinkSync ( oldPath , newPath ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
readlink : function ( node ) {
var path = NODEFS . realPath ( node ) ;
try {
path = fs . readlinkSync ( path ) ;
path = NODEJS _PATH . relative (
NODEJS _PATH . resolve ( node . mount . opts . root ) ,
path
) ;
return path ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
}
} ,
stream _ops : {
open : function ( stream ) {
var path = NODEFS . realPath ( stream . node ) ;
try {
if ( FS . isFile ( stream . node . mode ) ) {
stream . nfd = fs . openSync ( path , NODEFS . flagsForNode ( stream . flags ) ) ;
}
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
close : function ( stream ) {
try {
if ( FS . isFile ( stream . node . mode ) && stream . nfd ) {
fs . closeSync ( stream . nfd ) ;
}
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
read : function ( stream , buffer2 , offset , length , position ) {
if ( length === 0 )
return 0 ;
try {
return fs . readSync (
stream . nfd ,
NODEFS . bufferFrom ( buffer2 . buffer ) ,
offset ,
length ,
position
) ;
} catch ( e ) {
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
write : function ( stream , buffer2 , offset , length , position ) {
try {
return fs . writeSync (
stream . nfd ,
NODEFS . bufferFrom ( buffer2 . buffer ) ,
offset ,
length ,
position
) ;
} catch ( e ) {
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
} ,
llseek : function ( stream , offset , whence ) {
var position = offset ;
if ( whence === 1 ) {
position += stream . position ;
} else if ( whence === 2 ) {
if ( FS . isFile ( stream . node . mode ) ) {
try {
var stat = fs . fstatSync ( stream . nfd ) ;
position += stat . size ;
} catch ( e ) {
throw new FS . ErrnoError ( NODEFS . convertNodeCode ( e ) ) ;
}
}
}
if ( position < 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
return position ;
} ,
mmap : function ( stream , address , length , position , prot , flags ) {
if ( address !== 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
if ( ! FS . isFile ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 43 ) ;
}
var ptr = mmapAlloc ( length ) ;
NODEFS . stream _ops . read ( stream , HEAP8 , ptr , length , position ) ;
return { ptr , allocated : true } ;
} ,
msync : function ( stream , buffer2 , offset , length , mmapFlags ) {
if ( ! FS . isFile ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 43 ) ;
}
if ( mmapFlags & 2 ) {
return 0 ;
}
NODEFS . stream _ops . write (
stream ,
buffer2 ,
0 ,
length ,
offset ,
false
) ;
return 0 ;
}
}
} ;
var NODERAWFS = {
lookupPath : function ( path ) {
return { path , node : { mode : NODEFS . getMode ( path ) } } ;
} ,
createStandardStreams : function ( ) {
FS . streams [ 0 ] = {
fd : 0 ,
nfd : 0 ,
position : 0 ,
path : "" ,
flags : 0 ,
tty : true ,
seekable : false
} ;
for ( var i = 1 ; i < 3 ; i ++ ) {
FS . streams [ i ] = {
fd : i ,
nfd : i ,
position : 0 ,
path : "" ,
flags : 577 ,
tty : true ,
seekable : false
} ;
}
} ,
cwd : function ( ) {
return process . cwd ( ) ;
} ,
chdir : function ( ) {
process . chdir . apply ( void 0 , arguments ) ;
} ,
mknod : function ( path , mode ) {
if ( FS . isDir ( path ) ) {
fs . mkdirSync ( path , mode ) ;
} else {
fs . writeFileSync ( path , "" , { mode } ) ;
}
} ,
mkdir : function ( ) {
fs . mkdirSync . apply ( void 0 , arguments ) ;
} ,
symlink : function ( ) {
fs . symlinkSync . apply ( void 0 , arguments ) ;
} ,
rename : function ( ) {
fs . renameSync . apply ( void 0 , arguments ) ;
} ,
rmdir : function ( ) {
fs . rmdirSync . apply ( void 0 , arguments ) ;
} ,
readdir : function ( ) {
fs . readdirSync . apply ( void 0 , arguments ) ;
} ,
unlink : function ( ) {
fs . unlinkSync . apply ( void 0 , arguments ) ;
} ,
readlink : function ( ) {
return fs . readlinkSync . apply ( void 0 , arguments ) ;
} ,
stat : function ( ) {
return fs . statSync . apply ( void 0 , arguments ) ;
} ,
lstat : function ( ) {
return fs . lstatSync . apply ( void 0 , arguments ) ;
} ,
chmod : function ( ) {
fs . chmodSync . apply ( void 0 , arguments ) ;
} ,
fchmod : function ( ) {
fs . fchmodSync . apply ( void 0 , arguments ) ;
} ,
chown : function ( ) {
fs . chownSync . apply ( void 0 , arguments ) ;
} ,
fchown : function ( ) {
fs . fchownSync . apply ( void 0 , arguments ) ;
} ,
truncate : function ( ) {
fs . truncateSync . apply ( void 0 , arguments ) ;
} ,
ftruncate : function ( fd , len ) {
if ( len < 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
fs . ftruncateSync . apply ( void 0 , arguments ) ;
} ,
utime : function ( ) {
fs . utimesSync . apply ( void 0 , arguments ) ;
} ,
open : function ( path , flags , mode , suggestFD ) {
if ( typeof flags === "string" ) {
flags = VFS . modeStringToFlags ( flags ) ;
}
var nfd = fs . openSync ( path , NODEFS . flagsForNode ( flags ) , mode ) ;
var fd = suggestFD != null ? suggestFD : FS . nextfd ( nfd ) ;
var stream = {
fd ,
nfd ,
position : 0 ,
path ,
flags ,
seekable : true
} ;
FS . streams [ fd ] = stream ;
return stream ;
} ,
close : function ( stream ) {
if ( ! stream . stream _ops ) {
fs . closeSync ( stream . nfd ) ;
}
FS . closeStream ( stream . fd ) ;
} ,
llseek : function ( stream , offset , whence ) {
if ( stream . stream _ops ) {
return VFS . llseek ( stream , offset , whence ) ;
}
var position = offset ;
if ( whence === 1 ) {
position += stream . position ;
} else if ( whence === 2 ) {
position += fs . fstatSync ( stream . nfd ) . size ;
} else if ( whence !== 0 ) {
throw new FS . ErrnoError ( ERRNO _CODES . EINVAL ) ;
}
if ( position < 0 ) {
throw new FS . ErrnoError ( ERRNO _CODES . EINVAL ) ;
}
stream . position = position ;
return position ;
} ,
read : function ( stream , buffer2 , offset , length , position ) {
if ( stream . stream _ops ) {
return VFS . read ( stream , buffer2 , offset , length , position ) ;
}
var seeking = typeof position !== "undefined" ;
if ( ! seeking && stream . seekable )
position = stream . position ;
var bytesRead = fs . readSync (
stream . nfd ,
NODEFS . bufferFrom ( buffer2 . buffer ) ,
offset ,
length ,
position
) ;
if ( ! seeking )
stream . position += bytesRead ;
return bytesRead ;
} ,
write : function ( stream , buffer2 , offset , length , position ) {
if ( stream . stream _ops ) {
return VFS . write ( stream , buffer2 , offset , length , position ) ;
}
if ( stream . flags & + "1024" ) {
FS . llseek ( stream , 0 , + "2" ) ;
}
var seeking = typeof position !== "undefined" ;
if ( ! seeking && stream . seekable )
position = stream . position ;
var bytesWritten = fs . writeSync (
stream . nfd ,
NODEFS . bufferFrom ( buffer2 . buffer ) ,
offset ,
length ,
position
) ;
if ( ! seeking )
stream . position += bytesWritten ;
return bytesWritten ;
} ,
allocate : function ( ) {
throw new FS . ErrnoError ( ERRNO _CODES . EOPNOTSUPP ) ;
} ,
mmap : function ( stream , address , length , position , prot , flags ) {
if ( stream . stream _ops ) {
return VFS . mmap ( stream , address , length , position , prot , flags ) ;
}
if ( address !== 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
var ptr = mmapAlloc ( length ) ;
FS . read ( stream , HEAP8 , ptr , length , position ) ;
return { ptr , allocated : true } ;
} ,
msync : function ( stream , buffer2 , offset , length , mmapFlags ) {
if ( stream . stream _ops ) {
return VFS . msync ( stream , buffer2 , offset , length , mmapFlags ) ;
}
if ( mmapFlags & 2 ) {
return 0 ;
}
FS . write ( stream , buffer2 , 0 , length , offset ) ;
return 0 ;
} ,
munmap : function ( ) {
return 0 ;
} ,
ioctl : function ( ) {
throw new FS . ErrnoError ( ERRNO _CODES . ENOTTY ) ;
}
} ;
var FS = {
root : null ,
mounts : [ ] ,
devices : { } ,
streams : [ ] ,
nextInode : 1 ,
nameTable : null ,
currentPath : "/" ,
initialized : false ,
ignorePermissions : true ,
trackingDelegate : { } ,
tracking : { openFlags : { READ : 1 , WRITE : 2 } } ,
ErrnoError : null ,
genericErrors : { } ,
filesystems : null ,
syncFSRequests : 0 ,
lookupPath : function ( path , opts ) {
path = PATH _FS . resolve ( FS . cwd ( ) , path ) ;
opts = opts || { } ;
if ( ! path )
return { path : "" , node : null } ;
var defaults = { follow _mount : true , recurse _count : 0 } ;
for ( var key2 in defaults ) {
if ( opts [ key2 ] === void 0 ) {
opts [ key2 ] = defaults [ key2 ] ;
}
}
if ( opts . recurse _count > 8 ) {
throw new FS . ErrnoError ( 32 ) ;
}
var parts = PATH . normalizeArray (
path . split ( "/" ) . filter ( function ( p ) {
return ! ! p ;
} ) ,
false
) ;
var current = FS . root ;
var current _path = "/" ;
for ( var i = 0 ; i < parts . length ; i ++ ) {
var islast = i === parts . length - 1 ;
if ( islast && opts . parent ) {
break ;
}
current = FS . lookupNode ( current , parts [ i ] ) ;
current _path = PATH . join2 ( current _path , parts [ i ] ) ;
if ( FS . isMountpoint ( current ) ) {
if ( ! islast || islast && opts . follow _mount ) {
current = current . mounted . root ;
}
}
if ( ! islast || opts . follow ) {
var count = 0 ;
while ( FS . isLink ( current . mode ) ) {
var link = FS . readlink ( current _path ) ;
current _path = PATH _FS . resolve ( PATH . dirname ( current _path ) , link ) ;
var lookup = FS . lookupPath ( current _path , {
recurse _count : opts . recurse _count
} ) ;
current = lookup . node ;
if ( count ++ > 40 ) {
throw new FS . ErrnoError ( 32 ) ;
}
}
}
}
return { path : current _path , node : current } ;
} ,
getPath : function ( node ) {
var path ;
while ( true ) {
if ( FS . isRoot ( node ) ) {
var mount = node . mount . mountpoint ;
if ( ! path )
return mount ;
return mount [ mount . length - 1 ] !== "/" ? mount + "/" + path : mount + path ;
}
path = path ? node . name + "/" + path : node . name ;
node = node . parent ;
}
} ,
hashName : function ( parentid , name ) {
var hash = 0 ;
for ( var i = 0 ; i < name . length ; i ++ ) {
hash = ( hash << 5 ) - hash + name . charCodeAt ( i ) | 0 ;
}
return ( parentid + hash >>> 0 ) % FS . nameTable . length ;
} ,
hashAddNode : function ( node ) {
var hash = FS . hashName ( node . parent . id , node . name ) ;
node . name _next = FS . nameTable [ hash ] ;
FS . nameTable [ hash ] = node ;
} ,
hashRemoveNode : function ( node ) {
var hash = FS . hashName ( node . parent . id , node . name ) ;
if ( FS . nameTable [ hash ] === node ) {
FS . nameTable [ hash ] = node . name _next ;
} else {
var current = FS . nameTable [ hash ] ;
while ( current ) {
if ( current . name _next === node ) {
current . name _next = node . name _next ;
break ;
}
current = current . name _next ;
}
}
} ,
lookupNode : function ( parent , name ) {
var errCode = FS . mayLookup ( parent ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode , parent ) ;
}
var hash = FS . hashName ( parent . id , name ) ;
for ( var node = FS . nameTable [ hash ] ; node ; node = node . name _next ) {
var nodeName = node . name ;
if ( node . parent . id === parent . id && nodeName === name ) {
return node ;
}
}
return FS . lookup ( parent , name ) ;
} ,
createNode : function ( parent , name , mode , rdev ) {
var node = new FS . FSNode ( parent , name , mode , rdev ) ;
FS . hashAddNode ( node ) ;
return node ;
} ,
destroyNode : function ( node ) {
FS . hashRemoveNode ( node ) ;
} ,
isRoot : function ( node ) {
return node === node . parent ;
} ,
isMountpoint : function ( node ) {
return ! ! node . mounted ;
} ,
isFile : function ( mode ) {
return ( mode & 61440 ) === 32768 ;
} ,
isDir : function ( mode ) {
return ( mode & 61440 ) === 16384 ;
} ,
isLink : function ( mode ) {
return ( mode & 61440 ) === 40960 ;
} ,
isChrdev : function ( mode ) {
return ( mode & 61440 ) === 8192 ;
} ,
isBlkdev : function ( mode ) {
return ( mode & 61440 ) === 24576 ;
} ,
isFIFO : function ( mode ) {
return ( mode & 61440 ) === 4096 ;
} ,
isSocket : function ( mode ) {
return ( mode & 49152 ) === 49152 ;
} ,
flagModes : { r : 0 , "r+" : 2 , w : 577 , "w+" : 578 , a : 1089 , "a+" : 1090 } ,
modeStringToFlags : function ( str ) {
var flags = FS . flagModes [ str ] ;
if ( typeof flags === "undefined" ) {
throw new Error ( "Unknown file open mode: " + str ) ;
}
return flags ;
} ,
flagsToPermissionString : function ( flag ) {
var perms = [ "r" , "w" , "rw" ] [ flag & 3 ] ;
if ( flag & 512 ) {
perms += "w" ;
}
return perms ;
} ,
nodePermissions : function ( node , perms ) {
if ( FS . ignorePermissions ) {
return 0 ;
}
if ( perms . includes ( "r" ) && ! ( node . mode & 292 ) ) {
return 2 ;
} else if ( perms . includes ( "w" ) && ! ( node . mode & 146 ) ) {
return 2 ;
} else if ( perms . includes ( "x" ) && ! ( node . mode & 73 ) ) {
return 2 ;
}
return 0 ;
} ,
mayLookup : function ( dir ) {
var errCode = FS . nodePermissions ( dir , "x" ) ;
if ( errCode )
return errCode ;
if ( ! dir . node _ops . lookup )
return 2 ;
return 0 ;
} ,
mayCreate : function ( dir , name ) {
try {
var node = FS . lookupNode ( dir , name ) ;
return 20 ;
} catch ( e ) {
}
return FS . nodePermissions ( dir , "wx" ) ;
} ,
mayDelete : function ( dir , name , isdir ) {
var node ;
try {
node = FS . lookupNode ( dir , name ) ;
} catch ( e ) {
return e . errno ;
}
var errCode = FS . nodePermissions ( dir , "wx" ) ;
if ( errCode ) {
return errCode ;
}
if ( isdir ) {
if ( ! FS . isDir ( node . mode ) ) {
return 54 ;
}
if ( FS . isRoot ( node ) || FS . getPath ( node ) === FS . cwd ( ) ) {
return 10 ;
}
} else {
if ( FS . isDir ( node . mode ) ) {
return 31 ;
}
}
return 0 ;
} ,
mayOpen : function ( node , flags ) {
if ( ! node ) {
return 44 ;
}
if ( FS . isLink ( node . mode ) ) {
return 32 ;
} else if ( FS . isDir ( node . mode ) ) {
if ( FS . flagsToPermissionString ( flags ) !== "r" || flags & 512 ) {
return 31 ;
}
}
return FS . nodePermissions ( node , FS . flagsToPermissionString ( flags ) ) ;
} ,
MAX _OPEN _FDS : 4096 ,
nextfd : function ( fd _start , fd _end ) {
fd _start = fd _start || 0 ;
fd _end = fd _end || FS . MAX _OPEN _FDS ;
for ( var fd = fd _start ; fd <= fd _end ; fd ++ ) {
if ( ! FS . streams [ fd ] ) {
return fd ;
}
}
throw new FS . ErrnoError ( 33 ) ;
} ,
getStream : function ( fd ) {
return FS . streams [ fd ] ;
} ,
createStream : function ( stream , fd _start , fd _end ) {
if ( ! FS . FSStream ) {
FS . FSStream = function ( ) {
} ;
FS . FSStream . prototype = {
object : {
get : function ( ) {
return this . node ;
} ,
set : function ( val ) {
this . node = val ;
}
} ,
isRead : {
get : function ( ) {
return ( this . flags & 2097155 ) !== 1 ;
}
} ,
isWrite : {
get : function ( ) {
return ( this . flags & 2097155 ) !== 0 ;
}
} ,
isAppend : {
get : function ( ) {
return this . flags & 1024 ;
}
}
} ;
}
var newStream = new FS . FSStream ( ) ;
for ( var p in stream ) {
newStream [ p ] = stream [ p ] ;
}
stream = newStream ;
var fd = FS . nextfd ( fd _start , fd _end ) ;
stream . fd = fd ;
FS . streams [ fd ] = stream ;
return stream ;
} ,
closeStream : function ( fd ) {
FS . streams [ fd ] = null ;
} ,
chrdev _stream _ops : {
open : function ( stream ) {
var device = FS . getDevice ( stream . node . rdev ) ;
stream . stream _ops = device . stream _ops ;
if ( stream . stream _ops . open ) {
stream . stream _ops . open ( stream ) ;
}
} ,
llseek : function ( ) {
throw new FS . ErrnoError ( 70 ) ;
}
} ,
major : function ( dev ) {
return dev >> 8 ;
} ,
minor : function ( dev ) {
return dev & 255 ;
} ,
makedev : function ( ma , mi ) {
return ma << 8 | mi ;
} ,
registerDevice : function ( dev , ops ) {
FS . devices [ dev ] = { stream _ops : ops } ;
} ,
getDevice : function ( dev ) {
return FS . devices [ dev ] ;
} ,
getMounts : function ( mount ) {
var mounts = [ ] ;
var check = [ mount ] ;
while ( check . length ) {
var m = check . pop ( ) ;
mounts . push ( m ) ;
check . push . apply ( check , m . mounts ) ;
}
return mounts ;
} ,
syncfs : function ( populate , callback ) {
if ( typeof populate === "function" ) {
callback = populate ;
populate = false ;
}
FS . syncFSRequests ++ ;
if ( FS . syncFSRequests > 1 ) {
err (
"warning: " + FS . syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"
) ;
}
var mounts = FS . getMounts ( FS . root . mount ) ;
var completed = 0 ;
function doCallback ( errCode ) {
FS . syncFSRequests -- ;
return callback ( errCode ) ;
}
function done ( errCode ) {
if ( errCode ) {
if ( ! done . errored ) {
done . errored = true ;
return doCallback ( errCode ) ;
}
return ;
}
if ( ++ completed >= mounts . length ) {
doCallback ( null ) ;
}
}
mounts . forEach ( function ( mount ) {
if ( ! mount . type . syncfs ) {
return done ( null ) ;
}
mount . type . syncfs ( mount , populate , done ) ;
} ) ;
} ,
mount : function ( type , opts , mountpoint ) {
var root = mountpoint === "/" ;
var pseudo = ! mountpoint ;
var node ;
if ( root && FS . root ) {
throw new FS . ErrnoError ( 10 ) ;
} else if ( ! root && ! pseudo ) {
var lookup = FS . lookupPath ( mountpoint , { follow _mount : false } ) ;
mountpoint = lookup . path ;
node = lookup . node ;
if ( FS . isMountpoint ( node ) ) {
throw new FS . ErrnoError ( 10 ) ;
}
if ( ! FS . isDir ( node . mode ) ) {
throw new FS . ErrnoError ( 54 ) ;
}
}
var mount = {
type ,
opts ,
mountpoint ,
mounts : [ ]
} ;
var mountRoot = type . mount ( mount ) ;
mountRoot . mount = mount ;
mount . root = mountRoot ;
if ( root ) {
FS . root = mountRoot ;
} else if ( node ) {
node . mounted = mount ;
if ( node . mount ) {
node . mount . mounts . push ( mount ) ;
}
}
return mountRoot ;
} ,
unmount : function ( mountpoint ) {
var lookup = FS . lookupPath ( mountpoint , { follow _mount : false } ) ;
if ( ! FS . isMountpoint ( lookup . node ) ) {
throw new FS . ErrnoError ( 28 ) ;
}
var node = lookup . node ;
var mount = node . mounted ;
var mounts = FS . getMounts ( mount ) ;
Object . keys ( FS . nameTable ) . forEach ( function ( hash ) {
var current = FS . nameTable [ hash ] ;
while ( current ) {
var next = current . name _next ;
if ( mounts . includes ( current . mount ) ) {
FS . destroyNode ( current ) ;
}
current = next ;
}
} ) ;
node . mounted = null ;
var idx = node . mount . mounts . indexOf ( mount ) ;
node . mount . mounts . splice ( idx , 1 ) ;
} ,
lookup : function ( parent , name ) {
return parent . node _ops . lookup ( parent , name ) ;
} ,
mknod : function ( path , mode , dev ) {
var lookup = FS . lookupPath ( path , { parent : true } ) ;
var parent = lookup . node ;
var name = PATH . basename ( path ) ;
if ( ! name || name === "." || name === ".." ) {
throw new FS . ErrnoError ( 28 ) ;
}
var errCode = FS . mayCreate ( parent , name ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
if ( ! parent . node _ops . mknod ) {
throw new FS . ErrnoError ( 63 ) ;
}
return parent . node _ops . mknod ( parent , name , mode , dev ) ;
} ,
create : function ( path , mode ) {
mode = mode !== void 0 ? mode : 438 ;
mode &= 4095 ;
mode |= 32768 ;
return FS . mknod ( path , mode , 0 ) ;
} ,
mkdir : function ( path , mode ) {
mode = mode !== void 0 ? mode : 511 ;
mode &= 511 | 512 ;
mode |= 16384 ;
return FS . mknod ( path , mode , 0 ) ;
} ,
mkdirTree : function ( path , mode ) {
var dirs = path . split ( "/" ) ;
var d = "" ;
for ( var i = 0 ; i < dirs . length ; ++ i ) {
if ( ! dirs [ i ] )
continue ;
d += "/" + dirs [ i ] ;
try {
FS . mkdir ( d , mode ) ;
} catch ( e ) {
if ( e . errno != 20 )
throw e ;
}
}
} ,
mkdev : function ( path , mode , dev ) {
if ( typeof dev === "undefined" ) {
dev = mode ;
mode = 438 ;
}
mode |= 8192 ;
return FS . mknod ( path , mode , dev ) ;
} ,
symlink : function ( oldpath , newpath ) {
if ( ! PATH _FS . resolve ( oldpath ) ) {
throw new FS . ErrnoError ( 44 ) ;
}
var lookup = FS . lookupPath ( newpath , { parent : true } ) ;
var parent = lookup . node ;
if ( ! parent ) {
throw new FS . ErrnoError ( 44 ) ;
}
var newname = PATH . basename ( newpath ) ;
var errCode = FS . mayCreate ( parent , newname ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
if ( ! parent . node _ops . symlink ) {
throw new FS . ErrnoError ( 63 ) ;
}
return parent . node _ops . symlink ( parent , newname , oldpath ) ;
} ,
rename : function ( old _path , new _path ) {
var old _dirname = PATH . dirname ( old _path ) ;
var new _dirname = PATH . dirname ( new _path ) ;
var old _name = PATH . basename ( old _path ) ;
var new _name = PATH . basename ( new _path ) ;
var lookup , old _dir , new _dir ;
lookup = FS . lookupPath ( old _path , { parent : true } ) ;
old _dir = lookup . node ;
lookup = FS . lookupPath ( new _path , { parent : true } ) ;
new _dir = lookup . node ;
if ( ! old _dir || ! new _dir )
throw new FS . ErrnoError ( 44 ) ;
if ( old _dir . mount !== new _dir . mount ) {
throw new FS . ErrnoError ( 75 ) ;
}
var old _node = FS . lookupNode ( old _dir , old _name ) ;
var relative = PATH _FS . relative ( old _path , new _dirname ) ;
if ( relative . charAt ( 0 ) !== "." ) {
throw new FS . ErrnoError ( 28 ) ;
}
relative = PATH _FS . relative ( new _path , old _dirname ) ;
if ( relative . charAt ( 0 ) !== "." ) {
throw new FS . ErrnoError ( 55 ) ;
}
var new _node ;
try {
new _node = FS . lookupNode ( new _dir , new _name ) ;
} catch ( e ) {
}
if ( old _node === new _node ) {
return ;
}
var isdir = FS . isDir ( old _node . mode ) ;
var errCode = FS . mayDelete ( old _dir , old _name , isdir ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
errCode = new _node ? FS . mayDelete ( new _dir , new _name , isdir ) : FS . mayCreate ( new _dir , new _name ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
if ( ! old _dir . node _ops . rename ) {
throw new FS . ErrnoError ( 63 ) ;
}
if ( FS . isMountpoint ( old _node ) || new _node && FS . isMountpoint ( new _node ) ) {
throw new FS . ErrnoError ( 10 ) ;
}
if ( new _dir !== old _dir ) {
errCode = FS . nodePermissions ( old _dir , "w" ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
}
try {
if ( FS . trackingDelegate [ "willMovePath" ] ) {
FS . trackingDelegate [ "willMovePath" ] ( old _path , new _path ) ;
}
} catch ( e ) {
err (
"FS.trackingDelegate['willMovePath']('" + old _path + "', '" + new _path + "') threw an exception: " + e . message
) ;
}
FS . hashRemoveNode ( old _node ) ;
try {
old _dir . node _ops . rename ( old _node , new _dir , new _name ) ;
} catch ( e ) {
throw e ;
} finally {
FS . hashAddNode ( old _node ) ;
}
try {
if ( FS . trackingDelegate [ "onMovePath" ] )
FS . trackingDelegate [ "onMovePath" ] ( old _path , new _path ) ;
} catch ( e ) {
err (
"FS.trackingDelegate['onMovePath']('" + old _path + "', '" + new _path + "') threw an exception: " + e . message
) ;
}
} ,
rmdir : function ( path ) {
var lookup = FS . lookupPath ( path , { parent : true } ) ;
var parent = lookup . node ;
var name = PATH . basename ( path ) ;
var node = FS . lookupNode ( parent , name ) ;
var errCode = FS . mayDelete ( parent , name , true ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
if ( ! parent . node _ops . rmdir ) {
throw new FS . ErrnoError ( 63 ) ;
}
if ( FS . isMountpoint ( node ) ) {
throw new FS . ErrnoError ( 10 ) ;
}
try {
if ( FS . trackingDelegate [ "willDeletePath" ] ) {
FS . trackingDelegate [ "willDeletePath" ] ( path ) ;
}
} catch ( e ) {
err (
"FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e . message
) ;
}
parent . node _ops . rmdir ( parent , name ) ;
FS . destroyNode ( node ) ;
try {
if ( FS . trackingDelegate [ "onDeletePath" ] )
FS . trackingDelegate [ "onDeletePath" ] ( path ) ;
} catch ( e ) {
err (
"FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e . message
) ;
}
} ,
readdir : function ( path ) {
var lookup = FS . lookupPath ( path , { follow : true } ) ;
var node = lookup . node ;
if ( ! node . node _ops . readdir ) {
throw new FS . ErrnoError ( 54 ) ;
}
return node . node _ops . readdir ( node ) ;
} ,
unlink : function ( path ) {
var lookup = FS . lookupPath ( path , { parent : true } ) ;
var parent = lookup . node ;
var name = PATH . basename ( path ) ;
var node = FS . lookupNode ( parent , name ) ;
var errCode = FS . mayDelete ( parent , name , false ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
if ( ! parent . node _ops . unlink ) {
throw new FS . ErrnoError ( 63 ) ;
}
if ( FS . isMountpoint ( node ) ) {
throw new FS . ErrnoError ( 10 ) ;
}
try {
if ( FS . trackingDelegate [ "willDeletePath" ] ) {
FS . trackingDelegate [ "willDeletePath" ] ( path ) ;
}
} catch ( e ) {
err (
"FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e . message
) ;
}
parent . node _ops . unlink ( parent , name ) ;
FS . destroyNode ( node ) ;
try {
if ( FS . trackingDelegate [ "onDeletePath" ] )
FS . trackingDelegate [ "onDeletePath" ] ( path ) ;
} catch ( e ) {
err (
"FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e . message
) ;
}
} ,
readlink : function ( path ) {
var lookup = FS . lookupPath ( path ) ;
var link = lookup . node ;
if ( ! link ) {
throw new FS . ErrnoError ( 44 ) ;
}
if ( ! link . node _ops . readlink ) {
throw new FS . ErrnoError ( 28 ) ;
}
return PATH _FS . resolve (
FS . getPath ( link . parent ) ,
link . node _ops . readlink ( link )
) ;
} ,
stat : function ( path , dontFollow ) {
var lookup = FS . lookupPath ( path , { follow : ! dontFollow } ) ;
var node = lookup . node ;
if ( ! node ) {
throw new FS . ErrnoError ( 44 ) ;
}
if ( ! node . node _ops . getattr ) {
throw new FS . ErrnoError ( 63 ) ;
}
return node . node _ops . getattr ( node ) ;
} ,
lstat : function ( path ) {
return FS . stat ( path , true ) ;
} ,
chmod : function ( path , mode , dontFollow ) {
var node ;
if ( typeof path === "string" ) {
var lookup = FS . lookupPath ( path , { follow : ! dontFollow } ) ;
node = lookup . node ;
} else {
node = path ;
}
if ( ! node . node _ops . setattr ) {
throw new FS . ErrnoError ( 63 ) ;
}
node . node _ops . setattr ( node , {
mode : mode & 4095 | node . mode & ~ 4095 ,
timestamp : Date . now ( )
} ) ;
} ,
lchmod : function ( path , mode ) {
FS . chmod ( path , mode , true ) ;
} ,
fchmod : function ( fd , mode ) {
var stream = FS . getStream ( fd ) ;
if ( ! stream ) {
throw new FS . ErrnoError ( 8 ) ;
}
FS . chmod ( stream . node , mode ) ;
} ,
chown : function ( path , uid , gid , dontFollow ) {
var node ;
if ( typeof path === "string" ) {
var lookup = FS . lookupPath ( path , { follow : ! dontFollow } ) ;
node = lookup . node ;
} else {
node = path ;
}
if ( ! node . node _ops . setattr ) {
throw new FS . ErrnoError ( 63 ) ;
}
node . node _ops . setattr ( node , { timestamp : Date . now ( ) } ) ;
} ,
lchown : function ( path , uid , gid ) {
FS . chown ( path , uid , gid , true ) ;
} ,
fchown : function ( fd , uid , gid ) {
var stream = FS . getStream ( fd ) ;
if ( ! stream ) {
throw new FS . ErrnoError ( 8 ) ;
}
FS . chown ( stream . node , uid , gid ) ;
} ,
truncate : function ( path , len ) {
if ( len < 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
var node ;
if ( typeof path === "string" ) {
var lookup = FS . lookupPath ( path , { follow : true } ) ;
node = lookup . node ;
} else {
node = path ;
}
if ( ! node . node _ops . setattr ) {
throw new FS . ErrnoError ( 63 ) ;
}
if ( FS . isDir ( node . mode ) ) {
throw new FS . ErrnoError ( 31 ) ;
}
if ( ! FS . isFile ( node . mode ) ) {
throw new FS . ErrnoError ( 28 ) ;
}
var errCode = FS . nodePermissions ( node , "w" ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
node . node _ops . setattr ( node , { size : len , timestamp : Date . now ( ) } ) ;
} ,
ftruncate : function ( fd , len ) {
var stream = FS . getStream ( fd ) ;
if ( ! stream ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( ( stream . flags & 2097155 ) === 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
FS . truncate ( stream . node , len ) ;
} ,
utime : function ( path , atime , mtime ) {
var lookup = FS . lookupPath ( path , { follow : true } ) ;
var node = lookup . node ;
node . node _ops . setattr ( node , { timestamp : Math . max ( atime , mtime ) } ) ;
} ,
open : function ( path , flags , mode , fd _start , fd _end ) {
if ( path === "" ) {
throw new FS . ErrnoError ( 44 ) ;
}
flags = typeof flags === "string" ? FS . modeStringToFlags ( flags ) : flags ;
mode = typeof mode === "undefined" ? 438 : mode ;
if ( flags & 64 ) {
mode = mode & 4095 | 32768 ;
} else {
mode = 0 ;
}
var node ;
if ( typeof path === "object" ) {
node = path ;
} else {
path = PATH . normalize ( path ) ;
try {
var lookup = FS . lookupPath ( path , { follow : ! ( flags & 131072 ) } ) ;
node = lookup . node ;
} catch ( e ) {
}
}
var created = false ;
if ( flags & 64 ) {
if ( node ) {
if ( flags & 128 ) {
throw new FS . ErrnoError ( 20 ) ;
}
} else {
node = FS . mknod ( path , mode , 0 ) ;
created = true ;
}
}
if ( ! node ) {
throw new FS . ErrnoError ( 44 ) ;
}
if ( FS . isChrdev ( node . mode ) ) {
flags &= ~ 512 ;
}
if ( flags & 65536 && ! FS . isDir ( node . mode ) ) {
throw new FS . ErrnoError ( 54 ) ;
}
if ( ! created ) {
var errCode = FS . mayOpen ( node , flags ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
}
if ( flags & 512 ) {
FS . truncate ( node , 0 ) ;
}
flags &= ~ ( 128 | 512 | 131072 ) ;
var stream = FS . createStream (
{
node ,
path : FS . getPath ( node ) ,
flags ,
seekable : true ,
position : 0 ,
stream _ops : node . stream _ops ,
ungotten : [ ] ,
error : false
} ,
fd _start ,
fd _end
) ;
if ( stream . stream _ops . open ) {
stream . stream _ops . open ( stream ) ;
}
if ( Module [ "logReadFiles" ] && ! ( flags & 1 ) ) {
if ( ! FS . readFiles )
FS . readFiles = { } ;
if ( ! ( path in FS . readFiles ) ) {
FS . readFiles [ path ] = 1 ;
err ( "FS.trackingDelegate error on read file: " + path ) ;
}
}
try {
if ( FS . trackingDelegate [ "onOpenFile" ] ) {
var trackingFlags = 0 ;
if ( ( flags & 2097155 ) !== 1 ) {
trackingFlags |= FS . tracking . openFlags . READ ;
}
if ( ( flags & 2097155 ) !== 0 ) {
trackingFlags |= FS . tracking . openFlags . WRITE ;
}
FS . trackingDelegate [ "onOpenFile" ] ( path , trackingFlags ) ;
}
} catch ( e ) {
err (
"FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e . message
) ;
}
return stream ;
} ,
close : function ( stream ) {
if ( FS . isClosed ( stream ) ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( stream . getdents )
stream . getdents = null ;
try {
if ( stream . stream _ops . close ) {
stream . stream _ops . close ( stream ) ;
}
} catch ( e ) {
throw e ;
} finally {
FS . closeStream ( stream . fd ) ;
}
stream . fd = null ;
} ,
isClosed : function ( stream ) {
return stream . fd === null ;
} ,
llseek : function ( stream , offset , whence ) {
if ( FS . isClosed ( stream ) ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( ! stream . seekable || ! stream . stream _ops . llseek ) {
throw new FS . ErrnoError ( 70 ) ;
}
if ( whence != 0 && whence != 1 && whence != 2 ) {
throw new FS . ErrnoError ( 28 ) ;
}
stream . position = stream . stream _ops . llseek ( stream , offset , whence ) ;
stream . ungotten = [ ] ;
return stream . position ;
} ,
read : function ( stream , buffer2 , offset , length , position ) {
if ( length < 0 || position < 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
if ( FS . isClosed ( stream ) ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( ( stream . flags & 2097155 ) === 1 ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( FS . isDir ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 31 ) ;
}
if ( ! stream . stream _ops . read ) {
throw new FS . ErrnoError ( 28 ) ;
}
var seeking = typeof position !== "undefined" ;
if ( ! seeking ) {
position = stream . position ;
} else if ( ! stream . seekable ) {
throw new FS . ErrnoError ( 70 ) ;
}
var bytesRead = stream . stream _ops . read (
stream ,
buffer2 ,
offset ,
length ,
position
) ;
if ( ! seeking )
stream . position += bytesRead ;
return bytesRead ;
} ,
write : function ( stream , buffer2 , offset , length , position , canOwn ) {
if ( length < 0 || position < 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
if ( FS . isClosed ( stream ) ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( ( stream . flags & 2097155 ) === 0 ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( FS . isDir ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 31 ) ;
}
if ( ! stream . stream _ops . write ) {
throw new FS . ErrnoError ( 28 ) ;
}
if ( stream . seekable && stream . flags & 1024 ) {
FS . llseek ( stream , 0 , 2 ) ;
}
var seeking = typeof position !== "undefined" ;
if ( ! seeking ) {
position = stream . position ;
} else if ( ! stream . seekable ) {
throw new FS . ErrnoError ( 70 ) ;
}
var bytesWritten = stream . stream _ops . write (
stream ,
buffer2 ,
offset ,
length ,
position ,
canOwn
) ;
if ( ! seeking )
stream . position += bytesWritten ;
try {
if ( stream . path && FS . trackingDelegate [ "onWriteToFile" ] )
FS . trackingDelegate [ "onWriteToFile" ] ( stream . path ) ;
} catch ( e ) {
err (
"FS.trackingDelegate['onWriteToFile']('" + stream . path + "') threw an exception: " + e . message
) ;
}
return bytesWritten ;
} ,
allocate : function ( stream , offset , length ) {
if ( FS . isClosed ( stream ) ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( offset < 0 || length <= 0 ) {
throw new FS . ErrnoError ( 28 ) ;
}
if ( ( stream . flags & 2097155 ) === 0 ) {
throw new FS . ErrnoError ( 8 ) ;
}
if ( ! FS . isFile ( stream . node . mode ) && ! FS . isDir ( stream . node . mode ) ) {
throw new FS . ErrnoError ( 43 ) ;
}
if ( ! stream . stream _ops . allocate ) {
throw new FS . ErrnoError ( 138 ) ;
}
stream . stream _ops . allocate ( stream , offset , length ) ;
} ,
mmap : function ( stream , address , length , position , prot , flags ) {
if ( ( prot & 2 ) !== 0 && ( flags & 2 ) === 0 && ( stream . flags & 2097155 ) !== 2 ) {
throw new FS . ErrnoError ( 2 ) ;
}
if ( ( stream . flags & 2097155 ) === 1 ) {
throw new FS . ErrnoError ( 2 ) ;
}
if ( ! stream . stream _ops . mmap ) {
throw new FS . ErrnoError ( 43 ) ;
}
return stream . stream _ops . mmap (
stream ,
address ,
length ,
position ,
prot ,
flags
) ;
} ,
msync : function ( stream , buffer2 , offset , length , mmapFlags ) {
if ( ! stream || ! stream . stream _ops . msync ) {
return 0 ;
}
return stream . stream _ops . msync (
stream ,
buffer2 ,
offset ,
length ,
mmapFlags
) ;
} ,
munmap : function ( stream ) {
return 0 ;
} ,
ioctl : function ( stream , cmd , arg ) {
if ( ! stream . stream _ops . ioctl ) {
throw new FS . ErrnoError ( 59 ) ;
}
return stream . stream _ops . ioctl ( stream , cmd , arg ) ;
} ,
readFile : function ( path , opts ) {
opts = opts || { } ;
opts . flags = opts . flags || 0 ;
opts . encoding = opts . encoding || "binary" ;
if ( opts . encoding !== "utf8" && opts . encoding !== "binary" ) {
throw new Error ( 'Invalid encoding type "' + opts . encoding + '"' ) ;
}
var ret ;
var stream = FS . open ( path , opts . flags ) ;
var stat = FS . stat ( path ) ;
var length = stat . size ;
var buf = new Uint8Array ( length ) ;
FS . read ( stream , buf , 0 , length , 0 ) ;
if ( opts . encoding === "utf8" ) {
ret = UTF8ArrayToString ( buf , 0 ) ;
} else if ( opts . encoding === "binary" ) {
ret = buf ;
}
FS . close ( stream ) ;
return ret ;
} ,
writeFile : function ( path , data , opts ) {
opts = opts || { } ;
opts . flags = opts . flags || 577 ;
var stream = FS . open ( path , opts . flags , opts . mode ) ;
if ( typeof data === "string" ) {
var buf = new Uint8Array ( lengthBytesUTF8 ( data ) + 1 ) ;
var actualNumBytes = stringToUTF8Array ( data , buf , 0 , buf . length ) ;
FS . write ( stream , buf , 0 , actualNumBytes , void 0 , opts . canOwn ) ;
} else if ( ArrayBuffer . isView ( data ) ) {
FS . write ( stream , data , 0 , data . byteLength , void 0 , opts . canOwn ) ;
} else {
throw new Error ( "Unsupported data type" ) ;
}
FS . close ( stream ) ;
} ,
cwd : function ( ) {
return FS . currentPath ;
} ,
chdir : function ( path ) {
var lookup = FS . lookupPath ( path , { follow : true } ) ;
if ( lookup . node === null ) {
throw new FS . ErrnoError ( 44 ) ;
}
if ( ! FS . isDir ( lookup . node . mode ) ) {
throw new FS . ErrnoError ( 54 ) ;
}
var errCode = FS . nodePermissions ( lookup . node , "x" ) ;
if ( errCode ) {
throw new FS . ErrnoError ( errCode ) ;
}
FS . currentPath = lookup . path ;
} ,
createDefaultDirectories : function ( ) {
FS . mkdir ( "/tmp" ) ;
FS . mkdir ( "/home" ) ;
FS . mkdir ( "/home/web_user" ) ;
} ,
createDefaultDevices : function ( ) {
FS . mkdir ( "/dev" ) ;
FS . registerDevice ( FS . makedev ( 1 , 3 ) , {
read : function ( ) {
return 0 ;
} ,
write : function ( stream , buffer2 , offset , length , pos ) {
return length ;
}
} ) ;
FS . mkdev ( "/dev/null" , FS . makedev ( 1 , 3 ) ) ;
TTY . register ( FS . makedev ( 5 , 0 ) , TTY . default _tty _ops ) ;
TTY . register ( FS . makedev ( 6 , 0 ) , TTY . default _tty1 _ops ) ;
FS . mkdev ( "/dev/tty" , FS . makedev ( 5 , 0 ) ) ;
FS . mkdev ( "/dev/tty1" , FS . makedev ( 6 , 0 ) ) ;
var random _device = getRandomDevice ( ) ;
FS . createDevice ( "/dev" , "random" , random _device ) ;
FS . createDevice ( "/dev" , "urandom" , random _device ) ;
FS . mkdir ( "/dev/shm" ) ;
FS . mkdir ( "/dev/shm/tmp" ) ;
} ,
createSpecialDirectories : function ( ) {
FS . mkdir ( "/proc" ) ;
var proc _self = FS . mkdir ( "/proc/self" ) ;
FS . mkdir ( "/proc/self/fd" ) ;
FS . mount (
{
mount : function ( ) {
var node = FS . createNode ( proc _self , "fd" , 16384 | 511 , 73 ) ;
node . node _ops = {
lookup : function ( parent , name ) {
var fd = + name ;
var stream = FS . getStream ( fd ) ;
if ( ! stream )
throw new FS . ErrnoError ( 8 ) ;
var ret = {
parent : null ,
mount : { mountpoint : "fake" } ,
node _ops : {
readlink : function ( ) {
return stream . path ;
}
}
} ;
ret . parent = ret ;
return ret ;
}
} ;
return node ;
}
} ,
{ } ,
"/proc/self/fd"
) ;
} ,
createStandardStreams : function ( ) {
if ( Module [ "stdin" ] ) {
FS . createDevice ( "/dev" , "stdin" , Module [ "stdin" ] ) ;
} else {
FS . symlink ( "/dev/tty" , "/dev/stdin" ) ;
}
if ( Module [ "stdout" ] ) {
FS . createDevice ( "/dev" , "stdout" , null , Module [ "stdout" ] ) ;
} else {
FS . symlink ( "/dev/tty" , "/dev/stdout" ) ;
}
if ( Module [ "stderr" ] ) {
FS . createDevice ( "/dev" , "stderr" , null , Module [ "stderr" ] ) ;
} else {
FS . symlink ( "/dev/tty1" , "/dev/stderr" ) ;
}
FS . open ( "/dev/stdin" , 0 ) ;
FS . open ( "/dev/stdout" , 1 ) ;
FS . open ( "/dev/stderr" , 1 ) ;
} ,
ensureErrnoError : function ( ) {
if ( FS . ErrnoError )
return ;
FS . ErrnoError = function ErrnoError ( errno , node ) {
this . node = node ;
this . setErrno = function ( errno2 ) {
this . errno = errno2 ;
} ;
this . setErrno ( errno ) ;
this . message = "FS error" ;
} ;
FS . ErrnoError . prototype = new Error ( ) ;
FS . ErrnoError . prototype . constructor = FS . ErrnoError ;
[ 44 ] . forEach ( function ( code ) {
FS . genericErrors [ code ] = new FS . ErrnoError ( code ) ;
FS . genericErrors [ code ] . stack = "<generic error, no stack>" ;
} ) ;
} ,
staticInit : function ( ) {
FS . ensureErrnoError ( ) ;
FS . nameTable = new Array ( 4096 ) ;
FS . mount ( MEMFS , { } , "/" ) ;
FS . createDefaultDirectories ( ) ;
FS . createDefaultDevices ( ) ;
FS . createSpecialDirectories ( ) ;
FS . filesystems = { MEMFS , NODEFS } ;
} ,
init : function ( input , output , error ) {
FS . init . initialized = true ;
FS . ensureErrnoError ( ) ;
Module [ "stdin" ] = input || Module [ "stdin" ] ;
Module [ "stdout" ] = output || Module [ "stdout" ] ;
Module [ "stderr" ] = error || Module [ "stderr" ] ;
FS . createStandardStreams ( ) ;
} ,
quit : function ( ) {
FS . init . initialized = false ;
var fflush = Module [ "_fflush" ] ;
if ( fflush )
fflush ( 0 ) ;
for ( var i = 0 ; i < FS . streams . length ; i ++ ) {
var stream = FS . streams [ i ] ;
if ( ! stream ) {
continue ;
}
FS . close ( stream ) ;
}
} ,
getMode : function ( canRead , canWrite ) {
var mode = 0 ;
if ( canRead )
mode |= 292 | 73 ;
if ( canWrite )
mode |= 146 ;
return mode ;
} ,
findObject : function ( path , dontResolveLastLink ) {
var ret = FS . analyzePath ( path , dontResolveLastLink ) ;
if ( ret . exists ) {
return ret . object ;
} else {
return null ;
}
} ,
analyzePath : function ( path , dontResolveLastLink ) {
try {
var lookup = FS . lookupPath ( path , { follow : ! dontResolveLastLink } ) ;
path = lookup . path ;
} catch ( e ) {
}
var ret = {
isRoot : false ,
exists : false ,
error : 0 ,
name : null ,
path : null ,
object : null ,
parentExists : false ,
parentPath : null ,
parentObject : null
} ;
try {
var lookup = FS . lookupPath ( path , { parent : true } ) ;
ret . parentExists = true ;
ret . parentPath = lookup . path ;
ret . parentObject = lookup . node ;
ret . name = PATH . basename ( path ) ;
lookup = FS . lookupPath ( path , { follow : ! dontResolveLastLink } ) ;
ret . exists = true ;
ret . path = lookup . path ;
ret . object = lookup . node ;
ret . name = lookup . node . name ;
ret . isRoot = lookup . path === "/" ;
} catch ( e ) {
ret . error = e . errno ;
}
return ret ;
} ,
createPath : function ( parent , path , canRead , canWrite ) {
parent = typeof parent === "string" ? parent : FS . getPath ( parent ) ;
var parts = path . split ( "/" ) . reverse ( ) ;
while ( parts . length ) {
var part = parts . pop ( ) ;
if ( ! part )
continue ;
var current = PATH . join2 ( parent , part ) ;
try {
FS . mkdir ( current ) ;
} catch ( e ) {
}
parent = current ;
}
return current ;
} ,
createFile : function ( parent , name , properties , canRead , canWrite ) {
var path = PATH . join2 (
typeof parent === "string" ? parent : FS . getPath ( parent ) ,
name
) ;
var mode = FS . getMode ( canRead , canWrite ) ;
return FS . create ( path , mode ) ;
} ,
createDataFile : function ( parent , name , data , canRead , canWrite , canOwn ) {
var path = name ? PATH . join2 (
typeof parent === "string" ? parent : FS . getPath ( parent ) ,
name
) : parent ;
var mode = FS . getMode ( canRead , canWrite ) ;
var node = FS . create ( path , mode ) ;
if ( data ) {
if ( typeof data === "string" ) {
var arr = new Array ( data . length ) ;
for ( var i = 0 , len = data . length ; i < len ; ++ i )
arr [ i ] = data . charCodeAt ( i ) ;
data = arr ;
}
FS . chmod ( node , mode | 146 ) ;
var stream = FS . open ( node , 577 ) ;
FS . write ( stream , data , 0 , data . length , 0 , canOwn ) ;
FS . close ( stream ) ;
FS . chmod ( node , mode ) ;
}
return node ;
} ,
createDevice : function ( parent , name , input , output ) {
var path = PATH . join2 (
typeof parent === "string" ? parent : FS . getPath ( parent ) ,
name
) ;
var mode = FS . getMode ( ! ! input , ! ! output ) ;
if ( ! FS . createDevice . major )
FS . createDevice . major = 64 ;
var dev = FS . makedev ( FS . createDevice . major ++ , 0 ) ;
FS . registerDevice ( dev , {
open : function ( stream ) {
stream . seekable = false ;
} ,
close : function ( stream ) {
if ( output && output . buffer && output . buffer . length ) {
output ( 10 ) ;
}
} ,
read : function ( stream , buffer2 , offset , length , pos ) {
var bytesRead = 0 ;
for ( var i = 0 ; i < length ; i ++ ) {
var result ;
try {
result = input ( ) ;
} catch ( e ) {
throw new FS . ErrnoError ( 29 ) ;
}
if ( result === void 0 && bytesRead === 0 ) {
throw new FS . ErrnoError ( 6 ) ;
}
if ( result === null || result === void 0 )
break ;
bytesRead ++ ;
buffer2 [ offset + i ] = result ;
}
if ( bytesRead ) {
stream . node . timestamp = Date . now ( ) ;
}
return bytesRead ;
} ,
write : function ( stream , buffer2 , offset , length , pos ) {
for ( var i = 0 ; i < length ; i ++ ) {
try {
output ( buffer2 [ offset + i ] ) ;
} catch ( e ) {
throw new FS . ErrnoError ( 29 ) ;
}
}
if ( length ) {
stream . node . timestamp = Date . now ( ) ;
}
return i ;
}
} ) ;
return FS . mkdev ( path , mode , dev ) ;
} ,
forceLoadFile : function ( obj ) {
if ( obj . isDevice || obj . isFolder || obj . link || obj . contents )
return true ;
if ( read _ ) {
try {
obj . contents = intArrayFromString ( read _ ( obj . url ) , true ) ;
obj . usedBytes = obj . contents . length ;
} catch ( e ) {
throw new FS . ErrnoError ( 29 ) ;
}
} else {
throw new Error ( "Cannot load without read() or XMLHttpRequest." ) ;
}
} ,
createLazyFile : function ( parent , name , url , canRead , canWrite ) {
var properties ; {
var properties = { isDevice : false , url } ;
}
var node = FS . createFile ( parent , name , properties , canRead , canWrite ) ;
if ( properties . contents ) {
node . contents = properties . contents ;
} else if ( properties . url ) {
node . contents = null ;
node . url = properties . url ;
}
Object . defineProperties ( node , {
usedBytes : {
get : function ( ) {
return this . contents . length ;
}
}
} ) ;
var stream _ops = { } ;
var keys = Object . keys ( node . stream _ops ) ;
keys . forEach ( function ( key2 ) {
var fn = node . stream _ops [ key2 ] ;
stream _ops [ key2 ] = function forceLoadLazyFile ( ) {
FS . forceLoadFile ( node ) ;
return fn . apply ( null , arguments ) ;
} ;
} ) ;
stream _ops . read = function stream _ops _read ( stream , buffer2 , offset , length , position ) {
FS . forceLoadFile ( node ) ;
var contents = stream . node . contents ;
if ( position >= contents . length )
return 0 ;
var size = Math . min ( contents . length - position , length ) ;
if ( contents . slice ) {
for ( var i = 0 ; i < size ; i ++ ) {
buffer2 [ offset + i ] = contents [ position + i ] ;
}
} else {
for ( var i = 0 ; i < size ; i ++ ) {
buffer2 [ offset + i ] = contents . get ( position + i ) ;
}
}
return size ;
} ;
node . stream _ops = stream _ops ;
return node ;
} ,
createPreloadedFile : function ( parent , name , url , canRead , canWrite , onload , onerror , dontCreateFile , canOwn , preFinish ) {
Browser . init ( ) ;
var fullname = name ? PATH _FS . resolve ( PATH . join2 ( parent , name ) ) : parent ;
function processData ( byteArray ) {
function finish ( byteArray2 ) {
if ( preFinish )
preFinish ( ) ;
if ( ! dontCreateFile ) {
FS . createDataFile (
parent ,
name ,
byteArray2 ,
canRead ,
canWrite ,
canOwn
) ;
}
if ( onload )
onload ( ) ;
removeRunDependency ( ) ;
}
var handled = false ;
Module [ "preloadPlugins" ] . forEach ( function ( plugin ) {
if ( handled )
return ;
if ( plugin [ "canHandle" ] ( fullname ) ) {
plugin [ "handle" ] ( byteArray , fullname , finish , function ( ) {
if ( onerror )
onerror ( ) ;
removeRunDependency ( ) ;
} ) ;
handled = true ;
}
} ) ;
if ( ! handled )
finish ( byteArray ) ;
}
addRunDependency ( ) ;
if ( typeof url == "string" ) {
Browser . asyncLoad (
url ,
function ( byteArray ) {
processData ( byteArray ) ;
} ,
onerror
) ;
} else {
processData ( url ) ;
}
} ,
indexedDB : function ( ) {
return window . indexedDB || window . mozIndexedDB || window . webkitIndexedDB || window . msIndexedDB ;
} ,
DB _NAME : function ( ) {
return "EM_FS_" + window . location . pathname ;
} ,
DB _VERSION : 20 ,
DB _STORE _NAME : "FILE_DATA" ,
saveFilesToDB : function ( paths , onload , onerror ) {
onload = onload || function ( ) {
} ;
onerror = onerror || function ( ) {
} ;
var indexedDB = FS . indexedDB ( ) ;
try {
var openRequest = indexedDB . open ( FS . DB _NAME ( ) , FS . DB _VERSION ) ;
} catch ( e ) {
return onerror ( e ) ;
}
openRequest . onupgradeneeded = function openRequest _onupgradeneeded ( ) {
out ( "creating db" ) ;
var db = openRequest . result ;
db . createObjectStore ( FS . DB _STORE _NAME ) ;
} ;
openRequest . onsuccess = function openRequest _onsuccess ( ) {
var db = openRequest . result ;
var transaction = db . transaction ( [ FS . DB _STORE _NAME ] , "readwrite" ) ;
var files = transaction . objectStore ( FS . DB _STORE _NAME ) ;
var ok = 0 , fail = 0 , total = paths . length ;
function finish ( ) {
if ( fail == 0 )
onload ( ) ;
else
onerror ( ) ;
}
paths . forEach ( function ( path ) {
var putRequest = files . put (
FS . analyzePath ( path ) . object . contents ,
path
) ;
putRequest . onsuccess = function putRequest _onsuccess ( ) {
ok ++ ;
if ( ok + fail == total )
finish ( ) ;
} ;
putRequest . onerror = function putRequest _onerror ( ) {
fail ++ ;
if ( ok + fail == total )
finish ( ) ;
} ;
} ) ;
transaction . onerror = onerror ;
} ;
openRequest . onerror = onerror ;
} ,
loadFilesFromDB : function ( paths , onload , onerror ) {
onload = onload || function ( ) {
} ;
onerror = onerror || function ( ) {
} ;
var indexedDB = FS . indexedDB ( ) ;
try {
var openRequest = indexedDB . open ( FS . DB _NAME ( ) , FS . DB _VERSION ) ;
} catch ( e ) {
return onerror ( e ) ;
}
openRequest . onupgradeneeded = onerror ;
openRequest . onsuccess = function openRequest _onsuccess ( ) {
var db = openRequest . result ;
try {
var transaction = db . transaction ( [ FS . DB _STORE _NAME ] , "readonly" ) ;
} catch ( e ) {
onerror ( e ) ;
return ;
}
var files = transaction . objectStore ( FS . DB _STORE _NAME ) ;
var ok = 0 , fail = 0 , total = paths . length ;
function finish ( ) {
if ( fail == 0 )
onload ( ) ;
else
onerror ( ) ;
}
paths . forEach ( function ( path ) {
var getRequest = files . get ( path ) ;
getRequest . onsuccess = function getRequest _onsuccess ( ) {
if ( FS . analyzePath ( path ) . exists ) {
FS . unlink ( path ) ;
}
FS . createDataFile (
PATH . dirname ( path ) ,
PATH . basename ( path ) ,
getRequest . result ,
true ,
true ,
true
) ;
ok ++ ;
if ( ok + fail == total )
finish ( ) ;
} ;
getRequest . onerror = function getRequest _onerror ( ) {
fail ++ ;
if ( ok + fail == total )
finish ( ) ;
} ;
} ) ;
transaction . onerror = onerror ;
} ;
openRequest . onerror = onerror ;
}
} ;
var SYSCALLS = {
mappings : { } ,
DEFAULT _POLLMASK : 5 ,
umask : 511 ,
calculateAt : function ( dirfd , path , allowEmpty ) {
if ( path [ 0 ] === "/" ) {
return path ;
}
var dir ;
if ( dirfd === - 100 ) {
dir = FS . cwd ( ) ;
} else {
var dirstream = FS . getStream ( dirfd ) ;
if ( ! dirstream )
throw new FS . ErrnoError ( 8 ) ;
dir = dirstream . path ;
}
if ( path . length == 0 ) {
if ( ! allowEmpty ) {
throw new FS . ErrnoError ( 44 ) ;
}
return dir ;
}
return PATH . join2 ( dir , path ) ;
} ,
doStat : function ( func , path , buf ) {
try {
var stat = func ( path ) ;
} catch ( e ) {
if ( e && e . node && PATH . normalize ( path ) !== PATH . normalize ( FS . getPath ( e . node ) ) ) {
return - 54 ;
}
throw e ;
}
HEAP32 [ buf >> 2 ] = stat . dev ;
HEAP32 [ buf + 4 >> 2 ] = 0 ;
HEAP32 [ buf + 8 >> 2 ] = stat . ino ;
HEAP32 [ buf + 12 >> 2 ] = stat . mode ;
HEAP32 [ buf + 16 >> 2 ] = stat . nlink ;
HEAP32 [ buf + 20 >> 2 ] = stat . uid ;
HEAP32 [ buf + 24 >> 2 ] = stat . gid ;
HEAP32 [ buf + 28 >> 2 ] = stat . rdev ;
HEAP32 [ buf + 32 >> 2 ] = 0 ;
tempI64 = [
stat . size >>> 0 ,
( tempDouble = stat . size , + Math . abs ( tempDouble ) >= 1 ? tempDouble > 0 ? ( Math . min ( + Math . floor ( tempDouble / 4294967296 ) , 4294967295 ) | 0 ) >>> 0 : ~ ~ + Math . ceil (
( tempDouble - + ( ~ ~ tempDouble >>> 0 ) ) / 4294967296
) >>> 0 : 0 )
] , HEAP32 [ buf + 40 >> 2 ] = tempI64 [ 0 ] , HEAP32 [ buf + 44 >> 2 ] = tempI64 [ 1 ] ;
HEAP32 [ buf + 48 >> 2 ] = 4096 ;
HEAP32 [ buf + 52 >> 2 ] = stat . blocks ;
HEAP32 [ buf + 56 >> 2 ] = stat . atime . getTime ( ) / 1e3 | 0 ;
HEAP32 [ buf + 60 >> 2 ] = 0 ;
HEAP32 [ buf + 64 >> 2 ] = stat . mtime . getTime ( ) / 1e3 | 0 ;
HEAP32 [ buf + 68 >> 2 ] = 0 ;
HEAP32 [ buf + 72 >> 2 ] = stat . ctime . getTime ( ) / 1e3 | 0 ;
HEAP32 [ buf + 76 >> 2 ] = 0 ;
tempI64 = [
stat . ino >>> 0 ,
( tempDouble = stat . ino , + Math . abs ( tempDouble ) >= 1 ? tempDouble > 0 ? ( Math . min ( + Math . floor ( tempDouble / 4294967296 ) , 4294967295 ) | 0 ) >>> 0 : ~ ~ + Math . ceil (
( tempDouble - + ( ~ ~ tempDouble >>> 0 ) ) / 4294967296
) >>> 0 : 0 )
] , HEAP32 [ buf + 80 >> 2 ] = tempI64 [ 0 ] , HEAP32 [ buf + 84 >> 2 ] = tempI64 [ 1 ] ;
return 0 ;
} ,
doMsync : function ( addr , stream , len , flags , offset ) {
var buffer2 = HEAPU8 . slice ( addr , addr + len ) ;
FS . msync ( stream , buffer2 , offset , len , flags ) ;
} ,
doMkdir : function ( path , mode ) {
path = PATH . normalize ( path ) ;
if ( path [ path . length - 1 ] === "/" )
path = path . substr ( 0 , path . length - 1 ) ;
FS . mkdir ( path , mode , 0 ) ;
return 0 ;
} ,
doMknod : function ( path , mode , dev ) {
switch ( mode & 61440 ) {
case 32768 :
case 8192 :
case 24576 :
case 4096 :
case 49152 :
break ;
default :
return - 28 ;
}
FS . mknod ( path , mode , dev ) ;
return 0 ;
} ,
doReadlink : function ( path , buf , bufsize ) {
if ( bufsize <= 0 )
return - 28 ;
var ret = FS . readlink ( path ) ;
var len = Math . min ( bufsize , lengthBytesUTF8 ( ret ) ) ;
var endChar = HEAP8 [ buf + len ] ;
stringToUTF8 ( ret , buf , bufsize + 1 ) ;
HEAP8 [ buf + len ] = endChar ;
return len ;
} ,
doAccess : function ( path , amode ) {
if ( amode & ~ 7 ) {
return - 28 ;
}
var node ;
var lookup = FS . lookupPath ( path , { follow : true } ) ;
node = lookup . node ;
if ( ! node ) {
return - 44 ;
}
var perms = "" ;
if ( amode & 4 )
perms += "r" ;
if ( amode & 2 )
perms += "w" ;
if ( amode & 1 )
perms += "x" ;
if ( perms && FS . nodePermissions ( node , perms ) ) {
return - 2 ;
}
return 0 ;
} ,
doDup : function ( path , flags , suggestFD ) {
var suggest = FS . getStream ( suggestFD ) ;
if ( suggest )
FS . close ( suggest ) ;
return FS . open ( path , flags , 0 , suggestFD , suggestFD ) . fd ;
} ,
doReadv : function ( stream , iov , iovcnt , offset ) {
var ret = 0 ;
for ( var i = 0 ; i < iovcnt ; i ++ ) {
var ptr = HEAP32 [ iov + i * 8 >> 2 ] ;
var len = HEAP32 [ iov + ( i * 8 + 4 ) >> 2 ] ;
var curr = FS . read ( stream , HEAP8 , ptr , len , offset ) ;
if ( curr < 0 )
return - 1 ;
ret += curr ;
if ( curr < len )
break ;
}
return ret ;
} ,
doWritev : function ( stream , iov , iovcnt , offset ) {
var ret = 0 ;
for ( var i = 0 ; i < iovcnt ; i ++ ) {
var ptr = HEAP32 [ iov + i * 8 >> 2 ] ;
var len = HEAP32 [ iov + ( i * 8 + 4 ) >> 2 ] ;
var curr = FS . write ( stream , HEAP8 , ptr , len , offset ) ;
if ( curr < 0 )
return - 1 ;
ret += curr ;
}
return ret ;
} ,
varargs : void 0 ,
get : function ( ) {
SYSCALLS . varargs += 4 ;
var ret = HEAP32 [ SYSCALLS . varargs - 4 >> 2 ] ;
return ret ;
} ,
getStr : function ( ptr ) {
var ret = UTF8ToString ( ptr ) ;
return ret ;
} ,
getStreamFromFD : function ( fd ) {
var stream = FS . getStream ( fd ) ;
if ( ! stream )
throw new FS . ErrnoError ( 8 ) ;
return stream ;
} ,
get64 : function ( low , high ) {
return low ;
}
} ;
function _ _ _sys _chmod ( path , mode ) {
try {
path = SYSCALLS . getStr ( path ) ;
FS . chmod ( path , mode ) ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function setErrNo ( value ) {
HEAP32 [ _ _ _errno _location ( ) >> 2 ] = value ;
return value ;
}
function _ _ _sys _fcntl64 ( fd , cmd , varargs ) {
SYSCALLS . varargs = varargs ;
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
switch ( cmd ) {
case 0 : {
var arg = SYSCALLS . get ( ) ;
if ( arg < 0 ) {
return - 28 ;
}
var newStream ;
newStream = FS . open ( stream . path , stream . flags , 0 , arg ) ;
return newStream . fd ;
}
case 1 :
case 2 :
return 0 ;
case 3 :
return stream . flags ;
case 4 : {
var arg = SYSCALLS . get ( ) ;
stream . flags |= arg ;
return 0 ;
}
case 12 : {
var arg = SYSCALLS . get ( ) ;
var offset = 0 ;
HEAP16 [ arg + offset >> 1 ] = 2 ;
return 0 ;
}
case 13 :
case 14 :
return 0 ;
case 16 :
case 8 :
return - 28 ;
case 9 :
setErrNo ( 28 ) ;
return - 1 ;
default : {
return - 28 ;
}
}
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _fstat64 ( fd , buf ) {
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
return SYSCALLS . doStat ( FS . stat , stream . path , buf ) ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _ioctl ( fd , op , varargs ) {
SYSCALLS . varargs = varargs ;
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
switch ( op ) {
case 21509 :
case 21505 : {
if ( ! stream . tty )
return - 59 ;
return 0 ;
}
case 21510 :
case 21511 :
case 21512 :
case 21506 :
case 21507 :
case 21508 : {
if ( ! stream . tty )
return - 59 ;
return 0 ;
}
case 21519 : {
if ( ! stream . tty )
return - 59 ;
var argp = SYSCALLS . get ( ) ;
HEAP32 [ argp >> 2 ] = 0 ;
return 0 ;
}
case 21520 : {
if ( ! stream . tty )
return - 59 ;
return - 28 ;
}
case 21531 : {
var argp = SYSCALLS . get ( ) ;
return FS . ioctl ( stream , op , argp ) ;
}
case 21523 : {
if ( ! stream . tty )
return - 59 ;
return 0 ;
}
case 21524 : {
if ( ! stream . tty )
return - 59 ;
return 0 ;
}
default :
abort ( "bad ioctl syscall " + op ) ;
}
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _open ( path , flags , varargs ) {
SYSCALLS . varargs = varargs ;
try {
var pathname = SYSCALLS . getStr ( path ) ;
var mode = varargs ? SYSCALLS . get ( ) : 0 ;
var stream = FS . open ( pathname , flags , mode ) ;
return stream . fd ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _rename ( old _path , new _path ) {
try {
old _path = SYSCALLS . getStr ( old _path ) ;
new _path = SYSCALLS . getStr ( new _path ) ;
FS . rename ( old _path , new _path ) ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _rmdir ( path ) {
try {
path = SYSCALLS . getStr ( path ) ;
FS . rmdir ( path ) ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _stat64 ( path , buf ) {
try {
path = SYSCALLS . getStr ( path ) ;
return SYSCALLS . doStat ( FS . stat , path , buf ) ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _ _ _sys _unlink ( path ) {
try {
path = SYSCALLS . getStr ( path ) ;
FS . unlink ( path ) ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return - e . errno ;
}
}
function _emscripten _memcpy _big ( dest , src , num ) {
HEAPU8 . copyWithin ( dest , src , src + num ) ;
}
function emscripten _realloc _buffer ( size ) {
try {
wasmMemory . grow ( size - buffer . byteLength + 65535 >>> 16 ) ;
updateGlobalBufferAndViews ( wasmMemory . buffer ) ;
return 1 ;
} catch ( e ) {
}
}
function _emscripten _resize _heap ( requestedSize ) {
var oldSize = HEAPU8 . length ;
requestedSize = requestedSize >>> 0 ;
var maxHeapSize = 2147483648 ;
if ( requestedSize > maxHeapSize ) {
return false ;
}
for ( var cutDown = 1 ; cutDown <= 4 ; cutDown *= 2 ) {
var overGrownHeapSize = oldSize * ( 1 + 0.2 / cutDown ) ;
overGrownHeapSize = Math . min (
overGrownHeapSize ,
requestedSize + 100663296
) ;
var newSize = Math . min (
maxHeapSize ,
alignUp ( Math . max ( requestedSize , overGrownHeapSize ) , 65536 )
) ;
var replacement = emscripten _realloc _buffer ( newSize ) ;
if ( replacement ) {
return true ;
}
}
return false ;
}
function _fd _close ( fd ) {
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
FS . close ( stream ) ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return e . errno ;
}
}
function _fd _fdstat _get ( fd , pbuf ) {
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
var type = stream . tty ? 2 : FS . isDir ( stream . mode ) ? 3 : FS . isLink ( stream . mode ) ? 7 : 4 ;
HEAP8 [ pbuf >> 0 ] = type ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return e . errno ;
}
}
function _fd _read ( fd , iov , iovcnt , pnum ) {
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
var num = SYSCALLS . doReadv ( stream , iov , iovcnt ) ;
HEAP32 [ pnum >> 2 ] = num ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return e . errno ;
}
}
function _fd _seek ( fd , offset _low , offset _high , whence , newOffset ) {
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
var HIGH _OFFSET = 4294967296 ;
var offset = offset _high * HIGH _OFFSET + ( offset _low >>> 0 ) ;
var DOUBLE _LIMIT = 9007199254740992 ;
if ( offset <= - DOUBLE _LIMIT || offset >= DOUBLE _LIMIT ) {
return - 61 ;
}
FS . llseek ( stream , offset , whence ) ;
tempI64 = [
stream . position >>> 0 ,
( tempDouble = stream . position , + Math . abs ( tempDouble ) >= 1 ? tempDouble > 0 ? ( Math . min ( + Math . floor ( tempDouble / 4294967296 ) , 4294967295 ) | 0 ) >>> 0 : ~ ~ + Math . ceil (
( tempDouble - + ( ~ ~ tempDouble >>> 0 ) ) / 4294967296
) >>> 0 : 0 )
] , HEAP32 [ newOffset >> 2 ] = tempI64 [ 0 ] , HEAP32 [ newOffset + 4 >> 2 ] = tempI64 [ 1 ] ;
if ( stream . getdents && offset === 0 && whence === 0 )
stream . getdents = null ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return e . errno ;
}
}
function _fd _write ( fd , iov , iovcnt , pnum ) {
try {
var stream = SYSCALLS . getStreamFromFD ( fd ) ;
var num = SYSCALLS . doWritev ( stream , iov , iovcnt ) ;
HEAP32 [ pnum >> 2 ] = num ;
return 0 ;
} catch ( e ) {
if ( typeof FS === "undefined" || ! ( e instanceof FS . ErrnoError ) )
abort ( e ) ;
return e . errno ;
}
}
function _setTempRet0 ( val ) {
}
function _time ( ptr ) {
var ret = Date . now ( ) / 1e3 | 0 ;
if ( ptr ) {
HEAP32 [ ptr >> 2 ] = ret ;
}
return ret ;
}
function _tzset ( ) {
if ( _tzset . called )
return ;
_tzset . called = true ;
var currentYear = new Date ( ) . getFullYear ( ) ;
var winter = new Date ( currentYear , 0 , 1 ) ;
var summer = new Date ( currentYear , 6 , 1 ) ;
var winterOffset = winter . getTimezoneOffset ( ) ;
var summerOffset = summer . getTimezoneOffset ( ) ;
var stdTimezoneOffset = Math . max ( winterOffset , summerOffset ) ;
HEAP32 [ _ _get _timezone ( ) >> 2 ] = stdTimezoneOffset * 60 ;
HEAP32 [ _ _get _daylight ( ) >> 2 ] = Number ( winterOffset != summerOffset ) ;
function extractZone ( date ) {
var match = date . toTimeString ( ) . match ( /\(([A-Za-z ]+)\)$/ ) ;
return match ? match [ 1 ] : "GMT" ;
}
var winterName = extractZone ( winter ) ;
var summerName = extractZone ( summer ) ;
var winterNamePtr = allocateUTF8 ( winterName ) ;
var summerNamePtr = allocateUTF8 ( summerName ) ;
if ( summerOffset < winterOffset ) {
HEAP32 [ _ _get _tzname ( ) >> 2 ] = winterNamePtr ;
HEAP32 [ _ _get _tzname ( ) + 4 >> 2 ] = summerNamePtr ;
} else {
HEAP32 [ _ _get _tzname ( ) >> 2 ] = summerNamePtr ;
HEAP32 [ _ _get _tzname ( ) + 4 >> 2 ] = winterNamePtr ;
}
}
function _timegm ( tmPtr ) {
_tzset ( ) ;
var time = Date . UTC (
HEAP32 [ tmPtr + 20 >> 2 ] + 1900 ,
HEAP32 [ tmPtr + 16 >> 2 ] ,
HEAP32 [ tmPtr + 12 >> 2 ] ,
HEAP32 [ tmPtr + 8 >> 2 ] ,
HEAP32 [ tmPtr + 4 >> 2 ] ,
HEAP32 [ tmPtr >> 2 ] ,
0
) ;
var date = new Date ( time ) ;
HEAP32 [ tmPtr + 24 >> 2 ] = date . getUTCDay ( ) ;
var start = Date . UTC ( date . getUTCFullYear ( ) , 0 , 1 , 0 , 0 , 0 , 0 ) ;
var yday = ( date . getTime ( ) - start ) / ( 1e3 * 60 * 60 * 24 ) | 0 ;
HEAP32 [ tmPtr + 28 >> 2 ] = yday ;
return date . getTime ( ) / 1e3 | 0 ;
}
var FSNode = function ( parent , name , mode , rdev ) {
if ( ! parent ) {
parent = this ;
}
this . parent = parent ;
this . mount = parent . mount ;
this . mounted = null ;
this . id = FS . nextInode ++ ;
this . name = name ;
this . mode = mode ;
this . node _ops = { } ;
this . stream _ops = { } ;
this . rdev = rdev ;
} ;
var readMode = 292 | 73 ;
var writeMode = 146 ;
Object . defineProperties ( FSNode . prototype , {
read : {
get : function ( ) {
return ( this . mode & readMode ) === readMode ;
} ,
set : function ( val ) {
val ? this . mode |= readMode : this . mode &= ~ readMode ;
}
} ,
write : {
get : function ( ) {
return ( this . mode & writeMode ) === writeMode ;
} ,
set : function ( val ) {
val ? this . mode |= writeMode : this . mode &= ~ writeMode ;
}
} ,
isFolder : {
get : function ( ) {
return FS . isDir ( this . mode ) ;
}
} ,
isDevice : {
get : function ( ) {
return FS . isChrdev ( this . mode ) ;
}
}
} ) ;
FS . FSNode = FSNode ;
FS . staticInit ( ) ;
{
var fs = frozenFs ;
var NODEJS _PATH = path _ _default . default ;
NODEFS . staticInit ( ) ;
}
{
var _wrapNodeError = function ( func ) {
return function ( ) {
try {
return func . apply ( this , arguments ) ;
} catch ( e ) {
if ( ! e . code )
throw e ;
throw new FS . ErrnoError ( ERRNO _CODES [ e . code ] ) ;
}
} ;
} ;
var VFS = Object . assign ( { } , FS ) ;
for ( var _key in NODERAWFS )
FS [ _key ] = _wrapNodeError ( NODERAWFS [ _key ] ) ;
}
function intArrayFromString ( stringy , dontAddNull , length ) {
var len = length > 0 ? length : lengthBytesUTF8 ( stringy ) + 1 ;
var u8array = new Array ( len ) ;
var numBytesWritten = stringToUTF8Array (
stringy ,
u8array ,
0 ,
u8array . length
) ;
if ( dontAddNull )
u8array . length = numBytesWritten ;
return u8array ;
}
function intArrayFromBase64 ( s ) {
{
var buf ;
try {
buf = Buffer . from ( s , "base64" ) ;
} catch ( _ ) {
buf = new Buffer ( s , "base64" ) ;
}
return new Uint8Array (
buf [ "buffer" ] ,
buf [ "byteOffset" ] ,
buf [ "byteLength" ]
) ;
}
}
function tryParseAsDataURI ( filename ) {
if ( ! isDataURI ( filename ) ) {
return ;
}
return intArrayFromBase64 ( filename . slice ( dataURIPrefix . length ) ) ;
}
var asmLibraryArg = {
s : _ _ _gmtime _r ,
p : _ _ _sys _chmod ,
e : _ _ _sys _fcntl64 ,
k : _ _ _sys _fstat64 ,
o : _ _ _sys _ioctl ,
q : _ _ _sys _open ,
i : _ _ _sys _rename ,
r : _ _ _sys _rmdir ,
c : _ _ _sys _stat64 ,
h : _ _ _sys _unlink ,
l : _emscripten _memcpy _big ,
m : _emscripten _resize _heap ,
f : _fd _close ,
j : _fd _fdstat _get ,
g : _fd _read ,
n : _fd _seek ,
d : _fd _write ,
a : _setTempRet0 ,
b : _time ,
t : _timegm
} ;
var asm = createWasm ( ) ;
Module [ "___wasm_call_ctors" ] = asm [ "v" ] ;
Module [ "_zip_ext_count_symlinks" ] = asm [ "w" ] ;
Module [ "_zip_file_get_external_attributes" ] = asm [ "x" ] ;
Module [ "_zipstruct_stat" ] = asm [ "y" ] ;
Module [ "_zipstruct_statS" ] = asm [ "z" ] ;
Module [ "_zipstruct_stat_name" ] = asm [ "A" ] ;
Module [ "_zipstruct_stat_index" ] = asm [ "B" ] ;
Module [ "_zipstruct_stat_size" ] = asm [ "C" ] ;
Module [ "_zipstruct_stat_mtime" ] = asm [ "D" ] ;
Module [ "_zipstruct_stat_crc" ] = asm [ "E" ] ;
Module [ "_zipstruct_error" ] = asm [ "F" ] ;
Module [ "_zipstruct_errorS" ] = asm [ "G" ] ;
Module [ "_zipstruct_error_code_zip" ] = asm [ "H" ] ;
Module [ "_zipstruct_stat_comp_size" ] = asm [ "I" ] ;
Module [ "_zipstruct_stat_comp_method" ] = asm [ "J" ] ;
Module [ "_zip_close" ] = asm [ "K" ] ;
Module [ "_zip_delete" ] = asm [ "L" ] ;
Module [ "_zip_dir_add" ] = asm [ "M" ] ;
Module [ "_zip_discard" ] = asm [ "N" ] ;
Module [ "_zip_error_init_with_code" ] = asm [ "O" ] ;
Module [ "_zip_get_error" ] = asm [ "P" ] ;
Module [ "_zip_file_get_error" ] = asm [ "Q" ] ;
Module [ "_zip_error_strerror" ] = asm [ "R" ] ;
Module [ "_zip_fclose" ] = asm [ "S" ] ;
Module [ "_zip_file_add" ] = asm [ "T" ] ;
Module [ "_free" ] = asm [ "U" ] ;
var _malloc = Module [ "_malloc" ] = asm [ "V" ] ;
var _ _ _errno _location = Module [ "___errno_location" ] = asm [ "W" ] ;
Module [ "_zip_source_error" ] = asm [ "X" ] ;
Module [ "_zip_source_seek" ] = asm [ "Y" ] ;
Module [ "_zip_file_set_external_attributes" ] = asm [ "Z" ] ;
Module [ "_zip_file_set_mtime" ] = asm [ "_" ] ;
Module [ "_zip_fopen" ] = asm [ "$" ] ;
Module [ "_zip_fopen_index" ] = asm [ "aa" ] ;
Module [ "_zip_fread" ] = asm [ "ba" ] ;
Module [ "_zip_get_name" ] = asm [ "ca" ] ;
Module [ "_zip_get_num_entries" ] = asm [ "da" ] ;
Module [ "_zip_source_read" ] = asm [ "ea" ] ;
Module [ "_zip_name_locate" ] = asm [ "fa" ] ;
Module [ "_zip_open" ] = asm [ "ga" ] ;
Module [ "_zip_open_from_source" ] = asm [ "ha" ] ;
Module [ "_zip_set_file_compression" ] = asm [ "ia" ] ;
Module [ "_zip_source_buffer" ] = asm [ "ja" ] ;
Module [ "_zip_source_buffer_create" ] = asm [ "ka" ] ;
Module [ "_zip_source_close" ] = asm [ "la" ] ;
Module [ "_zip_source_free" ] = asm [ "ma" ] ;
Module [ "_zip_source_keep" ] = asm [ "na" ] ;
Module [ "_zip_source_open" ] = asm [ "oa" ] ;
Module [ "_zip_source_set_mtime" ] = asm [ "qa" ] ;
Module [ "_zip_source_tell" ] = asm [ "ra" ] ;
Module [ "_zip_stat" ] = asm [ "sa" ] ;
Module [ "_zip_stat_index" ] = asm [ "ta" ] ;
var _ _get _tzname = Module [ "__get_tzname" ] = asm [ "ua" ] ;
var _ _get _daylight = Module [ "__get_daylight" ] = asm [ "va" ] ;
var _ _get _timezone = Module [ "__get_timezone" ] = asm [ "wa" ] ;
var stackSave = Module [ "stackSave" ] = asm [ "xa" ] ;
var stackRestore = Module [ "stackRestore" ] = asm [ "ya" ] ;
var stackAlloc = Module [ "stackAlloc" ] = asm [ "za" ] ;
Module [ "cwrap" ] = cwrap ;
Module [ "getValue" ] = getValue ;
var calledRun ;
dependenciesFulfilled = function runCaller ( ) {
if ( ! calledRun )
run ( ) ;
if ( ! calledRun )
dependenciesFulfilled = runCaller ;
} ;
function run ( args ) {
if ( runDependencies > 0 ) {
return ;
}
preRun ( ) ;
if ( runDependencies > 0 ) {
return ;
}
function doRun ( ) {
if ( calledRun )
return ;
calledRun = true ;
Module [ "calledRun" ] = true ;
if ( ABORT )
return ;
initRuntime ( ) ;
readyPromiseResolve ( Module ) ;
if ( Module [ "onRuntimeInitialized" ] )
Module [ "onRuntimeInitialized" ] ( ) ;
postRun ( ) ;
}
if ( Module [ "setStatus" ] ) {
Module [ "setStatus" ] ( "Running..." ) ;
setTimeout ( function ( ) {
setTimeout ( function ( ) {
Module [ "setStatus" ] ( "" ) ;
} , 1 ) ;
doRun ( ) ;
} , 1 ) ;
} else {
doRun ( ) ;
}
}
Module [ "run" ] = run ;
if ( Module [ "preInit" ] ) {
if ( typeof Module [ "preInit" ] == "function" )
Module [ "preInit" ] = [ Module [ "preInit" ] ] ;
while ( Module [ "preInit" ] . length > 0 ) {
Module [ "preInit" ] . pop ( ) ( ) ;
}
}
run ( ) ;
return createModule2 ;
} ;
} ( ) ;
module . exports = createModule ;
} ( libzipSync ) ) ;
const createModule = libzipSync . exports ;
const number64 = [
` number ` ,
` number `
] ;
var Errors = /* @__PURE__ */ ( ( Errors2 ) => {
Errors2 [ Errors2 [ "ZIP_ER_OK" ] = 0 ] = "ZIP_ER_OK" ;
Errors2 [ Errors2 [ "ZIP_ER_MULTIDISK" ] = 1 ] = "ZIP_ER_MULTIDISK" ;
Errors2 [ Errors2 [ "ZIP_ER_RENAME" ] = 2 ] = "ZIP_ER_RENAME" ;
Errors2 [ Errors2 [ "ZIP_ER_CLOSE" ] = 3 ] = "ZIP_ER_CLOSE" ;
Errors2 [ Errors2 [ "ZIP_ER_SEEK" ] = 4 ] = "ZIP_ER_SEEK" ;
Errors2 [ Errors2 [ "ZIP_ER_READ" ] = 5 ] = "ZIP_ER_READ" ;
Errors2 [ Errors2 [ "ZIP_ER_WRITE" ] = 6 ] = "ZIP_ER_WRITE" ;
Errors2 [ Errors2 [ "ZIP_ER_CRC" ] = 7 ] = "ZIP_ER_CRC" ;
Errors2 [ Errors2 [ "ZIP_ER_ZIPCLOSED" ] = 8 ] = "ZIP_ER_ZIPCLOSED" ;
Errors2 [ Errors2 [ "ZIP_ER_NOENT" ] = 9 ] = "ZIP_ER_NOENT" ;
Errors2 [ Errors2 [ "ZIP_ER_EXISTS" ] = 10 ] = "ZIP_ER_EXISTS" ;
Errors2 [ Errors2 [ "ZIP_ER_OPEN" ] = 11 ] = "ZIP_ER_OPEN" ;
Errors2 [ Errors2 [ "ZIP_ER_TMPOPEN" ] = 12 ] = "ZIP_ER_TMPOPEN" ;
Errors2 [ Errors2 [ "ZIP_ER_ZLIB" ] = 13 ] = "ZIP_ER_ZLIB" ;
Errors2 [ Errors2 [ "ZIP_ER_MEMORY" ] = 14 ] = "ZIP_ER_MEMORY" ;
Errors2 [ Errors2 [ "ZIP_ER_CHANGED" ] = 15 ] = "ZIP_ER_CHANGED" ;
Errors2 [ Errors2 [ "ZIP_ER_COMPNOTSUPP" ] = 16 ] = "ZIP_ER_COMPNOTSUPP" ;
Errors2 [ Errors2 [ "ZIP_ER_EOF" ] = 17 ] = "ZIP_ER_EOF" ;
Errors2 [ Errors2 [ "ZIP_ER_INVAL" ] = 18 ] = "ZIP_ER_INVAL" ;
Errors2 [ Errors2 [ "ZIP_ER_NOZIP" ] = 19 ] = "ZIP_ER_NOZIP" ;
Errors2 [ Errors2 [ "ZIP_ER_INTERNAL" ] = 20 ] = "ZIP_ER_INTERNAL" ;
Errors2 [ Errors2 [ "ZIP_ER_INCONS" ] = 21 ] = "ZIP_ER_INCONS" ;
Errors2 [ Errors2 [ "ZIP_ER_REMOVE" ] = 22 ] = "ZIP_ER_REMOVE" ;
Errors2 [ Errors2 [ "ZIP_ER_DELETED" ] = 23 ] = "ZIP_ER_DELETED" ;
Errors2 [ Errors2 [ "ZIP_ER_ENCRNOTSUPP" ] = 24 ] = "ZIP_ER_ENCRNOTSUPP" ;
Errors2 [ Errors2 [ "ZIP_ER_RDONLY" ] = 25 ] = "ZIP_ER_RDONLY" ;
Errors2 [ Errors2 [ "ZIP_ER_NOPASSWD" ] = 26 ] = "ZIP_ER_NOPASSWD" ;
Errors2 [ Errors2 [ "ZIP_ER_WRONGPASSWD" ] = 27 ] = "ZIP_ER_WRONGPASSWD" ;
Errors2 [ Errors2 [ "ZIP_ER_OPNOTSUPP" ] = 28 ] = "ZIP_ER_OPNOTSUPP" ;
Errors2 [ Errors2 [ "ZIP_ER_INUSE" ] = 29 ] = "ZIP_ER_INUSE" ;
Errors2 [ Errors2 [ "ZIP_ER_TELL" ] = 30 ] = "ZIP_ER_TELL" ;
Errors2 [ Errors2 [ "ZIP_ER_COMPRESSED_DATA" ] = 31 ] = "ZIP_ER_COMPRESSED_DATA" ;
return Errors2 ;
} ) ( Errors || { } ) ;
const makeInterface = ( libzip ) => ( {
get HEAP8 ( ) {
return libzip . HEAP8 ;
} ,
get HEAPU8 ( ) {
return libzip . HEAPU8 ;
} ,
errors : Errors ,
SEEK _SET : 0 ,
SEEK _CUR : 1 ,
SEEK _END : 2 ,
ZIP _CHECKCONS : 4 ,
ZIP _CREATE : 1 ,
ZIP _EXCL : 2 ,
ZIP _TRUNCATE : 8 ,
ZIP _RDONLY : 16 ,
ZIP _FL _OVERWRITE : 8192 ,
ZIP _FL _COMPRESSED : 4 ,
ZIP _OPSYS _DOS : 0 ,
ZIP _OPSYS _AMIGA : 1 ,
ZIP _OPSYS _OPENVMS : 2 ,
ZIP _OPSYS _UNIX : 3 ,
ZIP _OPSYS _VM _CMS : 4 ,
ZIP _OPSYS _ATARI _ST : 5 ,
ZIP _OPSYS _OS _2 : 6 ,
ZIP _OPSYS _MACINTOSH : 7 ,
ZIP _OPSYS _Z _SYSTEM : 8 ,
ZIP _OPSYS _CPM : 9 ,
ZIP _OPSYS _WINDOWS _NTFS : 10 ,
ZIP _OPSYS _MVS : 11 ,
ZIP _OPSYS _VSE : 12 ,
ZIP _OPSYS _ACORN _RISC : 13 ,
ZIP _OPSYS _VFAT : 14 ,
ZIP _OPSYS _ALTERNATE _MVS : 15 ,
ZIP _OPSYS _BEOS : 16 ,
ZIP _OPSYS _TANDEM : 17 ,
ZIP _OPSYS _OS _400 : 18 ,
ZIP _OPSYS _OS _X : 19 ,
ZIP _CM _DEFAULT : - 1 ,
ZIP _CM _STORE : 0 ,
ZIP _CM _DEFLATE : 8 ,
uint08S : libzip . _malloc ( 1 ) ,
uint16S : libzip . _malloc ( 2 ) ,
uint32S : libzip . _malloc ( 4 ) ,
uint64S : libzip . _malloc ( 8 ) ,
malloc : libzip . _malloc ,
free : libzip . _free ,
getValue : libzip . getValue ,
open : libzip . cwrap ( ` zip_open ` , ` number ` , [ ` string ` , ` number ` , ` number ` ] ) ,
openFromSource : libzip . cwrap ( ` zip_open_from_source ` , ` number ` , [ ` number ` , ` number ` , ` number ` ] ) ,
close : libzip . cwrap ( ` zip_close ` , ` number ` , [ ` number ` ] ) ,
discard : libzip . cwrap ( ` zip_discard ` , null , [ ` number ` ] ) ,
getError : libzip . cwrap ( ` zip_get_error ` , ` number ` , [ ` number ` ] ) ,
getName : libzip . cwrap ( ` zip_get_name ` , ` string ` , [ ` number ` , ` number ` , ` number ` ] ) ,
getNumEntries : libzip . cwrap ( ` zip_get_num_entries ` , ` number ` , [ ` number ` , ` number ` ] ) ,
delete : libzip . cwrap ( ` zip_delete ` , ` number ` , [ ` number ` , ` number ` ] ) ,
stat : libzip . cwrap ( ` zip_stat ` , ` number ` , [ ` number ` , ` string ` , ` number ` , ` number ` ] ) ,
statIndex : libzip . cwrap ( ` zip_stat_index ` , ` number ` , [ ` number ` , ... number64 , ` number ` , ` number ` ] ) ,
fopen : libzip . cwrap ( ` zip_fopen ` , ` number ` , [ ` number ` , ` string ` , ` number ` ] ) ,
fopenIndex : libzip . cwrap ( ` zip_fopen_index ` , ` number ` , [ ` number ` , ... number64 , ` number ` ] ) ,
fread : libzip . cwrap ( ` zip_fread ` , ` number ` , [ ` number ` , ` number ` , ` number ` , ` number ` ] ) ,
fclose : libzip . cwrap ( ` zip_fclose ` , ` number ` , [ ` number ` ] ) ,
dir : {
add : libzip . cwrap ( ` zip_dir_add ` , ` number ` , [ ` number ` , ` string ` ] )
} ,
file : {
add : libzip . cwrap ( ` zip_file_add ` , ` number ` , [ ` number ` , ` string ` , ` number ` , ` number ` ] ) ,
getError : libzip . cwrap ( ` zip_file_get_error ` , ` number ` , [ ` number ` ] ) ,
getExternalAttributes : libzip . cwrap ( ` zip_file_get_external_attributes ` , ` number ` , [ ` number ` , ... number64 , ` number ` , ` number ` , ` number ` ] ) ,
setExternalAttributes : libzip . cwrap ( ` zip_file_set_external_attributes ` , ` number ` , [ ` number ` , ... number64 , ` number ` , ` number ` , ` number ` ] ) ,
setMtime : libzip . cwrap ( ` zip_file_set_mtime ` , ` number ` , [ ` number ` , ... number64 , ` number ` , ` number ` ] ) ,
setCompression : libzip . cwrap ( ` zip_set_file_compression ` , ` number ` , [ ` number ` , ... number64 , ` number ` , ` number ` ] )
} ,
ext : {
countSymlinks : libzip . cwrap ( ` zip_ext_count_symlinks ` , ` number ` , [ ` number ` ] )
} ,
error : {
initWithCode : libzip . cwrap ( ` zip_error_init_with_code ` , null , [ ` number ` , ` number ` ] ) ,
strerror : libzip . cwrap ( ` zip_error_strerror ` , ` string ` , [ ` number ` ] )
} ,
name : {
locate : libzip . cwrap ( ` zip_name_locate ` , ` number ` , [ ` number ` , ` string ` , ` number ` ] )
} ,
source : {
fromUnattachedBuffer : libzip . cwrap ( ` zip_source_buffer_create ` , ` number ` , [ ` number ` , ... number64 , ` number ` , ` number ` ] ) ,
fromBuffer : libzip . cwrap ( ` zip_source_buffer ` , ` number ` , [ ` number ` , ` number ` , ... number64 , ` number ` ] ) ,
free : libzip . cwrap ( ` zip_source_free ` , null , [ ` number ` ] ) ,
keep : libzip . cwrap ( ` zip_source_keep ` , null , [ ` number ` ] ) ,
open : libzip . cwrap ( ` zip_source_open ` , ` number ` , [ ` number ` ] ) ,
close : libzip . cwrap ( ` zip_source_close ` , ` number ` , [ ` number ` ] ) ,
seek : libzip . cwrap ( ` zip_source_seek ` , ` number ` , [ ` number ` , ... number64 , ` number ` ] ) ,
tell : libzip . cwrap ( ` zip_source_tell ` , ` number ` , [ ` number ` ] ) ,
read : libzip . cwrap ( ` zip_source_read ` , ` number ` , [ ` number ` , ` number ` , ` number ` ] ) ,
error : libzip . cwrap ( ` zip_source_error ` , ` number ` , [ ` number ` ] ) ,
setMtime : libzip . cwrap ( ` zip_source_set_mtime ` , ` number ` , [ ` number ` , ` number ` ] )
} ,
struct : {
stat : libzip . cwrap ( ` zipstruct_stat ` , ` number ` , [ ] ) ,
statS : libzip . cwrap ( ` zipstruct_statS ` , ` number ` , [ ] ) ,
statName : libzip . cwrap ( ` zipstruct_stat_name ` , ` string ` , [ ` number ` ] ) ,
statIndex : libzip . cwrap ( ` zipstruct_stat_index ` , ` number ` , [ ` number ` ] ) ,
statSize : libzip . cwrap ( ` zipstruct_stat_size ` , ` number ` , [ ` number ` ] ) ,
statCompSize : libzip . cwrap ( ` zipstruct_stat_comp_size ` , ` number ` , [ ` number ` ] ) ,
statCompMethod : libzip . cwrap ( ` zipstruct_stat_comp_method ` , ` number ` , [ ` number ` ] ) ,
statMtime : libzip . cwrap ( ` zipstruct_stat_mtime ` , ` number ` , [ ` number ` ] ) ,
statCrc : libzip . cwrap ( ` zipstruct_stat_crc ` , ` number ` , [ ` number ` ] ) ,
error : libzip . cwrap ( ` zipstruct_error ` , ` number ` , [ ] ) ,
errorS : libzip . cwrap ( ` zipstruct_errorS ` , ` number ` , [ ] ) ,
errorCodeZip : libzip . cwrap ( ` zipstruct_error_code_zip ` , ` number ` , [ ` number ` ] )
}
} ) ;
let mod = null ;
function getLibzipSync ( ) {
if ( mod === null )
mod = makeInterface ( createModule ( ) ) ;
return mod ;
}
var ErrorCode = /* @__PURE__ */ ( ( ErrorCode2 ) => {
ErrorCode2 [ "API_ERROR" ] = ` API_ERROR ` ;
ErrorCode2 [ "BUILTIN_NODE_RESOLUTION_FAILED" ] = ` BUILTIN_NODE_RESOLUTION_FAILED ` ;
ErrorCode2 [ "EXPORTS_RESOLUTION_FAILED" ] = ` EXPORTS_RESOLUTION_FAILED ` ;
ErrorCode2 [ "MISSING_DEPENDENCY" ] = ` MISSING_DEPENDENCY ` ;
ErrorCode2 [ "MISSING_PEER_DEPENDENCY" ] = ` MISSING_PEER_DEPENDENCY ` ;
ErrorCode2 [ "QUALIFIED_PATH_RESOLUTION_FAILED" ] = ` QUALIFIED_PATH_RESOLUTION_FAILED ` ;
ErrorCode2 [ "INTERNAL" ] = ` INTERNAL ` ;
ErrorCode2 [ "UNDECLARED_DEPENDENCY" ] = ` UNDECLARED_DEPENDENCY ` ;
ErrorCode2 [ "UNSUPPORTED" ] = ` UNSUPPORTED ` ;
return ErrorCode2 ;
} ) ( ErrorCode || { } ) ;
const MODULE _NOT _FOUND _ERRORS = /* @__PURE__ */ new Set ( [
"BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */ ,
"MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */ ,
"MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */ ,
"QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */ ,
"UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */
] ) ;
function makeError ( pnpCode , message , data = { } , code ) {
code != null ? code : code = MODULE _NOT _FOUND _ERRORS . has ( pnpCode ) ? ` MODULE_NOT_FOUND ` : pnpCode ;
const propertySpec = {
configurable : true ,
writable : true ,
enumerable : false
} ;
return Object . defineProperties ( new Error ( message ) , {
code : {
... propertySpec ,
value : code
} ,
pnpCode : {
... propertySpec ,
value : pnpCode
} ,
data : {
... propertySpec ,
value : data
}
} ) ;
}
function getIssuerModule ( parent ) {
let issuer = parent ;
while ( issuer && ( issuer . id === ` [eval] ` || issuer . id === ` <repl> ` || ! issuer . filename ) )
issuer = issuer . parent ;
return issuer || null ;
}
function getPathForDisplay ( p ) {
return npath . normalize ( npath . fromPortablePath ( p ) ) ;
}
const [ major , minor ] = process . versions . node . split ( ` . ` ) . map ( ( value ) => parseInt ( value , 10 ) ) ;
const WATCH _MODE _MESSAGE _USES _ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13 ;
const builtinModules = new Set ( require$$0 . Module . builtinModules || Object . keys ( process . binding ( ` natives ` ) ) ) ;
const isBuiltinModule = ( request ) => request . startsWith ( ` node: ` ) || builtinModules . has ( request ) ;
function readPackageScope ( checkPath ) {
const rootSeparatorIndex = checkPath . indexOf ( npath . sep ) ;
let separatorIndex ;
do {
separatorIndex = checkPath . lastIndexOf ( npath . sep ) ;
checkPath = checkPath . slice ( 0 , separatorIndex ) ;
if ( checkPath . endsWith ( ` ${ npath . sep } node_modules ` ) )
return false ;
const pjson = readPackage ( checkPath + npath . sep ) ;
if ( pjson ) {
return {
data : pjson ,
path : checkPath
} ;
}
} while ( separatorIndex > rootSeparatorIndex ) ;
return false ;
}
function readPackage ( requestPath ) {
const jsonPath = npath . resolve ( requestPath , ` package.json ` ) ;
if ( ! fs _ _default . default . existsSync ( jsonPath ) )
return null ;
return JSON . parse ( fs _ _default . default . readFileSync ( jsonPath , ` utf8 ` ) ) ;
}
function ERR _REQUIRE _ESM ( filename , parentPath = null ) {
const basename = parentPath && path _ _default . default . basename ( filename ) === path _ _default . default . basename ( parentPath ) ? filename : path _ _default . default . basename ( filename ) ;
const msg = ` require() of ES Module ${ filename } ${ parentPath ? ` from ${ parentPath } ` : ` ` } not supported.
Instead change the require of $ { basename } in $ { parentPath } to a dynamic import ( ) which is available in all CommonJS modules . ` ;
const err = new Error ( msg ) ;
err . code = ` ERR_REQUIRE_ESM ` ;
return err ;
}
function reportRequiredFilesToWatchMode ( files ) {
if ( process . env . WATCH _REPORT _DEPENDENCIES && process . send ) {
files = files . map ( ( filename ) => npath . fromPortablePath ( VirtualFS . resolveVirtual ( npath . toPortablePath ( filename ) ) ) ) ;
if ( WATCH _MODE _MESSAGE _USES _ARRAYS ) {
process . send ( { "watch:require" : files } ) ;
} else {
for ( const filename of files ) {
process . send ( { "watch:require" : filename } ) ;
}
}
}
}
function applyPatch ( pnpapi , opts ) {
let enableNativeHooks = true ;
process . versions . pnp = String ( pnpapi . VERSIONS . std ) ;
const moduleExports = require$$0 _ _default . default ;
moduleExports . findPnpApi = ( lookupSource ) => {
const lookupPath = lookupSource instanceof url . URL ? url . fileURLToPath ( lookupSource ) : lookupSource ;
const apiPath = opts . manager . findApiPathFor ( lookupPath ) ;
if ( apiPath === null )
return null ;
const apiEntry = opts . manager . getApiEntry ( apiPath , true ) ;
return apiEntry . instance . findPackageLocator ( lookupPath ) ? apiEntry . instance : null ;
} ;
function getRequireStack ( parent ) {
const requireStack = [ ] ;
for ( let cursor = parent ; cursor ; cursor = cursor . parent )
requireStack . push ( cursor . filename || cursor . id ) ;
return requireStack ;
}
const originalModuleLoad = require$$0 . Module . _load ;
require$$0 . Module . _load = function ( request , parent , isMain ) {
if ( request === ` pnpapi ` ) {
const parentApiPath = opts . manager . getApiPathFromParent ( parent ) ;
if ( parentApiPath ) {
return opts . manager . getApiEntry ( parentApiPath , true ) . instance ;
}
}
return originalModuleLoad . call ( require$$0 . Module , request , parent , isMain ) ;
} ;
function getIssuerSpecsFromPaths ( paths ) {
return paths . map ( ( path ) => ( {
apiPath : opts . manager . findApiPathFor ( path ) ,
path ,
module : null
} ) ) ;
}
function getIssuerSpecsFromModule ( module ) {
var _a ;
if ( module && module . id !== ` <repl> ` && module . id !== ` internal/preload ` && ! module . parent && ! module . filename && module . paths . length > 0 ) {
return [ {
apiPath : opts . manager . findApiPathFor ( module . paths [ 0 ] ) ,
path : module . paths [ 0 ] ,
module
} ] ;
}
const issuer = getIssuerModule ( module ) ;
if ( issuer !== null ) {
const path = npath . dirname ( issuer . filename ) ;
const apiPath = opts . manager . getApiPathFromParent ( issuer ) ;
return [ { apiPath , path , module } ] ;
} else {
const path = process . cwd ( ) ;
const apiPath = ( _a = opts . manager . findApiPathFor ( npath . join ( path , ` [file] ` ) ) ) != null ? _a : opts . manager . getApiPathFromParent ( null ) ;
return [ { apiPath , path , module } ] ;
}
}
function makeFakeParent ( path ) {
const fakeParent = new require$$0 . Module ( ` ` ) ;
const fakeFilePath = npath . join ( path , ` [file] ` ) ;
fakeParent . paths = require$$0 . Module . _nodeModulePaths ( fakeFilePath ) ;
return fakeParent ;
}
const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/ ;
const originalModuleResolveFilename = require$$0 . Module . _resolveFilename ;
require$$0 . Module . _resolveFilename = function ( request , parent , isMain , options ) {
if ( isBuiltinModule ( request ) )
return request ;
if ( ! enableNativeHooks )
return originalModuleResolveFilename . call ( require$$0 . Module , request , parent , isMain , options ) ;
if ( options && options . plugnplay === false ) {
const { plugnplay , ... rest } = options ;
const forwardedOptions = Object . keys ( rest ) . length > 0 ? rest : void 0 ;
try {
enableNativeHooks = false ;
return originalModuleResolveFilename . call ( require$$0 . Module , request , parent , isMain , forwardedOptions ) ;
} finally {
enableNativeHooks = true ;
}
}
if ( options ) {
const optionNames = new Set ( Object . keys ( options ) ) ;
optionNames . delete ( ` paths ` ) ;
optionNames . delete ( ` plugnplay ` ) ;
if ( optionNames . size > 0 ) {
throw makeError (
ErrorCode . UNSUPPORTED ,
` Some options passed to require() aren't supported by PnP yet ( ${ Array . from ( optionNames ) . join ( ` , ` ) } ) `
) ;
}
}
const issuerSpecs = options && options . paths ? getIssuerSpecsFromPaths ( options . paths ) : getIssuerSpecsFromModule ( parent ) ;
if ( request . match ( pathRegExp ) === null ) {
const parentDirectory = ( parent == null ? void 0 : parent . filename ) != null ? npath . dirname ( parent . filename ) : null ;
const absoluteRequest = npath . isAbsolute ( request ) ? request : parentDirectory !== null ? npath . resolve ( parentDirectory , request ) : null ;
if ( absoluteRequest !== null ) {
const apiPath = parent && parentDirectory === npath . dirname ( absoluteRequest ) ? opts . manager . getApiPathFromParent ( parent ) : opts . manager . findApiPathFor ( absoluteRequest ) ;
if ( apiPath !== null ) {
issuerSpecs . unshift ( {
apiPath ,
path : parentDirectory ,
module : null
} ) ;
}
}
}
let firstError ;
for ( const { apiPath , path , module } of issuerSpecs ) {
let resolution ;
const issuerApi = apiPath !== null ? opts . manager . getApiEntry ( apiPath , true ) . instance : null ;
try {
if ( issuerApi !== null ) {
resolution = issuerApi . resolveRequest ( request , path !== null ? ` ${ path } / ` : null ) ;
} else {
if ( path === null )
throw new Error ( ` Assertion failed: Expected the path to be set ` ) ;
resolution = originalModuleResolveFilename . call ( require$$0 . Module , request , module || makeFakeParent ( path ) , isMain ) ;
}
} catch ( error ) {
firstError = firstError || error ;
continue ;
}
if ( resolution !== null ) {
return resolution ;
}
}
const requireStack = getRequireStack ( parent ) ;
Object . defineProperty ( firstError , ` requireStack ` , {
configurable : true ,
writable : true ,
enumerable : false ,
value : requireStack
} ) ;
if ( requireStack . length > 0 )
firstError . message += `
Require stack :
- $ { requireStack . join ( `
- ` )} ` ;
if ( typeof firstError . pnpCode === ` string ` )
Error . captureStackTrace ( firstError ) ;
throw firstError ;
} ;
const originalFindPath = require$$0 . Module . _findPath ;
require$$0 . Module . _findPath = function ( request , paths , isMain ) {
if ( request === ` pnpapi ` )
return false ;
if ( ! enableNativeHooks )
return originalFindPath . call ( require$$0 . Module , request , paths , isMain ) ;
const isAbsolute = npath . isAbsolute ( request ) ;
if ( isAbsolute )
paths = [ ` ` ] ;
else if ( ! paths || paths . length === 0 )
return false ;
for ( const path of paths ) {
let resolution ;
try {
const pnpApiPath = opts . manager . findApiPathFor ( isAbsolute ? request : path ) ;
if ( pnpApiPath !== null ) {
const api = opts . manager . getApiEntry ( pnpApiPath , true ) . instance ;
resolution = api . resolveRequest ( request , path ) || false ;
} else {
resolution = originalFindPath . call ( require$$0 . Module , request , [ path ] , isMain ) ;
}
} catch ( error ) {
continue ;
}
if ( resolution ) {
return resolution ;
}
}
return false ;
} ;
const originalExtensionJSFunction = require$$0 . Module . _extensions [ ` .js ` ] ;
require$$0 . Module . _extensions [ ` .js ` ] = function ( module , filename ) {
var _a , _b ;
if ( filename . endsWith ( ` .js ` ) ) {
const pkg = readPackageScope ( filename ) ;
if ( pkg && ( ( _a = pkg . data ) == null ? void 0 : _a . type ) === ` module ` ) {
const err = ERR _REQUIRE _ESM ( filename , ( _b = module . parent ) == null ? void 0 : _b . filename ) ;
Error . captureStackTrace ( err ) ;
throw err ;
}
}
originalExtensionJSFunction . call ( this , module , filename ) ;
} ;
const originalDlopen = process . dlopen ;
process . dlopen = function ( ... args ) {
const [ module , filename , ... rest ] = args ;
return originalDlopen . call (
this ,
module ,
npath . fromPortablePath ( VirtualFS . resolveVirtual ( npath . toPortablePath ( filename ) ) ) ,
... rest
) ;
} ;
const originalEmit = process . emit ;
process . emit = function ( name , data , ... args ) {
if ( name === ` warning ` && typeof data === ` object ` && data . name === ` ExperimentalWarning ` && ( data . message . includes ( ` --experimental-loader ` ) || data . message . includes ( ` Custom ESM Loaders is an experimental feature ` ) ) )
return false ;
return originalEmit . apply ( process , arguments ) ;
} ;
patchFs ( fs _ _default . default , new PosixFS ( opts . fakeFs ) ) ;
}
function hydrateRuntimeState ( data , { basePath } ) {
const portablePath = npath . toPortablePath ( basePath ) ;
const absolutePortablePath = ppath . resolve ( portablePath ) ;
const ignorePattern = data . ignorePatternData !== null ? new RegExp ( data . ignorePatternData ) : null ;
const packageLocatorsByLocations = /* @__PURE__ */ new Map ( ) ;
const packageRegistry = new Map ( data . packageRegistryData . map ( ( [ packageName , packageStoreData ] ) => {
return [ packageName , new Map ( packageStoreData . map ( ( [ packageReference , packageInformationData ] ) => {
var _a ;
if ( packageName === null !== ( packageReference === null ) )
throw new Error ( ` Assertion failed: The name and reference should be null, or neither should ` ) ;
const discardFromLookup = ( _a = packageInformationData . discardFromLookup ) != null ? _a : false ;
const packageLocator = { name : packageName , reference : packageReference } ;
const entry = packageLocatorsByLocations . get ( packageInformationData . packageLocation ) ;
if ( ! entry ) {
packageLocatorsByLocations . set ( packageInformationData . packageLocation , { locator : packageLocator , discardFromLookup } ) ;
} else {
entry . discardFromLookup = entry . discardFromLookup && discardFromLookup ;
if ( ! discardFromLookup ) {
entry . locator = packageLocator ;
}
}
let resolvedPackageLocation = null ;
return [ packageReference , {
packageDependencies : new Map ( packageInformationData . packageDependencies ) ,
packagePeers : new Set ( packageInformationData . packagePeers ) ,
linkType : packageInformationData . linkType ,
discardFromLookup ,
get packageLocation ( ) {
return resolvedPackageLocation || ( resolvedPackageLocation = ppath . join ( absolutePortablePath , packageInformationData . packageLocation ) ) ;
}
} ] ;
} ) ) ] ;
} ) ) ;
const fallbackExclusionList = new Map ( data . fallbackExclusionList . map ( ( [ packageName , packageReferences ] ) => {
return [ packageName , new Set ( packageReferences ) ] ;
} ) ) ;
const fallbackPool = new Map ( data . fallbackPool ) ;
const dependencyTreeRoots = data . dependencyTreeRoots ;
const enableTopLevelFallback = data . enableTopLevelFallback ;
return {
basePath : portablePath ,
dependencyTreeRoots ,
enableTopLevelFallback ,
fallbackExclusionList ,
fallbackPool ,
ignorePattern ,
packageLocatorsByLocations ,
packageRegistry
} ;
}
const ArrayIsArray = Array . isArray ;
const JSONStringify = JSON . stringify ;
const ObjectGetOwnPropertyNames = Object . getOwnPropertyNames ;
const ObjectPrototypeHasOwnProperty = ( obj , prop ) => Object . prototype . hasOwnProperty . call ( obj , prop ) ;
const RegExpPrototypeExec = ( obj , string ) => RegExp . prototype . exec . call ( obj , string ) ;
const RegExpPrototypeSymbolReplace = ( obj , ... rest ) => RegExp . prototype [ Symbol . replace ] . apply ( obj , rest ) ;
const StringPrototypeEndsWith = ( str , ... rest ) => String . prototype . endsWith . apply ( str , rest ) ;
const StringPrototypeIncludes = ( str , ... rest ) => String . prototype . includes . apply ( str , rest ) ;
const StringPrototypeLastIndexOf = ( str , ... rest ) => String . prototype . lastIndexOf . apply ( str , rest ) ;
const StringPrototypeIndexOf = ( str , ... rest ) => String . prototype . indexOf . apply ( str , rest ) ;
const StringPrototypeReplace = ( str , ... rest ) => String . prototype . replace . apply ( str , rest ) ;
const StringPrototypeSlice = ( str , ... rest ) => String . prototype . slice . apply ( str , rest ) ;
const StringPrototypeStartsWith = ( str , ... rest ) => String . prototype . startsWith . apply ( str , rest ) ;
const SafeMap = Map ;
const JSONParse = JSON . parse ;
function createErrorType ( code , messageCreator , errorType ) {
return class extends errorType {
constructor ( ... args ) {
super ( messageCreator ( ... args ) ) ;
this . code = code ;
this . name = ` ${ errorType . name } [ ${ code } ] ` ;
}
} ;
}
const ERR _PACKAGE _IMPORT _NOT _DEFINED = createErrorType (
` ERR_PACKAGE_IMPORT_NOT_DEFINED ` ,
( specifier , packagePath , base ) => {
return ` Package import specifier " ${ specifier } " is not defined ${ packagePath ? ` in package ${ packagePath } package.json ` : ` ` } imported from ${ base } ` ;
} ,
TypeError
) ;
const ERR _INVALID _MODULE _SPECIFIER = createErrorType (
` ERR_INVALID_MODULE_SPECIFIER ` ,
( request , reason , base = void 0 ) => {
return ` Invalid module " ${ request } " ${ reason } ${ base ? ` imported from ${ base } ` : ` ` } ` ;
} ,
TypeError
) ;
const ERR _INVALID _PACKAGE _TARGET = createErrorType (
` ERR_INVALID_PACKAGE_TARGET ` ,
( pkgPath , key , target , isImport = false , base = void 0 ) => {
const relError = typeof target === ` string ` && ! isImport && target . length && ! StringPrototypeStartsWith ( target , ` ./ ` ) ;
if ( key === ` . ` ) {
assert _ _default . default ( isImport === false ) ;
return ` Invalid "exports" main target ${ JSONStringify ( target ) } defined in the package config ${ pkgPath } package.json ${ base ? ` imported from ${ base } ` : ` ` } ${ relError ? ` ; targets must start with "./" ` : ` ` } ` ;
}
return ` Invalid " ${ isImport ? ` imports ` : ` exports ` } " target ${ JSONStringify (
target
) } defined for '${key}' in the package config $ { pkgPath } package . json$ { base ? ` imported from ${ base } ` : ` ` } $ { relError ? ` ; targets must start with "./" ` : ` ` } ` ;
} ,
Error
) ;
const ERR _INVALID _PACKAGE _CONFIG = createErrorType (
` ERR_INVALID_PACKAGE_CONFIG ` ,
( path , base , message ) => {
return ` Invalid package config ${ path } ${ base ? ` while importing ${ base } ` : ` ` } ${ message ? ` . ${ message } ` : ` ` } ` ;
} ,
Error
) ;
const ERR _PACKAGE _PATH _NOT _EXPORTED = createErrorType (
"ERR_PACKAGE_PATH_NOT_EXPORTED" ,
( pkgPath , subpath , base = void 0 ) => {
if ( subpath === "." )
return ` No "exports" main defined in ${ pkgPath } package.json ${ base ? ` imported from ${ base } ` : "" } ` ;
return ` Package subpath ' ${ subpath } ' is not defined by "exports" in ${ pkgPath } package.json ${ base ? ` imported from ${ base } ` : "" } ` ;
} ,
Error
) ;
function filterOwnProperties ( source , keys ) {
const filtered = /* @__PURE__ */ Object . create ( null ) ;
for ( let i = 0 ; i < keys . length ; i ++ ) {
const key = keys [ i ] ;
if ( ObjectPrototypeHasOwnProperty ( source , key ) ) {
filtered [ key ] = source [ key ] ;
}
}
return filtered ;
}
const packageJSONCache = new SafeMap ( ) ;
function getPackageConfig ( path , specifier , base , readFileSyncFn ) {
const existing = packageJSONCache . get ( path ) ;
if ( existing !== void 0 ) {
return existing ;
}
const source = readFileSyncFn ( path ) ;
if ( source === void 0 ) {
const packageConfig2 = {
pjsonPath : path ,
exists : false ,
main : void 0 ,
name : void 0 ,
type : "none" ,
exports : void 0 ,
imports : void 0
} ;
packageJSONCache . set ( path , packageConfig2 ) ;
return packageConfig2 ;
}
let packageJSON ;
try {
packageJSON = JSONParse ( source ) ;
} catch ( error ) {
throw new ERR _INVALID _PACKAGE _CONFIG (
path ,
( base ? ` " ${ specifier } " from ` : "" ) + url . fileURLToPath ( base || specifier ) ,
error . message
) ;
}
let { imports , main , name , type } = filterOwnProperties ( packageJSON , [
"imports" ,
"main" ,
"name" ,
"type"
] ) ;
const exports = ObjectPrototypeHasOwnProperty ( packageJSON , "exports" ) ? packageJSON . exports : void 0 ;
if ( typeof imports !== "object" || imports === null ) {
imports = void 0 ;
}
if ( typeof main !== "string" ) {
main = void 0 ;
}
if ( typeof name !== "string" ) {
name = void 0 ;
}
if ( type !== "module" && type !== "commonjs" ) {
type = "none" ;
}
const packageConfig = {
pjsonPath : path ,
exists : true ,
main ,
name ,
type ,
exports ,
imports
} ;
packageJSONCache . set ( path , packageConfig ) ;
return packageConfig ;
}
function getPackageScopeConfig ( resolved , readFileSyncFn ) {
let packageJSONUrl = new URL ( "./package.json" , resolved ) ;
while ( true ) {
const packageJSONPath2 = packageJSONUrl . pathname ;
if ( StringPrototypeEndsWith ( packageJSONPath2 , "node_modules/package.json" ) ) {
break ;
}
const packageConfig2 = getPackageConfig (
url . fileURLToPath ( packageJSONUrl ) ,
resolved ,
void 0 ,
readFileSyncFn
) ;
if ( packageConfig2 . exists ) {
return packageConfig2 ;
}
const lastPackageJSONUrl = packageJSONUrl ;
packageJSONUrl = new URL ( "../package.json" , packageJSONUrl ) ;
if ( packageJSONUrl . pathname === lastPackageJSONUrl . pathname ) {
break ;
}
}
const packageJSONPath = url . fileURLToPath ( packageJSONUrl ) ;
const packageConfig = {
pjsonPath : packageJSONPath ,
exists : false ,
main : void 0 ,
name : void 0 ,
type : "none" ,
exports : void 0 ,
imports : void 0
} ;
packageJSONCache . set ( packageJSONPath , packageConfig ) ;
return packageConfig ;
}
/ * *
@ license
Copyright Node . js contributors . All rights reserved .
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the "Software" ) , to
deal in the Software without restriction , including without limitation the
rights to use , copy , modify , merge , publish , distribute , sublicense , and / or
sell copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED "AS IS" , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING
FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE .
* /
function throwImportNotDefined ( specifier , packageJSONUrl , base ) {
throw new ERR _PACKAGE _IMPORT _NOT _DEFINED (
specifier ,
packageJSONUrl && url . fileURLToPath ( new URL ( "." , packageJSONUrl ) ) ,
url . fileURLToPath ( base )
) ;
}
function throwInvalidSubpath ( subpath , packageJSONUrl , internal , base ) {
const reason = ` request is not a valid subpath for the " ${ internal ? "imports" : "exports" } " resolution of ${ url . fileURLToPath ( packageJSONUrl ) } ` ;
throw new ERR _INVALID _MODULE _SPECIFIER (
subpath ,
reason ,
base && url . fileURLToPath ( base )
) ;
}
function throwInvalidPackageTarget ( subpath , target , packageJSONUrl , internal , base ) {
if ( typeof target === "object" && target !== null ) {
target = JSONStringify ( target , null , "" ) ;
} else {
target = ` ${ target } ` ;
}
throw new ERR _INVALID _PACKAGE _TARGET (
url . fileURLToPath ( new URL ( "." , packageJSONUrl ) ) ,
subpath ,
target ,
internal ,
base && url . fileURLToPath ( base )
) ;
}
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 ;
const patternRegEx = /\*/g ;
function resolvePackageTargetString ( target , subpath , match , packageJSONUrl , base , pattern , internal , conditions ) {
if ( subpath !== "" && ! pattern && target [ target . length - 1 ] !== "/" )
throwInvalidPackageTarget ( match , target , packageJSONUrl , internal , base ) ;
if ( ! StringPrototypeStartsWith ( target , "./" ) ) {
if ( internal && ! StringPrototypeStartsWith ( target , "../" ) && ! StringPrototypeStartsWith ( target , "/" ) ) {
let isURL = false ;
try {
new URL ( target ) ;
isURL = true ;
} catch {
}
if ( ! isURL ) {
const exportTarget = pattern ? RegExpPrototypeSymbolReplace ( patternRegEx , target , ( ) => subpath ) : target + subpath ;
return exportTarget ;
}
}
throwInvalidPackageTarget ( match , target , packageJSONUrl , internal , base ) ;
}
if ( RegExpPrototypeExec (
invalidSegmentRegEx ,
StringPrototypeSlice ( target , 2 )
) !== null )
throwInvalidPackageTarget ( match , target , packageJSONUrl , internal , base ) ;
const resolved = new URL ( target , packageJSONUrl ) ;
const resolvedPath = resolved . pathname ;
const packagePath = new URL ( "." , packageJSONUrl ) . pathname ;
if ( ! StringPrototypeStartsWith ( resolvedPath , packagePath ) )
throwInvalidPackageTarget ( match , target , packageJSONUrl , internal , base ) ;
if ( subpath === "" )
return resolved ;
if ( RegExpPrototypeExec ( invalidSegmentRegEx , subpath ) !== null ) {
const request = pattern ? StringPrototypeReplace ( match , "*" , ( ) => subpath ) : match + subpath ;
throwInvalidSubpath ( request , packageJSONUrl , internal , base ) ;
}
if ( pattern ) {
return new URL (
RegExpPrototypeSymbolReplace ( patternRegEx , resolved . href , ( ) => subpath )
) ;
}
return new URL ( subpath , resolved ) ;
}
function isArrayIndex ( key ) {
const keyNum = + key ;
if ( ` ${ keyNum } ` !== key )
return false ;
return keyNum >= 0 && keyNum < 4294967295 ;
}
function resolvePackageTarget ( packageJSONUrl , target , subpath , packageSubpath , base , pattern , internal , conditions ) {
if ( typeof target === "string" ) {
return resolvePackageTargetString (
target ,
subpath ,
packageSubpath ,
packageJSONUrl ,
base ,
pattern ,
internal ) ;
} else if ( ArrayIsArray ( target ) ) {
if ( target . length === 0 ) {
return null ;
}
let lastException ;
for ( let i = 0 ; i < target . length ; i ++ ) {
const targetItem = target [ i ] ;
let resolveResult ;
try {
resolveResult = resolvePackageTarget (
packageJSONUrl ,
targetItem ,
subpath ,
packageSubpath ,
base ,
pattern ,
internal ,
conditions
) ;
} catch ( e ) {
lastException = e ;
if ( e . code === "ERR_INVALID_PACKAGE_TARGET" ) {
continue ;
}
throw e ;
}
if ( resolveResult === void 0 ) {
continue ;
}
if ( resolveResult === null ) {
lastException = null ;
continue ;
}
return resolveResult ;
}
if ( lastException === void 0 || lastException === null )
return lastException ;
throw lastException ;
} else if ( typeof target === "object" && target !== null ) {
const keys = ObjectGetOwnPropertyNames ( target ) ;
for ( let i = 0 ; i < keys . length ; i ++ ) {
const key = keys [ i ] ;
if ( isArrayIndex ( key ) ) {
throw new ERR _INVALID _PACKAGE _CONFIG (
url . fileURLToPath ( packageJSONUrl ) ,
base ,
'"exports" cannot contain numeric property keys.'
) ;
}
}
for ( let i = 0 ; i < keys . length ; i ++ ) {
const key = keys [ i ] ;
if ( key === "default" || conditions . has ( key ) ) {
const conditionalTarget = target [ key ] ;
const resolveResult = resolvePackageTarget (
packageJSONUrl ,
conditionalTarget ,
subpath ,
packageSubpath ,
base ,
pattern ,
internal ,
conditions
) ;
if ( resolveResult === void 0 )
continue ;
return resolveResult ;
}
}
return void 0 ;
} else if ( target === null ) {
return null ;
}
throwInvalidPackageTarget (
packageSubpath ,
target ,
packageJSONUrl ,
internal ,
base
) ;
}
function patternKeyCompare ( a , b ) {
const aPatternIndex = StringPrototypeIndexOf ( a , "*" ) ;
const bPatternIndex = StringPrototypeIndexOf ( b , "*" ) ;
const baseLenA = aPatternIndex === - 1 ? a . length : aPatternIndex + 1 ;
const baseLenB = bPatternIndex === - 1 ? b . length : bPatternIndex + 1 ;
if ( baseLenA > baseLenB )
return - 1 ;
if ( baseLenB > baseLenA )
return 1 ;
if ( aPatternIndex === - 1 )
return 1 ;
if ( bPatternIndex === - 1 )
return - 1 ;
if ( a . length > b . length )
return - 1 ;
if ( b . length > a . length )
return 1 ;
return 0 ;
}
function isConditionalExportsMainSugar ( exports , packageJSONUrl , base ) {
if ( typeof exports === "string" || ArrayIsArray ( exports ) )
return true ;
if ( typeof exports !== "object" || exports === null )
return false ;
const keys = ObjectGetOwnPropertyNames ( exports ) ;
let isConditionalSugar = false ;
let i = 0 ;
for ( let j = 0 ; j < keys . length ; j ++ ) {
const key = keys [ j ] ;
const curIsConditionalSugar = key === "" || key [ 0 ] !== "." ;
if ( i ++ === 0 ) {
isConditionalSugar = curIsConditionalSugar ;
} else if ( isConditionalSugar !== curIsConditionalSugar ) {
throw new ERR _INVALID _PACKAGE _CONFIG (
url . fileURLToPath ( packageJSONUrl ) ,
base ,
` "exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only. `
) ;
}
}
return isConditionalSugar ;
}
function throwExportsNotFound ( subpath , packageJSONUrl , base ) {
throw new ERR _PACKAGE _PATH _NOT _EXPORTED (
url . fileURLToPath ( new URL ( "." , packageJSONUrl ) ) ,
subpath ,
base && url . fileURLToPath ( base )
) ;
}
const emittedPackageWarnings = /* @__PURE__ */ new Set ( ) ;
function emitTrailingSlashPatternDeprecation ( match , pjsonUrl , base ) {
const pjsonPath = url . fileURLToPath ( pjsonUrl ) ;
if ( emittedPackageWarnings . has ( pjsonPath + "|" + match ) )
return ;
emittedPackageWarnings . add ( pjsonPath + "|" + match ) ;
process . emitWarning (
` Use of deprecated trailing slash pattern mapping " ${ match } " in the "exports" field module resolution of the package at ${ pjsonPath } ${ base ? ` imported from ${ url . fileURLToPath ( base ) } ` : "" } . Mapping specifiers ending in "/" is no longer supported. ` ,
"DeprecationWarning" ,
"DEP0155"
) ;
}
function packageExportsResolve ( {
packageJSONUrl ,
packageSubpath ,
exports ,
base ,
conditions
} ) {
if ( isConditionalExportsMainSugar ( exports , packageJSONUrl , base ) )
exports = { "." : exports } ;
if ( ObjectPrototypeHasOwnProperty ( exports , packageSubpath ) && ! StringPrototypeIncludes ( packageSubpath , "*" ) && ! StringPrototypeEndsWith ( packageSubpath , "/" ) ) {
const target = exports [ packageSubpath ] ;
const resolveResult = resolvePackageTarget (
packageJSONUrl ,
target ,
"" ,
packageSubpath ,
base ,
false ,
false ,
conditions
) ;
if ( resolveResult == null ) {
throwExportsNotFound ( packageSubpath , packageJSONUrl , base ) ;
}
return resolveResult ;
}
let bestMatch = "" ;
let bestMatchSubpath ;
const keys = ObjectGetOwnPropertyNames ( exports ) ;
for ( let i = 0 ; i < keys . length ; i ++ ) {
const key = keys [ i ] ;
const patternIndex = StringPrototypeIndexOf ( key , "*" ) ;
if ( patternIndex !== - 1 && StringPrototypeStartsWith (
packageSubpath ,
StringPrototypeSlice ( key , 0 , patternIndex )
) ) {
if ( StringPrototypeEndsWith ( packageSubpath , "/" ) )
emitTrailingSlashPatternDeprecation (
packageSubpath ,
packageJSONUrl ,
base
) ;
const patternTrailer = StringPrototypeSlice ( key , patternIndex + 1 ) ;
if ( packageSubpath . length >= key . length && StringPrototypeEndsWith ( packageSubpath , patternTrailer ) && patternKeyCompare ( bestMatch , key ) === 1 && StringPrototypeLastIndexOf ( key , "*" ) === patternIndex ) {
bestMatch = key ;
bestMatchSubpath = StringPrototypeSlice (
packageSubpath ,
patternIndex ,
packageSubpath . length - patternTrailer . length
) ;
}
}
}
if ( bestMatch ) {
const target = exports [ bestMatch ] ;
const resolveResult = resolvePackageTarget (
packageJSONUrl ,
target ,
bestMatchSubpath ,
bestMatch ,
base ,
true ,
false ,
conditions
) ;
if ( resolveResult == null ) {
throwExportsNotFound ( packageSubpath , packageJSONUrl , base ) ;
}
return resolveResult ;
}
throwExportsNotFound ( packageSubpath , packageJSONUrl , base ) ;
}
function packageImportsResolve ( { name , base , conditions , readFileSyncFn } ) {
if ( name === "#" || StringPrototypeStartsWith ( name , "#/" ) || StringPrototypeEndsWith ( name , "/" ) ) {
const reason = "is not a valid internal imports specifier name" ;
throw new ERR _INVALID _MODULE _SPECIFIER ( name , reason , url . fileURLToPath ( base ) ) ;
}
let packageJSONUrl ;
const packageConfig = getPackageScopeConfig ( base , readFileSyncFn ) ;
if ( packageConfig . exists ) {
packageJSONUrl = url . pathToFileURL ( packageConfig . pjsonPath ) ;
const imports = packageConfig . imports ;
if ( imports ) {
if ( ObjectPrototypeHasOwnProperty ( imports , name ) && ! StringPrototypeIncludes ( name , "*" ) ) {
const resolveResult = resolvePackageTarget (
packageJSONUrl ,
imports [ name ] ,
"" ,
name ,
base ,
false ,
true ,
conditions
) ;
if ( resolveResult != null ) {
return resolveResult ;
}
} else {
let bestMatch = "" ;
let bestMatchSubpath ;
const keys = ObjectGetOwnPropertyNames ( imports ) ;
for ( let i = 0 ; i < keys . length ; i ++ ) {
const key = keys [ i ] ;
const patternIndex = StringPrototypeIndexOf ( key , "*" ) ;
if ( patternIndex !== - 1 && StringPrototypeStartsWith (
name ,
StringPrototypeSlice ( key , 0 , patternIndex )
) ) {
const patternTrailer = StringPrototypeSlice ( key , patternIndex + 1 ) ;
if ( name . length >= key . length && StringPrototypeEndsWith ( name , patternTrailer ) && patternKeyCompare ( bestMatch , key ) === 1 && StringPrototypeLastIndexOf ( key , "*" ) === patternIndex ) {
bestMatch = key ;
bestMatchSubpath = StringPrototypeSlice (
name ,
patternIndex ,
name . length - patternTrailer . length
) ;
}
}
}
if ( bestMatch ) {
const target = imports [ bestMatch ] ;
const resolveResult = resolvePackageTarget (
packageJSONUrl ,
target ,
bestMatchSubpath ,
bestMatch ,
base ,
true ,
true ,
conditions
) ;
if ( resolveResult != null ) {
return resolveResult ;
}
}
}
}
}
throwImportNotDefined ( name , packageJSONUrl , base ) ;
}
const flagSymbol = Symbol ( 'arg flag' ) ;
class ArgError extends Error {
constructor ( msg , code ) {
super ( msg ) ;
this . name = 'ArgError' ;
this . code = code ;
Object . setPrototypeOf ( this , ArgError . prototype ) ;
}
}
function arg (
opts ,
{
argv = process . argv . slice ( 2 ) ,
permissive = false ,
stopAtPositional = false
} = { }
) {
if ( ! opts ) {
throw new ArgError (
'argument specification object is required' ,
'ARG_CONFIG_NO_SPEC'
) ;
}
const result = { _ : [ ] } ;
const aliases = { } ;
const handlers = { } ;
for ( const key of Object . keys ( opts ) ) {
if ( ! key ) {
throw new ArgError (
'argument key cannot be an empty string' ,
'ARG_CONFIG_EMPTY_KEY'
) ;
}
if ( key [ 0 ] !== '-' ) {
throw new ArgError (
` argument key must start with '-' but found: ' ${ key } ' ` ,
'ARG_CONFIG_NONOPT_KEY'
) ;
}
if ( key . length === 1 ) {
throw new ArgError (
` argument key must have a name; singular '-' keys are not allowed: ${ key } ` ,
'ARG_CONFIG_NONAME_KEY'
) ;
}
if ( typeof opts [ key ] === 'string' ) {
aliases [ key ] = opts [ key ] ;
continue ;
}
let type = opts [ key ] ;
let isFlag = false ;
if (
Array . isArray ( type ) &&
type . length === 1 &&
typeof type [ 0 ] === 'function'
) {
const [ fn ] = type ;
type = ( value , name , prev = [ ] ) => {
prev . push ( fn ( value , name , prev [ prev . length - 1 ] ) ) ;
return prev ;
} ;
isFlag = fn === Boolean || fn [ flagSymbol ] === true ;
} else if ( typeof type === 'function' ) {
isFlag = type === Boolean || type [ flagSymbol ] === true ;
} else {
throw new ArgError (
` type missing or not a function or valid array type: ${ key } ` ,
'ARG_CONFIG_VAD_TYPE'
) ;
}
if ( key [ 1 ] !== '-' && key . length > 2 ) {
throw new ArgError (
` short argument keys (with a single hyphen) must have only one character: ${ key } ` ,
'ARG_CONFIG_SHORTOPT_TOOLONG'
) ;
}
handlers [ key ] = [ type , isFlag ] ;
}
for ( let i = 0 , len = argv . length ; i < len ; i ++ ) {
const wholeArg = argv [ i ] ;
if ( stopAtPositional && result . _ . length > 0 ) {
result . _ = result . _ . concat ( argv . slice ( i ) ) ;
break ;
}
if ( wholeArg === '--' ) {
result . _ = result . _ . concat ( argv . slice ( i + 1 ) ) ;
break ;
}
if ( wholeArg . length > 1 && wholeArg [ 0 ] === '-' ) {
/* eslint-disable operator-linebreak */
const separatedArguments =
wholeArg [ 1 ] === '-' || wholeArg . length === 2
? [ wholeArg ]
: wholeArg
. slice ( 1 )
. split ( '' )
. map ( ( a ) => ` - ${ a } ` ) ;
/* eslint-enable operator-linebreak */
for ( let j = 0 ; j < separatedArguments . length ; j ++ ) {
const arg = separatedArguments [ j ] ;
const [ originalArgName , argStr ] =
arg [ 1 ] === '-' ? arg . split ( /=(.*)/ , 2 ) : [ arg , undefined ] ;
let argName = originalArgName ;
while ( argName in aliases ) {
argName = aliases [ argName ] ;
}
if ( ! ( argName in handlers ) ) {
if ( permissive ) {
result . _ . push ( arg ) ;
continue ;
} else {
throw new ArgError (
` unknown or unexpected option: ${ originalArgName } ` ,
'ARG_UNKNOWN_OPTION'
) ;
}
}
const [ type , isFlag ] = handlers [ argName ] ;
if ( ! isFlag && j + 1 < separatedArguments . length ) {
throw new ArgError (
` option requires argument (but was followed by another short argument): ${ originalArgName } ` ,
'ARG_MISSING_REQUIRED_SHORTARG'
) ;
}
if ( isFlag ) {
result [ argName ] = type ( true , argName , result [ argName ] ) ;
} else if ( argStr === undefined ) {
if (
argv . length < i + 2 ||
( argv [ i + 1 ] . length > 1 &&
argv [ i + 1 ] [ 0 ] === '-' &&
! (
argv [ i + 1 ] . match ( /^-?\d*(\.(?=\d))?\d*$/ ) &&
( type === Number ||
// eslint-disable-next-line no-undef
( typeof BigInt !== 'undefined' && type === BigInt ) )
) )
) {
const extended =
originalArgName === argName ? '' : ` (alias for ${ argName } ) ` ;
throw new ArgError (
` option requires argument: ${ originalArgName } ${ extended } ` ,
'ARG_MISSING_REQUIRED_LONGARG'
) ;
}
result [ argName ] = type ( argv [ i + 1 ] , argName , result [ argName ] ) ;
++ i ;
} else {
result [ argName ] = type ( argStr , argName , result [ argName ] ) ;
}
}
} else {
result . _ . push ( wholeArg ) ;
}
}
return result ;
}
arg . flag = ( fn ) => {
fn [ flagSymbol ] = true ;
return fn ;
} ;
// Utility types
arg . COUNT = arg . flag ( ( v , name , existingCount ) => ( existingCount || 0 ) + 1 ) ;
// Expose error class
arg . ArgError = ArgError ;
var arg _1 = arg ;
/ * *
@ license
The MIT License ( MIT )
Copyright ( c ) 2014 Blake Embrey ( hello @ blakeembrey . com )
Permission is hereby granted , free of charge , to any person obtaining a copy
of this software and associated documentation files ( the "Software" ) , to deal
in the Software without restriction , including without limitation the rights
to use , copy , modify , merge , publish , distribute , sublicense , and / or sell
copies of the Software , and to permit persons to whom the Software is
furnished to do so , subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software .
THE SOFTWARE IS PROVIDED "AS IS" , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT . IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM , DAMAGES OR OTHER
LIABILITY , WHETHER IN AN ACTION OF CONTRACT , TORT OR OTHERWISE , ARISING FROM ,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE .
* /
function getOptionValue ( opt ) {
parseOptions ( ) ;
return options [ opt ] ;
}
let options ;
function parseOptions ( ) {
if ( ! options ) {
options = {
"--conditions" : [ ] ,
... parseArgv ( getNodeOptionsEnvArgv ( ) ) ,
... parseArgv ( process . execArgv )
} ;
}
}
function parseArgv ( argv ) {
return arg _1 (
{
"--conditions" : [ String ] ,
"-C" : "--conditions"
} ,
{
argv ,
permissive : true
}
) ;
}
function getNodeOptionsEnvArgv ( ) {
const errors = [ ] ;
const envArgv = ParseNodeOptionsEnvVar ( process . env . NODE _OPTIONS || "" , errors ) ;
if ( errors . length !== 0 ) ;
return envArgv ;
}
function ParseNodeOptionsEnvVar ( node _options , errors ) {
const env _argv = [ ] ;
let is _in _string = false ;
let will _start _new _arg = true ;
for ( let index = 0 ; index < node _options . length ; ++ index ) {
let c = node _options [ index ] ;
if ( c === "\\" && is _in _string ) {
if ( index + 1 === node _options . length ) {
errors . push ( "invalid value for NODE_OPTIONS (invalid escape)\n" ) ;
return env _argv ;
} else {
c = node _options [ ++ index ] ;
}
} else if ( c === " " && ! is _in _string ) {
will _start _new _arg = true ;
continue ;
} else if ( c === '"' ) {
is _in _string = ! is _in _string ;
continue ;
}
if ( will _start _new _arg ) {
env _argv . push ( c ) ;
will _start _new _arg = false ;
} else {
env _argv [ env _argv . length - 1 ] += c ;
}
}
if ( is _in _string ) {
errors . push ( "invalid value for NODE_OPTIONS (unterminated string)\n" ) ;
}
return env _argv ;
}
function makeApi ( runtimeState , opts ) {
const alwaysWarnOnFallback = Number ( process . env . PNP _ALWAYS _WARN _ON _FALLBACK ) > 0 ;
const debugLevel = Number ( process . env . PNP _DEBUG _LEVEL ) ;
const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/ ;
const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/ ;
const isDirRegExp = /\/$/ ;
const isRelativeRegexp = /^\.{0,2}\// ;
const topLevelLocator = { name : null , reference : null } ;
const fallbackLocators = [ ] ;
const emittedWarnings = /* @__PURE__ */ new Set ( ) ;
if ( runtimeState . enableTopLevelFallback === true )
fallbackLocators . push ( topLevelLocator ) ;
if ( opts . compatibilityMode !== false ) {
for ( const name of [ ` react-scripts ` , ` gatsby ` ] ) {
const packageStore = runtimeState . packageRegistry . get ( name ) ;
if ( packageStore ) {
for ( const reference of packageStore . keys ( ) ) {
if ( reference === null ) {
throw new Error ( ` Assertion failed: This reference shouldn't be null ` ) ;
} else {
fallbackLocators . push ( { name , reference } ) ;
}
}
}
}
}
const {
ignorePattern ,
packageRegistry ,
packageLocatorsByLocations
} = runtimeState ;
function makeLogEntry ( name , args ) {
return {
fn : name ,
args ,
error : null ,
result : null
} ;
}
function trace ( entry ) {
var _a , _b , _c , _d , _e , _f ;
const colors = ( _c = ( _b = ( _a = process . stderr ) == null ? void 0 : _a . hasColors ) == null ? void 0 : _b . call ( _a ) ) != null ? _c : process . stdout . isTTY ;
const c = ( n , str ) => ` \x 1B[ ${ n } m ${ str } \x 1B[0m ` ;
const error = entry . error ;
if ( error )
console . error ( c ( ` 31;1 ` , ` \u 2716 ${ ( _d = entry . error ) == null ? void 0 : _d . message . replace ( / \ n . * / s , ` ` ) } ` ) ) ;
else
console . error ( c ( ` 33;1 ` , ` \u 203C Resolution ` ) ) ;
if ( entry . args . length > 0 )
console . error ( ) ;
for ( const arg of entry . args )
console . error ( ` ${ c ( ` 37;1 ` , ` In \u 2190 ` ) } ${ nodeUtils . inspect ( arg , { colors , compact : true } )} ` ) ;
if ( entry . result ) {
console . error ( ) ;
console . error ( ` ${ c ( ` 37;1 ` , ` Out \u 2192 ` ) } ${ nodeUtils . inspect ( entry . result , { colors , compact : true } )} ` ) ;
}
const stack = ( _f = ( _e = new Error ( ) . stack . match ( /(?<=^ +)at.*/gm ) ) == null ? void 0 : _e . slice ( 2 ) ) != null ? _f : [ ] ;
if ( stack . length > 0 ) {
console . error ( ) ;
for ( const line of stack ) {
console . error ( ` ${ c ( ` 38;5;244 ` , line ) } ` ) ;
}
}
console . error ( ) ;
}
function maybeLog ( name , fn ) {
if ( opts . allowDebug === false )
return fn ;
if ( Number . isFinite ( debugLevel ) ) {
if ( debugLevel >= 2 ) {
return ( ... args ) => {
const logEntry = makeLogEntry ( name , args ) ;
try {
return logEntry . result = fn ( ... args ) ;
} catch ( error ) {
throw logEntry . error = error ;
} finally {
trace ( logEntry ) ;
}
} ;
} else if ( debugLevel >= 1 ) {
return ( ... args ) => {
try {
return fn ( ... args ) ;
} catch ( error ) {
const logEntry = makeLogEntry ( name , args ) ;
logEntry . error = error ;
trace ( logEntry ) ;
throw error ;
}
} ;
}
}
return fn ;
}
function getPackageInformationSafe ( packageLocator ) {
const packageInformation = getPackageInformation ( packageLocator ) ;
if ( ! packageInformation ) {
throw makeError (
ErrorCode . INTERNAL ,
` Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error) `
) ;
}
return packageInformation ;
}
function isDependencyTreeRoot ( packageLocator ) {
if ( packageLocator . name === null )
return true ;
for ( const dependencyTreeRoot of runtimeState . dependencyTreeRoots )
if ( dependencyTreeRoot . name === packageLocator . name && dependencyTreeRoot . reference === packageLocator . reference )
return true ;
return false ;
}
const defaultExportsConditions = /* @__PURE__ */ new Set ( [
` node ` ,
` require ` ,
... getOptionValue ( ` --conditions ` )
] ) ;
function applyNodeExportsResolution ( unqualifiedPath , conditions = defaultExportsConditions , issuer ) {
const locator = findPackageLocator ( ppath . join ( unqualifiedPath , ` internal.js ` ) , {
resolveIgnored : true ,
includeDiscardFromLookup : true
} ) ;
if ( locator === null ) {
throw makeError (
ErrorCode . INTERNAL ,
` The locator that owns the " ${ unqualifiedPath } " path can't be found inside the dependency tree (this is probably an internal error) `
) ;
}
const { packageLocation } = getPackageInformationSafe ( locator ) ;
const manifestPath = ppath . join ( packageLocation , Filename . manifest ) ;
if ( ! opts . fakeFs . existsSync ( manifestPath ) )
return null ;
const pkgJson = JSON . parse ( opts . fakeFs . readFileSync ( manifestPath , ` utf8 ` ) ) ;
if ( pkgJson . exports == null )
return null ;
let subpath = ppath . contains ( packageLocation , unqualifiedPath ) ;
if ( subpath === null ) {
throw makeError (
ErrorCode . INTERNAL ,
` unqualifiedPath doesn't contain the packageLocation (this is probably an internal error) `
) ;
}
if ( subpath !== ` . ` && ! isRelativeRegexp . test ( subpath ) )
subpath = ` ./ ${ subpath } ` ;
try {
const resolvedExport = packageExportsResolve ( {
packageJSONUrl : url . pathToFileURL ( npath . fromPortablePath ( manifestPath ) ) ,
packageSubpath : subpath ,
exports : pkgJson . exports ,
base : issuer ? url . pathToFileURL ( npath . fromPortablePath ( issuer ) ) : null ,
conditions
} ) ;
return npath . toPortablePath ( url . fileURLToPath ( resolvedExport ) ) ;
} catch ( error ) {
throw makeError (
ErrorCode . EXPORTS _RESOLUTION _FAILED ,
error . message ,
{ unqualifiedPath : getPathForDisplay ( unqualifiedPath ) , locator , pkgJson , subpath : getPathForDisplay ( subpath ) , conditions } ,
error . code
) ;
}
}
function applyNodeExtensionResolution ( unqualifiedPath , candidates , { extensions } ) {
let stat ;
try {
candidates . push ( unqualifiedPath ) ;
stat = opts . fakeFs . statSync ( unqualifiedPath ) ;
} catch ( error ) {
}
if ( stat && ! stat . isDirectory ( ) )
return opts . fakeFs . realpathSync ( unqualifiedPath ) ;
if ( stat && stat . isDirectory ( ) ) {
let pkgJson ;
try {
pkgJson = JSON . parse ( opts . fakeFs . readFileSync ( ppath . join ( unqualifiedPath , Filename . manifest ) , ` utf8 ` ) ) ;
} catch ( error ) {
}
let nextUnqualifiedPath ;
if ( pkgJson && pkgJson . main )
nextUnqualifiedPath = ppath . resolve ( unqualifiedPath , pkgJson . main ) ;
if ( nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath ) {
const resolution = applyNodeExtensionResolution ( nextUnqualifiedPath , candidates , { extensions } ) ;
if ( resolution !== null ) {
return resolution ;
}
}
}
for ( let i = 0 , length = extensions . length ; i < length ; i ++ ) {
const candidateFile = ` ${ unqualifiedPath } ${ extensions [ i ] } ` ;
candidates . push ( candidateFile ) ;
if ( opts . fakeFs . existsSync ( candidateFile ) ) {
return candidateFile ;
}
}
if ( stat && stat . isDirectory ( ) ) {
for ( let i = 0 , length = extensions . length ; i < length ; i ++ ) {
const candidateFile = ppath . format ( { dir : unqualifiedPath , name : ` index ` , ext : extensions [ i ] } ) ;
candidates . push ( candidateFile ) ;
if ( opts . fakeFs . existsSync ( candidateFile ) ) {
return candidateFile ;
}
}
}
return null ;
}
function makeFakeModule ( path ) {
const fakeModule = new require$$0 . Module ( path , null ) ;
fakeModule . filename = path ;
fakeModule . paths = require$$0 . Module . _nodeModulePaths ( path ) ;
return fakeModule ;
}
function callNativeResolution ( request , issuer ) {
if ( issuer . endsWith ( ` / ` ) )
issuer = ppath . join ( issuer , ` internal.js ` ) ;
return require$$0 . Module . _resolveFilename ( npath . fromPortablePath ( request ) , makeFakeModule ( npath . fromPortablePath ( issuer ) ) , false , { plugnplay : false } ) ;
}
function isPathIgnored ( path ) {
if ( ignorePattern === null )
return false ;
const subPath = ppath . contains ( runtimeState . basePath , path ) ;
if ( subPath === null )
return false ;
if ( ignorePattern . test ( subPath . replace ( /\/$/ , ` ` ) ) ) {
return true ;
} else {
return false ;
}
}
const VERSIONS = { std : 3 , resolveVirtual : 1 , getAllLocators : 1 } ;
const topLevel = topLevelLocator ;
function getPackageInformation ( { name , reference } ) {
const packageInformationStore = packageRegistry . get ( name ) ;
if ( ! packageInformationStore )
return null ;
const packageInformation = packageInformationStore . get ( reference ) ;
if ( ! packageInformation )
return null ;
return packageInformation ;
}
function findPackageDependents ( { name , reference } ) {
const dependents = [ ] ;
for ( const [ dependentName , packageInformationStore ] of packageRegistry ) {
if ( dependentName === null )
continue ;
for ( const [ dependentReference , packageInformation ] of packageInformationStore ) {
if ( dependentReference === null )
continue ;
const dependencyReference = packageInformation . packageDependencies . get ( name ) ;
if ( dependencyReference !== reference )
continue ;
if ( dependentName === name && dependentReference === reference )
continue ;
dependents . push ( {
name : dependentName ,
reference : dependentReference
} ) ;
}
}
return dependents ;
}
function findBrokenPeerDependencies ( dependency , initialPackage ) {
const brokenPackages = /* @__PURE__ */ new Map ( ) ;
const alreadyVisited = /* @__PURE__ */ new Set ( ) ;
const traversal = ( currentPackage ) => {
const identifier = JSON . stringify ( currentPackage . name ) ;
if ( alreadyVisited . has ( identifier ) )
return ;
alreadyVisited . add ( identifier ) ;
const dependents = findPackageDependents ( currentPackage ) ;
for ( const dependent of dependents ) {
const dependentInformation = getPackageInformationSafe ( dependent ) ;
if ( dependentInformation . packagePeers . has ( dependency ) ) {
traversal ( dependent ) ;
} else {
let brokenSet = brokenPackages . get ( dependent . name ) ;
if ( typeof brokenSet === ` undefined ` )
brokenPackages . set ( dependent . name , brokenSet = /* @__PURE__ */ new Set ( ) ) ;
brokenSet . add ( dependent . reference ) ;
}
}
} ;
traversal ( initialPackage ) ;
const brokenList = [ ] ;
for ( const name of [ ... brokenPackages . keys ( ) ] . sort ( ) )
for ( const reference of [ ... brokenPackages . get ( name ) ] . sort ( ) )
brokenList . push ( { name , reference } ) ;
return brokenList ;
}
function findPackageLocator ( location , { resolveIgnored = false , includeDiscardFromLookup = false } = { } ) {
if ( isPathIgnored ( location ) && ! resolveIgnored )
return null ;
let relativeLocation = ppath . relative ( runtimeState . basePath , location ) ;
if ( ! relativeLocation . match ( isStrictRegExp ) )
relativeLocation = ` ./ ${ relativeLocation } ` ;
if ( ! relativeLocation . endsWith ( ` / ` ) )
relativeLocation = ` ${ relativeLocation } / ` ;
do {
const entry = packageLocatorsByLocations . get ( relativeLocation ) ;
if ( typeof entry === ` undefined ` || entry . discardFromLookup && ! includeDiscardFromLookup ) {
relativeLocation = relativeLocation . substring ( 0 , relativeLocation . lastIndexOf ( ` / ` , relativeLocation . length - 2 ) + 1 ) ;
continue ;
}
return entry . locator ;
} while ( relativeLocation !== ` ` ) ;
return null ;
}
function tryReadFile ( filePath ) {
try {
return opts . fakeFs . readFileSync ( npath . toPortablePath ( filePath ) , ` utf8 ` ) ;
} catch ( err ) {
if ( err . code === ` ENOENT ` )
return void 0 ;
throw err ;
}
}
function resolveToUnqualified ( request , issuer , { considerBuiltins = true } = { } ) {
if ( request . startsWith ( ` # ` ) )
throw new Error ( ` resolveToUnqualified can not handle private import mappings ` ) ;
if ( request === ` pnpapi ` )
return npath . toPortablePath ( opts . pnpapiResolution ) ;
if ( considerBuiltins && isBuiltinModule ( request ) )
return null ;
const requestForDisplay = getPathForDisplay ( request ) ;
const issuerForDisplay = issuer && getPathForDisplay ( issuer ) ;
if ( issuer && isPathIgnored ( issuer ) ) {
if ( ! ppath . isAbsolute ( request ) || findPackageLocator ( request ) === null ) {
const result = callNativeResolution ( request , issuer ) ;
if ( result === false ) {
throw makeError (
ErrorCode . BUILTIN _NODE _RESOLUTION _FAILED ,
` 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)
Require request : "${requestForDisplay}"
Required by : $ { issuerForDisplay }
` ,
{ request : requestForDisplay , issuer : issuerForDisplay }
) ;
}
return npath . toPortablePath ( result ) ;
}
}
let unqualifiedPath ;
const dependencyNameMatch = request . match ( pathRegExp ) ;
if ( ! dependencyNameMatch ) {
if ( ppath . isAbsolute ( request ) ) {
unqualifiedPath = ppath . normalize ( request ) ;
} else {
if ( ! issuer ) {
throw makeError (
ErrorCode . API _ERROR ,
` The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute ` ,
{ request : requestForDisplay , issuer : issuerForDisplay }
) ;
}
const absoluteIssuer = ppath . resolve ( issuer ) ;
if ( issuer . match ( isDirRegExp ) ) {
unqualifiedPath = ppath . normalize ( ppath . join ( absoluteIssuer , request ) ) ;
} else {
unqualifiedPath = ppath . normalize ( ppath . join ( ppath . dirname ( absoluteIssuer ) , request ) ) ;
}
}
} else {
if ( ! issuer ) {
throw makeError (
ErrorCode . API _ERROR ,
` The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute ` ,
{ request : requestForDisplay , issuer : issuerForDisplay }
) ;
}
const [ , dependencyName , subPath ] = dependencyNameMatch ;
const issuerLocator = findPackageLocator ( issuer ) ;
if ( ! issuerLocator ) {
const result = callNativeResolution ( request , issuer ) ;
if ( result === false ) {
throw makeError (
ErrorCode . BUILTIN _NODE _RESOLUTION _FAILED ,
` 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).
Require path : "${requestForDisplay}"
Required by : $ { issuerForDisplay }
` ,
{ request : requestForDisplay , issuer : issuerForDisplay }
) ;
}
return npath . toPortablePath ( result ) ;
}
const issuerInformation = getPackageInformationSafe ( issuerLocator ) ;
let dependencyReference = issuerInformation . packageDependencies . get ( dependencyName ) ;
let fallbackReference = null ;
if ( dependencyReference == null ) {
if ( issuerLocator . name !== null ) {
const exclusionEntry = runtimeState . fallbackExclusionList . get ( issuerLocator . name ) ;
const canUseFallbacks = ! exclusionEntry || ! exclusionEntry . has ( issuerLocator . reference ) ;
if ( canUseFallbacks ) {
for ( let t = 0 , T = fallbackLocators . length ; t < T ; ++ t ) {
const fallbackInformation = getPackageInformationSafe ( fallbackLocators [ t ] ) ;
const reference = fallbackInformation . packageDependencies . get ( dependencyName ) ;
if ( reference == null )
continue ;
if ( alwaysWarnOnFallback )
fallbackReference = reference ;
else
dependencyReference = reference ;
break ;
}
if ( runtimeState . enableTopLevelFallback ) {
if ( dependencyReference == null && fallbackReference === null ) {
const reference = runtimeState . fallbackPool . get ( dependencyName ) ;
if ( reference != null ) {
fallbackReference = reference ;
}
}
}
}
}
}
let error = null ;
if ( dependencyReference === null ) {
if ( isDependencyTreeRoot ( issuerLocator ) ) {
error = makeError (
ErrorCode . MISSING _PEER _DEPENDENCY ,
` 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.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerForDisplay }
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , dependencyName }
) ;
} else {
const brokenAncestors = findBrokenPeerDependencies ( dependencyName , issuerLocator ) ;
if ( brokenAncestors . every ( ( ancestor ) => isDependencyTreeRoot ( ancestor ) ) ) {
error = makeError (
ErrorCode . MISSING _PEER _DEPENDENCY ,
` ${ 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.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerLocator . name } @ $ { issuerLocator . reference } ( via $ { issuerForDisplay } )
$ { brokenAncestors . map ( ( ancestorLocator ) => ` Ancestor breaking the chain: ${ ancestorLocator . name } @ ${ ancestorLocator . reference }
` ).join( ` ` )}
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , issuerLocator : Object . assign ( { } , issuerLocator ) , dependencyName , brokenAncestors }
) ;
} else {
error = makeError (
ErrorCode . MISSING _PEER _DEPENDENCY ,
` ${ 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.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerLocator . name } @ $ { issuerLocator . reference } ( via $ { issuerForDisplay } )
$ { brokenAncestors . map ( ( ancestorLocator ) => ` Ancestor breaking the chain: ${ ancestorLocator . name } @ ${ ancestorLocator . reference }
` ).join( ` ` )}
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , issuerLocator : Object . assign ( { } , issuerLocator ) , dependencyName , brokenAncestors }
) ;
}
}
} else if ( dependencyReference === void 0 ) {
if ( ! considerBuiltins && isBuiltinModule ( request ) ) {
if ( isDependencyTreeRoot ( issuerLocator ) ) {
error = makeError (
ErrorCode . UNDECLARED _DEPENDENCY ,
` 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.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerForDisplay }
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , dependencyName }
) ;
} else {
error = makeError (
ErrorCode . UNDECLARED _DEPENDENCY ,
` ${ 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.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerForDisplay }
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , issuerLocator : Object . assign ( { } , issuerLocator ) , dependencyName }
) ;
}
} else {
if ( isDependencyTreeRoot ( issuerLocator ) ) {
error = makeError (
ErrorCode . UNDECLARED _DEPENDENCY ,
` Your application tried to access ${ dependencyName } , but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerForDisplay }
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , dependencyName }
) ;
} else {
error = makeError (
ErrorCode . UNDECLARED _DEPENDENCY ,
` ${ issuerLocator . name } tried to access ${ dependencyName } , but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
Required package : $ { dependencyName } $ { dependencyName !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerLocator . name } @ $ { issuerLocator . reference } ( via $ { issuerForDisplay } )
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , issuerLocator : Object . assign ( { } , issuerLocator ) , dependencyName }
) ;
}
}
}
if ( dependencyReference == null ) {
if ( fallbackReference === null || error === null )
throw error || new Error ( ` Assertion failed: Expected an error to have been set ` ) ;
dependencyReference = fallbackReference ;
const message = error . message . replace ( /\n.*/g , ` ` ) ;
error . message = message ;
if ( ! emittedWarnings . has ( message ) && debugLevel !== 0 ) {
emittedWarnings . add ( message ) ;
process . emitWarning ( error ) ;
}
}
const dependencyLocator = Array . isArray ( dependencyReference ) ? { name : dependencyReference [ 0 ] , reference : dependencyReference [ 1 ] } : { name : dependencyName , reference : dependencyReference } ;
const dependencyInformation = getPackageInformationSafe ( dependencyLocator ) ;
if ( ! dependencyInformation . packageLocation ) {
throw makeError (
ErrorCode . MISSING _DEPENDENCY ,
` 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.
Required package : $ { dependencyLocator . name } @ $ { dependencyLocator . reference } $ { dependencyLocator . name !== requestForDisplay ? ` (via " ${ requestForDisplay } ") ` : ` ` }
Required by : $ { issuerLocator . name } @ $ { issuerLocator . reference } ( via $ { issuerForDisplay } )
` ,
{ request : requestForDisplay , issuer : issuerForDisplay , dependencyLocator : Object . assign ( { } , dependencyLocator ) }
) ;
}
const dependencyLocation = dependencyInformation . packageLocation ;
if ( subPath ) {
unqualifiedPath = ppath . join ( dependencyLocation , subPath ) ;
} else {
unqualifiedPath = dependencyLocation ;
}
}
return ppath . normalize ( unqualifiedPath ) ;
}
function resolveUnqualifiedExport ( request , unqualifiedPath , conditions = defaultExportsConditions , issuer ) {
if ( isStrictRegExp . test ( request ) )
return unqualifiedPath ;
const unqualifiedExportPath = applyNodeExportsResolution ( unqualifiedPath , conditions , issuer ) ;
if ( unqualifiedExportPath ) {
return ppath . normalize ( unqualifiedExportPath ) ;
} else {
return unqualifiedPath ;
}
}
function resolveUnqualified ( unqualifiedPath , { extensions = Object . keys ( require$$0 . Module . _extensions ) } = { } ) {
var _a , _b ;
const candidates = [ ] ;
const qualifiedPath = applyNodeExtensionResolution ( unqualifiedPath , candidates , { extensions } ) ;
if ( qualifiedPath ) {
return ppath . normalize ( qualifiedPath ) ;
} else {
reportRequiredFilesToWatchMode ( candidates . map ( ( candidate ) => npath . fromPortablePath ( candidate ) ) ) ;
const unqualifiedPathForDisplay = getPathForDisplay ( unqualifiedPath ) ;
const containingPackage = findPackageLocator ( unqualifiedPath ) ;
if ( containingPackage ) {
const { packageLocation } = getPackageInformationSafe ( containingPackage ) ;
let exists = true ;
try {
opts . fakeFs . accessSync ( packageLocation ) ;
} catch ( err ) {
if ( ( err == null ? void 0 : err . code ) === ` ENOENT ` ) {
exists = false ;
} else {
const readableError = ( ( _b = ( _a = err == null ? void 0 : err . message ) != null ? _a : err ) != null ? _b : ` empty exception thrown ` ) . replace ( /^[A-Z]/ , ( $0 ) => $0 . toLowerCase ( ) ) ;
throw makeError ( ErrorCode . QUALIFIED _PATH _RESOLUTION _FAILED , ` Required package exists but could not be accessed ( ${ readableError } ).
Missing package : $ { containingPackage . name } @ $ { containingPackage . reference }
Expected package location : $ { getPathForDisplay ( packageLocation ) }
` , { unqualifiedPath: unqualifiedPathForDisplay, extensions });
}
}
if ( ! exists ) {
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. ` ;
throw makeError (
ErrorCode . QUALIFIED _PATH _RESOLUTION _FAILED ,
` ${ errorMessage }
Missing package : $ { containingPackage . name } @ $ { containingPackage . reference }
Expected package location : $ { getPathForDisplay ( packageLocation ) }
` ,
{ unqualifiedPath : unqualifiedPathForDisplay , extensions }
) ;
}
}
throw makeError (
ErrorCode . QUALIFIED _PATH _RESOLUTION _FAILED ,
` Qualified path resolution failed: we looked for the following paths, but none could be accessed.
Source path : $ { unqualifiedPathForDisplay }
$ { candidates . map ( ( candidate ) => ` Not found: ${ getPathForDisplay ( candidate ) }
` ).join( ` ` )} ` ,
{ unqualifiedPath : unqualifiedPathForDisplay , extensions }
) ;
}
}
function resolvePrivateRequest ( request , issuer , opts2 ) {
var _a ;
if ( ! issuer )
throw new Error ( ` Assertion failed: An issuer is required to resolve private import mappings ` ) ;
const resolved = packageImportsResolve ( {
name : request ,
base : url . pathToFileURL ( npath . fromPortablePath ( issuer ) ) ,
conditions : ( _a = opts2 . conditions ) != null ? _a : defaultExportsConditions ,
readFileSyncFn : tryReadFile
} ) ;
if ( resolved instanceof url . URL ) {
return resolveUnqualified ( npath . toPortablePath ( url . fileURLToPath ( resolved ) ) , { extensions : opts2 . extensions } ) ;
} else {
if ( resolved . startsWith ( ` # ` ) )
throw new Error ( ` Mapping from one private import to another isn't allowed ` ) ;
return resolveRequest ( resolved , issuer , opts2 ) ;
}
}
function resolveRequest ( request , issuer , opts2 = { } ) {
try {
if ( request . startsWith ( ` # ` ) )
return resolvePrivateRequest ( request , issuer , opts2 ) ;
const { considerBuiltins , extensions , conditions } = opts2 ;
const unqualifiedPath = resolveToUnqualified ( request , issuer , { considerBuiltins } ) ;
if ( request === ` pnpapi ` )
return unqualifiedPath ;
if ( unqualifiedPath === null )
return null ;
const isIssuerIgnored = ( ) => issuer !== null ? isPathIgnored ( issuer ) : false ;
const remappedPath = ( ! considerBuiltins || ! isBuiltinModule ( request ) ) && ! isIssuerIgnored ( ) ? resolveUnqualifiedExport ( request , unqualifiedPath , conditions , issuer ) : unqualifiedPath ;
return resolveUnqualified ( remappedPath , { extensions } ) ;
} catch ( error ) {
if ( Object . prototype . hasOwnProperty . call ( error , ` pnpCode ` ) )
Object . assign ( error . data , { request : getPathForDisplay ( request ) , issuer : issuer && getPathForDisplay ( issuer ) } ) ;
throw error ;
}
}
function resolveVirtual ( request ) {
const normalized = ppath . normalize ( request ) ;
const resolved = VirtualFS . resolveVirtual ( normalized ) ;
return resolved !== normalized ? resolved : null ;
}
return {
VERSIONS ,
topLevel ,
getLocator : ( name , referencish ) => {
if ( Array . isArray ( referencish ) ) {
return { name : referencish [ 0 ] , reference : referencish [ 1 ] } ;
} else {
return { name , reference : referencish } ;
}
} ,
getDependencyTreeRoots : ( ) => {
return [ ... runtimeState . dependencyTreeRoots ] ;
} ,
getAllLocators ( ) {
const locators = [ ] ;
for ( const [ name , entry ] of packageRegistry )
for ( const reference of entry . keys ( ) )
if ( name !== null && reference !== null )
locators . push ( { name , reference } ) ;
return locators ;
} ,
getPackageInformation : ( locator ) => {
const info = getPackageInformation ( locator ) ;
if ( info === null )
return null ;
const packageLocation = npath . fromPortablePath ( info . packageLocation ) ;
const nativeInfo = { ... info , packageLocation } ;
return nativeInfo ;
} ,
findPackageLocator : ( path ) => {
return findPackageLocator ( npath . toPortablePath ( path ) ) ;
} ,
resolveToUnqualified : maybeLog ( ` resolveToUnqualified ` , ( request , issuer , opts2 ) => {
const portableIssuer = issuer !== null ? npath . toPortablePath ( issuer ) : null ;
const resolution = resolveToUnqualified ( npath . toPortablePath ( request ) , portableIssuer , opts2 ) ;
if ( resolution === null )
return null ;
return npath . fromPortablePath ( resolution ) ;
} ) ,
resolveUnqualified : maybeLog ( ` resolveUnqualified ` , ( unqualifiedPath , opts2 ) => {
return npath . fromPortablePath ( resolveUnqualified ( npath . toPortablePath ( unqualifiedPath ) , opts2 ) ) ;
} ) ,
resolveRequest : maybeLog ( ` resolveRequest ` , ( request , issuer , opts2 ) => {
const portableIssuer = issuer !== null ? npath . toPortablePath ( issuer ) : null ;
const resolution = resolveRequest ( npath . toPortablePath ( request ) , portableIssuer , opts2 ) ;
if ( resolution === null )
return null ;
return npath . fromPortablePath ( resolution ) ;
} ) ,
resolveVirtual : maybeLog ( ` resolveVirtual ` , ( path ) => {
const result = resolveVirtual ( npath . toPortablePath ( path ) ) ;
if ( result !== null ) {
return npath . fromPortablePath ( result ) ;
} else {
return null ;
}
} )
} ;
}
function makeManager ( pnpapi , opts ) {
const initialApiPath = npath . toPortablePath ( pnpapi . resolveToUnqualified ( ` pnpapi ` , null ) ) ;
const initialApiStats = opts . fakeFs . statSync ( npath . toPortablePath ( initialApiPath ) ) ;
const apiMetadata = /* @__PURE__ */ new Map ( [
[ initialApiPath , {
instance : pnpapi ,
stats : initialApiStats ,
lastRefreshCheck : Date . now ( )
} ]
] ) ;
function loadApiInstance ( pnpApiPath ) {
const nativePath = npath . fromPortablePath ( pnpApiPath ) ;
const module = new require$$0 . Module ( nativePath , null ) ;
module . load ( nativePath ) ;
return module . exports ;
}
function refreshApiEntry ( pnpApiPath , apiEntry ) {
const timeNow = Date . now ( ) ;
if ( timeNow - apiEntry . lastRefreshCheck < 500 )
return ;
apiEntry . lastRefreshCheck = timeNow ;
const stats = opts . fakeFs . statSync ( pnpApiPath ) ;
if ( stats . mtime > apiEntry . stats . mtime ) {
process . emitWarning ( ` [Warning] The runtime detected new informations in a PnP file; reloading the API instance ( ${ npath . fromPortablePath ( pnpApiPath ) } ) ` ) ;
apiEntry . stats = stats ;
apiEntry . instance = loadApiInstance ( pnpApiPath ) ;
}
}
function getApiEntry ( pnpApiPath , refresh = false ) {
let apiEntry = apiMetadata . get ( pnpApiPath ) ;
if ( typeof apiEntry !== ` undefined ` ) {
if ( refresh ) {
refreshApiEntry ( pnpApiPath , apiEntry ) ;
}
} else {
apiMetadata . set ( pnpApiPath , apiEntry = {
instance : loadApiInstance ( pnpApiPath ) ,
stats : opts . fakeFs . statSync ( pnpApiPath ) ,
lastRefreshCheck : Date . now ( )
} ) ;
}
return apiEntry ;
}
const findApiPathCache = /* @__PURE__ */ new Map ( ) ;
function addToCacheAndReturn ( start , end , target ) {
if ( target !== null )
target = VirtualFS . resolveVirtual ( target ) ;
let curr ;
let next = start ;
do {
curr = next ;
findApiPathCache . set ( curr , target ) ;
next = ppath . dirname ( curr ) ;
} while ( curr !== end ) ;
return target ;
}
function findApiPathFor ( modulePath ) {
let bestCandidate = null ;
for ( const [ apiPath , apiEntry ] of apiMetadata ) {
const locator = apiEntry . instance . findPackageLocator ( modulePath ) ;
if ( ! locator )
continue ;
if ( apiMetadata . size === 1 )
return apiPath ;
const packageInformation = apiEntry . instance . getPackageInformation ( locator ) ;
if ( ! packageInformation )
throw new Error ( ` Assertion failed: Couldn't get package information for ' ${ modulePath } ' ` ) ;
if ( ! bestCandidate )
bestCandidate = { packageLocation : packageInformation . packageLocation , apiPaths : [ ] } ;
if ( packageInformation . packageLocation === bestCandidate . packageLocation ) {
bestCandidate . apiPaths . push ( apiPath ) ;
} else if ( packageInformation . packageLocation . length > bestCandidate . packageLocation . length ) {
bestCandidate = { packageLocation : packageInformation . packageLocation , apiPaths : [ apiPath ] } ;
}
}
if ( bestCandidate ) {
if ( bestCandidate . apiPaths . length === 1 )
return bestCandidate . apiPaths [ 0 ] ;
const controlSegment = bestCandidate . apiPaths . map ( ( apiPath ) => ` ${ npath . fromPortablePath ( apiPath ) } ` ) . join ( `
` );
throw new Error ( ` Unable to locate pnpapi, the module ' ${ modulePath } ' is controlled by multiple pnpapi instances.
This is usually caused by using the global cache ( enableGlobalCache : true )
Controlled by :
$ { controlSegment }
` );
}
const start = ppath . resolve ( npath . toPortablePath ( modulePath ) ) ;
let curr ;
let next = start ;
do {
curr = next ;
const cached = findApiPathCache . get ( curr ) ;
if ( cached !== void 0 )
return addToCacheAndReturn ( start , curr , cached ) ;
const cjsCandidate = ppath . join ( curr , Filename . pnpCjs ) ;
if ( opts . fakeFs . existsSync ( cjsCandidate ) && opts . fakeFs . statSync ( cjsCandidate ) . isFile ( ) )
return addToCacheAndReturn ( start , curr , cjsCandidate ) ;
const legacyCjsCandidate = ppath . join ( curr , Filename . pnpJs ) ;
if ( opts . fakeFs . existsSync ( legacyCjsCandidate ) && opts . fakeFs . statSync ( legacyCjsCandidate ) . isFile ( ) )
return addToCacheAndReturn ( start , curr , legacyCjsCandidate ) ;
next = ppath . dirname ( curr ) ;
} while ( curr !== PortablePath . root ) ;
return addToCacheAndReturn ( start , curr , null ) ;
}
const moduleToApiPathCache = /* @__PURE__ */ new WeakMap ( ) ;
function getApiPathFromParent ( parent ) {
if ( parent == null )
return initialApiPath ;
let apiPath = moduleToApiPathCache . get ( parent ) ;
if ( typeof apiPath !== ` undefined ` )
return apiPath ;
apiPath = parent . filename ? findApiPathFor ( parent . filename ) : null ;
moduleToApiPathCache . set ( parent , apiPath ) ;
return apiPath ;
}
return {
getApiPathFromParent ,
findApiPathFor ,
getApiEntry
} ;
}
const localFs = { ... fs _ _default . default } ;
const nodeFs = new NodeFS ( localFs ) ;
const defaultRuntimeState = $$SETUP _STATE ( hydrateRuntimeState ) ;
const defaultPnpapiResolution = _ _filename ;
const defaultFsLayer = new VirtualFS ( {
baseFs : new ZipOpenFS ( {
baseFs : nodeFs ,
libzip : ( ) => getLibzipSync ( ) ,
maxOpenFiles : 80 ,
readOnlyArchives : true
} )
} ) ;
class DynamicFS extends ProxiedFS {
constructor ( ) {
super ( ppath ) ;
this . baseFs = defaultFsLayer ;
}
mapToBase ( p ) {
return p ;
}
mapFromBase ( p ) {
return p ;
}
}
const dynamicFsLayer = new DynamicFS ( ) ;
let manager ;
const defaultApi = Object . assign ( makeApi ( defaultRuntimeState , {
fakeFs : dynamicFsLayer ,
pnpapiResolution : defaultPnpapiResolution
} ) , {
makeApi : ( {
basePath = void 0 ,
fakeFs = dynamicFsLayer ,
pnpapiResolution = defaultPnpapiResolution ,
... rest
} ) => {
const apiRuntimeState = typeof basePath !== ` undefined ` ? $$SETUP _STATE ( hydrateRuntimeState , basePath ) : defaultRuntimeState ;
return makeApi ( apiRuntimeState , {
fakeFs ,
pnpapiResolution ,
... rest
} ) ;
} ,
setup : ( api ) => {
applyPatch ( api || defaultApi , {
fakeFs : defaultFsLayer ,
manager
} ) ;
dynamicFsLayer . baseFs = new NodeFS ( fs _ _default . default ) ;
}
} ) ;
manager = makeManager ( defaultApi , {
fakeFs : dynamicFsLayer
} ) ;
if ( module . parent && module . parent . id === ` internal/preload ` ) {
defaultApi . setup ( ) ;
if ( module . filename ) {
delete require$$0 _ _default . default . _cache [ module . filename ] ;
}
}
if ( process . mainModule === module ) {
const reportError = ( code , message , data ) => {
process . stdout . write ( ` ${ JSON . stringify ( [ { code , message , data } , null])}
` );
} ;
const reportSuccess = ( resolution ) => {
process . stdout . write ( ` ${ JSON . stringify ( [ null , resolution ] ) }
` );
} ;
const processResolution = ( request , issuer ) => {
try {
reportSuccess ( defaultApi . resolveRequest ( request , issuer ) ) ;
} catch ( error ) {
reportError ( error . code , error . message , error . data ) ;
}
} ;
const processRequest = ( data ) => {
try {
const [ request , issuer ] = JSON . parse ( data ) ;
processResolution ( request , issuer ) ;
} catch ( error ) {
reportError ( ` INVALID_JSON ` , error . message , error . data ) ;
}
} ;
if ( process . argv . length > 2 ) {
if ( process . argv . length !== 4 ) {
process . stderr . write ( ` Usage: ${ process . argv [ 0 ] } ${ process . argv [ 1 ] } <request> <issuer>
` );
process . exitCode = 64 ;
} else {
processResolution ( process . argv [ 2 ] , process . argv [ 3 ] ) ;
}
} else {
let buffer = ` ` ;
const decoder = new StringDecoder _ _default . default . StringDecoder ( ) ;
process . stdin . on ( ` data ` , ( chunk ) => {
buffer += decoder . write ( chunk ) ;
do {
const index = buffer . indexOf ( `
` );
if ( index === - 1 )
break ;
const line = buffer . slice ( 0 , index ) ;
buffer = buffer . slice ( index + 1 ) ;
processRequest ( line ) ;
} while ( true ) ;
} ) ;
}
}
module . exports = defaultApi ;