From ef0de12d4f6b4bfcbb8956cb760140932c23fe7d Mon Sep 17 00:00:00 2001 From: Dmytro Demchenko <91938357+DimaDemchenko@users.noreply.github.com> Date: Wed, 26 Jun 2024 18:56:19 +0300 Subject: [PATCH] FIX: remove JSDoc in build process (#379) * Remove jsdoc in build files * Update module and module resolution options in tsconfig.node.json files * Make demo use minified files to test * Don't remove comments if minify isn't enabled * Improve Hls with Shaka demo --------- Co-authored-by: Andriy Lysnevych --- .../{index.html => hls-with-shaka.html} | 8 +- .../{demo.js => hls-with-shaka.js} | 21 ++-- demo/public/modules-demo/player-vime.html | 4 +- packages/p2p-media-loader-core/package.json | 1 + .../p2p-media-loader-core/tsconfig.node.json | 4 +- packages/p2p-media-loader-core/vite.config.ts | 12 +- packages/p2p-media-loader-hlsjs/package.json | 1 + .../p2p-media-loader-hlsjs/tsconfig.node.json | 4 +- .../p2p-media-loader-hlsjs/vite.config.ts | 10 ++ packages/p2p-media-loader-shaka/package.json | 1 + .../p2p-media-loader-shaka/tsconfig.node.json | 4 +- .../p2p-media-loader-shaka/vite.config.ts | 11 ++ pnpm-lock.yaml | 107 +++++++++++++++--- 13 files changed, 148 insertions(+), 40 deletions(-) rename demo/public/modules-demo/{index.html => hls-with-shaka.html} (86%) rename demo/public/modules-demo/{demo.js => hls-with-shaka.js} (71%) diff --git a/demo/public/modules-demo/index.html b/demo/public/modules-demo/hls-with-shaka.html similarity index 86% rename from demo/public/modules-demo/index.html rename to demo/public/modules-demo/hls-with-shaka.html index fc791e24..d66b2906 100644 --- a/demo/public/modules-demo/index.html +++ b/demo/public/modules-demo/hls-with-shaka.html @@ -4,9 +4,9 @@ @@ -14,7 +14,7 @@ - + diff --git a/demo/public/modules-demo/demo.js b/demo/public/modules-demo/hls-with-shaka.js similarity index 71% rename from demo/public/modules-demo/demo.js rename to demo/public/modules-demo/hls-with-shaka.js index c7541064..5700cf6f 100644 --- a/demo/public/modules-demo/demo.js +++ b/demo/public/modules-demo/hls-with-shaka.js @@ -5,24 +5,21 @@ const manifestUri = "https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8"; async function initApp() { if (shaka.Player.isBrowserSupported()) { - initHlsPlayer(); - await initShakaPlayer(); + initHlsPlayer("video1"); + await initShakaPlayer("video2"); } else { console.error("Browser not supported!"); } } -function initHlsPlayer() { - const p2pEngine = new HlsJsP2PEngine(); - - const hls = new Hls({ ...p2pEngine.getHlsJsConfig() }); - hls.attachMedia(document.getElementById("video1")); +function initHlsPlayer(videoId) { + const HlsWithP2P = HlsJsP2PEngine.injectMixin(window.Hls); + const hls = new HlsWithP2P(); + hls.attachMedia(document.getElementById(videoId)); hls.on(Hls.Events.ERROR, function (event, data) { console.error("Error code", data.details, "object", data); }); - p2pEngine.setHls(hls); - try { hls.loadSource(manifestUri); } catch (e) { @@ -30,15 +27,15 @@ function initHlsPlayer() { } } -async function initShakaPlayer() { +async function initShakaPlayer(videoId) { ShakaP2PEngine.registerPlugins(); const engine = new ShakaP2PEngine(); const player = new shaka.Player(); - await player.attach(document.getElementById("video2")); + await player.attach(document.getElementById(videoId)); player.addEventListener("error", onErrorEvent); - engine.configureAndInitShakaPlayer(player); + engine.bindShakaPlayer(player); try { await player.load(manifestUri); diff --git a/demo/public/modules-demo/player-vime.html b/demo/public/modules-demo/player-vime.html index 62dc7df6..82becb30 100644 --- a/demo/public/modules-demo/player-vime.html +++ b/demo/public/modules-demo/player-vime.html @@ -6,8 +6,8 @@ diff --git a/packages/p2p-media-loader-core/package.json b/packages/p2p-media-loader-core/package.json index fbb21209..cb2b5cae 100644 --- a/packages/p2p-media-loader-core/package.json +++ b/packages/p2p-media-loader-core/package.json @@ -60,6 +60,7 @@ "nano-md5": "^1.0.5" }, "devDependencies": { + "@rollup/plugin-terser": "^0.4.4", "@types/streamx": "^2.9.5", "vite-plugin-node-polyfills": "^0.21.0", "vitest": "^1.6.0" diff --git a/packages/p2p-media-loader-core/tsconfig.node.json b/packages/p2p-media-loader-core/tsconfig.node.json index 102a416b..39bd5857 100644 --- a/packages/p2p-media-loader-core/tsconfig.node.json +++ b/packages/p2p-media-loader-core/tsconfig.node.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext" + "module": "ESNext", + "moduleResolution": "Bundler" }, "include": ["vite.config.ts"] } diff --git a/packages/p2p-media-loader-core/vite.config.ts b/packages/p2p-media-loader-core/vite.config.ts index e64db81a..79f4466c 100644 --- a/packages/p2p-media-loader-core/vite.config.ts +++ b/packages/p2p-media-loader-core/vite.config.ts @@ -1,6 +1,7 @@ import { defineConfig } from "vite"; import type { UserConfig } from "vite"; import { nodePolyfills } from "vite-plugin-node-polyfills"; +import terser from "@rollup/plugin-terser"; const getESMConfig = ({ minify }: { minify: boolean }): UserConfig => { return { @@ -16,7 +17,16 @@ const getESMConfig = ({ minify }: { minify: boolean }): UserConfig => { entry: "src/index.ts", }, }, - plugins: [nodePolyfills()], + plugins: [ + nodePolyfills(), + minify + ? terser({ + format: { + comments: false, + }, + }) + : undefined, + ], }; }; diff --git a/packages/p2p-media-loader-hlsjs/package.json b/packages/p2p-media-loader-hlsjs/package.json index 4db233db..436630ca 100644 --- a/packages/p2p-media-loader-hlsjs/package.json +++ b/packages/p2p-media-loader-hlsjs/package.json @@ -54,6 +54,7 @@ "p2p-media-loader-core": "workspace:*" }, "devDependencies": { + "@rollup/plugin-terser": "^0.4.4", "hls.js": "^1.5.7" } } diff --git a/packages/p2p-media-loader-hlsjs/tsconfig.node.json b/packages/p2p-media-loader-hlsjs/tsconfig.node.json index 102a416b..39bd5857 100644 --- a/packages/p2p-media-loader-hlsjs/tsconfig.node.json +++ b/packages/p2p-media-loader-hlsjs/tsconfig.node.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext" + "module": "ESNext", + "moduleResolution": "Bundler" }, "include": ["vite.config.ts"] } diff --git a/packages/p2p-media-loader-hlsjs/vite.config.ts b/packages/p2p-media-loader-hlsjs/vite.config.ts index 9a8955d9..b3a8f8ce 100644 --- a/packages/p2p-media-loader-hlsjs/vite.config.ts +++ b/packages/p2p-media-loader-hlsjs/vite.config.ts @@ -1,5 +1,6 @@ import { defineConfig } from "vite"; import type { UserConfig } from "vite"; +import terser from "@rollup/plugin-terser"; const getESMConfig = ({ minify }: { minify: boolean }): UserConfig => { return { @@ -18,6 +19,15 @@ const getESMConfig = ({ minify }: { minify: boolean }): UserConfig => { external: ["p2p-media-loader-core"], }, }, + plugins: [ + minify + ? terser({ + format: { + comments: false, + }, + }) + : undefined, + ], }; }; diff --git a/packages/p2p-media-loader-shaka/package.json b/packages/p2p-media-loader-shaka/package.json index 5a1016da..a4f443fe 100644 --- a/packages/p2p-media-loader-shaka/package.json +++ b/packages/p2p-media-loader-shaka/package.json @@ -55,6 +55,7 @@ "p2p-media-loader-core": "workspace:*" }, "devDependencies": { + "@rollup/plugin-terser": "^0.4.4", "shaka-player": "^4.9.9" } } diff --git a/packages/p2p-media-loader-shaka/tsconfig.node.json b/packages/p2p-media-loader-shaka/tsconfig.node.json index 102a416b..39bd5857 100644 --- a/packages/p2p-media-loader-shaka/tsconfig.node.json +++ b/packages/p2p-media-loader-shaka/tsconfig.node.json @@ -1,8 +1,8 @@ { "extends": "../../tsconfig.base.json", "compilerOptions": { - "module": "NodeNext", - "moduleResolution": "NodeNext" + "module": "ESNext", + "moduleResolution": "Bundler" }, "include": ["vite.config.ts"] } diff --git a/packages/p2p-media-loader-shaka/vite.config.ts b/packages/p2p-media-loader-shaka/vite.config.ts index 79760ab8..c76a6b2a 100644 --- a/packages/p2p-media-loader-shaka/vite.config.ts +++ b/packages/p2p-media-loader-shaka/vite.config.ts @@ -1,5 +1,6 @@ import { defineConfig } from "vite"; import type { UserConfig } from "vite"; +import terser from "@rollup/plugin-terser"; const getESMConfig = ({ minify }: { minify: boolean }): UserConfig => { return { @@ -18,6 +19,16 @@ const getESMConfig = ({ minify }: { minify: boolean }): UserConfig => { external: ["p2p-media-loader-core"], }, }, + plugins: [ + minify + ? terser({ + format: { + comments: false, + }, + }) + : undefined, + , + ], }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 366de5d0..f891502c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -31,7 +31,7 @@ importers: version: 7.14.1(eslint@8.57.0)(typescript@5.5.2) vite: specifier: ^5.3.1 - version: 5.3.1(@types/node@20.14.8) + version: 5.3.1(@types/node@20.14.8)(terser@5.31.1) demo: dependencies: @@ -71,7 +71,7 @@ importers: version: 18.3.0 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.3.1(vite@5.3.1(@types/node@20.14.8)) + version: 4.3.1(vite@5.3.1(@types/node@20.14.8)(terser@5.31.1)) eslint-plugin-react: specifier: ^7.34.1 version: 7.34.3(eslint@8.57.0) @@ -86,7 +86,7 @@ importers: version: 1.5.11 vite-plugin-node-polyfills: specifier: ^0.21.0 - version: 0.21.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)) + version: 0.21.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)(terser@5.31.1)) packages/p2p-media-loader-core: dependencies: @@ -103,15 +103,18 @@ importers: specifier: ^1.0.5 version: 1.0.5 devDependencies: + '@rollup/plugin-terser': + specifier: ^0.4.4 + version: 0.4.4(rollup@4.18.0) '@types/streamx': specifier: ^2.9.5 version: 2.9.5 vite-plugin-node-polyfills: specifier: ^0.21.0 - version: 0.21.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)) + version: 0.21.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)(terser@5.31.1)) vitest: specifier: ^1.6.0 - version: 1.6.0(@types/node@20.14.8) + version: 1.6.0(@types/node@20.14.8)(terser@5.31.1) packages/p2p-media-loader-demo: dependencies: @@ -186,6 +189,9 @@ importers: specifier: workspace:* version: link:../p2p-media-loader-core devDependencies: + '@rollup/plugin-terser': + specifier: ^0.4.4 + version: 0.4.4(rollup@4.18.0) hls.js: specifier: ^1.5.7 version: 1.5.11 @@ -196,6 +202,9 @@ importers: specifier: workspace:* version: link:../p2p-media-loader-core devDependencies: + '@rollup/plugin-terser': + specifier: ^0.4.4 + version: 0.4.4(rollup@4.18.0) shaka-player: specifier: ^4.9.9 version: 4.9.9 @@ -502,6 +511,9 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} + '@jridgewell/source-map@0.3.6': + resolution: {integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==} + '@jridgewell/sourcemap-codec@1.4.15': resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} @@ -536,6 +548,15 @@ packages: rollup: optional: true + '@rollup/plugin-terser@0.4.4': + resolution: {integrity: sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/pluginutils@5.1.0': resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} @@ -1060,6 +1081,9 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + buffer-xor@1.0.3: resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} @@ -1137,6 +1161,9 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@7.2.0: resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} engines: {node: '>= 10'} @@ -2579,6 +2606,9 @@ packages: engines: {node: '>=10'} hasBin: true + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -2638,6 +2668,9 @@ packages: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + smob@1.5.0: + resolution: {integrity: sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==} + socks@2.8.3: resolution: {integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} @@ -2646,6 +2679,9 @@ packages: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} @@ -2747,6 +2783,11 @@ packages: resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} engines: {node: '>=6'} + terser@5.31.1: + resolution: {integrity: sha512-37upzU1+viGvuFtBo9NPufCb9dwM0+l9hMxYyWfBA+fbwrPqNJAhbZ6W47bBFnZHKHTUBnMvi87434qq+qnxOg==} + engines: {node: '>=10'} + hasBin: true + text-decoder@1.1.0: resolution: {integrity: sha512-TmLJNj6UgX8xcUZo4UDStGQtDiTzF7BzWlzn9g7UWrjkpHr5uJTK1ld16wZ3LXb2vb6jH8qU89dW5whuMdXYdw==} @@ -3331,6 +3372,11 @@ snapshots: '@jridgewell/set-array@1.2.1': {} + '@jridgewell/source-map@0.3.6': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/trace-mapping@0.3.25': @@ -3363,6 +3409,14 @@ snapshots: optionalDependencies: rollup: 4.18.0 + '@rollup/plugin-terser@0.4.4(rollup@4.18.0)': + dependencies: + serialize-javascript: 6.0.2 + smob: 1.5.0 + terser: 5.31.1 + optionalDependencies: + rollup: 4.18.0 + '@rollup/pluginutils@5.1.0(rollup@4.18.0)': dependencies: '@types/estree': 1.0.5 @@ -3701,14 +3755,14 @@ snapshots: media-captions: 1.0.3 react: 18.3.1 - '@vitejs/plugin-react@4.3.1(vite@5.3.1(@types/node@20.14.8))': + '@vitejs/plugin-react@4.3.1(vite@5.3.1(@types/node@20.14.8)(terser@5.31.1))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.1(@types/node@20.14.8) + vite: 5.3.1(@types/node@20.14.8)(terser@5.31.1) transitivePeerDependencies: - supports-color @@ -4025,6 +4079,8 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.16(browserslist@4.23.1) + buffer-from@1.1.2: {} + buffer-xor@1.0.3: {} buffer@5.7.1: @@ -4112,6 +4168,8 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@2.20.3: {} + commander@7.2.0: {} compact2string@1.4.1: @@ -5766,6 +5824,10 @@ snapshots: semver@7.6.2: {} + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -5831,6 +5893,8 @@ snapshots: smart-buffer@4.2.0: {} + smob@1.5.0: {} + socks@2.8.3: dependencies: ip-address: 9.0.5 @@ -5838,6 +5902,11 @@ snapshots: source-map-js@1.2.0: {} + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + source-map@0.6.1: {} sprintf-js@1.1.3: {} @@ -5970,6 +6039,13 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + terser@5.31.1: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.12.0 + commander: 2.20.3 + source-map-support: 0.5.21 + text-decoder@1.1.0: dependencies: b4a: 1.6.6 @@ -6122,13 +6198,13 @@ snapshots: is-typed-array: 1.1.13 which-typed-array: 1.1.15 - vite-node@1.6.0(@types/node@20.14.8): + vite-node@1.6.0(@types/node@20.14.8)(terser@5.31.1): dependencies: cac: 6.7.14 debug: 4.3.5 pathe: 1.1.2 picocolors: 1.0.1 - vite: 5.3.1(@types/node@20.14.8) + vite: 5.3.1(@types/node@20.14.8)(terser@5.31.1) transitivePeerDependencies: - '@types/node' - less @@ -6139,15 +6215,15 @@ snapshots: - supports-color - terser - vite-plugin-node-polyfills@0.21.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)): + vite-plugin-node-polyfills@0.21.0(rollup@4.18.0)(vite@5.3.1(@types/node@20.14.8)(terser@5.31.1)): dependencies: '@rollup/plugin-inject': 5.0.5(rollup@4.18.0) node-stdlib-browser: 1.2.0 - vite: 5.3.1(@types/node@20.14.8) + vite: 5.3.1(@types/node@20.14.8)(terser@5.31.1) transitivePeerDependencies: - rollup - vite@5.3.1(@types/node@20.14.8): + vite@5.3.1(@types/node@20.14.8)(terser@5.31.1): dependencies: esbuild: 0.21.5 postcss: 8.4.38 @@ -6155,8 +6231,9 @@ snapshots: optionalDependencies: '@types/node': 20.14.8 fsevents: 2.3.3 + terser: 5.31.1 - vitest@1.6.0(@types/node@20.14.8): + vitest@1.6.0(@types/node@20.14.8)(terser@5.31.1): dependencies: '@vitest/expect': 1.6.0 '@vitest/runner': 1.6.0 @@ -6175,8 +6252,8 @@ snapshots: strip-literal: 2.1.0 tinybench: 2.8.0 tinypool: 0.8.4 - vite: 5.3.1(@types/node@20.14.8) - vite-node: 1.6.0(@types/node@20.14.8) + vite: 5.3.1(@types/node@20.14.8)(terser@5.31.1) + vite-node: 1.6.0(@types/node@20.14.8)(terser@5.31.1) why-is-node-running: 2.2.2 optionalDependencies: '@types/node': 20.14.8