diff --git a/package-lock.json b/package-lock.json index 00aca51..1588acd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -106,7 +106,6 @@ "version": "3.0.10", "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.10.tgz", "integrity": "sha512-iWG06QsrL6AAnjPRWMVz4bRaRE0jJt/HgEK0YeLqaSBLY8ju4ps1j4lEN8VrUlXGZyPB6UGQfcreesO24buYhQ==", - "dev": true, "requires": { "@pushrocks/smartdelay": "^2.0.3", "@pushrocks/smartpromise": "^3.0.2", @@ -144,16 +143,24 @@ "version": "2.0.3", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.3.tgz", "integrity": "sha512-TXKDDqsc7sBTLl+oiYNaF6IdNk1n70i8ur8QfwcUU6tegTnrEkvMWy9h5Zdty/fq1ioCNpKLvuXoA+fgYVwKGQ==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^3.0.2" } }, + "@pushrocks/smartenv": { + "version": "4.0.7", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartenv/-/smartenv-4.0.7.tgz", + "integrity": "sha512-ThSJMEcUAF1VIa4vAvn1zGnziEuDY4h8T+EQ5JCiKy2qnUM/F6zqzFogyo495X6rg71gC/7RmktQVQaN06gjWA==", + "requires": { + "@pushrocks/smartparam": "^1.0.4", + "@pushrocks/smartpromise": "^3.0.2", + "@types/node": "^12.7.2" + } + }, "@pushrocks/smartevent": { "version": "2.0.3", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartevent/-/smartevent-2.0.3.tgz", "integrity": "sha512-x4B1mzzE6LrMATXsRLNuZpMTlB2JodL44MA4bF4FucU3SBBiWhFv3CFJRlO9B23SKZ1fwdJQrk2lT7YTUHXXJQ==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^2.0.5" }, @@ -161,8 +168,7 @@ "@pushrocks/smartpromise": { "version": "2.0.5", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", - "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==", - "dev": true + "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==" } } }, @@ -219,11 +225,22 @@ "ora": "^3.4.0" } }, + "@pushrocks/smartnetwork": { + "version": "1.1.6", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartnetwork/-/smartnetwork-1.1.6.tgz", + "integrity": "sha512-teRY3TbT5UaTG8ULkTSX2x6NjnQvyhUEouNvRAyim61eaTFy098ybntcbnOW8g6g/XpDsk6Q3Kilbwx6pB1u7Q==", + "requires": { + "@pushrocks/smartpromise": "^3.0.2", + "@pushrocks/smartstring": "^3.0.10", + "@types/portscanner": "^2.1.0", + "portscanner": "^2.2.0", + "speedtest-net": "^1.5.1" + } + }, "@pushrocks/smartparam": { "version": "1.0.4", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartparam/-/smartparam-1.0.4.tgz", "integrity": "sha512-UAqhnTQGBaJRptTK3qTd47Yt2ZTrAWByteow4auSNZD+k0xrpY9mTPPgKh0IwsURe0cZhj7zYNpGiekhKkL4rA==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^2.0.5", "is-promise": "^2.1.0", @@ -233,8 +250,7 @@ "@pushrocks/smartpromise": { "version": "2.0.5", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", - "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==", - "dev": true + "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==" } } }, @@ -263,7 +279,6 @@ "version": "2.0.3", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrx/-/smartrx-2.0.3.tgz", "integrity": "sha512-OWxagu+CBdPaq76AIg91hJyrNhDTlEpesj01ooWCeVIaLY3G7yvFkqHsEKNOwPUG1LzCWmjq1l1dHQx9p2vJ9A==", - "dev": true, "requires": { "@pushrocks/lik": "^3.0.2", "@pushrocks/smartevent": "^2.0.3", @@ -274,8 +289,7 @@ "@pushrocks/smartpromise": { "version": "2.0.5", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz", - "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==", - "dev": true + "integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g==" } } }, @@ -292,11 +306,43 @@ "which": "^1.3.1" } }, + "@pushrocks/smartspawn": { + "version": "2.0.8", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartspawn/-/smartspawn-2.0.8.tgz", + "integrity": "sha512-3ohykcFhQhsblWlc8uZddb/8EBXBhd7tv8oKcvA7EnM3PLLEn6GTM9rSptLWmdhYli7IZQW+rtHCZoSSY1/+9w==", + "requires": { + "@pushrocks/smartpromise": "^3.0.2", + "spawn-wrap": "^1.4.2", + "threads": "1.0.0-beta.4", + "tiny-worker": "^2.2.0" + } + }, + "@pushrocks/smartstring": { + "version": "3.0.10", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartstring/-/smartstring-3.0.10.tgz", + "integrity": "sha512-E4tU4F8c8zOf7DqADZ3l3V9/OHFyomsasGmFzCmaakETVJS1ESb31duvroYdavYCvrsUEX/f4yGJ9ZCnv1WgPw==", + "requires": { + "crypto-random-string": "^1.0.0", + "js-base64": "^2.5.0", + "normalize-newline": "^3.0.0", + "randomatic": "^3.1.1", + "strip-indent": "^2.0.0" + } + }, + "@pushrocks/smartsystem": { + "version": "2.0.6", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartsystem/-/smartsystem-2.0.6.tgz", + "integrity": "sha512-8gDFJ2XWcTXdas10qEwqU9spNfA6WNYr8f2z8ry5EW2GP/Ja7G7Xjif9R9VTeRyJiE9eNTWWwFCOxXomAl5qbQ==", + "requires": { + "@pushrocks/lik": "^3.0.10", + "@pushrocks/smartenv": "^4.0.7", + "@pushrocks/smartpromise": "^3.0.2" + } + }, "@pushrocks/smarttime": { "version": "3.0.12", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.12.tgz", "integrity": "sha512-NoMt1NUhNqcF5y7fCTHoC3d/+MobzgNUg6yHbSGxFRaentQzCrMPNahQIVLbrAStf03LUUBePUjSRdPYucP1gw==", - "dev": true, "requires": { "@pushrocks/smartpromise": "^3.0.2", "@types/cron": "^1.7.1", @@ -319,9 +365,9 @@ } }, "@tsclass/tsclass": { - "version": "2.0.3", - "resolved": "https://verdaccio.lossless.one/@tsclass%2ftsclass/-/tsclass-2.0.3.tgz", - "integrity": "sha512-13bn6eLaNN2gM5+ycZjulacEzpruOVOCcEMn1+2CZ8UAZf6yhghq+hXEUxqmuf1ZVR1CF+k9HsArxFBSh1cnUQ==" + "version": "2.0.4", + "resolved": "https://verdaccio.lossless.one/@tsclass%2ftsclass/-/tsclass-2.0.4.tgz", + "integrity": "sha512-wNn0V2gqx9CD/RNgeG2zbJEM2gvyN79J87m0DtXTlezlqf2elaK9b5wY0iooemyHpu8SsWhNYaedNylW4Kk9hQ==" }, "@types/chai": { "version": "4.2.0", @@ -351,7 +397,6 @@ "version": "1.7.1", "resolved": "https://verdaccio.lossless.one/@types%2fcron/-/cron-1.7.1.tgz", "integrity": "sha512-48brwgU18DqA0mQX1As5OcJEo1yNjaXMM6Mk4r8K1dOzLJRQ37FE/kCivKx7ClKEHfhX2FdcxKzJ1B744a+V3A==", - "dev": true, "requires": { "@types/node": "*", "moment": ">=2.14.0" @@ -386,20 +431,23 @@ "@types/luxon": { "version": "1.15.2", "resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.15.2.tgz", - "integrity": "sha512-zHPoyVrLvNaiMRYdhmh88Rn489ZgAgbc6iLxR5Yi0VCNfeNYHcszbhJV2vDHLNrVGy35BPtWBRn4OP2F9BBvFw==", - "dev": true + "integrity": "sha512-zHPoyVrLvNaiMRYdhmh88Rn489ZgAgbc6iLxR5Yi0VCNfeNYHcszbhJV2vDHLNrVGy35BPtWBRn4OP2F9BBvFw==" }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { "version": "12.7.2", "resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-12.7.2.tgz", "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==" }, + "@types/portscanner": { + "version": "2.1.0", + "resolved": "https://verdaccio.lossless.one/@types%2fportscanner/-/portscanner-2.1.0.tgz", + "integrity": "sha512-II0FA05TSt4r7PBUvYTqub+yrXTRu7L/PQnTtjcJYzAeBts6xHM/OA2MKyeQ80sFxX7p+0BTo68Nh1P3N6Oj/g==" + }, "@types/vinyl": { "version": "2.0.3", "resolved": "https://verdaccio.lossless.one/@types%2fvinyl/-/vinyl-2.0.3.tgz", @@ -429,6 +477,19 @@ "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", "dev": true }, + "@types/zen-observable": { + "version": "0.8.0", + "resolved": "https://verdaccio.lossless.one/@types%2fzen-observable/-/zen-observable-0.8.0.tgz", + "integrity": "sha512-te5lMAWii1uEJ4FwLjzdlbw3+n0FZNOvFXHxQDKeT0dilh7HOzdMzV2TrJVUzq8ep7J4Na8OUYPRLSQkJHAlrg==" + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://verdaccio.lossless.one/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "requires": { + "es6-promisify": "^5.0.0" + } + }, "ansi-256-colors": { "version": "1.1.0", "resolved": "https://verdaccio.lossless.one/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz", @@ -445,7 +506,6 @@ "version": "3.2.1", "resolved": "https://verdaccio.lossless.one/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -471,6 +531,14 @@ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, + "async": { + "version": "2.6.3", + "resolved": "https://verdaccio.lossless.one/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "requires": { + "lodash": "^4.17.14" + } + }, "async-limiter": { "version": "1.0.1", "resolved": "https://verdaccio.lossless.one/async-limiter/-/async-limiter-1.0.1.tgz", @@ -484,8 +552,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://verdaccio.lossless.one/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bindings": { "version": "1.5.0", @@ -500,7 +567,6 @@ "version": "1.1.11", "resolved": "https://verdaccio.lossless.one/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -518,6 +584,11 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "callsites": { + "version": "3.1.0", + "resolved": "https://verdaccio.lossless.one/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, "camelcase": { "version": "5.3.1", "resolved": "https://verdaccio.lossless.one/camelcase/-/camelcase-5.3.1.tgz", @@ -557,7 +628,6 @@ "version": "2.4.2", "resolved": "https://verdaccio.lossless.one/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -635,7 +705,6 @@ "version": "1.9.3", "resolved": "https://verdaccio.lossless.one/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -643,8 +712,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://verdaccio.lossless.one/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "combined-stream": { "version": "1.0.8", @@ -663,8 +731,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://verdaccio.lossless.one/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "core-util-is": { "version": "1.0.2", @@ -676,7 +743,6 @@ "version": "1.7.1", "resolved": "https://verdaccio.lossless.one/cron/-/cron-1.7.1.tgz", "integrity": "sha512-gmMB/pJcqUVs/NklR1sCGlNYM7TizEw+1gebz20BMc/8bTm/r7QUp3ZPSPlG8Z5XRlvb7qhjEjq/+bdIfUCL2A==", - "dev": true, "requires": { "moment-timezone": "^0.5.x" } @@ -694,6 +760,19 @@ "which": "^1.2.9" } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://verdaccio.lossless.one/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "debug": { + "version": "3.1.0", + "resolved": "https://verdaccio.lossless.one/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, "decamelize": { "version": "1.2.0", "resolved": "https://verdaccio.lossless.one/decamelize/-/decamelize-1.2.0.tgz", @@ -737,6 +816,11 @@ "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==", "dev": true }, + "draftlog": { + "version": "1.0.12", + "resolved": "https://verdaccio.lossless.one/draftlog/-/draftlog-1.0.12.tgz", + "integrity": "sha1-fbajxbYhBrsy3Uo11nvMy2x9naA=" + }, "end-of-stream": { "version": "1.4.1", "resolved": "https://verdaccio.lossless.one/end-of-stream/-/end-of-stream-1.4.1.tgz", @@ -752,11 +836,28 @@ "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", "dev": true }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://verdaccio.lossless.one/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://verdaccio.lossless.one/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://verdaccio.lossless.one/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, + "esm": { + "version": "3.2.25", + "resolved": "https://verdaccio.lossless.one/esm/-/esm-3.2.25.tgz", + "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==" }, "esprima": { "version": "4.0.1", @@ -818,6 +919,26 @@ "readable-stream": "^2.0.2" } }, + "foreground-child": { + "version": "1.5.6", + "resolved": "https://verdaccio.lossless.one/foreground-child/-/foreground-child-1.5.6.tgz", + "integrity": "sha1-T9ca0t/elnibmApcCilZN8svXOk=", + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "4.0.2", + "resolved": "https://verdaccio.lossless.one/cross-spawn/-/cross-spawn-4.0.2.tgz", + "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + } + } + }, "form-data": { "version": "2.5.0", "resolved": "https://verdaccio.lossless.one/form-data/-/form-data-2.5.0.tgz", @@ -842,8 +963,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://verdaccio.lossless.one/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "get-caller-file": { "version": "1.0.3", @@ -870,7 +990,6 @@ "version": "7.1.4", "resolved": "https://verdaccio.lossless.one/glob/-/glob-7.1.4.tgz", "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -889,14 +1008,30 @@ "has-flag": { "version": "3.0.0", "resolved": "https://verdaccio.lossless.one/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://verdaccio.lossless.one/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + } + }, + "https-proxy-agent": { + "version": "2.2.2", + "resolved": "https://verdaccio.lossless.one/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", + "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } }, "inflight": { "version": "1.0.6", "resolved": "https://verdaccio.lossless.one/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -905,8 +1040,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://verdaccio.lossless.one/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "invert-kv": { "version": "2.0.0", @@ -920,11 +1054,31 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "is-number": { + "version": "4.0.0", + "resolved": "https://verdaccio.lossless.one/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" + }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://verdaccio.lossless.one/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-observable": { + "version": "1.1.0", + "resolved": "https://verdaccio.lossless.one/is-observable/-/is-observable-1.1.0.tgz", + "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "requires": { + "symbol-observable": "^1.1.0" + } + }, "is-promise": { "version": "2.1.0", "resolved": "https://verdaccio.lossless.one/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-stream": { "version": "1.1.0", @@ -947,8 +1101,12 @@ "isexe": { "version": "2.0.0", "resolved": "https://verdaccio.lossless.one/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://verdaccio.lossless.one/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" }, "js-tokens": { "version": "4.0.0", @@ -975,6 +1133,11 @@ "graceful-fs": "^4.1.6" } }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://verdaccio.lossless.one/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" + }, "lcid": { "version": "2.0.0", "resolved": "https://verdaccio.lossless.one/lcid/-/lcid-2.0.0.tgz", @@ -1013,6 +1176,16 @@ "path-exists": "^3.0.0" } }, + "lodash": { + "version": "4.17.15", + "resolved": "https://verdaccio.lossless.one/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://verdaccio.lossless.one/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=" + }, "log-symbols": { "version": "2.2.0", "resolved": "https://verdaccio.lossless.one/log-symbols/-/log-symbols-2.2.0.tgz", @@ -1022,11 +1195,19 @@ "chalk": "^2.0.1" } }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://verdaccio.lossless.one/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, "luxon": { "version": "1.17.2", "resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.17.2.tgz", - "integrity": "sha512-qELKtIj3HD41N+MvgoxArk8DZGUb4Gpiijs91oi+ZmKJzRlxY6CoyTwNoUwnogCVs4p8HuxVJDik9JbnYgrCng==", - "dev": true + "integrity": "sha512-qELKtIj3HD41N+MvgoxArk8DZGUb4Gpiijs91oi+ZmKJzRlxY6CoyTwNoUwnogCVs4p8HuxVJDik9JbnYgrCng==" }, "make-error": { "version": "1.3.5", @@ -1043,6 +1224,11 @@ "p-defer": "^1.0.0" } }, + "math-random": { + "version": "1.0.4", + "resolved": "https://verdaccio.lossless.one/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==" + }, "mem": { "version": "4.3.0", "resolved": "https://verdaccio.lossless.one/mem/-/mem-4.3.0.tgz", @@ -1077,7 +1263,6 @@ "version": "3.0.4", "resolved": "https://verdaccio.lossless.one/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1092,7 +1277,6 @@ "version": "0.5.1", "resolved": "https://verdaccio.lossless.one/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "dev": true, "requires": { "minimist": "0.0.8" }, @@ -1100,26 +1284,28 @@ "minimist": { "version": "0.0.8", "resolved": "https://verdaccio.lossless.one/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" } } }, "moment": { "version": "2.24.0", "resolved": "https://verdaccio.lossless.one/moment/-/moment-2.24.0.tgz", - "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==", - "dev": true + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, "moment-timezone": { "version": "0.5.26", "resolved": "https://verdaccio.lossless.one/moment-timezone/-/moment-timezone-0.5.26.tgz", "integrity": "sha512-sFP4cgEKTCymBBKgoxZjYzlSovC20Y6J7y3nanDc5RoBIXKlZhoYwBoZGe3flwU6A372AcRwScH8KiwV6zjy1g==", - "dev": true, "requires": { "moment": ">= 2.9.0" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://verdaccio.lossless.one/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, "nan": { "version": "2.14.0", "resolved": "https://verdaccio.lossless.one/nan/-/nan-2.14.0.tgz", @@ -1132,6 +1318,11 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "normalize-newline": { + "version": "3.0.0", + "resolved": "https://verdaccio.lossless.one/normalize-newline/-/normalize-newline-3.0.0.tgz", + "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=" + }, "npm-run-path": { "version": "2.0.2", "resolved": "https://verdaccio.lossless.one/npm-run-path/-/npm-run-path-2.0.2.tgz", @@ -1151,7 +1342,6 @@ "version": "1.4.0", "resolved": "https://verdaccio.lossless.one/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -1204,6 +1394,11 @@ } } }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://verdaccio.lossless.one/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + }, "os-locale": { "version": "3.1.0", "resolved": "https://verdaccio.lossless.one/os-locale/-/os-locale-3.1.0.tgz", @@ -1266,8 +1461,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://verdaccio.lossless.one/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "2.0.1", @@ -1293,6 +1487,15 @@ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", "dev": true }, + "portscanner": { + "version": "2.2.0", + "resolved": "https://verdaccio.lossless.one/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "requires": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + } + }, "pretty-bytes": { "version": "4.0.2", "resolved": "https://verdaccio.lossless.one/pretty-bytes/-/pretty-bytes-4.0.2.tgz", @@ -1305,6 +1508,11 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://verdaccio.lossless.one/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, "pump": { "version": "3.0.0", "resolved": "https://verdaccio.lossless.one/pump/-/pump-3.0.0.tgz", @@ -1315,6 +1523,16 @@ "once": "^1.3.1" } }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://verdaccio.lossless.one/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + } + }, "readable-stream": { "version": "2.3.6", "resolved": "https://verdaccio.lossless.one/readable-stream/-/readable-stream-2.3.6.tgz", @@ -1373,11 +1591,18 @@ "signal-exit": "^3.0.2" } }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://verdaccio.lossless.one/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, "rxjs": { "version": "6.5.2", "resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.5.2.tgz", "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", - "dev": true, "requires": { "tslib": "^1.9.0" } @@ -1388,6 +1613,11 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "sax": { + "version": "1.2.4", + "resolved": "https://verdaccio.lossless.one/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.7.1", "resolved": "https://verdaccio.lossless.one/semver/-/semver-5.7.1.tgz", @@ -1418,8 +1648,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://verdaccio.lossless.one/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "smartchai": { "version": "2.0.1", @@ -1451,6 +1680,31 @@ "source-map": "^0.6.0" } }, + "spawn-wrap": { + "version": "1.4.2", + "resolved": "https://verdaccio.lossless.one/spawn-wrap/-/spawn-wrap-1.4.2.tgz", + "integrity": "sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg==", + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "speedtest-net": { + "version": "1.5.1", + "resolved": "https://verdaccio.lossless.one/speedtest-net/-/speedtest-net-1.5.1.tgz", + "integrity": "sha512-az10ue3vkUUt49p5ommRO5eKXB5GfzyLehWCNRUnO686GjtdXJcSJFPnluc93UdoWTtWbr4fCVeH9Kka1OpHIA==", + "requires": { + "chalk": "^2.4.1", + "draftlog": "^1.0.12", + "http-proxy-agent": "^2.0.0", + "https-proxy-agent": "^2.1.1", + "xml2js": "^0.4.4" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://verdaccio.lossless.one/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -1519,20 +1773,64 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://verdaccio.lossless.one/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" + }, "supports-color": { "version": "5.5.0", "resolved": "https://verdaccio.lossless.one/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://verdaccio.lossless.one/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==" + }, "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==" + }, + "threads": { + "version": "1.0.0-beta.4", + "resolved": "https://verdaccio.lossless.one/threads/-/threads-1.0.0-beta.4.tgz", + "integrity": "sha512-iQNEWLuOmdBwMLqKX357VT0hkFS8/fmHXntycnq24ZE8IRh+cAsLvriuhMuv2uRP/ftzK/G8GikyKHZov8nAmg==", + "requires": { + "@types/zen-observable": "^0.8.0", + "callsites": "^3.1.0", + "debug": "^4.1.1", + "is-observable": "^1.1.0", + "tiny-worker": ">= 2", + "zen-observable": "^0.8.14" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://verdaccio.lossless.one/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://verdaccio.lossless.one/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "tiny-worker": { + "version": "2.2.0", + "resolved": "https://verdaccio.lossless.one/tiny-worker/-/tiny-worker-2.2.0.tgz", + "integrity": "sha512-/DnTni0fPjjOlqA6BNcUo6pxyfbViJZ7vxwA+RZ+gF0dBevxp0sropQFVZ4NS5PRgQ8J7EBu8zMJYKwoNo5aWg==", + "requires": { + "esm": "^3.2.22" + } }, "ts-node": { "version": "8.3.0", @@ -1550,8 +1848,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://verdaccio.lossless.one/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "tslint": { "version": "5.19.0", @@ -1661,7 +1958,6 @@ "version": "1.3.1", "resolved": "https://verdaccio.lossless.one/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } @@ -1722,8 +2018,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://verdaccio.lossless.one/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { "version": "7.1.2", @@ -1733,12 +2028,31 @@ "async-limiter": "^1.0.0" } }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://verdaccio.lossless.one/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://verdaccio.lossless.one/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "y18n": { "version": "4.0.0", "resolved": "https://verdaccio.lossless.one/y18n/-/y18n-4.0.0.tgz", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, + "yallist": { + "version": "2.1.2", + "resolved": "https://verdaccio.lossless.one/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + }, "yargs": { "version": "12.0.5", "resolved": "https://verdaccio.lossless.one/yargs/-/yargs-12.0.5.tgz", @@ -1774,6 +2088,11 @@ "resolved": "https://verdaccio.lossless.one/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true + }, + "zen-observable": { + "version": "0.8.14", + "resolved": "https://verdaccio.lossless.one/zen-observable/-/zen-observable-0.8.14.tgz", + "integrity": "sha512-kQz39uonEjEESwh+qCi83kcC3rZJGh4mrZW7xjkSQYXkq//JZHTtKo+6yuVloTgMtzsIWOJrjIrKvk/dqm0L5g==" } } } diff --git a/package.json b/package.json index e64c02e..17387cb 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,12 @@ "tslint-config-prettier": "^1.15.0" }, "dependencies": { + "@pushrocks/smartnetwork": "^1.1.6", "@pushrocks/smartpromise": "^3.0.2", "@pushrocks/smartrequest": "^1.1.20", - "@tsclass/tsclass": "^2.0.3", + "@pushrocks/smartspawn": "^2.0.8", + "@pushrocks/smartsystem": "^2.0.6", + "@tsclass/tsclass": "^2.0.4", "@types/ws": "^6.0.2", "ws": "^7.1.2" }, diff --git a/ts/interfaces/index.ts b/ts/interfaces/index.ts deleted file mode 100644 index f514bd3..0000000 --- a/ts/interfaces/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export interface IHostConfig { - hostName: string; - destinationIp: string; - destinationPort: number; - privateKey: string; - publicKey: string; -} diff --git a/ts/smartproxy.classes.proxymaster.ts b/ts/smartproxy.classes.proxymaster.ts new file mode 100644 index 0000000..c587818 --- /dev/null +++ b/ts/smartproxy.classes.proxymaster.ts @@ -0,0 +1,22 @@ +import * as plugins from './smartproxy.plugins'; +import { expose } from '@pushrocks/smartspawn'; + +class ProxyMaster { + public hostCandidates: plugins.tsclass + public clusterChilds: any[] = []; + +} + +const defaultProxyMaster = new ProxyMaster(); + +const proxyMasterCalls = { + terminateMaster: async () => { + process.kill(0); + }, + +}; + +export type TProxyMasterCalls = typeof proxyMasterCalls; +expose (proxyMasterCalls); + +console.log('Proxymaster started!'); diff --git a/ts/smartproxy.classes.proxyworker.ts b/ts/smartproxy.classes.proxyworker.ts index 1256ce5..e2cec9f 100644 --- a/ts/smartproxy.classes.proxyworker.ts +++ b/ts/smartproxy.classes.proxyworker.ts @@ -1,8 +1,8 @@ import * as plugins from './smartproxy.plugins'; -import * as interfaces from './interfaces'; import { SmartproxyRouter } from './smartproxy.classes.router'; export class ProxyWorker { + public hostCandidates: plugins.tsclass.network.IReverseProxyConfig[] = []; public httpsServer: plugins.https.Server | plugins.http.Server; public router = new SmartproxyRouter(); @@ -11,14 +11,14 @@ export class ProxyWorker { */ public async start() { this.httpsServer = plugins.http.createServer(async (req, res) => { - req.headers.host = this.router.routeReq(req); + const destinationConfig = this.router.routeReq(req); const response = await plugins.smartrequest.request( - `https://${req.headers.host}${req.url}`, + `http://${destinationConfig.destinationIp}:${destinationConfig.destinationPort}${req.url}`, { method: req.method, headers: req.headers }, - true + true // lets make this streaming ); res.statusCode = response.statusCode; for (const header of Object.keys(response.headers)) { @@ -31,12 +31,6 @@ export class ProxyWorker { res.end(); }); }); - for (const hostCandidate of this.hostCandidates) { - /* this.httpsServer.addContext(hostCandidate.hostName, { - cert: hostCandidate.publicKey, - key: hostCandidate.privateKey - }); */ - } // Enable websockets const wss = new plugins.ws.Server({ server: this.httpsServer }); @@ -67,8 +61,15 @@ export class ProxyWorker { this.httpsServer.listen(3000); } - public async update() { - await this.start(); + public async updateCandidates(arrayOfReverseCandidates: plugins.tsclass.IReverseProxyConfig[]) { + this.hostCandidates = arrayOfReverseCandidates; + this.router + for (const hostCandidate of this.hostCandidates) { + this.httpsServer.addContext(hostCandidate.hostName, { + cert: hostCandidate.publicKey, + key: hostCandidate.privateKey + }); + } } public async stop() { diff --git a/ts/smartproxy.classes.router.ts b/ts/smartproxy.classes.router.ts index 1d64eb4..bebc27a 100644 --- a/ts/smartproxy.classes.router.ts +++ b/ts/smartproxy.classes.router.ts @@ -1,8 +1,20 @@ import * as plugins from './smartproxy.plugins'; export class SmartproxyRouter { + public reverseCandidates: plugins.tsclass.network.IReverseProxyConfig[] = []; - public routeReq(req: plugins.http.IncomingMessage) { - return 'lossless.gmbh'; + /** + * sets a new set of reverse configs to be routed to + * @param reverseCandidatesArg + */ + public setNewCandidates(reverseCandidatesArg: plugins.tsclass.network.IReverseProxyConfig[]) { + this.reverseCandidates = reverseCandidatesArg; + } + public routeReq(req: plugins.http.IncomingMessage): plugins.tsclass.network.IReverseProxyConfig { + const originalHost = req.headers.host; + const correspodingReverseProxyConfig = this.reverseCandidates.find(reverseConfig => { + return reverseConfig.hostName === originalHost; + }); + return correspodingReverseProxyConfig; } } diff --git a/ts/smartproxy.classes.smartproxy.ts b/ts/smartproxy.classes.smartproxy.ts index f68bcef..3168ed4 100644 --- a/ts/smartproxy.classes.smartproxy.ts +++ b/ts/smartproxy.classes.smartproxy.ts @@ -1,21 +1,24 @@ import * as plugins from './smartproxy.plugins'; -import * as interfaces from './interfaces'; + +import { TProxyMasterCalls } from './smartproxy.classes.proxymaster'; export class SmartProxy { - public hostCandidates: interfaces.IHostConfig[] = []; + public hostCandidates: plugins.tsclass.network.IReverseProxyConfig[] = []; + public proxyMasterFunctions: plugins.smartspawn.ModuleThread; - public addHostCandidate(hostCandidate: interfaces.IHostConfig) { + public addHostCandidate(hostCandidate: plugins.tsclass.network.IReverseProxyConfig) { // TODO search for old hostCandidates with that target this.hostCandidates.push(hostCandidate); } - async start () { - + public async start () { + this.proxyMasterFunctions = await plugins.smartspawn.spawn(new plugins.smartspawn.Worker('./smartproxy.classes.proxymaster')); + console.log('successfully spawned proxymaster'); } - async stop () { - + public async stop () { + await this.proxyMasterFunctions.terminateMaster(); } diff --git a/ts/smartproxy.plugins.ts b/ts/smartproxy.plugins.ts index 91fb564..eb65f34 100644 --- a/ts/smartproxy.plugins.ts +++ b/ts/smartproxy.plugins.ts @@ -1,17 +1,27 @@ // node native scope -import crypto from 'crypto'; + +import cluster from 'cluster'; import http from 'http'; import https from 'https'; -export { crypto, http, https }; +export { cluster, http, https }; + +// tsclass scope +import * as tsclass from '@tsclass/tsclass'; + +export { + tsclass +}; // pushrocks scope import * as smartpromise from '@pushrocks/smartpromise'; import * as smartrequest from '@pushrocks/smartrequest'; +import * as smartspawn from '@pushrocks/smartspawn'; export { smartrequest, - smartpromise + smartpromise, + smartspawn }; // third party scope