fix(core): update
This commit is contained in:
		
							
								
								
									
										217
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										217
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -79,7 +79,6 @@ | ||||
|       "version": "3.0.4", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.4.tgz", | ||||
|       "integrity": "sha512-abyDxBqZgUCvXxl7DNVnZ6gDv3jjH9XxqMW6VE4FvDnXJw7iShKpi/ImFEqR2ZEtACdad5/XORdP8Yw0EyrEog==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "@pushrocks/smartdelay": "^2.0.2", | ||||
|         "@pushrocks/smartpromise": "^2.0.5", | ||||
| @@ -109,7 +108,6 @@ | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.2.tgz", | ||||
|       "integrity": "sha512-4xf6tMKwZcxBynKgXrM4SQKgeASfRvx43LUmR5DkStp26ZHAsarCXUdKJS6y8QIPygEOTOCP8we97JAcCzBuMg==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "@pushrocks/smartpromise": "^2.0.5" | ||||
|       } | ||||
| @@ -118,7 +116,6 @@ | ||||
|       "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" | ||||
|       } | ||||
| @@ -202,7 +199,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", | ||||
| @@ -236,7 +232,6 @@ | ||||
|       "version": "3.0.5", | ||||
|       "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.5.tgz", | ||||
|       "integrity": "sha512-nHjJ8xRZ87OE8tBBIAOgjHJmJrc3MaPZtEZ5JDY2U9gjaED6JdRcdQ+vhSaLJT+U2u8YzXOuA6LfNN+X4jZm6A==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "@pushrocks/smartpromise": "^2.0.5", | ||||
|         "@types/luxon": "^1.4.1", | ||||
| @@ -305,14 +300,12 @@ | ||||
|     "@types/luxon": { | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.4.1.tgz", | ||||
|       "integrity": "sha512-mYv/gbkOJ40CDgR8st5sosfFNrJncdlkpdzQSNRdU86UQg3oWWmll4AO/7B8F5FlBC6YrIXqXDSnkoCBqo+uMA==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-mYv/gbkOJ40CDgR8st5sosfFNrJncdlkpdzQSNRdU86UQg3oWWmll4AO/7B8F5FlBC6YrIXqXDSnkoCBqo+uMA==" | ||||
|     }, | ||||
|     "@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": "10.5.7", | ||||
| @@ -329,7 +322,7 @@ | ||||
|     }, | ||||
|     "@types/which": { | ||||
|       "version": "1.3.1", | ||||
|       "resolved": "https://registry.npmjs.org/@types/which/-/which-1.3.1.tgz", | ||||
|       "resolved": "https://verdaccio.lossless.one/@types%2fwhich/-/which-1.3.1.tgz", | ||||
|       "integrity": "sha512-ZrJDWpvg75LTGX4XwuneY9s6bF3OeZcGTpoGh3zDV9ytzcHMFsRrMIaLBRJZQMBoGyKs6unBQfVdrLZiYfb1zQ==" | ||||
|     }, | ||||
|     "@types/yargs": { | ||||
| @@ -350,6 +343,12 @@ | ||||
|       "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "ansi-styles": { | ||||
|       "version": "2.2.1", | ||||
|       "resolved": "https://verdaccio.lossless.one/ansi-styles/-/ansi-styles-2.2.1.tgz", | ||||
|       "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "argparse": { | ||||
|       "version": "1.0.10", | ||||
|       "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", | ||||
| @@ -375,6 +374,47 @@ | ||||
|       "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", | ||||
|       "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" | ||||
|     }, | ||||
|     "babel-code-frame": { | ||||
|       "version": "6.26.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/babel-code-frame/-/babel-code-frame-6.26.0.tgz", | ||||
|       "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "chalk": "^1.1.3", | ||||
|         "esutils": "^2.0.2", | ||||
|         "js-tokens": "^3.0.2" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "ansi-regex": { | ||||
|           "version": "2.1.1", | ||||
|           "resolved": "https://verdaccio.lossless.one/ansi-regex/-/ansi-regex-2.1.1.tgz", | ||||
|           "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", | ||||
|           "dev": true | ||||
|         }, | ||||
|         "chalk": { | ||||
|           "version": "1.1.3", | ||||
|           "resolved": "https://verdaccio.lossless.one/chalk/-/chalk-1.1.3.tgz", | ||||
|           "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "ansi-styles": "^2.2.1", | ||||
|             "escape-string-regexp": "^1.0.2", | ||||
|             "has-ansi": "^2.0.0", | ||||
|             "strip-ansi": "^3.0.0", | ||||
|             "supports-color": "^2.0.0" | ||||
|           } | ||||
|         }, | ||||
|         "strip-ansi": { | ||||
|           "version": "3.0.1", | ||||
|           "resolved": "https://verdaccio.lossless.one/strip-ansi/-/strip-ansi-3.0.1.tgz", | ||||
|           "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", | ||||
|           "dev": true, | ||||
|           "requires": { | ||||
|             "ansi-regex": "^2.0.0" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "balanced-match": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", | ||||
| @@ -401,6 +441,12 @@ | ||||
|       "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "builtin-modules": { | ||||
|       "version": "1.1.1", | ||||
|       "resolved": "https://verdaccio.lossless.one/builtin-modules/-/builtin-modules-1.1.1.tgz", | ||||
|       "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "camelcase": { | ||||
|       "version": "5.0.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/camelcase/-/camelcase-5.0.0.tgz", | ||||
| @@ -436,6 +482,37 @@ | ||||
|       "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "chalk": { | ||||
|       "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", | ||||
|         "supports-color": "^5.3.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "ansi-styles": { | ||||
|           "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" | ||||
|           } | ||||
|         }, | ||||
|         "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" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "check-error": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/check-error/-/check-error-1.0.2.tgz", | ||||
| @@ -484,6 +561,21 @@ | ||||
|       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "color-convert": { | ||||
|       "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" | ||||
|       } | ||||
|     }, | ||||
|     "color-name": { | ||||
|       "version": "1.1.3", | ||||
|       "resolved": "https://verdaccio.lossless.one/color-name/-/color-name-1.1.3.tgz", | ||||
|       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "combined-stream": { | ||||
|       "version": "1.0.7", | ||||
|       "resolved": "https://verdaccio.lossless.one/combined-stream/-/combined-stream-1.0.7.tgz", | ||||
| @@ -492,6 +584,12 @@ | ||||
|         "delayed-stream": "~1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "commander": { | ||||
|       "version": "2.19.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/commander/-/commander-2.19.0.tgz", | ||||
|       "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "concat-map": { | ||||
|       "version": "0.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||
| @@ -606,6 +704,12 @@ | ||||
|       "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | ||||
|       "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" | ||||
|     }, | ||||
|     "esutils": { | ||||
|       "version": "2.0.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/esutils/-/esutils-2.0.2.tgz", | ||||
|       "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "execa": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/execa/-/execa-1.0.0.tgz", | ||||
| @@ -733,6 +837,29 @@ | ||||
|         "function-bind": "^1.1.1" | ||||
|       } | ||||
|     }, | ||||
|     "has-ansi": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/has-ansi/-/has-ansi-2.0.0.tgz", | ||||
|       "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "ansi-regex": "^2.0.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "ansi-regex": { | ||||
|           "version": "2.1.1", | ||||
|           "resolved": "https://verdaccio.lossless.one/ansi-regex/-/ansi-regex-2.1.1.tgz", | ||||
|           "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", | ||||
|           "dev": true | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "has-flag": { | ||||
|       "version": "3.0.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/has-flag/-/has-flag-3.0.0.tgz", | ||||
|       "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "home": { | ||||
|       "version": "1.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/home/-/home-1.0.1.tgz", | ||||
| @@ -832,6 +959,12 @@ | ||||
|       "resolved": "https://verdaccio.lossless.one/js-base64/-/js-base64-2.5.0.tgz", | ||||
|       "integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" | ||||
|     }, | ||||
|     "js-tokens": { | ||||
|       "version": "3.0.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/js-tokens/-/js-tokens-3.0.2.tgz", | ||||
|       "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "js-yaml": { | ||||
|       "version": "3.12.0", | ||||
|       "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", | ||||
| @@ -901,8 +1034,7 @@ | ||||
|     "luxon": { | ||||
|       "version": "1.9.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.9.0.tgz", | ||||
|       "integrity": "sha512-N1kSwtIEhM/gIRGASXPgi1CwfQZX5VTjndYFjOsZdEEtWij2uSoRrgDGWwViZCUNY9Rwh4UVG/TLcUinHM20cA==", | ||||
|       "dev": true | ||||
|       "integrity": "sha512-N1kSwtIEhM/gIRGASXPgi1CwfQZX5VTjndYFjOsZdEEtWij2uSoRrgDGWwViZCUNY9Rwh4UVG/TLcUinHM20cA==" | ||||
|     }, | ||||
|     "make-error": { | ||||
|       "version": "1.3.5", | ||||
| @@ -1117,6 +1249,12 @@ | ||||
|       "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "path-parse": { | ||||
|       "version": "1.0.6", | ||||
|       "resolved": "https://verdaccio.lossless.one/path-parse/-/path-parse-1.0.6.tgz", | ||||
|       "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "pathval": { | ||||
|       "version": "1.1.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.0.tgz", | ||||
| @@ -1212,11 +1350,19 @@ | ||||
|       "integrity": "sha1-KadZGEbK+RtuijzamRaD+V+NfUI=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "resolve": { | ||||
|       "version": "1.9.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/resolve/-/resolve-1.9.0.tgz", | ||||
|       "integrity": "sha512-TZNye00tI67lwYvzxCxHGjwTNlUV70io54/Ed4j6PscB8xVfuBJpRenI/o6dVk0cY0PYTY27AgCoGGxRnYuItQ==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "path-parse": "^1.0.6" | ||||
|       } | ||||
|     }, | ||||
|     "rxjs": { | ||||
|       "version": "6.3.3", | ||||
|       "resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.3.3.tgz", | ||||
|       "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "tslib": "^1.9.0" | ||||
|       } | ||||
| @@ -1425,11 +1571,16 @@ | ||||
|       "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", | ||||
|       "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" | ||||
|     }, | ||||
|     "supports-color": { | ||||
|       "version": "2.0.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/supports-color/-/supports-color-2.0.0.tgz", | ||||
|       "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "symbol-tree": { | ||||
|       "version": "3.2.2", | ||||
|       "resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.2.tgz", | ||||
|       "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" | ||||
|     }, | ||||
|     "ts-node": { | ||||
|       "version": "7.0.1", | ||||
| @@ -1450,9 +1601,43 @@ | ||||
|     "tslib": { | ||||
|       "version": "1.9.3", | ||||
|       "resolved": "https://verdaccio.lossless.one/tslib/-/tslib-1.9.3.tgz", | ||||
|       "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", | ||||
|       "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" | ||||
|     }, | ||||
|     "tslint": { | ||||
|       "version": "5.12.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/tslint/-/tslint-5.12.0.tgz", | ||||
|       "integrity": "sha512-CKEcH1MHUBhoV43SA/Jmy1l24HJJgI0eyLbBNSRyFlsQvb9v6Zdq+Nz2vEOH00nC5SUx4SneJ59PZUS/ARcokQ==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "babel-code-frame": "^6.22.0", | ||||
|         "builtin-modules": "^1.1.1", | ||||
|         "chalk": "^2.3.0", | ||||
|         "commander": "^2.12.1", | ||||
|         "diff": "^3.2.0", | ||||
|         "glob": "^7.1.1", | ||||
|         "js-yaml": "^3.7.0", | ||||
|         "minimatch": "^3.0.4", | ||||
|         "resolve": "^1.3.2", | ||||
|         "semver": "^5.3.0", | ||||
|         "tslib": "^1.8.0", | ||||
|         "tsutils": "^2.27.2" | ||||
|       } | ||||
|     }, | ||||
|     "tslint-config-prettier": { | ||||
|       "version": "1.17.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/tslint-config-prettier/-/tslint-config-prettier-1.17.0.tgz", | ||||
|       "integrity": "sha512-NKWNkThwqE4Snn4Cm6SZB7lV5RMDDFsBwz6fWUkTxOKGjMx8ycOHnjIbhn7dZd5XmssW3CwqUjlANR6EhP9YQw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "tsutils": { | ||||
|       "version": "2.29.0", | ||||
|       "resolved": "https://verdaccio.lossless.one/tsutils/-/tsutils-2.29.0.tgz", | ||||
|       "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "tslib": "^1.8.1" | ||||
|       } | ||||
|     }, | ||||
|     "type-detect": { | ||||
|       "version": "4.0.8", | ||||
|       "resolved": "https://verdaccio.lossless.one/type-detect/-/type-detect-4.0.8.tgz", | ||||
|   | ||||
| @@ -24,6 +24,7 @@ | ||||
|   }, | ||||
|   "homepage": "https://gitlab.com/pushrocks/smartnginx#README", | ||||
|   "dependencies": { | ||||
|     "@pushrocks/lik": "^3.0.4", | ||||
|     "@pushrocks/smartfile": "^6.0.11", | ||||
|     "@pushrocks/smartlog": "^2.0.9", | ||||
|     "@pushrocks/smartpromise": "^2.0.5", | ||||
| @@ -35,6 +36,8 @@ | ||||
|     "@gitzone/tsrun": "^1.1.17", | ||||
|     "@gitzone/tstest": "^1.0.18", | ||||
|     "@pushrocks/tapbundle": "^3.0.7", | ||||
|     "qenv": "^1.1.7" | ||||
|     "qenv": "^1.1.7", | ||||
|     "tslint": "^5.12.0", | ||||
|     "tslint-config-prettier": "^1.17.0" | ||||
|   } | ||||
| } | ||||
|   | ||||
							
								
								
									
										15
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								test/test.ts
									
									
									
									
									
								
							| @@ -4,7 +4,6 @@ import path = require('path'); | ||||
