diff --git a/package-lock.json b/package-lock.json index b6f9588..8780d46 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,8 +11,9 @@ "dependencies": { "@qiwi/deep-proxy": "^3.0.0", "@types/ip": "^1.1.3", - "@types/node": "^20.11.30", + "@types/node": "^20.12.5", "@types/semver": "^7.5.8", + "@webpod/ps": "^0.0.0-beta.3", "globby-cp": "^1.3.0", "ini": "^4.1.2", "ip": "^2.0.1", @@ -21,7 +22,7 @@ "semver": "^7.6.0", "ssri": "^10.0.5", "tempy": "^3.1.0", - "zx": "7.2.3-dev.0844b88" + "zx": "8.0.0" }, "bin": { "zx-extra": "src/main/js/cli.mjs" @@ -187,9 +188,9 @@ } }, "node_modules/@types/node": { - "version": "20.12.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.2.tgz", - "integrity": "sha512-zQ0NYO87hyN6Xrclcqp7f8ZbXNbRfoGWNcMvHTPQp9UUrwI0mI7XBz+cu7/W6/VClYo2g63B0cjull/srU7LgQ==", + "version": "20.12.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.5.tgz", + "integrity": "sha512-BD+BjQ9LS/D8ST9p5uqBxghlN+S42iuNxjsUGjeZobe/ciXzk2qb1B6IXc6AnRLS+yFJRpN2IPEHMzwspfDJNw==", "dependencies": { "undici-types": "~5.26.4" } @@ -207,6 +208,20 @@ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" }, + "node_modules/@webpod/ingrid": { + "version": "0.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@webpod/ingrid/-/ingrid-0.0.0-beta.3.tgz", + "integrity": "sha512-PkorwT+q/MiIF+It47ORX0wCYHumOeMKwp5KX5WbUvbCeOtSB6b5UUC5FvzlijdwK/YPR+sOitQzyVSsRrMmJA==" + }, + "node_modules/@webpod/ps": { + "version": "0.0.0-beta.3", + "resolved": "https://registry.npmjs.org/@webpod/ps/-/ps-0.0.0-beta.3.tgz", + "integrity": "sha512-PSWQN/GFAoU91TPC8SkF+Ok6NKYLnDwdz1KbXtKlkzRXxnr2f+FOm7CprMJSa19s75WuunvgGGwZCY96Py2HkA==", + "dependencies": { + "@webpod/ingrid": "^0.0.0-beta.2", + "zurk": "^0.0.32" + } + }, "node_modules/aggregate-error": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", @@ -1627,10 +1642,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zurk": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/zurk/-/zurk-0.0.32.tgz", + "integrity": "sha512-KouorYeuxuZORUiDoOMUCgpjgHgMP+ks9MpEPOT/JE5/df9bIr6DjqIiaQGhzH9ZLG00bWBZJazCpwO0zSqq7g==" + }, "node_modules/zx": { - "version": "7.2.3-dev.0844b88", - "resolved": "https://registry.npmjs.org/zx/-/zx-7.2.3-dev.0844b88.tgz", - "integrity": "sha512-+PpsWDmRV8CAhU29pFgFTSRdo9olhIJvrv5ItPIC4U+BsqdMrumIFXrMeoB8XEABlCJBi5DjH/nFxiBgVe+rpg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/zx/-/zx-8.0.0.tgz", + "integrity": "sha512-td4Irxh+i+O8waolUHZyHLSMFALMBWTNVKBk1q5NsvP1vxRqj9JJRGPh6YjKZUTbZZ8uGD1mQLyU9mDr40wR6w==", "bin": { "zx": "build/cli.js" }, @@ -1639,7 +1659,7 @@ }, "optionalDependencies": { "@types/fs-extra": "^11.0.4", - "@types/node": ">=20.11.30" + "@types/node": ">=20.12.4" } } } diff --git a/package.json b/package.json index 928a2e0..6f01fa9 100644 --- a/package.json +++ b/package.json @@ -40,8 +40,9 @@ "dependencies": { "@qiwi/deep-proxy": "^3.0.0", "@types/ip": "^1.1.3", - "@types/node": "^20.11.30", + "@types/node": "^20.12.5", "@types/semver": "^7.5.8", + "@webpod/ps": "^0.0.0-beta.3", "globby-cp": "^1.3.0", "ini": "^4.1.2", "ip": "^2.0.1", @@ -50,7 +51,7 @@ "semver": "^7.6.0", "ssri": "^10.0.5", "tempy": "^3.1.0", - "zx": "7.2.3-dev.0844b88" + "zx": "8.0.0" }, "devDependencies": { "c8": "^9.1.0" diff --git a/src/test/js/test.mjs b/src/test/js/test.mjs index 53669ce..56d2293 100644 --- a/src/test/js/test.mjs +++ b/src/test/js/test.mjs @@ -1,4 +1,5 @@ import {strict as assert} from 'node:assert' +// import ps from '@webpod/ps' import { $, semver, @@ -12,7 +13,8 @@ import { fs, path, SSRI, - INI + INI, + ps, } from '../../main/js/index.mjs' // $.verbose @@ -109,14 +111,33 @@ password = dbpassword { const SIGNAL = 'SIGTERM' const nothrow = createHook({nothrow: true}, 'nothrow') - const quiet = createHook({ verbose: 0 }, 'quiet') + const quiet = createHook({ verbose: 0, quiet: true }, 'quiet') const debug = createHook({ verbose: 2 }, 'debug') const timeout = createHook( null, 'timeout', (p, t, signal) => { if (!t) return p - let timer = setTimeout(() => p.kill(signal), t) + let timer = setTimeout(() => { + (async () => { + console.log('p.pid=', p.child.pid); + + try { + // p.kill(signal) + const list = await ps.tree({ pid: p.child.pid, recursive: true }) + console.log('ps', list) + for (const l of list) { + process.kill(+l.pid) + } + + process.kill(+p.child.pid, signal) + + } catch (e) { + console.log('!!!!=',e) + } + })() + // p.kill(signal) + }, t) p.finally(() => clearTimeout(timer))