"feat: 新增远程应用测试脚本,升级 pm2 依赖"
This commit is contained in:
		| @@ -21,6 +21,7 @@ | |||||||
|   "scripts": { |   "scripts": { | ||||||
|     "dev": "bun run src/run.ts ", |     "dev": "bun run src/run.ts ", | ||||||
|     "dev:server": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0  bun --watch src/run-server.ts ", |     "dev:server": "cross-env NODE_TLS_REJECT_UNAUTHORIZED=0  bun --watch src/run-server.ts ", | ||||||
|  |     "dev:share": "bun --watch  src/test/remote-app.ts    ", | ||||||
|     "build:lib": "bun run bun-lib.config.mjs", |     "build:lib": "bun run bun-lib.config.mjs", | ||||||
|     "postbuild:lib": "dts -i src/lib.ts -o assistant-lib.d.ts -d libs -t", |     "postbuild:lib": "dts -i src/lib.ts -o assistant-lib.d.ts -d libs -t", | ||||||
|     "build": "rimraf dist && bun run bun.config.mjs", |     "build": "rimraf dist && bun run bun.config.mjs", | ||||||
| @@ -75,6 +76,7 @@ | |||||||
|     "access": "public" |     "access": "public" | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "eventemitter3": "^5.0.1", | ||||||
|     "pm2": "^6.0.6" |     "pm2": "^6.0.6" | ||||||
|   } |   } | ||||||
| } | } | ||||||
							
								
								
									
										416
									
								
								assistant/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										416
									
								
								assistant/pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @@ -8,6 +8,9 @@ importers: | |||||||
