diff --git a/PR.md b/PR.md new file mode 100644 index 0000000000..d6f478795b --- /dev/null +++ b/PR.md @@ -0,0 +1,86 @@ +`tar` dep tree: + +``` +├─┬ tar@7.4.3 +│ ├─┬ @isaacs/fs-minipass@4.0.1 +│ │ └── minipass@7.1.2 deduped +│ ├── chownr@3.0.0 +│ ├── minipass@7.1.2 +│ ├─┬ minizlib@3.0.1 +│ │ ├── minipass@7.1.2 deduped +│ │ └─┬ rimraf@5.0.10 +│ │ └─┬ glob@10.4.5 +│ │ ├─┬ foreground-child@3.3.0 +│ │ │ ├─┬ cross-spawn@7.0.6 +│ │ │ │ ├── path-key@3.1.1 +│ │ │ │ ├─┬ shebang-command@2.0.0 +│ │ │ │ │ └── shebang-regex@3.0.0 +│ │ │ │ └─┬ which@2.0.2 +│ │ │ │ └── isexe@2.0.0 +│ │ │ └── signal-exit@4.1.0 +│ │ ├─┬ jackspeak@3.4.3 +│ │ │ ├─┬ @isaacs/cliui@8.0.2 +│ │ │ │ ├─┬ string-width-cjs@npm:string-width@4.2.3 +│ │ │ │ │ ├── emoji-regex@8.0.0 +│ │ │ │ │ ├── is-fullwidth-code-point@3.0.0 +│ │ │ │ │ └─┬ strip-ansi@6.0.1 +│ │ │ │ │ └── ansi-regex@5.0.1 +│ │ │ │ ├─┬ string-width@5.1.2 +│ │ │ │ │ ├── eastasianwidth@0.2.0 +│ │ │ │ │ ├── emoji-regex@9.2.2 +│ │ │ │ │ └── strip-ansi@7.1.0 deduped +│ │ │ │ ├─┬ strip-ansi-cjs@npm:strip-ansi@6.0.1 +│ │ │ │ │ └── ansi-regex@5.0.1 +│ │ │ │ ├─┬ strip-ansi@7.1.0 +│ │ │ │ │ └── ansi-regex@6.1.0 +│ │ │ │ ├─┬ wrap-ansi-cjs@npm:wrap-ansi@7.0.0 +│ │ │ │ │ ├─┬ ansi-styles@4.3.0 +│ │ │ │ │ │ └─┬ color-convert@2.0.1 +│ │ │ │ │ │ └── color-name@1.1.4 +│ │ │ │ │ ├─┬ string-width@4.2.3 +│ │ │ │ │ │ ├── emoji-regex@8.0.0 +│ │ │ │ │ │ ├── is-fullwidth-code-point@3.0.0 deduped +│ │ │ │ │ │ └── strip-ansi@6.0.1 deduped +│ │ │ │ │ └─┬ strip-ansi@6.0.1 +│ │ │ │ │ └── ansi-regex@5.0.1 +│ │ │ │ └─┬ wrap-ansi@8.1.0 +│ │ │ │ ├── ansi-styles@6.2.1 +│ │ │ │ ├── string-width@5.1.2 deduped +│ │ │ │ └── strip-ansi@7.1.0 deduped +│ │ │ └── @pkgjs/parseargs@0.11.0 +│ │ ├─┬ minimatch@9.0.5 +│ │ │ └─┬ brace-expansion@2.0.1 +│ │ │ └── balanced-match@1.0.2 deduped +│ │ ├── minipass@7.1.2 deduped +│ │ ├── package-json-from-dist@1.0.1 +│ │ └─┬ path-scurry@1.11.1 +│ │ ├── lru-cache@10.4.3 +│ │ └── minipass@7.1.2 deduped +│ ├── mkdirp@3.0.1 +│ └── yallist@5.0.0 +``` + +`tar-fs` dep tree: + +``` +├─┬ tar-fs@3.0.6 +│ ├─┬ bare-fs@2.3.5 +│ │ ├── bare-events@2.5.0 +│ │ ├── bare-path@2.1.3 deduped +│ │ └─┬ bare-stream@2.4.2 +│ │ └── streamx@2.20.2 deduped +│ ├─┬ bare-path@2.1.3 +│ │ └── bare-os@2.4.4 +│ ├─┬ pump@3.0.0 +│ │ ├─┬ end-of-stream@1.4.4 +│ │ │ └── once@1.4.0 deduped +│ │ └── once@1.4.0 deduped +│ └─┬ tar-stream@3.1.7 +│ ├── b4a@1.6.7 +│ ├── fast-fifo@1.3.2 +│ └─┬ streamx@2.20.2 +│ ├── bare-events@2.5.0 deduped +│ ├── fast-fifo@1.3.2 deduped +│ ├── queue-tick@1.0.1 +│ └── text-decoder@1.2.1 +``` \ No newline at end of file diff --git a/packages/playwright-core/bundles/zip/package-lock.json b/packages/playwright-core/bundles/zip/package-lock.json index 8476d11c19..2bbd9d2668 100644 --- a/packages/playwright-core/bundles/zip/package-lock.json +++ b/packages/playwright-core/bundles/zip/package-lock.json @@ -9,10 +9,12 @@ "version": "0.0.1", "dependencies": { "extract-zip": "2.0.1", + "tar-fs": "^3.0.6", "yauzl": "2.10.0", "yazl": "2.5.1" }, "devDependencies": { + "@types/tar-fs": "^2.0.4", "@types/yauzl": "^2.10.0", "@types/yazl": "^2.4.2" } @@ -23,6 +25,27 @@ "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==", "devOptional": true }, + "node_modules/@types/tar-fs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/tar-fs/-/tar-fs-2.0.4.tgz", + "integrity": "sha512-ipPec0CjTmVDWE+QKr9cTmIIoTl7dFG/yARCM5MqK8i6CNLIG1P8x4kwDsOQY1ChZOZjH0wO9nvfgBvWl4R3kA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tar-stream": "*" + } + }, + "node_modules/@types/tar-stream": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.3.tgz", + "integrity": "sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", @@ -41,6 +64,58 @@ "@types/node": "*" } }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" + }, + "node_modules/bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "node_modules/bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/bare-stream": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", + "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.20.0" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -92,6 +167,12 @@ "@types/yauzl": "^2.9.1" } }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -141,6 +222,57 @@ "once": "^1.3.1" } }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.2.tgz", + "integrity": "sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==", + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/tar-fs": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/text-decoder": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", + "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==", + "license": "Apache-2.0" + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -171,6 +303,25 @@ "integrity": "sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g==", "devOptional": true }, + "@types/tar-fs": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/tar-fs/-/tar-fs-2.0.4.tgz", + "integrity": "sha512-ipPec0CjTmVDWE+QKr9cTmIIoTl7dFG/yARCM5MqK8i6CNLIG1P8x4kwDsOQY1ChZOZjH0wO9nvfgBvWl4R3kA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tar-stream": "*" + } + }, + "@types/tar-stream": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/tar-stream/-/tar-stream-3.1.3.tgz", + "integrity": "sha512-Zbnx4wpkWBMBSu5CytMbrT5ZpMiF55qgM+EpHzR4yIDu7mv52cej8hTkOc6K+LzpkOAbxwn/m7j3iO+/l42YkQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", @@ -189,6 +340,52 @@ "@types/node": "*" } }, + "b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==" + }, + "bare-events": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.0.tgz", + "integrity": "sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==", + "optional": true + }, + "bare-fs": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.3.5.tgz", + "integrity": "sha512-SlE9eTxifPDJrT6YgemQ1WGFleevzwY+XAP1Xqgl56HtcrisC2CHCZ2tq6dBpcH2TnNxwUEUGhweo+lrQtYuiw==", + "optional": true, + "requires": { + "bare-events": "^2.0.0", + "bare-path": "^2.0.0", + "bare-stream": "^2.0.0" + } + }, + "bare-os": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.4.4.tgz", + "integrity": "sha512-z3UiI2yi1mK0sXeRdc4O1Kk8aOa/e+FNWZcTiPB/dfTWyLypuE99LibgRaQki914Jq//yAWylcAt+mknKdixRQ==", + "optional": true + }, + "bare-path": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.3.tgz", + "integrity": "sha512-lh/eITfU8hrj9Ru5quUp0Io1kJWIk1bTjzo7JH1P5dWmQ2EL4hFUlfI8FonAhSlgIfhn63p84CDY/x+PisgcXA==", + "optional": true, + "requires": { + "bare-os": "^2.1.0" + } + }, + "bare-stream": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.4.2.tgz", + "integrity": "sha512-XZ4ln/KV4KT+PXdIWTKjsLY+quqCaEtqqtgGJVPw9AoM73By03ij64YjepK0aQvHSWDb6AfAZwqKaFu68qkrdA==", + "optional": true, + "requires": { + "streamx": "^2.20.0" + } + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -221,6 +418,11 @@ "yauzl": "^2.10.0" } }, + "fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -264,6 +466,48 @@ "once": "^1.3.1" } }, + "queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "streamx": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.2.tgz", + "integrity": "sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==", + "requires": { + "bare-events": "^2.2.0", + "fast-fifo": "^1.3.2", + "queue-tick": "^1.0.1", + "text-decoder": "^1.1.0" + } + }, + "tar-fs": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.6.tgz", + "integrity": "sha512-iokBDQQkUyeXhgPYaZxmczGPhnhXZ0CmrqI+MOb/WFGS9DW5wnfrLgtjUJBvz50vQ3qfRwJ62QVoCFu8mPVu5w==", + "requires": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + } + }, + "tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "requires": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "text-decoder": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.1.tgz", + "integrity": "sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==" + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", diff --git a/packages/playwright-core/bundles/zip/package.json b/packages/playwright-core/bundles/zip/package.json index 0d9650d284..de339b69ca 100644 --- a/packages/playwright-core/bundles/zip/package.json +++ b/packages/playwright-core/bundles/zip/package.json @@ -10,10 +10,12 @@ }, "dependencies": { "extract-zip": "2.0.1", + "tar-fs": "^3.0.6", "yauzl": "2.10.0", "yazl": "2.5.1" }, "devDependencies": { + "@types/tar-fs": "^2.0.4", "@types/yauzl": "^2.10.0", "@types/yazl": "^2.4.2" } diff --git a/packages/playwright-core/bundles/zip/src/zipBundleImpl.ts b/packages/playwright-core/bundles/zip/src/zipBundleImpl.ts index b69e1a168a..ae0d67e79c 100644 --- a/packages/playwright-core/bundles/zip/src/zipBundleImpl.ts +++ b/packages/playwright-core/bundles/zip/src/zipBundleImpl.ts @@ -18,3 +18,4 @@ export * as yazl from 'yazl'; export * as yauzl from 'yauzl'; import extractZip from 'extract-zip'; export const extract = extractZip; +export * as tarFs from 'tar-fs';