13 Commits

Author SHA1 Message Date
2734bf787b 1.0.13 2022-02-27 19:15:30 +01:00
0e64a2076b update 2022-02-27 18:10:44 +00:00
99fa906630 update 2022-02-25 21:45:11 +00:00
5fb5979c91 1.0.12 2022-02-25 21:48:26 +01:00
cf61de9093 fix(core): update 2022-02-25 21:48:26 +01:00
cf7c3cb910 1.0.11 2022-02-25 21:45:22 +01:00
b8eb82de12 fix(core): update 2022-02-25 21:45:21 +01:00
8c01d5cabf 1.0.10 2022-02-25 21:35:34 +01:00
1eef97ee9a fix(core): update 2022-02-25 21:35:34 +01:00
45544fffd0 1.0.9 2022-02-25 21:33:24 +01:00
f227eaee37 fix(core): update 2022-02-25 21:33:24 +01:00
74ea18dc76 1.0.8 2022-02-25 21:25:29 +01:00
c0f03d11b6 fix(core): update 2022-02-25 21:25:29 +01:00
7 changed files with 297 additions and 101 deletions

184
package-lock.json generated
View File

@ -1,16 +1,18 @@
{
"name": "@mojoio/bobcat",
"version": "1.0.7",
"version": "1.0.13",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@mojoio/bobcat",
"version": "1.0.7",
"version": "1.0.13",
"license": "MIT",
"dependencies": {
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartnetwork": "^2.0.14",
"@pushrocks/smartrequest": "^1.1.56"
"@pushrocks/smartrequest": "^1.1.56",
"@pushrocks/taskbuffer": "^2.1.17"
},
"devDependencies": {
"@gitzone/tsbuild": "^2.1.25",
@ -55,7 +57,6 @@
"version": "1.0.15",
"resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest-interfaces/-/typedrequest-interfaces-1.0.15.tgz",
"integrity": "sha512-KncX168fUQJ73FeT22Cvls41mkJmtasP8dB2s9+9/OyWZpNsCzk9NEmtdRhulW2vLQwuAbQc1eoloe7ffCmhcA==",
"dev": true,
"license": "MIT"
},
"node_modules/@apiglobal/typedrequest/node_modules/@pushrocks/lik": {
@ -2283,7 +2284,6 @@
"version": "1.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fisounique/-/isounique-1.0.5.tgz",
"integrity": "sha512-XYeoKGkmIdsWX64NlPA1fuA41n/1bQ7LdYXytlU/QqYeW7ojgA0ARRhBSh/2phL6o0Jpw6K/7gJ8jc7ab/Tc+w==",
"dev": true,
"license": "MIT"
},
"node_modules/@pushrocks/lik": {
@ -2459,10 +2459,8 @@
},
"node_modules/@pushrocks/smartdelay": {
"version": "2.0.13",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.13.tgz",
"resolved": "https://registry.npmjs.org/@pushrocks/smartdelay/-/smartdelay-2.0.13.tgz",
"integrity": "sha512-s6Wh0BHWMfZ5VYONQwpxOYX1JeC9RKA0O9TxEzfZ6FCw2oNQb2QUPCixT9rsceKwva4+atKRw/RfU+Z7aJDmsA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@pushrocks/smartpromise": "^3.0.6"
}
@ -2637,7 +2635,6 @@
"version": "2.0.44",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog/-/smartlog-2.0.44.tgz",
"integrity": "sha512-ztZRfePWdQhNM9KNc8YQk5UYt2WsVIVNczn0tIuulYm7czazUhRh0yYhW4LT2pk/Cika03gDApqyH1ASsVhikw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@pushrocks/isounique": "^1.0.4",
@ -2660,7 +2657,6 @@
"version": "2.0.22",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.22.tgz",
"integrity": "sha512-blvtNLgYz08F5EhftxfzLEkQ3VE9uoXRVQukbVpwJ4Zk0QRkNg2VCkuJu/kkfbtlCEOEOG2HCZDyhbxeEeq0pA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@apiglobal/typedrequest-interfaces": "^1.0.15"
@ -2677,7 +2673,6 @@
"version": "1.0.7",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmatch/-/smartmatch-1.0.7.tgz",
"integrity": "sha512-D+lK5HIKO4Kj1Jm/ycKvy1VzDJ3V6ucHqmf5DMBFdm18BrMj2Zb6M7wN8HUKtkfHvOI7ig85JMuANSEyO7kAPg==",
"dev": true,
"license": "MIT",
"dependencies": {
"matcher": "^3.0.0"
@ -2834,7 +2829,6 @@
"version": "2.0.25",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrx/-/smartrx-2.0.25.tgz",
"integrity": "sha512-fryDJvjRdVYsH30xqR+bicp5poTdz7KYZ7Kqm+Yth0Qtk0x7NazENaTJATnWqGSiCbk9GrufVUTKWsT+uIT6kQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@pushrocks/smartpromise": "^3.1.6",
@ -2845,7 +2839,6 @@
"version": "7.5.4",
"resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-7.5.4.tgz",
"integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
"dev": true,
"license": "Apache-2.0",
"dependencies": {
"tslib": "^2.1.0"
@ -2951,7 +2944,6 @@
"version": "3.0.45",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.45.tgz",
"integrity": "sha512-3E/92Qmq7h2SpaA1TcVmWD02forTNQqEPE7xpk2dv/ussr/qb3WiM/c/D7Oe4lLuPxit0aJrcZlbtQs0H79uRg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@pushrocks/lik": "^5.0.4",
@ -2967,7 +2959,6 @@
"version": "5.0.4",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-5.0.4.tgz",
"integrity": "sha512-Ydr1qwu/CYQiG9ZymhhNbyUQKIp6Yo6T9wsxR/D3iDs/h4vabkaFzcE47yNz+quMX/4kQaGthb77xxiXTnsVdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@pushrocks/smartdelay": "^2.0.13",
@ -3079,6 +3070,34 @@
"@pushrocks/smarttime": "^3.0.45"
}
},
"node_modules/@pushrocks/taskbuffer": {
"version": "2.1.17",
"resolved": "https://registry.npmjs.org/@pushrocks/taskbuffer/-/taskbuffer-2.1.17.tgz",
"integrity": "sha512-fnQKN5oOUHF0+uzf9okIDFaeRgb+9c0xEUnTKVVJ5kN1FvRKn2s1czoOS9whEPsAXLhh/HydIb6PpQeXrrDO+A==",
"dependencies": {
"@pushrocks/lik": "^5.0.0",
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartlog": "^2.0.44",
"@pushrocks/smartpromise": "^3.1.6",
"@pushrocks/smartrx": "^2.0.19",
"@pushrocks/smarttime": "^3.0.43",
"@types/cron": "^1.7.3"
}
},
"node_modules/@pushrocks/taskbuffer/node_modules/@pushrocks/lik": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@pushrocks/lik/-/lik-5.0.4.tgz",
"integrity": "sha512-Ydr1qwu/CYQiG9ZymhhNbyUQKIp6Yo6T9wsxR/D3iDs/h4vabkaFzcE47yNz+quMX/4kQaGthb77xxiXTnsVdQ==",
"dependencies": {
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartmatch": "^1.0.7",
"@pushrocks/smartpromise": "^3.1.6",
"@pushrocks/smartrx": "^2.0.25",
"@pushrocks/smarttime": "^3.0.43",
"@types/minimatch": "^3.0.5",
"symbol-tree": "^3.2.4"
}
},
"node_modules/@pushrocks/webrequest": {
"version": "2.0.15",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fwebrequest/-/webrequest-2.0.15.tgz",
@ -3358,6 +3377,15 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/cron": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz",
"integrity": "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==",
"dependencies": {
"@types/node": "*",
"moment": ">=2.14.0"
}
},
"node_modules/@types/default-gateway": {
"version": "3.0.1",
"resolved": "https://verdaccio.lossless.one/@types%2fdefault-gateway/-/default-gateway-3.0.1.tgz",
@ -3497,14 +3525,12 @@
"version": "3.0.5",
"resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.5.tgz",
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/node": {
"version": "17.0.21",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-17.0.21.tgz",
"integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/parcel-bundler": {
@ -4760,7 +4786,6 @@
"version": "1.0.2",
"resolved": "https://verdaccio.lossless.one/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.1",
@ -5584,7 +5609,6 @@
"version": "4.2.0",
"resolved": "https://verdaccio.lossless.one/croner/-/croner-4.2.0.tgz",
"integrity": "sha512-1wZgmxS4t1WkUWppjgmKkOhXgRAwklVeDWfdUzi4dHDOZgezpw2XCqQ1XCXyV+sPsgKk2H8RYhxI0ZfBVekWvA==",
"dev": true,
"license": "MIT"
},
"node_modules/cross-spawn": {
@ -6112,7 +6136,6 @@
"version": "1.10.7",
"resolved": "https://verdaccio.lossless.one/dayjs/-/dayjs-1.10.7.tgz",
"integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==",
"dev": true,
"license": "MIT"
},
"node_modules/deasync": {
@ -6216,7 +6239,6 @@
"version": "1.1.3",
"resolved": "https://verdaccio.lossless.one/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"object-keys": "^1.0.12"
@ -7540,7 +7562,6 @@
"version": "1.1.1",
"resolved": "https://verdaccio.lossless.one/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true,
"license": "MIT"
},
"node_modules/gensync": {
@ -7567,7 +7588,6 @@
"version": "1.1.1",
"resolved": "https://verdaccio.lossless.one/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.1",
@ -7768,7 +7788,6 @@
"version": "1.0.3",
"resolved": "https://verdaccio.lossless.one/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.1"
@ -7831,7 +7850,6 @@
"version": "1.0.2",
"resolved": "https://verdaccio.lossless.one/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@ -8751,7 +8769,6 @@
"version": "1.3.2",
"resolved": "https://verdaccio.lossless.one/is-nan/-/is-nan-1.3.2.tgz",
"integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
"dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.0",
@ -9678,7 +9695,6 @@
"version": "3.0.0",
"resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz",
"integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
"dev": true,
"license": "MIT",
"dependencies": {
"escape-string-regexp": "^4.0.0"
@ -9691,7 +9707,6 @@
"version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=10"
@ -10015,6 +10030,14 @@
"dev": true,
"license": "MIT"
},
"node_modules/moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==",
"engines": {
"node": "*"
}
},
"node_modules/ms": {
"version": "2.1.2",
"resolved": "https://verdaccio.lossless.one/ms/-/ms-2.1.2.tgz",
@ -10372,7 +10395,6 @@
"version": "1.1.1",
"resolved": "https://verdaccio.lossless.one/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@ -11057,7 +11079,6 @@
"version": "2.1.0",
"resolved": "https://verdaccio.lossless.one/parse-ms/-/parse-ms-2.1.0.tgz",
"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=6"
@ -12036,7 +12057,6 @@
"version": "7.0.1",
"resolved": "https://verdaccio.lossless.one/pretty-ms/-/pretty-ms-7.0.1.tgz",
"integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"parse-ms": "^2.1.0"
@ -14296,7 +14316,6 @@
"version": "3.2.4",
"resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true,
"license": "MIT"
},
"node_modules/systeminformation": {
@ -14712,7 +14731,6 @@
"version": "2.3.1",
"resolved": "https://verdaccio.lossless.one/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true,
"license": "0BSD"
},
"node_modules/tslint": {
@ -15849,8 +15867,7 @@
"@apiglobal/typedrequest-interfaces": {
"version": "1.0.15",
"resolved": "https://verdaccio.lossless.one/@apiglobal%2ftypedrequest-interfaces/-/typedrequest-interfaces-1.0.15.tgz",
"integrity": "sha512-KncX168fUQJ73FeT22Cvls41mkJmtasP8dB2s9+9/OyWZpNsCzk9NEmtdRhulW2vLQwuAbQc1eoloe7ffCmhcA==",
"dev": true
"integrity": "sha512-KncX168fUQJ73FeT22Cvls41mkJmtasP8dB2s9+9/OyWZpNsCzk9NEmtdRhulW2vLQwuAbQc1eoloe7ffCmhcA=="
},
"@apiglobal/typedsocket": {
"version": "1.0.24",
@ -17373,8 +17390,7 @@
"@pushrocks/isounique": {
"version": "1.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fisounique/-/isounique-1.0.5.tgz",
"integrity": "sha512-XYeoKGkmIdsWX64NlPA1fuA41n/1bQ7LdYXytlU/QqYeW7ojgA0ARRhBSh/2phL6o0Jpw6K/7gJ8jc7ab/Tc+w==",
"dev": true
"integrity": "sha512-XYeoKGkmIdsWX64NlPA1fuA41n/1bQ7LdYXytlU/QqYeW7ojgA0ARRhBSh/2phL6o0Jpw6K/7gJ8jc7ab/Tc+w=="
},
"@pushrocks/lik": {
"version": "4.0.22",
@ -17522,9 +17538,8 @@
},
"@pushrocks/smartdelay": {
"version": "2.0.13",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.13.tgz",
"resolved": "https://registry.npmjs.org/@pushrocks/smartdelay/-/smartdelay-2.0.13.tgz",
"integrity": "sha512-s6Wh0BHWMfZ5VYONQwpxOYX1JeC9RKA0O9TxEzfZ6FCw2oNQb2QUPCixT9rsceKwva4+atKRw/RfU+Z7aJDmsA==",
"dev": true,
"requires": {
"@pushrocks/smartpromise": "^3.0.6"
}
@ -17691,7 +17706,6 @@
"version": "2.0.44",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog/-/smartlog-2.0.44.tgz",
"integrity": "sha512-ztZRfePWdQhNM9KNc8YQk5UYt2WsVIVNczn0tIuulYm7czazUhRh0yYhW4LT2pk/Cika03gDApqyH1ASsVhikw==",
"dev": true,
"requires": {
"@pushrocks/isounique": "^1.0.4",
"@pushrocks/smartlog-interfaces": "^2.0.22"
@ -17712,7 +17726,6 @@
"version": "2.0.22",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.22.tgz",
"integrity": "sha512-blvtNLgYz08F5EhftxfzLEkQ3VE9uoXRVQukbVpwJ4Zk0QRkNg2VCkuJu/kkfbtlCEOEOG2HCZDyhbxeEeq0pA==",
"dev": true,
"requires": {
"@apiglobal/typedrequest-interfaces": "^1.0.15"
}
@ -17727,7 +17740,6 @@
"version": "1.0.7",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartmatch/-/smartmatch-1.0.7.tgz",
"integrity": "sha512-D+lK5HIKO4Kj1Jm/ycKvy1VzDJ3V6ucHqmf5DMBFdm18BrMj2Zb6M7wN8HUKtkfHvOI7ig85JMuANSEyO7kAPg==",
"dev": true,
"requires": {
"matcher": "^3.0.0"
}
@ -17874,7 +17886,6 @@
"version": "2.0.25",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrx/-/smartrx-2.0.25.tgz",
"integrity": "sha512-fryDJvjRdVYsH30xqR+bicp5poTdz7KYZ7Kqm+Yth0Qtk0x7NazENaTJATnWqGSiCbk9GrufVUTKWsT+uIT6kQ==",
"dev": true,
"requires": {
"@pushrocks/smartpromise": "^3.1.6",
"rxjs": "^7.5.2"
@ -17884,7 +17895,6 @@
"version": "7.5.4",
"resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-7.5.4.tgz",
"integrity": "sha512-h5M3Hk78r6wAheJF0a5YahB1yRQKCsZ4MsGdZ5O9ETbVtjPcScGfrMmoOq7EBsCRzd4BDkvDJ7ogP8Sz5tTFiQ==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
}
@ -17987,7 +17997,6 @@
"version": "3.0.45",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.45.tgz",
"integrity": "sha512-3E/92Qmq7h2SpaA1TcVmWD02forTNQqEPE7xpk2dv/ussr/qb3WiM/c/D7Oe4lLuPxit0aJrcZlbtQs0H79uRg==",
"dev": true,
"requires": {
"@pushrocks/lik": "^5.0.4",
"@pushrocks/smartdelay": "^2.0.13",
@ -18002,7 +18011,6 @@
"version": "5.0.4",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-5.0.4.tgz",
"integrity": "sha512-Ydr1qwu/CYQiG9ZymhhNbyUQKIp6Yo6T9wsxR/D3iDs/h4vabkaFzcE47yNz+quMX/4kQaGthb77xxiXTnsVdQ==",
"dev": true,
"requires": {
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartmatch": "^1.0.7",
@ -18098,6 +18106,36 @@
"@pushrocks/smarttime": "^3.0.45"
}
},
"@pushrocks/taskbuffer": {
"version": "2.1.17",
"resolved": "https://registry.npmjs.org/@pushrocks/taskbuffer/-/taskbuffer-2.1.17.tgz",
"integrity": "sha512-fnQKN5oOUHF0+uzf9okIDFaeRgb+9c0xEUnTKVVJ5kN1FvRKn2s1czoOS9whEPsAXLhh/HydIb6PpQeXrrDO+A==",
"requires": {
"@pushrocks/lik": "^5.0.0",
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartlog": "^2.0.44",
"@pushrocks/smartpromise": "^3.1.6",
"@pushrocks/smartrx": "^2.0.19",
"@pushrocks/smarttime": "^3.0.43",
"@types/cron": "^1.7.3"
},
"dependencies": {
"@pushrocks/lik": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@pushrocks/lik/-/lik-5.0.4.tgz",
"integrity": "sha512-Ydr1qwu/CYQiG9ZymhhNbyUQKIp6Yo6T9wsxR/D3iDs/h4vabkaFzcE47yNz+quMX/4kQaGthb77xxiXTnsVdQ==",
"requires": {
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartmatch": "^1.0.7",
"@pushrocks/smartpromise": "^3.1.6",
"@pushrocks/smartrx": "^2.0.25",
"@pushrocks/smarttime": "^3.0.43",
"@types/minimatch": "^3.0.5",
"symbol-tree": "^3.2.4"
}
}
}
},
"@pushrocks/webrequest": {
"version": "2.0.15",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fwebrequest/-/webrequest-2.0.15.tgz",
@ -18314,6 +18352,15 @@
"integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==",
"dev": true
},
"@types/cron": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/@types/cron/-/cron-1.7.3.tgz",
"integrity": "sha512-iPmUXyIJG1Js+ldPYhOQcYU3kCAQ2FWrSkm1FJPoii2eYSn6wEW6onPukNTT0bfiflexNSRPl6KWmAIqS+36YA==",
"requires": {
"@types/node": "*",
"moment": ">=2.14.0"
}
},
"@types/default-gateway": {
"version": "3.0.1",
"resolved": "https://verdaccio.lossless.one/@types%2fdefault-gateway/-/default-gateway-3.0.1.tgz",
@ -18435,14 +18482,12 @@
"@types/minimatch": {
"version": "3.0.5",
"resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.5.tgz",
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==",
"dev": true
"integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ=="
},
"@types/node": {
"version": "17.0.21",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-17.0.21.tgz",
"integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==",
"dev": true
"integrity": "sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ=="
},
"@types/parcel-bundler": {
"version": "1.12.3",
@ -19406,7 +19451,6 @@
"version": "1.0.2",
"resolved": "https://verdaccio.lossless.one/call-bind/-/call-bind-1.0.2.tgz",
"integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
"get-intrinsic": "^1.0.2"
@ -20033,8 +20077,7 @@
"croner": {
"version": "4.2.0",
"resolved": "https://verdaccio.lossless.one/croner/-/croner-4.2.0.tgz",
"integrity": "sha512-1wZgmxS4t1WkUWppjgmKkOhXgRAwklVeDWfdUzi4dHDOZgezpw2XCqQ1XCXyV+sPsgKk2H8RYhxI0ZfBVekWvA==",
"dev": true
"integrity": "sha512-1wZgmxS4t1WkUWppjgmKkOhXgRAwklVeDWfdUzi4dHDOZgezpw2XCqQ1XCXyV+sPsgKk2H8RYhxI0ZfBVekWvA=="
},
"cross-spawn": {
"version": "6.0.5",
@ -20434,8 +20477,7 @@
"dayjs": {
"version": "1.10.7",
"resolved": "https://verdaccio.lossless.one/dayjs/-/dayjs-1.10.7.tgz",
"integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==",
"dev": true
"integrity": "sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig=="
},
"deasync": {
"version": "0.1.24",
@ -20507,7 +20549,6 @@
"version": "1.1.3",
"resolved": "https://verdaccio.lossless.one/define-properties/-/define-properties-1.1.3.tgz",
"integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
"dev": true,
"requires": {
"object-keys": "^1.0.12"
}
@ -21486,8 +21527,7 @@
"function-bind": {
"version": "1.1.1",
"resolved": "https://verdaccio.lossless.one/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"gensync": {
"version": "1.0.0-beta.2",
@ -21505,7 +21545,6 @@
"version": "1.1.1",
"resolved": "https://verdaccio.lossless.one/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
"integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
"dev": true,
"requires": {
"function-bind": "^1.1.1",
"has": "^1.0.3",
@ -21652,7 +21691,6 @@
"version": "1.0.3",
"resolved": "https://verdaccio.lossless.one/has/-/has-1.0.3.tgz",
"integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
"dev": true,
"requires": {
"function-bind": "^1.1.1"
}
@ -21695,8 +21733,7 @@
"has-symbols": {
"version": "1.0.2",
"resolved": "https://verdaccio.lossless.one/has-symbols/-/has-symbols-1.0.2.tgz",
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
"dev": true
"integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw=="
},
"has-tostringtag": {
"version": "1.0.0",
@ -22342,7 +22379,6 @@
"version": "1.3.2",
"resolved": "https://verdaccio.lossless.one/is-nan/-/is-nan-1.3.2.tgz",
"integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==",
"dev": true,
"requires": {
"call-bind": "^1.0.0",
"define-properties": "^1.1.3"
@ -23029,7 +23065,6 @@
"version": "3.0.0",
"resolved": "https://verdaccio.lossless.one/matcher/-/matcher-3.0.0.tgz",
"integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==",
"dev": true,
"requires": {
"escape-string-regexp": "^4.0.0"
},
@ -23037,8 +23072,7 @@
"escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
"dev": true
"integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
}
}
},
@ -23275,6 +23309,11 @@
"integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
"dev": true
},
"moment": {
"version": "2.29.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
"integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
},
"ms": {
"version": "2.1.2",
"resolved": "https://verdaccio.lossless.one/ms/-/ms-2.1.2.tgz",
@ -23539,8 +23578,7 @@
"object-keys": {
"version": "1.1.1",
"resolved": "https://verdaccio.lossless.one/object-keys/-/object-keys-1.1.1.tgz",
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
"dev": true
"integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
},
"object-visit": {
"version": "1.0.1",
@ -24059,8 +24097,7 @@
"parse-ms": {
"version": "2.1.0",
"resolved": "https://verdaccio.lossless.one/parse-ms/-/parse-ms-2.1.0.tgz",
"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==",
"dev": true
"integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA=="
},
"parse5": {
"version": "5.1.0",
@ -24791,7 +24828,6 @@
"version": "7.0.1",
"resolved": "https://verdaccio.lossless.one/pretty-ms/-/pretty-ms-7.0.1.tgz",
"integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==",
"dev": true,
"requires": {
"parse-ms": "^2.1.0"
}
@ -26472,8 +26508,7 @@
"symbol-tree": {
"version": "3.2.4",
"resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
"systeminformation": {
"version": "5.11.4",
@ -26761,8 +26796,7 @@
"tslib": {
"version": "2.3.1",
"resolved": "https://verdaccio.lossless.one/tslib/-/tslib-2.3.1.tgz",
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==",
"dev": true
"integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
},
"tslint": {
"version": "6.1.3",

View File

@ -1,6 +1,6 @@
{
"name": "@mojoio/bobcat",
"version": "1.0.7",
"version": "1.0.13",
"private": false,
"description": "a module to talk to bobcat miners",
"main": "dist_ts/index.js",
@ -37,7 +37,9 @@
"readme.md"
],
"dependencies": {
"@pushrocks/smartdelay": "^2.0.13",
"@pushrocks/smartnetwork": "^2.0.14",
"@pushrocks/smartrequest": "^1.1.56"
"@pushrocks/smartrequest": "^1.1.56",
"@pushrocks/taskbuffer": "^2.1.17"
}
}

View File

@ -8,11 +8,16 @@ import * as bobcat from '../ts/index';
let testBobcatManager: bobcat.BobcatManager;
let testBobcat: bobcat.Bobcat;
tap.test('first test', async () => {
tap.test('should create a bobcat manager', async () => {
testBobcatManager = new bobcat.BobcatManager();
expect(testBobcatManager).toBeInstanceOf(bobcat.BobcatManager);
});
tap.test('should create a bobcat', async () => {
testBobcat = new bobcat.Bobcat('bobcat.bleu.de');
expect(testBobcat).toBeInstanceOf(bobcat.Bobcat);
})
tap.test('should add a Bobcat miner', async () => {
const bobcatAddresses = testQenv.getEnvVarOnDemand('BOBCATS').split(',');
console.log(bobcatAddresses);
@ -22,9 +27,8 @@ tap.test('should add a Bobcat miner', async () => {
}
});
tap.test('', async () => {
testBobcat = new bobcat.Bobcat('bobcat.bleu.de');
expect(testBobcat).toBeInstanceOf(bobcat.Bobcat);
tap.test('should run maintenance on bobcats', async () => {
await testBobcatManager.runMaintenance();
})
tap.start();

View File

@ -1,45 +1,111 @@
import * as plugins from './bobcat.plugins';
import * as interfaces from './interfaces';
/**
* maps to an individual bobcat miner
*/
export class Bobcat {
// STATIC
public static async createFromNetworkAddress(networkAddressArg: string) {
public static minerAuthObject = {
headers: {
Authorization: 'Basic ' + Buffer.from('bobcat:miner').toString('base64')
}
}
public static async createFromNetworkAddress (networkAddressArg: string) {
const newBobcat = new Bobcat(networkAddressArg);
await newBobcat.gatherMinerDetails();
try {
await newBobcat.checkMinerStatus();
await newBobcat.gatherMinerDetails();
} catch (err) {
console.log('initial adding completed with errors');
}
return newBobcat;
}
// INSTANCE
public networkAddress: string;
public latestStatus: interfaces.IMinerStatus;
public latestMinerDetails: interfaces.IMinerDetailsResponse
constructor(networkAddressArg: string) {
console.log(`adding bobcat at ${networkAddressArg}`);
this.networkAddress = networkAddressArg;
}
/**
* checks the status of the miner
*/
public async checkMinerStatus() {
const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/status.json`);
const body: {
"status": string,
"gap": string,
"miner_height": string,
"blockchain_height": string,
"epoch": "rpc"
} = response.body;
return response;
public async checkMinerStatus () {
const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/status.json`, {
timeout: 30000
});
const body: interfaces.IMinerStatus = response.body;
this.latestStatus = body;
return this.latestStatus;
}
/**
* gathers the miner details
*/
public async gatherMinerDetails() {
const response: {
} = plugins.smartrequest.getJson(`http://${this.networkAddress}/miner.json`);
public async gatherMinerDetails () {
const response = await plugins.smartrequest.getJson(`http://${this.networkAddress}/miner.json`, {
timeout: 30000
});
const body: interfaces.IMinerDetailsResponse = response.body;
this.latestMinerDetails = body;
return this.latestMinerDetails;
}
/**
* runs maintenance on the bobcat
*/
public async runMaintenance () {
await this.checkMinerStatus();
await this.gatherMinerDetails();
if (this.latestStatus.status === 'Synced' && parseInt(this.latestStatus.gap) > -50 && parseInt(this.latestStatus.gap) < 50) {
console.log(`Miner ${this.latestMinerDetails.animal} at ${this.networkAddress} is Synced. ok!`)
return;
}
if (this.latestStatus.status === 'Syncing') {
console.log(
`Miner ${this.latestMinerDetails.animal} at ${this.networkAddress} is Syncing... ok!`
);
return;
}
if (this.latestStatus.status !== 'Synced') {
console.log(`Miner ${this.latestMinerDetails.animal} is not synced. Restarting now!`);
try {
await this.restart()
} catch (err) {
}
}
}
/**
* triggers a fast resync
*/
public async triggerFastResync() {
const response = await plugins.smartrequest.request(`http://${this.networkAddress}/admin/fastsync`, {
method: 'POST',
...Bobcat.minerAuthObject
})
}
/**
* restarts the miner
*/
public async restart () {
console.log(`cooling down before restart`);
await plugins.smartdelay.delayFor(10000);
const response = await plugins.smartrequest.request(`http://${this.networkAddress}/admin/reboot`, {
method: 'POST',
timeout: 30000,
...Bobcat.minerAuthObject
});
console.log(response.statusCode);
}
}

View File

@ -1,14 +1,65 @@
import * as plugins from './bobcat.plugins';
import { Bobcat } from './bobcat.classes.bobcat';
import { Bobcat } from './bobcat.classes.bobcat';
/**
*
* a manager for managing multiple bobcats
*/
export class BobcatManager {
public taskmanager = new plugins.taskbuffer.TaskManager();
public bobcats: Bobcat[] = [];
public async addBobcat(networkAddressArg: string) {
/**
* a store for knowing what has happened retrospectively
*/
public actionStore: {
actionName: string;
actionPayload: string;
}[] = [];
constructor() {
this.taskmanager.addAndScheduleTask(new plugins.taskbuffer.Task({
name: 'contMaintenance',
taskFunction: async () => {
this.actionStore.
await this.runMaintenance();
}
}), '0 0 * * * *');
}
/**
* adds a bobcat to the manager
* @param networkAddressArg
*/
public async addBobcat (networkAddressArg: string) {
const newBobcat = await Bobcat.createFromNetworkAddress(networkAddressArg);
this.bobcats.push(newBobcat);
console.log(`added ${newBobcat.latestMinerDetails.animal} at ${newBobcat.networkAddress}`);
}
/**
* runs the maintenance on all managed bobcats
*/
public async runMaintenance () {
console.log(`now running maintenance on ${this.bobcats.length} bobcats!`);
console.log(`cooling down for 10 seconds`);
await plugins.smartdelay.delayFor(10000);
for (const bobcat of this.bobcats) {
console.log(`now running maintenance on ${bobcat.latestMinerDetails.animal} at ${bobcat.networkAddress}`);
await bobcat.runMaintenance();
}
};
/**
* starts continuous maintenance of the bobcat miners
*/
public async startTaskmanager () {
this.taskmanager.start();
}
/**
* stops the taskmanager
*/
public async stopTaskmanager () {
this.taskmanager.stop();
}
}

View File

@ -1,7 +1,11 @@
import * as smartdelay from '@pushrocks/smartdelay';
import * as smartnetwork from '@pushrocks/smartnetwork';
import * as smartrequest from '@pushrocks/smartrequest';
import * as taskbuffer from '@pushrocks/taskbuffer';
export {
smartdelay,
smartnetwork,
smartrequest
smartrequest,
taskbuffer,
}

35
ts/interfaces/index.ts Normal file
View File

@ -0,0 +1,35 @@
export interface IMinerStatus {
status: string;
gap: string;
miner_height: string;
blockchain_height: string;
epoch: 'rpc';
}
export interface IMinerDetailsResponse {
ota_version: string;
region: 'region_eu868';
frequency_plan: 'eu868';
animal: string;
pubkey: string;
miner: {
State: 'running';
Status: string;
Names: ['/miner'];
Image: string;
Created: number;
};
p2p_status: string[];
miner_height: string;
epoch: string;
ports_desc: "only need to port forward 44158. For 22, only when need remote support. public port open/close isn't accurate here, if your listen_addr is IP address, it should be OK";
ports: { [key: string]: string };
private_ip: string;
public_ip: string;
peerbook: string[];
height: string[];
temp0: string;
temp1: string;
timestamp: string;
errors: string;
}