|  |  | ||||||
|   .: |   .: | ||||||
|     dependencies: |     dependencies: | ||||||
|  |       eventemitter3: | ||||||
|  |         specifier: ^5.0.1 | ||||||
|  |         version: 5.0.1 | ||||||
|       pm2: |       pm2: | ||||||
|         specifier: ^6.0.6 |         specifier: ^6.0.6 | ||||||
|         version: 6.0.6(supports-color@10.0.0) |         version: 6.0.6(supports-color@10.0.0) | ||||||
| @@ -98,7 +101,7 @@ importers: | |||||||
|     dependencies: |     dependencies: | ||||||
|       pm2: |       pm2: | ||||||
|         specifier: ^6.0.5 |         specifier: ^6.0.5 | ||||||
|         version: 6.0.5(supports-color@10.0.0) |         version: 6.0.6 | ||||||
|     devDependencies: |     devDependencies: | ||||||
|       '@kevisual/assistant-cli': |       '@kevisual/assistant-cli': | ||||||
|         specifier: workspace:* |         specifier: workspace:* | ||||||
| @@ -123,7 +126,7 @@ importers: | |||||||
|         version: 16.5.0 |         version: 16.5.0 | ||||||
|       inquirer: |       inquirer: | ||||||
|         specifier: ^12.6.0 |         specifier: ^12.6.0 | ||||||
|         version: 12.6.0(@types/node@22.15.18) |         version: 12.6.1(@types/node@22.15.18) | ||||||
|       lodash-es: |       lodash-es: | ||||||
|         specifier: ^4.17.21 |         specifier: ^4.17.21 | ||||||
|         version: 4.17.21 |         version: 4.17.21 | ||||||
| @@ -141,15 +144,6 @@ packages: | |||||||
|     resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} |     resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} | ||||||
|     engines: {node: '>=6.9.0'} |     engines: {node: '>=6.9.0'} | ||||||
|  |  | ||||||
|   '@inquirer/checkbox@4.1.5': |  | ||||||
|     resolution: {integrity: sha512-swPczVU+at65xa5uPfNP9u3qx/alNwiaykiI/ExpsmMSQW55trmZcwhYWzw/7fj+n6Q8z1eENvR7vFfq9oPSAQ==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/checkbox@4.1.6': |   '@inquirer/checkbox@4.1.6': | ||||||
|     resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} |     resolution: {integrity: sha512-62u896rWCtKKE43soodq5e/QcRsA22I+7/4Ov7LESWnKRO6BVo2A1DFLDmXL9e28TB0CfHc3YtkbPm7iwajqkg==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -168,24 +162,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/confirm@5.1.9': |  | ||||||
|     resolution: {integrity: sha512-NgQCnHqFTjF7Ys2fsqK2WtnA8X1kHyInyG+nMIuHowVTIgIuS10T4AznI/PvbqSpJqjCUqNBlKGh1v3bwLFL4w==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/core@10.1.10': |  | ||||||
|     resolution: {integrity: sha512-roDaKeY1PYY0aCqhRmXihrHjoSW2A00pV3Ke5fTpMCkzcGF64R8e0lw3dK+eLEHwS4vB5RnW1wuQmvzoRul8Mw==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/core@10.1.11': |   '@inquirer/core@10.1.11': | ||||||
|     resolution: {integrity: sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==} |     resolution: {integrity: sha512-BXwI/MCqdtAhzNQlBEFE7CEflhPkl/BqvAuV/aK6lW3DClIfYVDWPP/kXuXHtBWC7/EEbNqd/1BGq2BGBBnuxw==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -195,15 +171,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/editor@4.2.10': |  | ||||||
|     resolution: {integrity: sha512-5GVWJ+qeI6BzR6TIInLP9SXhWCEcvgFQYmcRG6d6RIlhFjM5TyG18paTGBgRYyEouvCmzeco47x9zX9tQEofkw==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/editor@4.2.11': |   '@inquirer/editor@4.2.11': | ||||||
|     resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} |     resolution: {integrity: sha512-YoZr0lBnnLFPpfPSNsQ8IZyKxU47zPyVi9NLjCWtna52//M/xuL0PGPAxHxxYhdOhnvY2oBafoM+BI5w/JK7jw==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -213,15 +180,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/expand@4.0.12': |  | ||||||
|     resolution: {integrity: sha512-jV8QoZE1fC0vPe6TnsOfig+qwu7Iza1pkXoUJ3SroRagrt2hxiL+RbM432YAihNR7m7XnU0HWl/WQ35RIGmXHw==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/expand@4.0.13': |   '@inquirer/expand@4.0.13': | ||||||
|     resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} |     resolution: {integrity: sha512-HgYNWuZLHX6q5y4hqKhwyytqAghmx35xikOGY3TcgNiElqXGPas24+UzNPOwGUZa5Dn32y25xJqVeUcGlTv+QQ==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -244,24 +202,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/input@4.1.9': |  | ||||||
|     resolution: {integrity: sha512-mshNG24Ij5KqsQtOZMgj5TwEjIf+F2HOESk6bjMwGWgcH5UBe8UoljwzNFHqdMbGYbgAf6v2wU/X9CAdKJzgOA==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/number@3.0.12': |  | ||||||
|     resolution: {integrity: sha512-7HRFHxbPCA4e4jMxTQglHJwP+v/kpFsCf2szzfBHy98Wlc3L08HL76UDiA87TOdX5fwj2HMOLWqRWv9Pnn+Z5Q==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/number@3.0.13': |   '@inquirer/number@3.0.13': | ||||||
|     resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} |     resolution: {integrity: sha512-IrLezcg/GWKS8zpKDvnJ/YTflNJdG0qSFlUM/zNFsdi4UKW/CO+gaJpbMgQ20Q58vNKDJbEzC6IebdkprwL6ew==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -271,15 +211,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/password@4.0.12': |  | ||||||
|     resolution: {integrity: sha512-FlOB0zvuELPEbnBYiPaOdJIaDzb2PmJ7ghi/SVwIHDDSQ2K4opGBkF+5kXOg6ucrtSUQdLhVVY5tycH0j0l+0g==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/password@4.0.13': |   '@inquirer/password@4.0.13': | ||||||
|     resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} |     resolution: {integrity: sha512-NN0S/SmdhakqOTJhDwOpeBEEr8VdcYsjmZHDb0rblSh2FcbXQOr+2IApP7JG4WE3sxIdKytDn4ed3XYwtHxmJQ==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -289,15 +220,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/prompts@7.5.0': |  | ||||||
|     resolution: {integrity: sha512-tk8Bx7l5AX/CR0sVfGj3Xg6v7cYlFBkEahH+EgBB+cZib6Fc83dwerTbzj7f2+qKckjIUGsviWRI1d7lx6nqQA==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/prompts@7.5.1': |   '@inquirer/prompts@7.5.1': | ||||||
|     resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} |     resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -307,15 +229,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/rawlist@4.1.0': |  | ||||||
|     resolution: {integrity: sha512-6ob45Oh9pXmfprKqUiEeMz/tjtVTFQTgDDz1xAMKMrIvyrYjAmRbQZjMJfsictlL4phgjLhdLu27IkHNnNjB7g==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/rawlist@4.1.1': |   '@inquirer/rawlist@4.1.1': | ||||||
|     resolution: {integrity: sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==} |     resolution: {integrity: sha512-VBUC0jPN2oaOq8+krwpo/mf3n/UryDUkKog3zi+oIi8/e5hykvdntgHUB9nhDM78RubiyR1ldIOfm5ue+2DeaQ==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -325,15 +238,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/search@3.0.12': |  | ||||||
|     resolution: {integrity: sha512-H/kDJA3kNlnNIjB8YsaXoQI0Qccgf0Na14K1h8ExWhNmUg2E941dyFPrZeugihEa9AZNW5NdsD/NcvUME83OPQ==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/search@3.0.13': |   '@inquirer/search@3.0.13': | ||||||
|     resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} |     resolution: {integrity: sha512-9g89d2c5Izok/Gw/U7KPC3f9kfe5rA1AJ24xxNZG0st+vWekSk7tB9oE+dJv5JXd0ZSijomvW0KPMoBd8qbN4g==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -343,15 +247,6 @@ packages: | |||||||
|       '@types/node': |       '@types/node': | ||||||
|         optional: true |         optional: true | ||||||
|  |  | ||||||
|   '@inquirer/select@4.2.0': |  | ||||||
|     resolution: {integrity: sha512-KkXQ4aSySWimpV4V/TUJWdB3tdfENZUU765GjOIZ0uPwdbGIG6jrxD4dDf1w68uP+DVtfNhr1A92B+0mbTZ8FA==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   '@inquirer/select@4.2.1': |   '@inquirer/select@4.2.1': | ||||||
|     resolution: {integrity: sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==} |     resolution: {integrity: sha512-gt1Kd5XZm+/ddemcT3m23IP8aD8rC9drRckWoP/1f7OL46Yy2FGi8DSmNjEjQKtPl6SV96Kmjbl6p713KXJ/Jg==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -1033,15 +928,6 @@ packages: | |||||||
|   ini@1.3.8: |   ini@1.3.8: | ||||||
|     resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} |     resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} | ||||||
|  |  | ||||||
|   inquirer@12.6.0: |  | ||||||
|     resolution: {integrity: sha512-3zmmccQd/8o65nPOZJZ+2wqt76Ghw3+LaMrmc6JE/IzcvQhJ1st+QLCOo/iLS85/tILU0myG31a2TAZX0ysAvg==} |  | ||||||
|     engines: {node: '>=18'} |  | ||||||
|     peerDependencies: |  | ||||||
|       '@types/node': '>=18' |  | ||||||
|     peerDependenciesMeta: |  | ||||||
|       '@types/node': |  | ||||||
|         optional: true |  | ||||||
|  |  | ||||||
|   inquirer@12.6.1: |   inquirer@12.6.1: | ||||||
|     resolution: {integrity: sha512-MGFnzHVS3l3oM3cy+LWkyR7UUtVEn3D5U41CZbEY34szToWoJAvaVtCTz1mxsEzZFk/HXWyCArn0HDgloTXMDw==} |     resolution: {integrity: sha512-MGFnzHVS3l3oM3cy+LWkyR7UUtVEn3D5U41CZbEY34szToWoJAvaVtCTz1mxsEzZFk/HXWyCArn0HDgloTXMDw==} | ||||||
|     engines: {node: '>=18'} |     engines: {node: '>=18'} | ||||||
| @@ -1273,11 +1159,6 @@ packages: | |||||||
|   pm2-sysmonit@1.2.8: |   pm2-sysmonit@1.2.8: | ||||||
|     resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} |     resolution: {integrity: sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==} | ||||||
|  |  | ||||||
|   pm2@6.0.5: |  | ||||||
|     resolution: {integrity: sha512-+O43WPaEiwYbm6/XSpAOO1Rtya/Uof0n7x8hJZGfwIuepesNTIVArpZh4KqFfze0cvvqZMr0maTW3ifhvmyeMQ==} |  | ||||||
|     engines: {node: '>=16.0.0'} |  | ||||||
|     hasBin: true |  | ||||||
|  |  | ||||||
|   pm2@6.0.6: |   pm2@6.0.6: | ||||||
|     resolution: {integrity: sha512-6t+I+Gc232dKe0OjwFYlU59JoY8MWBqsBmcZMSfKollByL4q8APUFwWOt7OtPH4lGO4Sb6GiFAqu7xT42QeRBA==} |     resolution: {integrity: sha512-6t+I+Gc232dKe0OjwFYlU59JoY8MWBqsBmcZMSfKollByL4q8APUFwWOt7OtPH4lGO4Sb6GiFAqu7xT42QeRBA==} | ||||||
|     engines: {node: '>=16.0.0'} |     engines: {node: '>=16.0.0'} | ||||||
| @@ -1536,16 +1417,6 @@ snapshots: | |||||||
|   '@babel/helper-validator-identifier@7.25.9': |   '@babel/helper-validator-identifier@7.25.9': | ||||||
|     optional: true |     optional: true | ||||||
|  |  | ||||||
|   '@inquirer/checkbox@4.1.5(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/figures': 1.0.11 |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       ansi-escapes: 4.3.2 |  | ||||||
|       yoctocolors-cjs: 2.1.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/checkbox@4.1.6(@types/node@22.15.18)': |   '@inquirer/checkbox@4.1.6(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1563,26 +1434,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/confirm@5.1.9(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/core@10.1.10(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/figures': 1.0.11 |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       ansi-escapes: 4.3.2 |  | ||||||
|       cli-width: 4.1.0 |  | ||||||
|       mute-stream: 2.0.0 |  | ||||||
|       signal-exit: 4.1.0 |  | ||||||
|       wrap-ansi: 6.2.0 |  | ||||||
|       yoctocolors-cjs: 2.1.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/core@10.1.11(@types/node@22.15.18)': |   '@inquirer/core@10.1.11(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/figures': 1.0.11 |       '@inquirer/figures': 1.0.11 | ||||||
| @@ -1596,14 +1447,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/editor@4.2.10(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       external-editor: 3.1.0 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/editor@4.2.11(@types/node@22.15.18)': |   '@inquirer/editor@4.2.11(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1612,14 +1455,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/expand@4.0.12(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       yoctocolors-cjs: 2.1.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/expand@4.0.13(@types/node@22.15.18)': |   '@inquirer/expand@4.0.13(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1637,20 +1472,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/input@4.1.9(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/number@3.0.12(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/number@3.0.13(@types/node@22.15.18)': |   '@inquirer/number@3.0.13(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1658,14 +1479,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/password@4.0.12(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       ansi-escapes: 4.3.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/password@4.0.13(@types/node@22.15.18)': |   '@inquirer/password@4.0.13(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1674,21 +1487,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/prompts@7.5.0(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/checkbox': 4.1.5(@types/node@22.15.18) |  | ||||||
|       '@inquirer/confirm': 5.1.9(@types/node@22.15.18) |  | ||||||
|       '@inquirer/editor': 4.2.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/expand': 4.0.12(@types/node@22.15.18) |  | ||||||
|       '@inquirer/input': 4.1.9(@types/node@22.15.18) |  | ||||||
|       '@inquirer/number': 3.0.12(@types/node@22.15.18) |  | ||||||
|       '@inquirer/password': 4.0.12(@types/node@22.15.18) |  | ||||||
|       '@inquirer/rawlist': 4.1.0(@types/node@22.15.18) |  | ||||||
|       '@inquirer/search': 3.0.12(@types/node@22.15.18) |  | ||||||
|       '@inquirer/select': 4.2.0(@types/node@22.15.18) |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/prompts@7.5.1(@types/node@22.15.18)': |   '@inquirer/prompts@7.5.1(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/checkbox': 4.1.6(@types/node@22.15.18) |       '@inquirer/checkbox': 4.1.6(@types/node@22.15.18) | ||||||
| @@ -1704,14 +1502,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/rawlist@4.1.0(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       yoctocolors-cjs: 2.1.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/rawlist@4.1.1(@types/node@22.15.18)': |   '@inquirer/rawlist@4.1.1(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1720,15 +1510,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/search@3.0.12(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/figures': 1.0.11 |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       yoctocolors-cjs: 2.1.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/search@3.0.13(@types/node@22.15.18)': |   '@inquirer/search@3.0.13(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1738,16 +1519,6 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       '@types/node': 22.15.18 |       '@types/node': 22.15.18 | ||||||
|  |  | ||||||
|   '@inquirer/select@4.2.0(@types/node@22.15.18)': |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/figures': 1.0.11 |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       ansi-escapes: 4.3.2 |  | ||||||
|       yoctocolors-cjs: 2.1.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   '@inquirer/select@4.2.1(@types/node@22.15.18)': |   '@inquirer/select@4.2.1(@types/node@22.15.18)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -1825,6 +1596,24 @@ snapshots: | |||||||
|  |  | ||||||
|   '@kevisual/ws@8.0.0': {} |   '@kevisual/ws@8.0.0': {} | ||||||
|  |  | ||||||
|  |   '@pm2/agent@2.1.1': | ||||||
|  |     dependencies: | ||||||
|  |       async: 3.2.6 | ||||||
|  |       chalk: 3.0.0 | ||||||
|  |       dayjs: 1.8.36 | ||||||
|  |       debug: 4.3.7 | ||||||
|  |       eventemitter2: 5.0.1 | ||||||
|  |       fast-json-patch: 3.1.1 | ||||||
|  |       fclone: 1.0.11 | ||||||
|  |       pm2-axon: 4.0.1 | ||||||
|  |       pm2-axon-rpc: 0.7.1 | ||||||
|  |       proxy-agent: 6.4.0 | ||||||
|  |       semver: 7.5.4 | ||||||
|  |       ws: 7.5.10 | ||||||
|  |     transitivePeerDependencies: | ||||||
|  |       - bufferutil | ||||||
|  |       - utf-8-validate | ||||||
|  |  | ||||||
|   '@pm2/agent@2.1.1(supports-color@10.0.0)': |   '@pm2/agent@2.1.1(supports-color@10.0.0)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       async: 3.2.6 |       async: 3.2.6 | ||||||
| @@ -1844,6 +1633,17 @@ snapshots: | |||||||
|       - supports-color |       - supports-color | ||||||
|       - utf-8-validate |       - utf-8-validate | ||||||
|  |  | ||||||
|  |   '@pm2/io@6.1.0': | ||||||
|  |     dependencies: | ||||||
|  |       async: 2.6.4 | ||||||
|  |       debug: 4.3.7 | ||||||
|  |       eventemitter2: 6.4.9 | ||||||
|  |       require-in-the-middle: 5.2.0 | ||||||
|  |       semver: 7.5.4 | ||||||
|  |       shimmer: 1.2.1 | ||||||
|  |       signal-exit: 3.0.7 | ||||||
|  |       tslib: 1.9.3 | ||||||
|  |  | ||||||
|   '@pm2/io@6.1.0(supports-color@10.0.0)': |   '@pm2/io@6.1.0(supports-color@10.0.0)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       async: 2.6.4 |       async: 2.6.4 | ||||||
| @@ -1857,6 +1657,17 @@ snapshots: | |||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - supports-color |       - supports-color | ||||||
|  |  | ||||||
|  |   '@pm2/js-api@0.8.0': | ||||||
|  |     dependencies: | ||||||
|  |       async: 2.6.4 | ||||||
|  |       debug: 4.3.7 | ||||||
|  |       eventemitter2: 6.4.9 | ||||||
|  |       extrareqp2: 1.0.0(debug@4.3.7) | ||||||
|  |       ws: 7.5.10 | ||||||
|  |     transitivePeerDependencies: | ||||||
|  |       - bufferutil | ||||||
|  |       - utf-8-validate | ||||||
|  |  | ||||||
|   '@pm2/js-api@0.8.0(supports-color@10.0.0)': |   '@pm2/js-api@0.8.0(supports-color@10.0.0)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       async: 2.6.4 |       async: 2.6.4 | ||||||
| @@ -1869,6 +1680,10 @@ snapshots: | |||||||
|       - supports-color |       - supports-color | ||||||
|       - utf-8-validate |       - utf-8-validate | ||||||
|  |  | ||||||
|  |   '@pm2/pm2-version-check@1.0.4': | ||||||
|  |     dependencies: | ||||||
|  |       debug: 4.4.0 | ||||||
|  |  | ||||||
|   '@pm2/pm2-version-check@1.0.4(supports-color@10.0.0)': |   '@pm2/pm2-version-check@1.0.4(supports-color@10.0.0)': | ||||||
|     dependencies: |     dependencies: | ||||||
|       debug: 4.4.0(supports-color@10.0.0) |       debug: 4.4.0(supports-color@10.0.0) | ||||||
| @@ -2155,18 +1970,30 @@ snapshots: | |||||||
|  |  | ||||||
|   dayjs@1.8.36: {} |   dayjs@1.8.36: {} | ||||||
|  |  | ||||||
|  |   debug@3.2.7: | ||||||
|  |     dependencies: | ||||||
|  |       ms: 2.1.3 | ||||||
|  |  | ||||||
|   debug@3.2.7(supports-color@10.0.0): |   debug@3.2.7(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       ms: 2.1.3 |       ms: 2.1.3 | ||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       supports-color: 10.0.0 |       supports-color: 10.0.0 | ||||||
|  |  | ||||||
|  |   debug@4.3.7: | ||||||
|  |     dependencies: | ||||||
|  |       ms: 2.1.3 | ||||||
|  |  | ||||||
|   debug@4.3.7(supports-color@10.0.0): |   debug@4.3.7(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       ms: 2.1.3 |       ms: 2.1.3 | ||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       supports-color: 10.0.0 |       supports-color: 10.0.0 | ||||||
|  |  | ||||||
|  |   debug@4.4.0: | ||||||
|  |     dependencies: | ||||||
|  |       ms: 2.1.3 | ||||||
|  |  | ||||||
|   debug@4.4.0(supports-color@10.0.0): |   debug@4.4.0(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       ms: 2.1.3 |       ms: 2.1.3 | ||||||
| @@ -2260,6 +2087,12 @@ snapshots: | |||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - debug |       - debug | ||||||
|  |  | ||||||
|  |   extrareqp2@1.0.0(debug@4.3.7): | ||||||
|  |     dependencies: | ||||||
|  |       follow-redirects: 1.15.9(debug@4.3.7) | ||||||
|  |     transitivePeerDependencies: | ||||||
|  |       - debug | ||||||
|  |  | ||||||
|   fast-json-patch@3.1.1: {} |   fast-json-patch@3.1.1: {} | ||||||
|  |  | ||||||
|   fclone@1.0.11: {} |   fclone@1.0.11: {} | ||||||
| @@ -2276,6 +2109,10 @@ snapshots: | |||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       debug: 4.3.7(supports-color@10.0.0) |       debug: 4.3.7(supports-color@10.0.0) | ||||||
|  |  | ||||||
|  |   follow-redirects@1.15.9(debug@4.3.7): | ||||||
|  |     optionalDependencies: | ||||||
|  |       debug: 4.3.7 | ||||||
|  |  | ||||||
|   form-data-encoder@1.7.2: {} |   form-data-encoder@1.7.2: {} | ||||||
|  |  | ||||||
|   form-data@4.0.2: |   form-data@4.0.2: | ||||||
| @@ -2317,6 +2154,12 @@ snapshots: | |||||||
|       dunder-proto: 1.0.1 |       dunder-proto: 1.0.1 | ||||||
|       es-object-atoms: 1.1.1 |       es-object-atoms: 1.1.1 | ||||||
|  |  | ||||||
|  |   get-uri@6.0.4: | ||||||
|  |     dependencies: | ||||||
|  |       basic-ftp: 5.0.5 | ||||||
|  |       data-uri-to-buffer: 6.0.2 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |  | ||||||
|   get-uri@6.0.4(supports-color@10.0.0): |   get-uri@6.0.4(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       basic-ftp: 5.0.5 |       basic-ftp: 5.0.5 | ||||||
| @@ -2357,6 +2200,11 @@ snapshots: | |||||||
|       statuses: 2.0.1 |       statuses: 2.0.1 | ||||||
|       toidentifier: 1.0.1 |       toidentifier: 1.0.1 | ||||||
|  |  | ||||||
|  |   http-proxy-agent@7.0.2: | ||||||
|  |     dependencies: | ||||||
|  |       agent-base: 7.1.3 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |  | ||||||
|   http-proxy-agent@7.0.2(supports-color@10.0.0): |   http-proxy-agent@7.0.2(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       agent-base: 7.1.3 |       agent-base: 7.1.3 | ||||||
| @@ -2364,6 +2212,11 @@ snapshots: | |||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - supports-color |       - supports-color | ||||||
|  |  | ||||||
|  |   https-proxy-agent@7.0.6: | ||||||
|  |     dependencies: | ||||||
|  |       agent-base: 7.1.3 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |  | ||||||
|   https-proxy-agent@7.0.6(supports-color@10.0.0): |   https-proxy-agent@7.0.6(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       agent-base: 7.1.3 |       agent-base: 7.1.3 | ||||||
| @@ -2385,18 +2238,6 @@ snapshots: | |||||||
|  |  | ||||||
|   ini@1.3.8: {} |   ini@1.3.8: {} | ||||||
|  |  | ||||||
|   inquirer@12.6.0(@types/node@22.15.18): |  | ||||||
|     dependencies: |  | ||||||
|       '@inquirer/core': 10.1.10(@types/node@22.15.18) |  | ||||||
|       '@inquirer/prompts': 7.5.0(@types/node@22.15.18) |  | ||||||
|       '@inquirer/type': 3.0.6(@types/node@22.15.18) |  | ||||||
|       ansi-escapes: 4.3.2 |  | ||||||
|       mute-stream: 2.0.0 |  | ||||||
|       run-async: 3.0.0 |  | ||||||
|       rxjs: 7.8.2 |  | ||||||
|     optionalDependencies: |  | ||||||
|       '@types/node': 22.15.18 |  | ||||||
|  |  | ||||||
|   inquirer@12.6.1(@types/node@22.15.18): |   inquirer@12.6.1(@types/node@22.15.18): | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@inquirer/core': 10.1.11(@types/node@22.15.18) |       '@inquirer/core': 10.1.11(@types/node@22.15.18) | ||||||
| @@ -2499,6 +2340,12 @@ snapshots: | |||||||
|  |  | ||||||
|   nanoid@5.1.5: {} |   nanoid@5.1.5: {} | ||||||
|  |  | ||||||
|  |   needle@2.4.0: | ||||||
|  |     dependencies: | ||||||
|  |       debug: 3.2.7 | ||||||
|  |       iconv-lite: 0.4.24 | ||||||
|  |       sax: 1.4.1 | ||||||
|  |  | ||||||
|   needle@2.4.0(supports-color@10.0.0): |   needle@2.4.0(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       debug: 3.2.7(supports-color@10.0.0) |       debug: 3.2.7(supports-color@10.0.0) | ||||||
| @@ -2539,6 +2386,17 @@ snapshots: | |||||||
|  |  | ||||||
|   os-tmpdir@1.0.2: {} |   os-tmpdir@1.0.2: {} | ||||||
|  |  | ||||||
|  |   pac-proxy-agent@7.2.0: | ||||||
|  |     dependencies: | ||||||
|  |       '@tootallnate/quickjs-emscripten': 0.23.0 | ||||||
|  |       agent-base: 7.1.3 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |       get-uri: 6.0.4 | ||||||
|  |       http-proxy-agent: 7.0.2 | ||||||
|  |       https-proxy-agent: 7.0.6 | ||||||
|  |       pac-resolver: 7.0.1 | ||||||
|  |       socks-proxy-agent: 8.0.5 | ||||||
|  |  | ||||||
|   pac-proxy-agent@7.2.0(supports-color@10.0.0): |   pac-proxy-agent@7.2.0(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@tootallnate/quickjs-emscripten': 0.23.0 |       '@tootallnate/quickjs-emscripten': 0.23.0 | ||||||
| @@ -2581,12 +2439,23 @@ snapshots: | |||||||
|     dependencies: |     dependencies: | ||||||
|       safe-buffer: 5.2.1 |       safe-buffer: 5.2.1 | ||||||
|  |  | ||||||
|  |   pm2-axon-rpc@0.7.1: | ||||||
|  |     dependencies: | ||||||
|  |       debug: 4.4.0 | ||||||
|  |  | ||||||
|   pm2-axon-rpc@0.7.1(supports-color@10.0.0): |   pm2-axon-rpc@0.7.1(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       debug: 4.4.0(supports-color@10.0.0) |       debug: 4.4.0(supports-color@10.0.0) | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - supports-color |       - supports-color | ||||||
|  |  | ||||||
|  |   pm2-axon@4.0.1: | ||||||
|  |     dependencies: | ||||||
|  |       amp: 0.3.1 | ||||||
|  |       amp-message: 0.1.2 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |       escape-string-regexp: 4.0.0 | ||||||
|  |  | ||||||
|   pm2-axon@4.0.1(supports-color@10.0.0): |   pm2-axon@4.0.1(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       amp: 0.3.1 |       amp: 0.3.1 | ||||||
| @@ -2605,6 +2474,15 @@ snapshots: | |||||||
|     dependencies: |     dependencies: | ||||||
|       charm: 0.1.2 |       charm: 0.1.2 | ||||||
|  |  | ||||||
|  |   pm2-sysmonit@1.2.8: | ||||||
|  |     dependencies: | ||||||
|  |       async: 3.2.6 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |       pidusage: 2.0.21 | ||||||
|  |       systeminformation: 5.25.11 | ||||||
|  |       tx2: 1.0.5 | ||||||
|  |     optional: true | ||||||
|  |  | ||||||
|   pm2-sysmonit@1.2.8(supports-color@10.0.0): |   pm2-sysmonit@1.2.8(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       async: 3.2.6 |       async: 3.2.6 | ||||||
| @@ -2616,30 +2494,30 @@ snapshots: | |||||||
|       - supports-color |       - supports-color | ||||||
|     optional: true |     optional: true | ||||||
|  |  | ||||||
|   pm2@6.0.5(supports-color@10.0.0): |   pm2@6.0.6: | ||||||
|     dependencies: |     dependencies: | ||||||
|       '@pm2/agent': 2.1.1(supports-color@10.0.0) |       '@pm2/agent': 2.1.1 | ||||||
|       '@pm2/io': 6.1.0(supports-color@10.0.0) |       '@pm2/io': 6.1.0 | ||||||
|       '@pm2/js-api': 0.8.0(supports-color@10.0.0) |       '@pm2/js-api': 0.8.0 | ||||||
|       '@pm2/pm2-version-check': 1.0.4(supports-color@10.0.0) |       '@pm2/pm2-version-check': 1.0.4 | ||||||
|  |       ansis: 4.0.0 | ||||||
|       async: 3.2.6 |       async: 3.2.6 | ||||||
|       blessed: 0.1.81 |       blessed: 0.1.81 | ||||||
|       chalk: 3.0.0 |  | ||||||
|       chokidar: 3.6.0 |       chokidar: 3.6.0 | ||||||
|       cli-tableau: 2.0.1 |       cli-tableau: 2.0.1 | ||||||
|       commander: 2.15.1 |       commander: 2.15.1 | ||||||
|       croner: 4.1.97 |       croner: 4.1.97 | ||||||
|       dayjs: 1.11.13 |       dayjs: 1.11.13 | ||||||
|       debug: 4.4.0(supports-color@10.0.0) |       debug: 4.4.0 | ||||||
|       enquirer: 2.3.6 |       enquirer: 2.3.6 | ||||||
|       eventemitter2: 5.0.1 |       eventemitter2: 5.0.1 | ||||||
|       fclone: 1.0.11 |       fclone: 1.0.11 | ||||||
|       js-yaml: 4.1.0 |       js-yaml: 4.1.0 | ||||||
|       mkdirp: 1.0.4 |       mkdirp: 1.0.4 | ||||||
|       needle: 2.4.0(supports-color@10.0.0) |       needle: 2.4.0 | ||||||
|       pidusage: 3.0.2 |       pidusage: 3.0.2 | ||||||
|       pm2-axon: 4.0.1(supports-color@10.0.0) |       pm2-axon: 4.0.1 | ||||||
|       pm2-axon-rpc: 0.7.1(supports-color@10.0.0) |       pm2-axon-rpc: 0.7.1 | ||||||
|       pm2-deploy: 1.0.2 |       pm2-deploy: 1.0.2 | ||||||
|       pm2-multimeter: 0.1.2 |       pm2-multimeter: 0.1.2 | ||||||
|       promptly: 2.2.0 |       promptly: 2.2.0 | ||||||
| @@ -2648,10 +2526,9 @@ snapshots: | |||||||
|       sprintf-js: 1.1.2 |       sprintf-js: 1.1.2 | ||||||
|       vizion: 2.2.1 |       vizion: 2.2.1 | ||||||
|     optionalDependencies: |     optionalDependencies: | ||||||
|       pm2-sysmonit: 1.2.8(supports-color@10.0.0) |       pm2-sysmonit: 1.2.8 | ||||||
|     transitivePeerDependencies: |     transitivePeerDependencies: | ||||||
|       - bufferutil |       - bufferutil | ||||||
|       - supports-color |  | ||||||
|       - utf-8-validate |       - utf-8-validate | ||||||
|  |  | ||||||
|   pm2@6.0.6(supports-color@10.0.0): |   pm2@6.0.6(supports-color@10.0.0): | ||||||
| @@ -2696,6 +2573,17 @@ snapshots: | |||||||
|     dependencies: |     dependencies: | ||||||
|       read: 1.0.7 |       read: 1.0.7 | ||||||
|  |  | ||||||
|  |   proxy-agent@6.4.0: | ||||||
|  |     dependencies: | ||||||
|  |       agent-base: 7.1.3 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |       http-proxy-agent: 7.0.2 | ||||||
|  |       https-proxy-agent: 7.0.6 | ||||||
|  |       lru-cache: 7.18.3 | ||||||
|  |       pac-proxy-agent: 7.2.0 | ||||||
|  |       proxy-from-env: 1.1.0 | ||||||
|  |       socks-proxy-agent: 8.0.5 | ||||||
|  |  | ||||||
|   proxy-agent@6.4.0(supports-color@10.0.0): |   proxy-agent@6.4.0(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       agent-base: 7.1.3 |       agent-base: 7.1.3 | ||||||
| @@ -2721,6 +2609,12 @@ snapshots: | |||||||
|     dependencies: |     dependencies: | ||||||
|       picomatch: 2.3.1 |       picomatch: 2.3.1 | ||||||
|  |  | ||||||
|  |   require-in-the-middle@5.2.0: | ||||||
|  |     dependencies: | ||||||
|  |       debug: 4.4.0 | ||||||
|  |       module-details-from-path: 1.0.3 | ||||||
|  |       resolve: 1.22.10 | ||||||
|  |  | ||||||
|   require-in-the-middle@5.2.0(supports-color@10.0.0): |   require-in-the-middle@5.2.0(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       debug: 4.4.0(supports-color@10.0.0) |       debug: 4.4.0(supports-color@10.0.0) | ||||||
| @@ -2826,6 +2720,12 @@ snapshots: | |||||||
|  |  | ||||||
|   smart-buffer@4.2.0: {} |   smart-buffer@4.2.0: {} | ||||||
|  |  | ||||||
|  |   socks-proxy-agent@8.0.5: | ||||||
|  |     dependencies: | ||||||
|  |       agent-base: 7.1.3 | ||||||
|  |       debug: 4.4.0 | ||||||
|  |       socks: 2.8.4 | ||||||
|  |  | ||||||
|   socks-proxy-agent@8.0.5(supports-color@10.0.0): |   socks-proxy-agent@8.0.5(supports-color@10.0.0): | ||||||
|     dependencies: |     dependencies: | ||||||
|       agent-base: 7.1.3 |       agent-base: 7.1.3 | ||||||
|   | |||||||
| @@ -77,6 +77,14 @@ export type AssistantConfigData = { | |||||||
|     path?: string; |     path?: string; | ||||||
|     port?: number; |     port?: number; | ||||||
|   }; |   }; | ||||||
|  |   share?: { | ||||||
|  |     url: string; | ||||||
|  |     enabled?: boolean; // 是否启用远程应用 | ||||||
|  |     name: string; | ||||||
|  |   }; | ||||||
|  |   watch?: { | ||||||
|  |     enabled?: boolean; | ||||||
|  |   }; | ||||||
|   /** |   /** | ||||||
|    * 首页 |    * 首页 | ||||||
|    */ |    */ | ||||||
|   | |||||||
							
								
								
									
										138
									
								
								assistant/src/module/assistant/remote-app/remote-app.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								assistant/src/module/assistant/remote-app/remote-app.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,138 @@ | |||||||
|  | import type { AssistantConfig } from '@/module/assistant/index.ts'; | ||||||
|  | import { WebSocket } from 'ws'; | ||||||
|  | import type { App } from '@kevisual/router'; | ||||||
|  | import { EventEmitter } from 'eventemitter3'; | ||||||
|  | import { logger } from '@/module/logger.ts'; | ||||||
|  | type RemoteAppOptions = { | ||||||
|  |   app?: App; | ||||||
|  |   assistantConfig?: AssistantConfig; | ||||||
|  |   emitter?: EventEmitter; | ||||||
|  | }; | ||||||
|  | export class RemoteApp { | ||||||
|  |   mainApp: App; | ||||||
|  |   assistantConfig: AssistantConfig; | ||||||
|  |   url: string; | ||||||
|  |   name: string; | ||||||
|  |   enabled: boolean; | ||||||
|  |   emitter: EventEmitter; | ||||||
|  |   isConnected: boolean; | ||||||
|  |   ws: WebSocket; | ||||||
|  |   constructor(opts?: RemoteAppOptions) { | ||||||
|  |     this.mainApp = opts?.app; | ||||||
|  |     this.assistantConfig = opts?.assistantConfig; | ||||||
|  |     const share = this.assistantConfig?.getConfig()?.share; | ||||||
|  |     this.emitter = opts?.emitter || new EventEmitter(); | ||||||
|  |     if (share) { | ||||||
|  |       const { url, name, enabled } = share; | ||||||
|  |       this.url = url; | ||||||
|  |       this.name = name; | ||||||
|  |       this.enabled = enabled ?? false; | ||||||
|  |       if (this.enabled) { | ||||||
|  |         this.init(); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   async isConnect(): Promise<boolean> { | ||||||
|  |     const that = this; | ||||||
|  |     if (this.isConnected) { | ||||||
|  |       return true; | ||||||
|  |     } | ||||||
|  |     if (!this.enabled) { | ||||||
|  |       return false; | ||||||
|  |     } | ||||||
|  |     return new Promise((resolve) => { | ||||||
|  |       const timeout = setTimeout(() => { | ||||||
|  |         resolve(false); | ||||||
|  |         that.emitter.off('open', listenOnce); | ||||||
|  |       }, 5000); | ||||||
|  |       const listenOnce = () => { | ||||||
|  |         clearTimeout(timeout); | ||||||
|  |         that.isConnected = true; | ||||||
|  |         resolve(true); | ||||||
|  |       }; | ||||||
|  |       that.emitter.once('open', listenOnce); | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|  |   getWsURL(url: string) { | ||||||
|  |     const { protocol } = new URL(url); | ||||||
|  |     const wsProtocol = protocol === 'https:' ? 'wss:' : 'ws:'; | ||||||
|  |     const wsURL = url.toString().replace(protocol, wsProtocol); | ||||||
|  |     return wsURL; | ||||||
|  |   } | ||||||
|  |   async init() { | ||||||
|  |     if (!this.url) { | ||||||
|  |       throw new Error('No url provided for remote app'); | ||||||
|  |     } | ||||||
|  |     if (!this.name) { | ||||||
|  |       throw new Error('No name provided for remote app'); | ||||||
|  |     } | ||||||
|  |     console.log('Connecting to remote app:', this.name, this.url, this.getWsURL(this.url)); | ||||||
|  |     const ws = new WebSocket(this.getWsURL(this.url), { | ||||||
|  |       rejectUnauthorized: true, | ||||||
|  |     }); | ||||||
|  |     const that = this; | ||||||
|  |     ws.on('open', that.onOpen.bind(that)); | ||||||
|  |     ws.on('close', that.onClose.bind(that)); | ||||||
|  |     ws.on('message', that.onMessage.bind(that)); | ||||||
|  |     ws.on('error', that.onError.bind(that)); | ||||||
|  |     this.ws = ws; | ||||||
|  |   } | ||||||
|  |   onOpen() { | ||||||
|  |     this.emitter.emit('open', this.name); | ||||||
|  |   } | ||||||
|  |   onClose() { | ||||||
|  |     this.emitter.emit('close', this.name); | ||||||
|  |   } | ||||||
|  |   onMessage(data: any) { | ||||||
|  |     this.emitter.emit('message', data); | ||||||
|  |   } | ||||||
|  |   onError(error: any) { | ||||||
|  |     console.error('Error in remote app:', this.name, error); | ||||||
|  |     this.emitter.emit('error', error); | ||||||
|  |   } | ||||||
|  |   on(event: 'open' | 'close' | 'message' | 'error', listener: (data: any) => void) { | ||||||
|  |     this.emitter.on(event, listener); | ||||||
|  |     return () => { | ||||||
|  |       this.emitter.off(event, listener); | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   sendData(data: any) {} | ||||||
|  |   json(data: any) { | ||||||
|  |     this.ws.send(JSON.stringify(data)); | ||||||
|  |   } | ||||||
|  |   listenProxy() { | ||||||
|  |     const remoteApp = this; | ||||||
|  |     const app = this.mainApp; | ||||||
|  |     const listenFn = async (event: any) => { | ||||||
|  |       const data = event.toString(); | ||||||
|  |       logger.debug('Received message:', data); | ||||||
|  |       const body = JSON.parse(data); | ||||||
|  |       const message = body.data || {}; | ||||||
|  |       if (body?.type !== 'proxy') return; | ||||||
|  |       if (!body.id) { | ||||||
|  |         remoteApp.json({ | ||||||
|  |           id: body.id, | ||||||
|  |           data: { | ||||||
|  |             code: 400, | ||||||
|  |             message: 'id is required', | ||||||
|  |           }, | ||||||
|  |         }); | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       const res = await app.call(message); | ||||||
|  |       remoteApp.json({ | ||||||
|  |         id: body.id, | ||||||
|  |         data: { | ||||||
|  |           code: res.code, | ||||||
|  |           data: res.body, | ||||||
|  |           message: res.message, | ||||||
|  |         }, | ||||||
|  |       }); | ||||||
|  |     }; | ||||||
|  |     remoteApp.emitter.on('message', listenFn); | ||||||
|  |     return () => { | ||||||
|  |       remoteApp.emitter.off('message', listenFn); | ||||||
|  |     }; | ||||||
|  |   } | ||||||
|  | } | ||||||
| @@ -2,6 +2,7 @@ import { Query } from '@kevisual/query'; | |||||||
| import { app, assistantConfig } from '../app.ts'; | import { app, assistantConfig } from '../app.ts'; | ||||||
| import './config/index.ts'; | import './config/index.ts'; | ||||||
| import './shop-install/index.ts'; | import './shop-install/index.ts'; | ||||||
|  | import os from 'node:os'; | ||||||
|  |  | ||||||
| app | app | ||||||
|   .route({ |   .route({ | ||||||
| @@ -49,3 +50,31 @@ app | |||||||
|     ctx.body = 'v1.0.0'; |     ctx.body = 'v1.0.0'; | ||||||
|   }) |   }) | ||||||
|   .addTo(app); |   .addTo(app); | ||||||
|  |  | ||||||
|  | app | ||||||
|  |   .route({ | ||||||
|  |     path: 'client', | ||||||
|  |     key: 'time', | ||||||
|  |   }) | ||||||
|  |   .define(async (ctx) => { | ||||||
|  |     ctx.body = { | ||||||
|  |       time: new Date().getTime(), | ||||||
|  |       date: new Date().toLocaleDateString(), | ||||||
|  |     }; | ||||||
|  |   }) | ||||||
|  |   .addTo(app); | ||||||
|  |  | ||||||
|  | app | ||||||
|  |   .route({ | ||||||
|  |     path: 'client', | ||||||
|  |     key: 'system', | ||||||
|  |   }) | ||||||
|  |   .define(async (ctx) => { | ||||||
|  |     const { platform, arch, release } = os; | ||||||
|  |     ctx.body = { | ||||||
|  |       platform: platform(), | ||||||
|  |       arch: arch(), | ||||||
|  |       release: release(), | ||||||
|  |     }; | ||||||
|  |   }) | ||||||
|  |   .addTo(app); | ||||||
|   | |||||||
| @@ -32,19 +32,28 @@ type ProxyType = { | |||||||
| }; | }; | ||||||
| export type LocalProxyOpts = { | export type LocalProxyOpts = { | ||||||
|   assistantConfig?: AssistantConfig; // 前端应用路径 |   assistantConfig?: AssistantConfig; // 前端应用路径 | ||||||
|  |   // watch?: boolean; // 是否监听文件变化 | ||||||
| }; | }; | ||||||
| export class LocalProxy { | export class LocalProxy { | ||||||
|   localProxyProxyList: ProxyType[] = []; |   localProxyProxyList: ProxyType[] = []; | ||||||
|   assistantConfig?: AssistantConfig; |   assistantConfig?: AssistantConfig; | ||||||
|  |   watch?: boolean; | ||||||
|  |   watching?: boolean; | ||||||
|  |   initing?: boolean; | ||||||
|   constructor(opts?: LocalProxyOpts) { |   constructor(opts?: LocalProxyOpts) { | ||||||
|     this.assistantConfig = opts?.assistantConfig; |     this.assistantConfig = opts?.assistantConfig; | ||||||
|     if (this.assistantConfig) { |     if (this.assistantConfig) { | ||||||
|  |       this.watch = !!this.assistantConfig.config?.watch.enabled; | ||||||
|       this.init(); |       this.init(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   init() { |   init() { | ||||||
|     const frontAppDir = this.assistantConfig.configPath?.pagesDir; |     const frontAppDir = this.assistantConfig.configPath?.pagesDir; | ||||||
|     if (frontAppDir) { |     if (frontAppDir) { | ||||||
|  |       if (this.initing) { | ||||||
|  |         return; | ||||||
|  |       } | ||||||
|  |       this.initing = true; | ||||||
|       const userList = fs.readdirSync(frontAppDir); |       const userList = fs.readdirSync(frontAppDir); | ||||||
|       const localProxyProxyList: ProxyType[] = []; |       const localProxyProxyList: ProxyType[] = []; | ||||||
|       userList.forEach((user) => { |       userList.forEach((user) => { | ||||||
| @@ -72,12 +81,45 @@ export class LocalProxy { | |||||||
|         } |         } | ||||||
|       }); |       }); | ||||||
|       this.localProxyProxyList = localProxyProxyList; |       this.localProxyProxyList = localProxyProxyList; | ||||||
|  |       this.initing = false; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   onWatch() { | ||||||
|  |     // 监听文件变化 | ||||||
|  |     const frontAppDir = this.assistantConfig.configPath?.pagesDir; | ||||||
|  |     const that = this; | ||||||
|  |     if (!this.watch && !frontAppDir) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     if (this.watching) { | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     that.watching = true; | ||||||
|  |     let timer: NodeJS.Timeout; | ||||||
|  |     const debounce = (fn: () => void, delay: number) => { | ||||||
|  |       if (timer) { | ||||||
|  |         clearTimeout(timer); | ||||||
|  |       } | ||||||
|  |       timer = setTimeout(() => { | ||||||
|  |         fn(); | ||||||
|  |       }, delay); | ||||||
|  |     }; | ||||||
|  |     fs.watch(frontAppDir, { recursive: true }, (eventType, filename) => { | ||||||
|  |       if (eventType === 'change') { | ||||||
|  |         const filePath = path.join(frontAppDir, filename); | ||||||
|  |         try { | ||||||
|  |           const stat = fs.statSync(filePath); | ||||||
|  |           if (stat.isDirectory()) { | ||||||
|  |             debounce(that.init, 5000); | ||||||
|  |           } | ||||||
|  |         } catch (error) {} | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   } | ||||||
|   getLocalProxyList() { |   getLocalProxyList() { | ||||||
|     return this.localProxyProxyList; |     return this.localProxyProxyList; | ||||||
|   } |   } | ||||||
|   reload() { |   reload() { | ||||||
|     // 重新加载本地代理列表 |     this.init(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										17
									
								
								assistant/src/test/common.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								assistant/src/test/common.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | |||||||
|  | // import { assistantConfig } from '../app.ts'; | ||||||
|  | // import { RemoteApp } from '@/module/assistant/remote-app/remote-app.ts'; | ||||||
|  | console.log('assistantConfig'); | ||||||
|  | // console.log('assistantConfig', assistantConfig); | ||||||
|  | // const main = async () => { | ||||||
|  | //   const app = new RemoteApp({ | ||||||
|  | //     assistantConfig, | ||||||
|  | //   }); | ||||||
|  | //   const connect = await app.isConnect(); | ||||||
|  | //   if (connect) { | ||||||
|  | //     console.log('Connected to assistant'); | ||||||
|  | //   } else { | ||||||
|  | //     console.log('Not connected to assistant'); | ||||||
|  | //   } | ||||||
|  | // }; | ||||||
|  |  | ||||||
|  | // main(); | ||||||
							
								
								
									
										20
									
								
								assistant/src/test/remote-app.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								assistant/src/test/remote-app.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | |||||||
|  | import { logger } from '@/module/logger.ts'; | ||||||
|  | import { assistantConfig, app } from '../app.ts'; | ||||||
|  | import '../routes/index.ts'; | ||||||
|  | import { RemoteApp } from '@/module/assistant/remote-app/remote-app.ts'; | ||||||
|  | const main = async () => { | ||||||
|  |   assistantConfig.checkMounted(); | ||||||
|  |   const remoteApp = new RemoteApp({ | ||||||
|  |     assistantConfig, | ||||||
|  |     app, | ||||||
|  |   }); | ||||||
|  |   const connect = await remoteApp.isConnect(); | ||||||
|  |   if (connect) { | ||||||
|  |     console.log('Connected to proxy server'); | ||||||
|  |     remoteApp.listenProxy(); | ||||||
|  |   } else { | ||||||
|  |     console.log('Not connected to proxy server'); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | main(); | ||||||
		Reference in New Issue
	
	Block a user