| import { Qenv } from 'qenv'; | ||||
| let testQenv = new Qenv(process.cwd(), path.join(process.cwd(), '.nogit')); | ||||
|  | ||||
|  | ||||
| import * as smartnginx from '../ts'; | ||||
|  | ||||
| let testSmartNginx: smartnginx.SmartNginx; | ||||
| @@ -12,26 +11,30 @@ let testNginxZone01: smartnginx.NginxHost; | ||||
| let testNginxZone02: smartnginx.NginxHost; | ||||
|  | ||||
| tap.test('should create a valid instance of SmartNginx', async () => { | ||||
|   testSmartNginx = new smartnginx.SmartNginx(); | ||||
|   testSmartNginx = new smartnginx.SmartNginx({}); | ||||
|   expect(testSmartNginx).to.be.instanceof(smartnginx.SmartNginx); | ||||
| }); | ||||
|  | ||||
| tap.test(`should produce an instance of NginxConfig`, async () => { | ||||
|   testNginxZone01 = new smartnginx.NginxHost(testSmartNginx, { | ||||
|     hostName: 'test100.bleu.de', | ||||
|     destination: '192.192.192.191' | ||||
|     destination: '192.192.192.191', | ||||
|     privateKey: 'some private', | ||||
|     publicKey: 'some public' | ||||
|   }); | ||||
|   testNginxZone02 = new smartnginx.NginxHost(testSmartNginx, { | ||||
|     hostName: 'test102.bleu.de', | ||||
|     destination: '192.192.192.192' | ||||
|     destination: '192.192.192.192', | ||||
|     privateKey: 'some private', | ||||
|     publicKey: 'some public' | ||||
|   }); | ||||
|   expect(testNginxZone01).to.be.instanceof(smartnginx.NginxHost); | ||||
|   console.log(testNginxZone01.configString); | ||||
| }); | ||||
|  | ||||
| tap.test('.addZone() should add a zone to NginxConfig Object', async () => { | ||||
|   testSmartNginx.addHost('test200.bleu.de', '192.192.192.191'); | ||||
|   testSmartNginx.addHost('test201.blue.de', '192.192.192.191'); | ||||
|   testSmartNginx.addHost(testNginxZone01); | ||||
|   testSmartNginx.addHost(testNginxZone02); | ||||
| }); | ||||
|  | ||||
| tap.test('.deploy() should deploy a config from an instance', async () => { | ||||
|   | ||||
							
								
								
									
										6
									
								
								ts/interfaces/hostconfig.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								ts/interfaces/hostconfig.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| export interface IHostConfig { | ||||
|   hostName: string; | ||||
|   destination: string; | ||||
|   privateKey: string; | ||||
|   publicKey: string; | ||||
| } | ||||
							
								
								
									
										0
									
								
								ts/interfaces/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								ts/interfaces/index.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -1,15 +0,0 @@ | ||||
| import * as plugins from './smartnginx.plugins'; | ||||
|  | ||||
| export class CertHandler { | ||||
|   private _readyDeferred = plugins.smartpromise.defer(); | ||||
|   certHandlerReady = this._readyDeferred.promise; | ||||
|   constructor() {} // nothing to do here for now | ||||
|  | ||||
|   /** | ||||
|    * ensure a cert is at the right location | ||||
|    * @param hostName | ||||
|    */ | ||||
|   async ensureCertForHost(hostName) { | ||||
|  | ||||
|   } | ||||
| } | ||||
| @@ -4,13 +4,7 @@ import * as snippets from './smartnginx.snippets'; | ||||
|  | ||||
| import { SmartNginx } from './smartnginx.classes.smartnginx'; | ||||
|  | ||||
| /** | ||||
|  * the host config data that NginxHost needs to create a valid instance | ||||
|  */ | ||||
| export interface IHostConfigData { | ||||
|   hostName: string; | ||||
|   destination: string; | ||||
| } | ||||
| import { IHostConfig } from './interfaces/hostconfig'; | ||||
|  | ||||
| export enum hostTypes { | ||||
|   reverseProxy | ||||
| @@ -19,16 +13,19 @@ export enum hostTypes { | ||||
| /** | ||||
|  * manages a single nginx host | ||||
|  */ | ||||
| export class NginxHost { | ||||
|   /**  | ||||
| export class NginxHost implements IHostConfig { | ||||
|   /** | ||||
|    * smartnginxInstance this NginHost belongs to | ||||
|    */ | ||||
|   smartnginxInstance: SmartNginx | ||||
|   smartnginxInstance: SmartNginx; | ||||
|  | ||||
|   hostName: string; // the host name e.g. domain name | ||||
|   destination: string; | ||||
|   configString: string; // the actual host config file as string | ||||
|   constructor(smartnginxInstanceArg: SmartNginx, optionsArg: IHostConfigData) { | ||||
|   privateKey: string; | ||||
|   publicKey: string; | ||||
|  | ||||
|   constructor(smartnginxInstanceArg: SmartNginx, optionsArg: IHostConfig) { | ||||
|     this.smartnginxInstance = smartnginxInstanceArg; | ||||
|     this.hostName = optionsArg.hostName; | ||||
|     this.destination = optionsArg.destination; | ||||
| @@ -39,8 +36,8 @@ export class NginxHost { | ||||
|    * | ||||
|    * @param certInstanceArg | ||||
|    */ | ||||
|   async deploy() { | ||||
|     let filePath = plugins.path.join(paths.nginxHostFileBase, this.hostName + '.conf'); | ||||
|   public async deploy() { | ||||
|     const filePath = plugins.path.join(paths.nginxHostDirPath,  `${this.hostName}.conf`); | ||||
|     // writeConfig | ||||
|     plugins.smartfile.memory.toFsSync(this.configString, filePath); | ||||
|   } | ||||
|   | ||||
| @@ -5,78 +5,65 @@ import { NginxHost } from './smartnginx.classes.nginxhost'; | ||||
|  | ||||
| import { Smartshell } from '@pushrocks/smartshell'; | ||||
|  | ||||
| import { ChildProcess } from 'child_process'; | ||||
|  | ||||
| /** | ||||
|  * manages a nginxprocess for an NginxConfig | ||||
|  */ | ||||
| export class NginxProcess { | ||||
|   started: boolean = false; | ||||
|   nginxConfig: SmartNginx; | ||||
|   nginxChildProcess: plugins.childProcess.ChildProcess; | ||||
|   smartshellInstance = new Smartshell({ | ||||
|   public started: boolean = false; | ||||
|   public smartNginxRef: SmartNginx; | ||||
|   private nginxChildProcess: ChildProcess; | ||||
|   private smartshellInstance = new Smartshell({ | ||||
|     executor: 'bash' | ||||
|   }); | ||||
|   constructor(nginxConfigArg) { | ||||
|     this.nginxConfig = nginxConfigArg; | ||||
|  | ||||
|   constructor(nginxRefArg: SmartNginx) { | ||||
|     this.smartNginxRef = nginxRefArg; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * start nginx | ||||
|    */ | ||||
|   start() { | ||||
|     let done = plugins.smartpromise.defer(); | ||||
|     if (typeof this.nginxChildProcess == 'undefined') { | ||||
|       this.nginxChildProcess = plugins.childProcess.exec( | ||||
|         `nginx -c ${paths.nginxConfFile}`, | ||||
|         function(error, stdout, stderr) { | ||||
|           console.log(`stdout: ${stdout}`); | ||||
|           console.log(`stderr: ${stderr}`); | ||||
|           if (error !== null) { | ||||
|             console.log(`exec error: ${error}`); | ||||
|           } | ||||
|         } | ||||
|       ); | ||||
|   public async start() { | ||||
|     if (!this.nginxChildProcess) { | ||||
|       this.nginxChildProcess = (await this.smartshellInstance.execStreaming( | ||||
|         `nginx -c ${paths.nginxConfFile}` | ||||
|       )).childProcess; | ||||
|     } | ||||
|     this.started = true; | ||||
|     plugins.smartlog.defaultLogger.log('info', 'started Nginx!'); | ||||
|     done.resolve(); | ||||
|     return done.promise; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * reload config | ||||
|    */ | ||||
|   reloadConfig() { | ||||
|     let done = plugins.smartpromise.defer(); | ||||
|     if (this.started == false) { | ||||
|   public async reloadConfig() { | ||||
|     if (!this.started) { | ||||
|       this.start(); | ||||
|     } else { | ||||
|       this.smartshellInstance.exec('nginx -s reload'); | ||||
|       await this.smartshellInstance.exec('nginx -s reload'); | ||||
|     } | ||||
|     plugins.smartlog.defaultLogger.log('info', 'NginxProcess has loaded the new config!'); | ||||
|     done.resolve(); | ||||
|     return done.promise; | ||||
|     this.smartNginxRef.logger.log('info', 'NginxProcess has loaded the new config!'); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * stop the nginx instance | ||||
|    */ | ||||
|   stop() { | ||||
|     let done = plugins.smartpromise.defer(); | ||||
|     if (typeof this.nginxChildProcess != 'undefined') { | ||||
|   public async stop() { | ||||
|     if (this.nginxChildProcess) { | ||||
|       this.smartshellInstance.exec('nginx -s quit'); | ||||
|       this.started = false; | ||||
|       plugins.smartlog.defaultLogger.log('info', 'stopped Nginx!'); | ||||
|       this.smartNginxRef.logger.log('info', 'stopped Nginx!'); | ||||
|     } else { | ||||
|       plugins.smartlog.defaultLogger.log('info', 'nginx already stopped!'); | ||||
|       this.smartNginxRef.logger.log('info', 'nginx already stopped!'); | ||||
|     } | ||||
|     done.resolve(); | ||||
|     return done.promise; | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * checks if nginx is in path | ||||
|    */ | ||||
|   check(): boolean { | ||||
|   public check(): boolean { | ||||
|     return; | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -3,20 +3,20 @@ import * as paths from './smartnginx.paths'; | ||||
| import * as snippets from './smartnginx.snippets'; | ||||
| import { NginxHost } from './smartnginx.classes.nginxhost'; | ||||
| import { NginxProcess } from './smartnginx.classes.nginxprocess'; | ||||
| import { CertHandler } from './smartnginx.classes.certhandler'; | ||||
| let allConfigs: SmartNginx[] = []; | ||||
| import { IHostConfig } from './interfaces/hostconfig'; | ||||
|  | ||||
| /** | ||||
|  * main class that manages a NginxInstance | ||||
|  */ | ||||
| export class SmartNginx { | ||||
|   certHandler = new CertHandler(); | ||||
|   hosts: NginxHost[] = []; | ||||
|   nginxProcess: NginxProcess = new NginxProcess(this); | ||||
|   isDeployed: boolean = false; | ||||
|   constructor() { | ||||
|  | ||||
|   }; | ||||
|   public logger: plugins.smartlog.Smartlog; | ||||
|   private hosts = new plugins.lik.Objectmap<NginxHost>(); | ||||
|   public nginxProcess: NginxProcess = new NginxProcess(this); | ||||
|   constructor(optionsArg: { logger?: plugins.smartlog.Smartlog }) { | ||||
|     optionsArg.logger | ||||
|       ? (this.logger = optionsArg.logger) | ||||
|       : (this.logger = plugins.smartlog.defaultLogger); | ||||
|   } | ||||
|  | ||||
|   // =================== | ||||
|   // interact with Hosts | ||||
| @@ -26,61 +26,57 @@ export class SmartNginx { | ||||
|    * add a host | ||||
|    * @param nginxHostArg | ||||
|    */ | ||||
|   addHost(hostNameArg: string, destinationIp: string): NginxHost { | ||||
|     const nginxHost = new NginxHost(this, { | ||||
|       hostName: hostNameArg, | ||||
|       destination: destinationIp | ||||
|     }) | ||||
|     this.hosts.push(nginxHost); | ||||
|   public addHost(optionsArg: IHostConfig): NginxHost { | ||||
|     const nginxHost = new NginxHost(this, optionsArg); | ||||
|     this.hosts.add(nginxHost); | ||||
|     return nginxHost; | ||||
|   } | ||||
|  | ||||
|   getNginxHostByHostName(hostNameArg: string): NginxHost { | ||||
|   /** | ||||
|    * Gets a NginxHost by hostname | ||||
|    * @param hostNameArg | ||||
|    */ | ||||
|   public getNginxHostByHostName(hostNameArg: string): NginxHost { | ||||
|     return this.hosts.find(nginxHost => { | ||||
|       return nginxHost.hostName === hostNameArg; | ||||
|     }) | ||||
|     }); | ||||
|   } | ||||
|  | ||||
|  | ||||
|   /** | ||||
|    * listHosts | ||||
|    */ | ||||
|   listHosts(): NginxHost[] { | ||||
|     return this.hosts; | ||||
|   public listHosts(): NginxHost[] { | ||||
|     return this.hosts.getArray(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * remove a Host | ||||
|    * @param nginxHostArg | ||||
|    */ | ||||
|   removeHost(nginxHostArg: NginxHost) {} | ||||
|    | ||||
|   public removeHost(nginxHostArg: NginxHost) { | ||||
|     this.hosts.remove(nginxHostArg); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * clean all hosts | ||||
|    */ | ||||
|   clean() { | ||||
|     this.hosts = []; | ||||
|   public wipeHosts() { | ||||
|     this.hosts.wipe(); | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * deploy the current stack and restart nginx | ||||
|    */ | ||||
|   async deploy() { | ||||
|     plugins.smartfile.fs.ensureDirSync(paths.nginxConfigBase); | ||||
|     plugins.smartfile.fs.ensureDirSync(paths.nginxHostFileBase); | ||||
|     plugins.smartfile.fs.ensureDirSync(paths.nginxCertBase); | ||||
|     for (let config of allConfigs) { | ||||
|       config.isDeployed = false; | ||||
|     } | ||||
|     this.isDeployed = true; | ||||
|   public async deploy() { | ||||
|     // write base config | ||||
|     plugins.smartfile.fs.ensureDirSync(paths.nginxConfigDirPath); | ||||
|     plugins.smartfile.memory.toFsSync(snippets.getBaseConfigString(), paths.nginxConfFile); | ||||
|  | ||||
|     // deploy hosts | ||||
|     let promiseArray = []; | ||||
|     for (let host of this.hosts) { | ||||
|     plugins.smartfile.fs.ensureEmptyDirSync(paths.nginxHostDirPath); | ||||
|     for (const host of this.hosts.getArray()) { | ||||
|       await host.deploy(); | ||||
|       plugins.smartlog.defaultLogger.log('info', `Host ${host.hostName} deployed!`); | ||||
|       this.nginxProcess.reloadConfig(); | ||||
|     }; | ||||
|       this.logger.log('info', `Host ${host.hostName} deployed!`); | ||||
|     } | ||||
|     this.nginxProcess.reloadConfig(); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,11 +1,9 @@ | ||||
| import * as plugins from './smartnginx.plugins'; | ||||
|  | ||||
| // directories | ||||
| export let packageBase = plugins.path.join(__dirname, '../'); | ||||
| export let nginxConfigBase = plugins.path.join(packageBase, 'nginxconfig'); | ||||
|  | ||||
| export let nginxHostFileBase = plugins.path.join(nginxConfigBase, 'hosts'); | ||||
| export let nginxCertBase = plugins.path.join(nginxConfigBase, 'cert'); | ||||
| export const packageBase = plugins.path.join(__dirname, '../'); | ||||
| export const nginxConfigDirPath = plugins.path.join(packageBase, 'nginxconfig'); | ||||
| export const nginxHostDirPath = plugins.path.join(nginxConfigDirPath, 'hosts'); | ||||
|  | ||||
| // files | ||||
| export let nginxConfFile = plugins.path.join(nginxConfigBase, 'nginx.conf'); | ||||
| export const nginxConfFile = plugins.path.join(nginxConfigDirPath, 'nginx.conf'); | ||||
| @@ -1,17 +1,14 @@ | ||||
| import * as smartlog from '@pushrocks/smartlog'; | ||||
| import * as childProcess from 'child_process'; | ||||
| // native | ||||
| import * as path from 'path'; | ||||
|  | ||||
| export { path }; | ||||
|  | ||||
| // @pushrocks scope | ||||
| import * as lik from '@pushrocks/lik'; | ||||
| import * as smartlog from '@pushrocks/smartlog'; | ||||
| import * as smartpromise from '@pushrocks/smartpromise'; | ||||
| import * as smartshell from '@pushrocks/smartshell'; | ||||
| import * as smartfile from '@pushrocks/smartfile'; | ||||
| import * as smartstring from '@pushrocks/smartstring'; | ||||
|  | ||||
| export { | ||||
|   smartlog, | ||||
|   childProcess, | ||||
|   path, | ||||
|   smartpromise, | ||||
|   smartshell, | ||||
|   smartfile, | ||||
|   smartstring | ||||
| } | ||||
| export { lik, smartlog, smartpromise, smartshell, smartfile, smartstring }; | ||||
|   | ||||
							
								
								
									
										17
									
								
								tslint.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								tslint.json
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| { | ||||
|   "extends": ["tslint:latest", "tslint-config-prettier"], | ||||
|   "rules": { | ||||
|     "semicolon": [true, "always"], | ||||
|     "no-console": false, | ||||
|     "ordered-imports": false, | ||||
|     "object-literal-sort-keys": false, | ||||
|     "member-ordering": { | ||||
|       "options":{ | ||||
|         "order": [ | ||||
|           "static-method" | ||||
|         ] | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "defaultSeverity": "warning" | ||||
| } | ||||
		Reference in New Issue
	
	Block a user