refactor(DockerHost): Enhance request handling with fluent API and improved response parsing

This commit is contained in:
2025-08-18 22:39:05 +00:00
parent 5b25704cf8
commit ffdc61fb42
4 changed files with 172 additions and 181 deletions

View File

@@ -39,15 +39,15 @@
"@push.rocks/smartfile": "^11.2.7", "@push.rocks/smartfile": "^11.2.7",
"@push.rocks/smartjson": "^5.0.20", "@push.rocks/smartjson": "^5.0.20",
"@push.rocks/smartlog": "^3.1.8", "@push.rocks/smartlog": "^3.1.8",
"@push.rocks/smartnetwork": "^3.0.0", "@push.rocks/smartnetwork": "^4.1.2",
"@push.rocks/smartpath": "^5.0.18", "@push.rocks/smartpath": "^6.0.0",
"@push.rocks/smartpromise": "^4.2.3", "@push.rocks/smartpromise": "^4.2.3",
"@push.rocks/smartrequest": "^2.0.22", "@push.rocks/smartrequest": "^4.3.0",
"@push.rocks/smartstream": "^3.2.5", "@push.rocks/smartstream": "^3.2.5",
"@push.rocks/smartstring": "^4.0.15", "@push.rocks/smartstring": "^4.0.15",
"@push.rocks/smartunique": "^3.0.9", "@push.rocks/smartunique": "^3.0.9",
"@push.rocks/smartversion": "^3.0.5", "@push.rocks/smartversion": "^3.0.5",
"@tsclass/tsclass": "^4.1.2", "@tsclass/tsclass": "^9.2.0",
"rxjs": "^7.8.2" "rxjs": "^7.8.2"
}, },
"devDependencies": { "devDependencies": {

172
pnpm-lock.yaml generated
View File

@@ -27,17 +27,17 @@ importers:
specifier: ^3.1.8 specifier: ^3.1.8
version: 3.1.8 version: 3.1.8
'@push.rocks/smartnetwork': '@push.rocks/smartnetwork':
specifier: ^3.0.0 specifier: ^4.1.2
version: 3.0.2 version: 4.1.2
'@push.rocks/smartpath': '@push.rocks/smartpath':
specifier: ^5.0.18 specifier: ^6.0.0
version: 5.0.18 version: 6.0.0
'@push.rocks/smartpromise': '@push.rocks/smartpromise':
specifier: ^4.2.3 specifier: ^4.2.3
version: 4.2.3 version: 4.2.3
'@push.rocks/smartrequest': '@push.rocks/smartrequest':
specifier: ^2.0.22 specifier: ^4.3.0
version: 2.0.22 version: 4.3.0
'@push.rocks/smartstream': '@push.rocks/smartstream':
specifier: ^3.2.5 specifier: ^3.2.5
version: 3.2.5 version: 3.2.5
@@ -51,8 +51,8 @@ importers:
specifier: ^3.0.5 specifier: ^3.0.5
version: 3.0.5 version: 3.0.5
'@tsclass/tsclass': '@tsclass/tsclass':
specifier: ^4.1.2 specifier: ^9.2.0
version: 4.1.2 version: 9.2.0
rxjs: rxjs:
specifier: ^7.8.2 specifier: ^7.8.2
version: 7.8.2 version: 7.8.2
@@ -679,9 +679,6 @@ packages:
'@push.rocks/smartmongo@2.0.12': '@push.rocks/smartmongo@2.0.12':
resolution: {integrity: sha512-NglYiO14BikxnlvW6JF18FtopBtaWQEGAtPxHmmSCbyhU8Mi0aEFO7VgCasE9Kguba/wcR597qhcDEdcpBg1eQ==} resolution: {integrity: sha512-NglYiO14BikxnlvW6JF18FtopBtaWQEGAtPxHmmSCbyhU8Mi0aEFO7VgCasE9Kguba/wcR597qhcDEdcpBg1eQ==}
'@push.rocks/smartnetwork@3.0.2':
resolution: {integrity: sha512-s6CNGzQ1n/d/6cOKXbxeW6/tO//dr1woLqI01g7XhqTriw0nsm2G2kWaZh2J0VOguGNWBgQVCIpR0LjdRNWb3g==}
'@push.rocks/smartnetwork@4.1.2': '@push.rocks/smartnetwork@4.1.2':
resolution: {integrity: sha512-TjucG72ooHgzAUpNu2LAv4iFoettmZq2aEWhhzIa7AKcOvt4yxsk3Vl73guhKRohTfhdRauPcH5OHISLUHJbYA==} resolution: {integrity: sha512-TjucG72ooHgzAUpNu2LAv4iFoettmZq2aEWhhzIa7AKcOvt4yxsk3Vl73guhKRohTfhdRauPcH5OHISLUHJbYA==}
@@ -697,8 +694,8 @@ packages:
'@push.rocks/smartopen@2.0.0': '@push.rocks/smartopen@2.0.0':
resolution: {integrity: sha512-eVT0GhtQ2drb95j/kktYst/Toh1zCwCqjTJFYtaYFUnnBnBUajPtBZDFnPQo01DN8JxoeCTo8jggq+PCvzcfww==} resolution: {integrity: sha512-eVT0GhtQ2drb95j/kktYst/Toh1zCwCqjTJFYtaYFUnnBnBUajPtBZDFnPQo01DN8JxoeCTo8jggq+PCvzcfww==}
'@push.rocks/smartpath@5.0.18': '@push.rocks/smartpath@5.1.0':
resolution: {integrity: sha512-kIyRTlOoeEth5b4Qp8KPUxNOGNdvhb2aD0hbHfF3oGTQ0xnDdgB1l03/4bIoapHG48OrTgh4uQ5tUorykgdOzw==} resolution: {integrity: sha512-pJ4UGATHV/C6Dw5DU0D3MJaPMASlKAgeS+Hl9dkhD2ceYArn86Ky3Z/g7LNj40Oz6cUe77/AP1chztmJZISrpw==}
'@push.rocks/smartpath@6.0.0': '@push.rocks/smartpath@6.0.0':
resolution: {integrity: sha512-r94u1MbBaIOSy+517PZp2P7SuZPSe9LkwJ8l3dXQKHeIOri/zDxk/RQPiFM+j4N9301ztkRyhvRj7xgUDroOsg==} resolution: {integrity: sha512-r94u1MbBaIOSy+517PZp2P7SuZPSe9LkwJ8l3dXQKHeIOri/zDxk/RQPiFM+j4N9301ztkRyhvRj7xgUDroOsg==}
@@ -715,11 +712,11 @@ packages:
'@push.rocks/smartpuppeteer@2.0.5': '@push.rocks/smartpuppeteer@2.0.5':
resolution: {integrity: sha512-yK/qSeWVHIGWRp3c8S5tfdGP6WCKllZC4DR8d8CQlEjszOSBmHtlTdyyqOMBZ/BA4kd+eU5f3A1r4K2tGYty1g==} resolution: {integrity: sha512-yK/qSeWVHIGWRp3c8S5tfdGP6WCKllZC4DR8d8CQlEjszOSBmHtlTdyyqOMBZ/BA4kd+eU5f3A1r4K2tGYty1g==}
'@push.rocks/smartrequest@2.0.22': '@push.rocks/smartrequest@2.1.0':
resolution: {integrity: sha512-EfgmdEsLtDJ8aNOLOh59ca1NMsiiFz54aoHRigQFQ0cuoUs6phxejIY2FdMoPFn68ubTpkztdL2P4L1/cRYyHg==} resolution: {integrity: sha512-3eHLTRInHA+u+W98TqJwgTES7rRimBAsJC4JxVNQC3UUezmblAhM5/TIQsEBQTsbjAY8SeQKy6NHzW6iTiaD8w==}
'@push.rocks/smartrequest@4.2.2': '@push.rocks/smartrequest@4.3.0':
resolution: {integrity: sha512-OMtSyxvuOw04nRR/97yAF3XLe42QDyuwStQMo2bXrVvXgcriNyn0JFavl0IL5hY6Gb+dyCWgOAUwX7cVZ4DzZg==} resolution: {integrity: sha512-bFfPOoe1LmNC51/62pvbyO1wg0AzhZu+jU1FZ6/HVkA8tCYQCqSagEL/dfUDCFyOqOKmYJnY/01dsKqKG3Zu5g==}
'@push.rocks/smartrouter@1.3.3': '@push.rocks/smartrouter@1.3.3':
resolution: {integrity: sha512-1+xZEnWlhzqLWAaJ1zFNhQ0zgbfCWQl1DBT72LygLxTs+P0K8AwJKgqo/IX6CT55kGCFnPAZIYSbVJlGsgrB0w==} resolution: {integrity: sha512-1+xZEnWlhzqLWAaJ1zFNhQ0zgbfCWQl1DBT72LygLxTs+P0K8AwJKgqo/IX6CT55kGCFnPAZIYSbVJlGsgrB0w==}
@@ -757,9 +754,6 @@ packages:
'@push.rocks/smartunique@3.0.9': '@push.rocks/smartunique@3.0.9':
resolution: {integrity: sha512-q6DYQgT7/dqdWi9HusvtWCjdsFzLFXY9LTtaZV6IYNJt6teZOonoygxTdNt9XLn6niBSbLYrHSKvJNTRH/uK+g==} resolution: {integrity: sha512-q6DYQgT7/dqdWi9HusvtWCjdsFzLFXY9LTtaZV6IYNJt6teZOonoygxTdNt9XLn6niBSbLYrHSKvJNTRH/uK+g==}
'@push.rocks/smarturl@3.0.7':
resolution: {integrity: sha512-nx4EWjQD9JeO7QVbOsxd1PFeDQYoSQOOOYCZ+r7QWXHLJG52iYzgvJDCQyX6p705HDkYMJWozW2ZzhR22qLKbw==}
'@push.rocks/smarturl@3.1.0': '@push.rocks/smarturl@3.1.0':
resolution: {integrity: sha512-ij73Q4GERojdPSHxAvYKvspimcpAJC6GGQCWsC4b+1sAiOSByjfmkUHK8yiEEOPRU9AeGuyaIVqK6ZzKLEZ3vA==} resolution: {integrity: sha512-ij73Q4GERojdPSHxAvYKvspimcpAJC6GGQCWsC4b+1sAiOSByjfmkUHK8yiEEOPRU9AeGuyaIVqK6ZzKLEZ3vA==}
@@ -823,10 +817,6 @@ packages:
resolution: {integrity: sha512-PLvBNVeuY9BERNLq3PFDkhnHHc0RpilEGHd4aUI5XRFlZF++LETdLxPbxw+DHbvHlkUf/nep09f7rrL9Tqub1Q==} resolution: {integrity: sha512-PLvBNVeuY9BERNLq3PFDkhnHHc0RpilEGHd4aUI5XRFlZF++LETdLxPbxw+DHbvHlkUf/nep09f7rrL9Tqub1Q==}
deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartmatch deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartmatch
'@pushrocks/smartping@1.0.8':
resolution: {integrity: sha512-VM2gfS1sTuycj/jHyDa0lDntkPe7/JT0b2kGsy265RkichAJZkoEp3fboRJH/WAdzM8T4Du64JYgZkc8v2HHQg==}
deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartping
'@pushrocks/smartpromise@3.1.10': '@pushrocks/smartpromise@3.1.10':
resolution: {integrity: sha512-VeTurbZ1+ZMxBDJk1Y1LV8SN9xLI+oDXKVeCFw41FAGEKOUEqordqFpi6t+7Vhe/TXUZzCVpZ5bXxAxrGf8yTQ==} resolution: {integrity: sha512-VeTurbZ1+ZMxBDJk1Y1LV8SN9xLI+oDXKVeCFw41FAGEKOUEqordqFpi6t+7Vhe/TXUZzCVpZ5bXxAxrGf8yTQ==}
deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartpromise deprecated: This package has been deprecated in favour of the new package at @push.rocks/smartpromise
@@ -1227,8 +1217,8 @@ packages:
'@tsclass/tsclass@3.0.48': '@tsclass/tsclass@3.0.48':
resolution: {integrity: sha512-hC65UvDlp9qvsl6OcIZXz0JNiWZ0gyzsTzbXpg215sGxopgbkOLCr6E0s4qCTnweYm95gt2AdY95uP7M7kExaQ==} resolution: {integrity: sha512-hC65UvDlp9qvsl6OcIZXz0JNiWZ0gyzsTzbXpg215sGxopgbkOLCr6E0s4qCTnweYm95gt2AdY95uP7M7kExaQ==}
'@tsclass/tsclass@4.1.2': '@tsclass/tsclass@4.4.4':
resolution: {integrity: sha512-uMg1IcTU1cP0McXYGwGffoU3asNQHle7bTN0tn6kVXzfNzSwQf4o8v+YQ4VRnUzo4ov6VKcPXqg5OLb2vz977g==} resolution: {integrity: sha512-YZOAF+u+r4u5rCev2uUd1KBTBdfyFdtDmcv4wuN+864lMccbdfRICR3SlJwCfYS1lbeV3QNLYGD30wjRXgvCJA==}
'@tsclass/tsclass@9.2.0': '@tsclass/tsclass@9.2.0':
resolution: {integrity: sha512-A6ULEkQfYgOnCKQVQRt26O7PRzFo4PE2EoD25RAtnuFuVrNwGynYC20Vee2c8KAOyI7nQ/LaREki9KAX4AHOHQ==} resolution: {integrity: sha512-A6ULEkQfYgOnCKQVQRt26O7PRzFo4PE2EoD25RAtnuFuVrNwGynYC20Vee2c8KAOyI7nQ/LaREki9KAX4AHOHQ==}
@@ -1254,9 +1244,6 @@ packages:
'@types/debug@4.1.12': '@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
'@types/default-gateway@3.0.1':
resolution: {integrity: sha512-tpu0hp+AOIzwdAHyZPzLE5pCf9uT0pb+xZ76T4S7MrY2YTVq918Q7Q2VQ3KCVQqYxM7nxuCK/SL3X97jBEIeKQ==}
'@types/default-gateway@7.2.2': '@types/default-gateway@7.2.2':
resolution: {integrity: sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==} resolution: {integrity: sha512-35C93fYQlnLKLASkMPoxRvok4fENwB3By9clRLd2I/08n/XRl0pCdf7EB17K5oMMwZu8NBYA8i66jH5r/LYBKA==}
@@ -1403,10 +1390,6 @@ packages:
resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==} resolution: {integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==}
engines: {node: '>= 8.0.0'} engines: {node: '>= 8.0.0'}
aggregate-error@4.0.1:
resolution: {integrity: sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==}
engines: {node: '>=12'}
ansi-256-colors@1.1.0: ansi-256-colors@1.1.0:
resolution: {integrity: sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo=} resolution: {integrity: sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo=}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
@@ -1609,10 +1592,6 @@ packages:
resolution: {integrity: sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=} resolution: {integrity: sha1-noIVAa6XmYbEax1m0tQy2y/UrjE=}
engines: {node: '>=4'} engines: {node: '>=4'}
clean-stack@4.2.0:
resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==}
engines: {node: '>=12'}
cliui@8.0.1: cliui@8.0.1:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
@@ -2063,10 +2042,6 @@ packages:
resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==}
engines: {node: '>= 14.17'} engines: {node: '>= 14.17'}
form-data@4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
form-data@4.0.4: form-data@4.0.4:
resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
@@ -2270,10 +2245,6 @@ packages:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
indent-string@5.0.0:
resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
engines: {node: '>=12'}
inflight@1.0.6: inflight@1.0.6:
resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=}
@@ -2314,10 +2285,6 @@ packages:
resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
is-ip@4.0.0:
resolution: {integrity: sha512-4B4XA2HEIm/PY+OSpeMBXr8pGWBYbXuHgjMAqrwbLO3CPTCAd9ArEJzBUKGZtk9viY6+aSfadGnWyjY3ydYZkw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
is-ip@5.0.1: is-ip@5.0.1:
resolution: {integrity: sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==} resolution: {integrity: sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==}
engines: {node: '>=14.16'} engines: {node: '>=14.16'}
@@ -3023,10 +2990,6 @@ packages:
proxy-from-env@1.1.0: proxy-from-env@1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
public-ip@6.0.2:
resolution: {integrity: sha512-+6bkjnf0yQ4+tZV0zJv1017DiIF7y6R4yg17Mrhhkc25L7dtQtXWHgSCrz9BbLL4OeTFbPK4EALXqJUrwCIWXw==}
engines: {node: '>=14.16'}
public-ip@7.0.1: public-ip@7.0.1:
resolution: {integrity: sha512-DdNcqcIbI0wEeCBcqX+bmZpUCvrDMJHXE553zgyG1MZ8S1a/iCCxmK9iTjjql+SpHSv4cZkmRv5/zGYW93AlCw==} resolution: {integrity: sha512-DdNcqcIbI0wEeCBcqX+bmZpUCvrDMJHXE553zgyG1MZ8S1a/iCCxmK9iTjjql+SpHSv4cZkmRv5/zGYW93AlCw==}
engines: {node: '>=18'} engines: {node: '>=18'}
@@ -3369,12 +3332,6 @@ packages:
symbol-tree@3.2.4: symbol-tree@3.2.4:
resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==}
systeminformation@5.22.8:
resolution: {integrity: sha512-F1iWQ+PSfOzvLMGh2UXASaWLDq5o+1h1db13Kddl6ojcQ47rsJhpMtRrmBXfTA5QJgutC4KV67YRmXLuroIxrA==}
engines: {node: '>=8.0.0'}
os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android]
hasBin: true
systeminformation@5.27.7: systeminformation@5.27.7:
resolution: {integrity: sha512-saaqOoVEEFaux4v0K8Q7caiauRwjXC4XbD2eH60dxHXbpKxQ8kH9Rf7Jh+nryKpOUSEFxtCdBlSUx0/lO6rwRg==} resolution: {integrity: sha512-saaqOoVEEFaux4v0K8Q7caiauRwjXC4XbD2eH60dxHXbpKxQ8kH9Rf7Jh+nryKpOUSEFxtCdBlSUx0/lO6rwRg==}
engines: {node: '>=8.0.0'} engines: {node: '>=8.0.0'}
@@ -3460,10 +3417,6 @@ packages:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==} resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'} engines: {node: '>=12.20'}
type-fest@4.25.0:
resolution: {integrity: sha512-bRkIGlXsnGBRBQRAY56UXBm//9qH4bmJfFvq83gSz41N282df+fjy8ofcEgc1sM8geNt5cl6mC2g9Fht1cs8Aw==}
engines: {node: '>=16'}
type-fest@4.41.0: type-fest@4.41.0:
resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
engines: {node: '>=16'} engines: {node: '>=16'}
@@ -3713,7 +3666,7 @@ snapshots:
'@push.rocks/smartopen': 2.0.0 '@push.rocks/smartopen': 2.0.0
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrequest': 4.3.0
'@push.rocks/smartrx': 3.0.10 '@push.rocks/smartrx': 3.0.10
'@push.rocks/smartsitemap': 2.0.3 '@push.rocks/smartsitemap': 2.0.3
'@push.rocks/smartstream': 3.2.5 '@push.rocks/smartstream': 3.2.5
@@ -4410,7 +4363,7 @@ snapshots:
'@push.rocks/smartfile': 11.2.7 '@push.rocks/smartfile': 11.2.7
'@push.rocks/smartlog': 3.1.8 '@push.rocks/smartlog': 3.1.8
'@push.rocks/smartlog-destination-local': 9.0.2 '@push.rocks/smartlog-destination-local': 9.0.2
'@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpath': 5.1.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartspawn': 3.0.3 '@push.rocks/smartspawn': 3.0.3
'@rspack/core': 1.4.11 '@rspack/core': 1.4.11
@@ -4432,7 +4385,7 @@ snapshots:
'@push.rocks/smartlog': 3.1.8 '@push.rocks/smartlog': 3.1.8
'@push.rocks/smartnpm': 2.0.6 '@push.rocks/smartnpm': 2.0.6
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
'@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrequest': 4.3.0
'@push.rocks/smartshell': 3.3.0 '@push.rocks/smartshell': 3.3.0
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
@@ -4463,7 +4416,7 @@ snapshots:
'@push.rocks/smartmongo': 2.0.12(socks@2.8.7) '@push.rocks/smartmongo': 2.0.12(socks@2.8.7)
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrequest': 4.3.0
'@push.rocks/smarts3': 2.2.6 '@push.rocks/smarts3': 2.2.6
'@push.rocks/smartshell': 3.3.0 '@push.rocks/smartshell': 3.3.0
'@push.rocks/smarttime': 4.1.1 '@push.rocks/smarttime': 4.1.1
@@ -4643,12 +4596,12 @@ snapshots:
'@push.rocks/smartexit': 1.0.23 '@push.rocks/smartexit': 1.0.23
'@push.rocks/smartfile': 11.2.7 '@push.rocks/smartfile': 11.2.7
'@push.rocks/smartjson': 5.0.20 '@push.rocks/smartjson': 5.0.20
'@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpath': 5.1.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartstring': 4.0.15 '@push.rocks/smartstring': 4.0.15
'@push.rocks/smartunique': 3.0.9 '@push.rocks/smartunique': 3.0.9
'@push.rocks/taskbuffer': 3.1.7 '@push.rocks/taskbuffer': 3.1.7
'@tsclass/tsclass': 4.1.2 '@tsclass/tsclass': 4.4.4
transitivePeerDependencies: transitivePeerDependencies:
- aws-crt - aws-crt
@@ -4695,7 +4648,7 @@ snapshots:
'@push.rocks/smartfile': 11.2.7 '@push.rocks/smartfile': 11.2.7
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrequest': 4.3.0
'@push.rocks/smartrx': 3.0.10 '@push.rocks/smartrx': 3.0.10
'@push.rocks/smartstream': 3.2.5 '@push.rocks/smartstream': 3.2.5
'@push.rocks/smartunique': 3.0.9 '@push.rocks/smartunique': 3.0.9
@@ -4846,7 +4799,7 @@ snapshots:
'@push.rocks/smartmime': 2.0.4 '@push.rocks/smartmime': 2.0.4
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrequest': 4.3.0
'@push.rocks/smartstream': 3.2.5 '@push.rocks/smartstream': 3.2.5
'@types/fs-extra': 11.0.4 '@types/fs-extra': 11.0.4
'@types/js-yaml': 4.0.9 '@types/js-yaml': 4.0.9
@@ -4857,7 +4810,7 @@ snapshots:
'@push.rocks/smartguard@3.1.0': '@push.rocks/smartguard@3.1.0':
dependencies: dependencies:
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 2.0.22 '@push.rocks/smartrequest': 2.1.0
'@push.rocks/smarthash@3.2.3': '@push.rocks/smarthash@3.2.3':
dependencies: dependencies:
@@ -4887,7 +4840,7 @@ snapshots:
'@push.rocks/smartlog-interfaces@3.0.2': '@push.rocks/smartlog-interfaces@3.0.2':
dependencies: dependencies:
'@api.global/typedrequest-interfaces': 2.0.2 '@api.global/typedrequest-interfaces': 2.0.2
'@tsclass/tsclass': 4.1.2 '@tsclass/tsclass': 4.4.4
'@push.rocks/smartlog@3.1.8': '@push.rocks/smartlog@3.1.8':
dependencies: dependencies:
@@ -4933,7 +4886,7 @@ snapshots:
dependencies: dependencies:
'@push.rocks/mongodump': 1.1.0(socks@2.8.7) '@push.rocks/mongodump': 1.1.0(socks@2.8.7)
'@push.rocks/smartdata': 5.16.4(socks@2.8.7) '@push.rocks/smartdata': 5.16.4(socks@2.8.7)
'@push.rocks/smartpath': 5.0.18 '@push.rocks/smartpath': 5.1.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
mongodb-memory-server: 10.2.0(socks@2.8.7) mongodb-memory-server: 10.2.0(socks@2.8.7)
transitivePeerDependencies: transitivePeerDependencies:
@@ -4946,16 +4899,6 @@ snapshots:
- socks - socks
- supports-color - supports-color
'@push.rocks/smartnetwork@3.0.2':
dependencies:
'@pushrocks/smartping': 1.0.8
'@pushrocks/smartpromise': 3.1.10
'@pushrocks/smartstring': 4.0.7
'@types/default-gateway': 3.0.1
isopen: 1.3.0
public-ip: 6.0.2
systeminformation: 5.22.8
'@push.rocks/smartnetwork@4.1.2': '@push.rocks/smartnetwork@4.1.2':
dependencies: dependencies:
'@push.rocks/smartping': 1.0.8 '@push.rocks/smartping': 1.0.8
@@ -4974,7 +4917,7 @@ snapshots:
'@push.rocks/smartfile': 11.2.7 '@push.rocks/smartfile': 11.2.7
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smartrequest': 4.2.2 '@push.rocks/smartrequest': 4.3.0
'@push.rocks/smarttime': 4.1.1 '@push.rocks/smarttime': 4.1.1
'@push.rocks/smartversion': 3.0.5 '@push.rocks/smartversion': 3.0.5
package-json: 8.1.1 package-json: 8.1.1
@@ -5003,7 +4946,7 @@ snapshots:
dependencies: dependencies:
open: 8.4.2 open: 8.4.2
'@push.rocks/smartpath@5.0.18': {} '@push.rocks/smartpath@5.1.0': {}
'@push.rocks/smartpath@6.0.0': {} '@push.rocks/smartpath@6.0.0': {}
@@ -5049,14 +4992,14 @@ snapshots:
- typescript - typescript
- utf-8-validate - utf-8-validate
'@push.rocks/smartrequest@2.0.22': '@push.rocks/smartrequest@2.1.0':
dependencies: dependencies:
'@push.rocks/smartpromise': 4.2.3 '@push.rocks/smartpromise': 4.2.3
'@push.rocks/smarturl': 3.0.7 '@push.rocks/smarturl': 3.1.0
agentkeepalive: 4.5.0 agentkeepalive: 4.5.0
form-data: 4.0.0 form-data: 4.0.4
'@push.rocks/smartrequest@4.2.2': '@push.rocks/smartrequest@4.3.0':
dependencies: dependencies:
'@push.rocks/smartenv': 5.0.13 '@push.rocks/smartenv': 5.0.13
'@push.rocks/smartpath': 6.0.0 '@push.rocks/smartpath': 6.0.0
@@ -5104,7 +5047,7 @@ snapshots:
'@push.rocks/smartxml': 1.1.1 '@push.rocks/smartxml': 1.1.1
'@push.rocks/smartyaml': 2.0.5 '@push.rocks/smartyaml': 2.0.5
'@push.rocks/webrequest': 3.0.37 '@push.rocks/webrequest': 3.0.37
'@tsclass/tsclass': 4.1.2 '@tsclass/tsclass': 4.4.4
'@push.rocks/smartsocket@2.1.0': '@push.rocks/smartsocket@2.1.0':
dependencies: dependencies:
@@ -5184,8 +5127,6 @@ snapshots:
nanoid: 4.0.2 nanoid: 4.0.2
uuid: 9.0.1 uuid: 9.0.1
'@push.rocks/smarturl@3.0.7': {}
'@push.rocks/smarturl@3.1.0': {} '@push.rocks/smarturl@3.1.0': {}
'@push.rocks/smartversion@3.0.5': '@push.rocks/smartversion@3.0.5':
@@ -5225,7 +5166,7 @@ snapshots:
dependencies: dependencies:
'@pushrocks/smartdelay': 3.0.1 '@pushrocks/smartdelay': 3.0.1
'@pushrocks/smartpromise': 4.0.2 '@pushrocks/smartpromise': 4.0.2
'@tsclass/tsclass': 4.1.2 '@tsclass/tsclass': 4.4.4
'@push.rocks/webstore@2.0.20': '@push.rocks/webstore@2.0.20':
dependencies: dependencies:
@@ -5291,11 +5232,6 @@ snapshots:
dependencies: dependencies:
matcher: 5.0.0 matcher: 5.0.0
'@pushrocks/smartping@1.0.8':
dependencies:
'@types/ping': 0.4.4
ping: 0.4.4
'@pushrocks/smartpromise@3.1.10': {} '@pushrocks/smartpromise@3.1.10': {}
'@pushrocks/smartpromise@4.0.2': {} '@pushrocks/smartpromise@4.0.2': {}
@@ -5791,9 +5727,9 @@ snapshots:
dependencies: dependencies:
type-fest: 2.19.0 type-fest: 2.19.0
'@tsclass/tsclass@4.1.2': '@tsclass/tsclass@4.4.4':
dependencies: dependencies:
type-fest: 4.25.0 type-fest: 4.41.0
'@tsclass/tsclass@9.2.0': '@tsclass/tsclass@9.2.0':
dependencies: dependencies:
@@ -5828,8 +5764,6 @@ snapshots:
dependencies: dependencies:
'@types/ms': 2.1.0 '@types/ms': 2.1.0
'@types/default-gateway@3.0.1': {}
'@types/default-gateway@7.2.2': {} '@types/default-gateway@7.2.2': {}
'@types/express-serve-static-core@5.0.7': '@types/express-serve-static-core@5.0.7':
@@ -5982,11 +5916,6 @@ snapshots:
dependencies: dependencies:
humanize-ms: 1.2.1 humanize-ms: 1.2.1
aggregate-error@4.0.1:
dependencies:
clean-stack: 4.2.0
indent-string: 5.0.0
ansi-256-colors@1.1.0: {} ansi-256-colors@1.1.0: {}
ansi-regex@5.0.1: {} ansi-regex@5.0.1: {}
@@ -6183,10 +6112,6 @@ snapshots:
clean-stack@1.3.0: {} clean-stack@1.3.0: {}
clean-stack@4.2.0:
dependencies:
escape-string-regexp: 5.0.0
cliui@8.0.1: cliui@8.0.1:
dependencies: dependencies:
string-width: 4.2.3 string-width: 4.2.3
@@ -6658,12 +6583,6 @@ snapshots:
form-data-encoder@2.1.4: {} form-data-encoder@2.1.4: {}
form-data@4.0.0:
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
form-data@4.0.4: form-data@4.0.4:
dependencies: dependencies:
asynckit: 0.4.0 asynckit: 0.4.0
@@ -6931,8 +6850,6 @@ snapshots:
parent-module: 1.0.1 parent-module: 1.0.1
resolve-from: 4.0.0 resolve-from: 4.0.0
indent-string@5.0.0: {}
inflight@1.0.6: inflight@1.0.6:
dependencies: dependencies:
once: 1.4.0 once: 1.4.0
@@ -6963,10 +6880,6 @@ snapshots:
has-tostringtag: 1.0.2 has-tostringtag: 1.0.2
safe-regex-test: 1.1.0 safe-regex-test: 1.1.0
is-ip@4.0.0:
dependencies:
ip-regex: 5.0.0
is-ip@5.0.1: is-ip@5.0.1:
dependencies: dependencies:
ip-regex: 5.0.0 ip-regex: 5.0.0
@@ -7830,13 +7743,6 @@ snapshots:
proxy-from-env@1.1.0: {} proxy-from-env@1.1.0: {}
public-ip@6.0.2:
dependencies:
aggregate-error: 4.0.1
dns-socket: 4.2.2
got: 12.6.1
is-ip: 4.0.0
public-ip@7.0.1: public-ip@7.0.1:
dependencies: dependencies:
dns-socket: 4.2.2 dns-socket: 4.2.2
@@ -8310,8 +8216,6 @@ snapshots:
symbol-tree@3.2.4: {} symbol-tree@3.2.4: {}
systeminformation@5.22.8: {}
systeminformation@5.27.7: {} systeminformation@5.27.7: {}
tar-fs@3.1.0: tar-fs@3.1.0:
@@ -8402,8 +8306,6 @@ snapshots:
type-fest@2.19.0: {} type-fest@2.19.0: {}
type-fest@4.25.0: {}
type-fest@4.41.0: {} type-fest@4.41.0: {}
type-is@1.6.18: type-is@1.6.18:

View File

@@ -226,54 +226,143 @@ export class DockerHost {
*/ */
public async request(methodArg: string, routeArg: string, dataArg = {}) { public async request(methodArg: string, routeArg: string, dataArg = {}) {
const requestUrl = `${this.socketPath}${routeArg}`; const requestUrl = `${this.socketPath}${routeArg}`;
const response = await plugins.smartrequest.request(requestUrl, {
method: methodArg, // Build the request using the fluent API
headers: { const smartRequest = plugins.smartrequest.SmartRequest.create()
'Content-Type': 'application/json', .url(requestUrl)
'X-Registry-Auth': this.registryToken, .header('Content-Type', 'application/json')
Host: 'docker.sock', .header('X-Registry-Auth', this.registryToken)
}, .header('Host', 'docker.sock')
requestBody: dataArg, .options({ keepAlive: false });
keepAlive: false,
}); // Add body for methods that support it
if (response.statusCode !== 200) { if (dataArg && Object.keys(dataArg).length > 0) {
console.log(response.body); smartRequest.json(dataArg);
} }
return response;
// Execute the request based on method
let response;
switch (methodArg.toUpperCase()) {
case 'GET':
response = await smartRequest.get();
break;
case 'POST':
response = await smartRequest.post();
break;
case 'PUT':
response = await smartRequest.put();
break;
case 'DELETE':
response = await smartRequest.delete();
break;
default:
throw new Error(`Unsupported HTTP method: ${methodArg}`);
}
// Parse the response body based on content type
let body;
const contentType = response.headers['content-type'] || '';
if (contentType.includes('application/json')) {
body = await response.json();
} else {
body = await response.text();
// Try to parse as JSON if it looks like JSON
if (body && (body.startsWith('{') || body.startsWith('['))) {
try {
body = JSON.parse(body);
} catch {
// Keep as text if parsing fails
}
}
}
// Create a response object compatible with existing code
const legacyResponse = {
statusCode: response.status,
body: body,
headers: response.headers
};
if (response.status !== 200) {
console.log(body);
}
return legacyResponse;
} }
public async requestStreaming(methodArg: string, routeArg: string, readStream?: plugins.smartstream.stream.Readable) { public async requestStreaming(methodArg: string, routeArg: string, readStream?: plugins.smartstream.stream.Readable) {
const requestUrl = `${this.socketPath}${routeArg}`; const requestUrl = `${this.socketPath}${routeArg}`;
const response = await plugins.smartrequest.request(
requestUrl, // Build the request using the fluent API
{ const smartRequest = plugins.smartrequest.SmartRequest.create()
method: methodArg, .url(requestUrl)
headers: { .header('Content-Type', 'application/json')
'Content-Type': 'application/json', .header('X-Registry-Auth', this.registryToken)
'X-Registry-Auth': this.registryToken, .header('Host', 'docker.sock')
Host: 'docker.sock', .options({ keepAlive: false });
},
requestBody: null, // If we have a readStream, use the new stream method with logging
keepAlive: false, if (readStream) {
}, let counter = 0;
true, const smartduplex = new plugins.smartstream.SmartDuplex({
(readStream ? reqArg => { writeFunction: async (chunkArg) => {
let counter = 0; if (counter % 1000 === 0) {
const smartduplex = new plugins.smartstream.SmartDuplex({ console.log(`posting chunk ${counter}`);
writeFunction: async (chunkArg) => {
if (counter % 1000 === 0) {
console.log(`posting chunk ${counter}`);
}
counter++;
return chunkArg;
} }
}); counter++;
readStream.pipe(smartduplex).pipe(reqArg); return chunkArg;
} : null), }
); });
console.log(response.statusCode);
console.log(response.body); // Pipe through the logging duplex stream
return response; const loggedStream = readStream.pipe(smartduplex);
// Use the new stream method to stream the data
smartRequest.stream(loggedStream, 'application/octet-stream');
}
// Execute the request based on method
let response;
switch (methodArg.toUpperCase()) {
case 'GET':
response = await smartRequest.get();
break;
case 'POST':
response = await smartRequest.post();
break;
case 'PUT':
response = await smartRequest.put();
break;
case 'DELETE':
response = await smartRequest.delete();
break;
default:
throw new Error(`Unsupported HTTP method: ${methodArg}`);
}
console.log(response.status);
// For streaming responses, get the Node.js stream
const nodeStream = response.streamNode();
if (!nodeStream) {
// If no stream is available, consume the body as text
const body = await response.text();
console.log(body);
// Return a compatible response object
return {
statusCode: response.status,
body: body,
headers: response.headers
};
}
// For streaming responses, return the stream with added properties
(nodeStream as any).statusCode = response.status;
(nodeStream as any).body = ''; // For compatibility
return nodeStream;
} }
/** /**