From 38d9f795ec0df24872668168c722118eca31d16c Mon Sep 17 00:00:00 2001 From: Jakub Andrysek Date: Fri, 21 Nov 2025 10:26:24 +0100 Subject: [PATCH 1/2] fix: update main entry and bin configuration in wokwi-cli package fix: include README.md in files for wokwi-client-js package --- packages/wokwi-cli/package.json | 10 +++++++++- packages/wokwi-client-js/package.json | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/wokwi-cli/package.json b/packages/wokwi-cli/package.json index 7b7860b..4651e85 100644 --- a/packages/wokwi-cli/package.json +++ b/packages/wokwi-cli/package.json @@ -2,8 +2,16 @@ "name": "wokwi-cli", "version": "0.18.3", "description": "Wokwi Simulator CLI (for CI and local development)", - "main": "index.js", + "main": "dist/cli.cjs", "type": "module", + "bin": { + "wokwi-cli": "dist/cli.cjs" + }, + "files": [ + "dist", + "../README.md", + "../LICENSE" + ], "scripts": { "prebuild": "pnpm run clean", "build": "tsc && pnpm run bundle", diff --git a/packages/wokwi-client-js/package.json b/packages/wokwi-client-js/package.json index f669dc8..8453675 100644 --- a/packages/wokwi-client-js/package.json +++ b/packages/wokwi-client-js/package.json @@ -24,7 +24,9 @@ } }, "files": [ - "dist" + "dist", + "../README.md", + "../LICENSE" ], "scripts": { "prebuild": "pnpm run clean", From 4cb246df7d4949eb2079a672c0711b2c6b12e7be Mon Sep 17 00:00:00 2001 From: Jakub Andrysek Date: Wed, 26 Nov 2025 10:05:12 +0100 Subject: [PATCH 2/2] chore: enhance CI workflow with lint and package tests, update .gitignore for tarballs --- .github/workflows/test.yml | 6 ++ .gitignore | 4 + DEVELOPMENT.md | 97 +++++++++++++++++ package.json | 2 +- packages/wokwi-cli/package.json | 12 ++- packages/wokwi-client-js/package.json | 7 +- pnpm-lock.yaml | 143 ++++++++++++++++++++++++++ 7 files changed, 262 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e579dd0..4adac07 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,6 +26,12 @@ jobs: run: pnpm exec playwright install --with-deps - name: Format check run: pnpm run format:check + - name: Lint check + run: pnpm run lint + - name: Test creating CLI packages + run: pnpm --filter wokwi-cli run package + - name: Test Packing the packages + run: pnpm -r pack - name: Run vitest tests run: pnpm run test:vitest - name: Run Playwright embed tests diff --git a/.gitignore b/.gitignore index f3fc938..ff50986 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,7 @@ playwright-report/ test-results/ test-project/ wokwi-part-tests/ + +# Ignore packed tarballs +wokwi-cli-*.tgz +wokwi-client-js-*.tgz diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 246501e..c9e6f69 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -111,3 +111,100 @@ If you fork the repository, you must enable GitHub Actions for your fork and add Set the `WOKWI_CLI_TOKEN` secret in your fork under `Settings` > `Secrets and variables` > `Actions` > `New repository secret`. Instructions for obtaining the `WOKWI_CLI_TOKEN` are in the `README.md` (see the Usage section). + + +## Deployment + +Packages are published manually using `pnpm` tools. Before publishing, ensure you have: +- Updated the version number in the package's `package.json` +- Committed all changes +- Built and tested the packages + +### Publishing wokwi-cli + +The `wokwi-cli` package includes binary executables for multiple platforms. To publish: + +1. Navigate to the package directory: + ```bash + cd packages/wokwi-cli + ``` + +2. Clean previous builds: + ```bash + pnpm clean + ``` + +3. Build the package: + ```bash + pnpm build + ``` + +4. Package binaries for all platforms (optional, for verification): + This is used only in CI to produce platform-specific binaries, those are not published to npm. + ```bash + pnpm package + ``` + This creates platform-specific binaries in `dist/bin/` using `pkg`. + +5. Create the tarball (optional, for verification): + ```bash + pnpm pack + ``` + +6. Publish to npm: + ```bash + pnpm publish + ``` + +### Publishing wokwi-client-js + +The `wokwi-client-js` package is a JavaScript library without binaries. To publish: + +1. Navigate to the package directory: + ```bash + cd packages/wokwi-client-js + ``` + +2. Clean previous builds: + ```bash + pnpm clean + ``` + +3. Build the package: + ```bash + pnpm build + ``` + +4. Create the tarball (optional, for verification): + ```bash + pnpm pack + ``` + +5. Publish to npm: + ```bash + pnpm publish + ``` + +### Publishing both packages + +To publish both packages in sequence: + +```bash +# Publish wokwi-client-js first (it's a dependency of wokwi-cli) +cd packages/wokwi-client-js +pnpm clean && pnpm build && pnpm publish + +# Then publish wokwi-cli +cd ../wokwi-cli +pnpm clean && pnpm build && pnpm publish +``` + +### Test GitHub Actions publishing (optional) +GitHub Actions are set up to publish CLI tool compiled for multiple platforms. To test the publishing commands locally, you can run: + +```bash +pnpm run build && pnpm --filter wokwi-cli run package +``` + +It should produce the platform-specific binaries in `packages/wokwi-cli/dist/bin/`. + diff --git a/package.json b/package.json index 554936a..fa4dff6 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "test:embed:playwright": "playwright test test/wokwi-embed", "test:embed:playwright:ui": "playwright test test/wokwi-embed --ui", "test:cli:integration": "pnpm exec tsx scripts/test-cli-integration.ts", - "package": "pnpm --filter wokwi-cli run package", "cli": "tsx packages/wokwi-cli/src/main.ts", "prepare": "husky install" }, @@ -36,6 +35,7 @@ "lint-staged": "^15.4.3", "prettier": "^3.6.2", "rimraf": "^5.0.0", + "shx": "^0.4.0", "tsx": "^4.19.2", "typescript": "^5.9.3", "typescript-eslint": "^8.46.3", diff --git a/packages/wokwi-cli/package.json b/packages/wokwi-cli/package.json index 4651e85..0f53b5a 100644 --- a/packages/wokwi-cli/package.json +++ b/packages/wokwi-cli/package.json @@ -8,13 +8,15 @@ "wokwi-cli": "dist/cli.cjs" }, "files": [ - "dist", - "../README.md", - "../LICENSE" + "dist/bin/version.json", + "dist/cli.cjs", + "README.md", + "LICENSE" ], "scripts": { - "prebuild": "pnpm run clean", - "build": "tsc && pnpm run bundle", + "prepack": "shx cp ../../README.md . && shx cp ../../LICENSE .", + "postpack": "shx rm README.md LICENSE", + "build": "tsc --noEmit && pnpm run bundle", "bundle": "node tools/bundle.js", "package": "pnpm run build && pkg --public -o dist/bin/wokwi-cli -t node20-linuxstatic-arm64,node20-linuxstatic-x64,node20-macos-arm64,node20-macos-x64,node20-win-x64 dist/cli.cjs", "clean": "rimraf dist", diff --git a/packages/wokwi-client-js/package.json b/packages/wokwi-client-js/package.json index 8453675..2916dd8 100644 --- a/packages/wokwi-client-js/package.json +++ b/packages/wokwi-client-js/package.json @@ -25,11 +25,12 @@ }, "files": [ "dist", - "../README.md", - "../LICENSE" + "README.md", + "LICENSE" ], "scripts": { - "prebuild": "pnpm run clean", + "prepack": "shx cp ../../README.md . && shx cp ../../LICENSE .", + "postpack": "shx rm README.md LICENSE", "build": "tsc && pnpm run build:browser", "build:browser": "node tools/bundle-browser.js", "clean": "rimraf dist", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e88176..59376bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: rimraf: specifier: ^5.0.0 version: 5.0.10 + shx: + specifier: ^0.4.0 + version: 0.4.0 tsx: specifier: ^4.19.2 version: 4.20.6 @@ -818,6 +821,10 @@ packages: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -975,6 +982,10 @@ packages: resolution: {integrity: sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==} engines: {node: '>=18.0.0'} + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -1092,6 +1103,10 @@ packages: resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} engines: {node: '>= 0.4'} + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} @@ -1187,6 +1202,10 @@ packages: ini@1.3.8: resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + into-stream@6.0.0: resolution: {integrity: sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==} engines: {node: '>=10'} @@ -1226,6 +1245,10 @@ packages: is-promise@4.0.0: resolution: {integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==} + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1385,6 +1408,9 @@ packages: resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + node-abi@3.80.0: resolution: {integrity: sha512-LyPuZJcI9HVwzXK1GPxWNzrr+vr8Hp/3UqlmWxxh8p54U1ZbclOqbSog9lWHaCX+dBaiGi6n/hIX+mKu74GmPA==} engines: {node: '>=10'} @@ -1398,6 +1424,10 @@ packages: encoding: optional: true + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -1429,6 +1459,10 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + p-is-promise@3.0.0: resolution: {integrity: sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==} engines: {node: '>=8'} @@ -1456,6 +1490,10 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -1577,6 +1615,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -1629,6 +1671,10 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -1645,14 +1691,32 @@ packages: setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + shebang-regex@3.0.0: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + shelljs@0.9.2: + resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==} + engines: {node: '>=18'} + hasBin: true + + shx@0.4.0: + resolution: {integrity: sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==} + engines: {node: '>=18'} + hasBin: true + side-channel-list@1.0.0: resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==} engines: {node: '>= 0.4'} @@ -1672,6 +1736,9 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -1744,6 +1811,10 @@ packages: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -1937,6 +2008,10 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -2662,6 +2737,14 @@ snapshots: object-assign: 4.1.1 vary: 1.1.2 + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -2837,6 +2920,16 @@ snapshots: dependencies: eventsource-parser: 3.0.6 + execa@1.0.0: + dependencies: + cross-spawn: 6.0.6 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.6 @@ -2988,6 +3081,10 @@ snapshots: dunder-proto: 1.0.1 es-object-atoms: 1.1.1 + get-stream@4.1.0: + dependencies: + pump: 3.0.3 + get-stream@8.0.1: {} get-tsconfig@4.13.0: @@ -3071,6 +3168,8 @@ snapshots: ini@1.3.8: {} + interpret@1.4.0: {} + into-stream@6.0.0: dependencies: from2: 2.3.0 @@ -3100,6 +3199,8 @@ snapshots: is-promise@4.0.0: {} + is-stream@1.1.0: {} + is-stream@3.0.0: {} isarray@1.0.0: {} @@ -3241,6 +3342,8 @@ snapshots: negotiator@1.0.0: {} + nice-try@1.0.5: {} + node-abi@3.80.0: dependencies: semver: 7.7.3 @@ -3249,6 +3352,10 @@ snapshots: dependencies: whatwg-url: 5.0.0 + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -3282,6 +3389,8 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + p-finally@1.0.0: {} + p-is-promise@3.0.0: {} p-limit@3.1.0: @@ -3302,6 +3411,8 @@ snapshots: path-exists@4.0.0: {} + path-key@2.0.1: {} + path-key@3.1.1: {} path-key@4.0.0: {} @@ -3418,6 +3529,10 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + rechoir@0.6.2: + dependencies: + resolve: 1.22.11 + require-directory@2.1.1: {} resolve-from@4.0.0: {} @@ -3491,6 +3606,8 @@ snapshots: safer-buffer@2.1.2: {} + semver@5.7.2: {} + semver@7.7.3: {} send@1.2.0: @@ -3520,12 +3637,30 @@ snapshots: setprototypeof@1.2.0: {} + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 + shebang-regex@1.0.0: {} + shebang-regex@3.0.0: {} + shelljs@0.9.2: + dependencies: + execa: 1.0.0 + fast-glob: 3.3.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shx@0.4.0: + dependencies: + minimist: 1.2.8 + shelljs: 0.9.2 + side-channel-list@1.0.0: dependencies: es-errors: 1.3.0 @@ -3556,6 +3691,8 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} simple-concat@1.0.1: {} @@ -3628,6 +3765,8 @@ snapshots: dependencies: ansi-regex: 6.2.2 + strip-eof@1.0.0: {} + strip-final-newline@3.0.0: {} strip-json-comments@2.0.1: {} @@ -3816,6 +3955,10 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + which@1.3.1: + dependencies: + isexe: 2.0.0 + which@2.0.2: dependencies: isexe: 2.0.0