fix(core): update

This commit is contained in:
Philipp Kunz 2019-01-09 12:15:28 +01:00
parent 1049920efd
commit ede884930e
12 changed files with 316 additions and 142 deletions

217
package-lock.json generated
View File

@ -79,7 +79,6 @@
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.4.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.4.tgz",
"integrity": "sha512-abyDxBqZgUCvXxl7DNVnZ6gDv3jjH9XxqMW6VE4FvDnXJw7iShKpi/ImFEqR2ZEtACdad5/XORdP8Yw0EyrEog==", "integrity": "sha512-abyDxBqZgUCvXxl7DNVnZ6gDv3jjH9XxqMW6VE4FvDnXJw7iShKpi/ImFEqR2ZEtACdad5/XORdP8Yw0EyrEog==",
"dev": true,
"requires": { "requires": {
"@pushrocks/smartdelay": "^2.0.2", "@pushrocks/smartdelay": "^2.0.2",
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^2.0.5",
@ -109,7 +108,6 @@
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.2.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartdelay/-/smartdelay-2.0.2.tgz",
"integrity": "sha512-4xf6tMKwZcxBynKgXrM4SQKgeASfRvx43LUmR5DkStp26ZHAsarCXUdKJS6y8QIPygEOTOCP8we97JAcCzBuMg==", "integrity": "sha512-4xf6tMKwZcxBynKgXrM4SQKgeASfRvx43LUmR5DkStp26ZHAsarCXUdKJS6y8QIPygEOTOCP8we97JAcCzBuMg==",
"dev": true,
"requires": { "requires": {
"@pushrocks/smartpromise": "^2.0.5" "@pushrocks/smartpromise": "^2.0.5"
} }
@ -118,7 +116,6 @@
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartevent/-/smartevent-2.0.3.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartevent/-/smartevent-2.0.3.tgz",
"integrity": "sha512-x4B1mzzE6LrMATXsRLNuZpMTlB2JodL44MA4bF4FucU3SBBiWhFv3CFJRlO9B23SKZ1fwdJQrk2lT7YTUHXXJQ==", "integrity": "sha512-x4B1mzzE6LrMATXsRLNuZpMTlB2JodL44MA4bF4FucU3SBBiWhFv3CFJRlO9B23SKZ1fwdJQrk2lT7YTUHXXJQ==",
"dev": true,
"requires": { "requires": {
"@pushrocks/smartpromise": "^2.0.5" "@pushrocks/smartpromise": "^2.0.5"
} }
@ -202,7 +199,6 @@
"version": "2.0.3", "version": "2.0.3",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrx/-/smartrx-2.0.3.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartrx/-/smartrx-2.0.3.tgz",
"integrity": "sha512-OWxagu+CBdPaq76AIg91hJyrNhDTlEpesj01ooWCeVIaLY3G7yvFkqHsEKNOwPUG1LzCWmjq1l1dHQx9p2vJ9A==", "integrity": "sha512-OWxagu+CBdPaq76AIg91hJyrNhDTlEpesj01ooWCeVIaLY3G7yvFkqHsEKNOwPUG1LzCWmjq1l1dHQx9p2vJ9A==",
"dev": true,
"requires": { "requires": {
"@pushrocks/lik": "^3.0.2", "@pushrocks/lik": "^3.0.2",
"@pushrocks/smartevent": "^2.0.3", "@pushrocks/smartevent": "^2.0.3",
@ -236,7 +232,6 @@
"version": "3.0.5", "version": "3.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.5.tgz", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.5.tgz",
"integrity": "sha512-nHjJ8xRZ87OE8tBBIAOgjHJmJrc3MaPZtEZ5JDY2U9gjaED6JdRcdQ+vhSaLJT+U2u8YzXOuA6LfNN+X4jZm6A==", "integrity": "sha512-nHjJ8xRZ87OE8tBBIAOgjHJmJrc3MaPZtEZ5JDY2U9gjaED6JdRcdQ+vhSaLJT+U2u8YzXOuA6LfNN+X4jZm6A==",
"dev": true,
"requires": { "requires": {
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^2.0.5",
"@types/luxon": "^1.4.1", "@types/luxon": "^1.4.1",
@ -305,14 +300,12 @@
"@types/luxon": { "@types/luxon": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.4.1.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.4.1.tgz",
"integrity": "sha512-mYv/gbkOJ40CDgR8st5sosfFNrJncdlkpdzQSNRdU86UQg3oWWmll4AO/7B8F5FlBC6YrIXqXDSnkoCBqo+uMA==", "integrity": "sha512-mYv/gbkOJ40CDgR8st5sosfFNrJncdlkpdzQSNRdU86UQg3oWWmll4AO/7B8F5FlBC6YrIXqXDSnkoCBqo+uMA=="
"dev": true
}, },
"@types/minimatch": { "@types/minimatch": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.3.tgz", "resolved": "https://verdaccio.lossless.one/@types%2fminimatch/-/minimatch-3.0.3.tgz",
"integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA=="
"dev": true
}, },
"@types/node": { "@types/node": {
"version": "10.5.7", "version": "10.5.7",
@ -329,7 +322,7 @@
}, },
"@types/which": { "@types/which": {
"version": "1.3.1", "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==" "integrity": "sha512-ZrJDWpvg75LTGX4XwuneY9s6bF3OeZcGTpoGh3zDV9ytzcHMFsRrMIaLBRJZQMBoGyKs6unBQfVdrLZiYfb1zQ=="
}, },
"@types/yargs": { "@types/yargs": {
@ -350,6 +343,12 @@
"integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
"dev": true "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": { "argparse": {
"version": "1.0.10", "version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "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", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" "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": { "balanced-match": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@ -401,6 +441,12 @@
"integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
"dev": true "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": { "camelcase": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://verdaccio.lossless.one/camelcase/-/camelcase-5.0.0.tgz", "resolved": "https://verdaccio.lossless.one/camelcase/-/camelcase-5.0.0.tgz",
@ -436,6 +482,37 @@
"integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==",
"dev": true "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": { "check-error": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://verdaccio.lossless.one/check-error/-/check-error-1.0.2.tgz", "resolved": "https://verdaccio.lossless.one/check-error/-/check-error-1.0.2.tgz",
@ -484,6 +561,21 @@
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=",
"dev": true "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": { "combined-stream": {
"version": "1.0.7", "version": "1.0.7",
"resolved": "https://verdaccio.lossless.one/combined-stream/-/combined-stream-1.0.7.tgz", "resolved": "https://verdaccio.lossless.one/combined-stream/-/combined-stream-1.0.7.tgz",
@ -492,6 +584,12 @@
"delayed-stream": "~1.0.0" "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": { "concat-map": {
"version": "0.0.1", "version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "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", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
"integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" "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": { "execa": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://verdaccio.lossless.one/execa/-/execa-1.0.0.tgz", "resolved": "https://verdaccio.lossless.one/execa/-/execa-1.0.0.tgz",
@ -733,6 +837,29 @@
"function-bind": "^1.1.1" "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": { "home": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/home/-/home-1.0.1.tgz", "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", "resolved": "https://verdaccio.lossless.one/js-base64/-/js-base64-2.5.0.tgz",
"integrity": "sha512-wlEBIZ5LP8usDylWbDNhKPEFVFdI5hCHpnVoT/Ysvoi/PRhJENm/Rlh9TvjYB38HFfKZN7OzEbRjmjvLkFw11g==" "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": { "js-yaml": {
"version": "3.12.0", "version": "3.12.0",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz",
@ -901,8 +1034,7 @@
"luxon": { "luxon": {
"version": "1.9.0", "version": "1.9.0",
"resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.9.0.tgz", "resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.9.0.tgz",
"integrity": "sha512-N1kSwtIEhM/gIRGASXPgi1CwfQZX5VTjndYFjOsZdEEtWij2uSoRrgDGWwViZCUNY9Rwh4UVG/TLcUinHM20cA==", "integrity": "sha512-N1kSwtIEhM/gIRGASXPgi1CwfQZX5VTjndYFjOsZdEEtWij2uSoRrgDGWwViZCUNY9Rwh4UVG/TLcUinHM20cA=="
"dev": true
}, },
"make-error": { "make-error": {
"version": "1.3.5", "version": "1.3.5",
@ -1117,6 +1249,12 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true "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": { "pathval": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.0.tgz", "resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.0.tgz",
@ -1212,11 +1350,19 @@
"integrity": "sha1-KadZGEbK+RtuijzamRaD+V+NfUI=", "integrity": "sha1-KadZGEbK+RtuijzamRaD+V+NfUI=",
"dev": true "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": { "rxjs": {
"version": "6.3.3", "version": "6.3.3",
"resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.3.3.tgz", "resolved": "https://verdaccio.lossless.one/rxjs/-/rxjs-6.3.3.tgz",
"integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==",
"dev": true,
"requires": { "requires": {
"tslib": "^1.9.0" "tslib": "^1.9.0"
} }
@ -1425,11 +1571,16 @@
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
"integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=" "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": { "symbol-tree": {
"version": "3.2.2", "version": "3.2.2",
"resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.2.tgz", "resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.2.tgz",
"integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY="
"dev": true
}, },
"ts-node": { "ts-node": {
"version": "7.0.1", "version": "7.0.1",
@ -1450,9 +1601,43 @@
"tslib": { "tslib": {
"version": "1.9.3", "version": "1.9.3",
"resolved": "https://verdaccio.lossless.one/tslib/-/tslib-1.9.3.tgz", "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 "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": { "type-detect": {
"version": "4.0.8", "version": "4.0.8",
"resolved": "https://verdaccio.lossless.one/type-detect/-/type-detect-4.0.8.tgz", "resolved": "https://verdaccio.lossless.one/type-detect/-/type-detect-4.0.8.tgz",

View File

@ -24,6 +24,7 @@
}, },
"homepage": "https://gitlab.com/pushrocks/smartnginx#README", "homepage": "https://gitlab.com/pushrocks/smartnginx#README",
"dependencies": { "dependencies": {
"@pushrocks/lik": "^3.0.4",
"@pushrocks/smartfile": "^6.0.11", "@pushrocks/smartfile": "^6.0.11",
"@pushrocks/smartlog": "^2.0.9", "@pushrocks/smartlog": "^2.0.9",
"@pushrocks/smartpromise": "^2.0.5", "@pushrocks/smartpromise": "^2.0.5",
@ -35,6 +36,8 @@
"@gitzone/tsrun": "^1.1.17", "@gitzone/tsrun": "^1.1.17",
"@gitzone/tstest": "^1.0.18", "@gitzone/tstest": "^1.0.18",
"@pushrocks/tapbundle": "^3.0.7", "@pushrocks/tapbundle": "^3.0.7",
"qenv": "^1.1.7" "qenv": "^1.1.7",
"tslint": "^5.12.0",
"tslint-config-prettier": "^1.17.0"
} }
} }

View File

@ -4,7 +4,6 @@ import path = require('path');
import { Qenv } from 'qenv'; import { Qenv } from 'qenv';
let testQenv = new Qenv(process.cwd(), path.join(process.cwd(), '.nogit')); let testQenv = new Qenv(process.cwd(), path.join(process.cwd(), '.nogit'));
import * as smartnginx from '../ts'; import * as smartnginx from '../ts';
let testSmartNginx: smartnginx.SmartNginx; let testSmartNginx: smartnginx.SmartNginx;
@ -12,26 +11,30 @@ let testNginxZone01: smartnginx.NginxHost;
let testNginxZone02: smartnginx.NginxHost; let testNginxZone02: smartnginx.NginxHost;
tap.test('should create a valid instance of SmartNginx', async () => { 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); expect(testSmartNginx).to.be.instanceof(smartnginx.SmartNginx);
}); });
tap.test(`should produce an instance of NginxConfig`, async () => { tap.test(`should produce an instance of NginxConfig`, async () => {
testNginxZone01 = new smartnginx.NginxHost(testSmartNginx, { testNginxZone01 = new smartnginx.NginxHost(testSmartNginx, {
hostName: 'test100.bleu.de', 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, { testNginxZone02 = new smartnginx.NginxHost(testSmartNginx, {
hostName: 'test102.bleu.de', 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); expect(testNginxZone01).to.be.instanceof(smartnginx.NginxHost);
console.log(testNginxZone01.configString); console.log(testNginxZone01.configString);
}); });
tap.test('.addZone() should add a zone to NginxConfig Object', async () => { tap.test('.addZone() should add a zone to NginxConfig Object', async () => {
testSmartNginx.addHost('test200.bleu.de', '192.192.192.191'); testSmartNginx.addHost(testNginxZone01);
testSmartNginx.addHost('test201.blue.de', '192.192.192.191'); testSmartNginx.addHost(testNginxZone02);
}); });
tap.test('.deploy() should deploy a config from an instance', async () => { tap.test('.deploy() should deploy a config from an instance', async () => {

View File

@ -0,0 +1,6 @@
export interface IHostConfig {
hostName: string;
destination: string;
privateKey: string;
publicKey: string;
}

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

View 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) {
}
}

View File

@ -4,13 +4,7 @@ import * as snippets from './smartnginx.snippets';
import { SmartNginx } from './smartnginx.classes.smartnginx'; import { SmartNginx } from './smartnginx.classes.smartnginx';
/** import { IHostConfig } from './interfaces/hostconfig';
* the host config data that NginxHost needs to create a valid instance
*/
export interface IHostConfigData {
hostName: string;
destination: string;
}
export enum hostTypes { export enum hostTypes {
reverseProxy reverseProxy
@ -19,16 +13,19 @@ export enum hostTypes {
/** /**
* manages a single nginx host * manages a single nginx host
*/ */
export class NginxHost { export class NginxHost implements IHostConfig {
/** /**
* smartnginxInstance this NginHost belongs to * smartnginxInstance this NginHost belongs to
*/ */
smartnginxInstance: SmartNginx smartnginxInstance: SmartNginx;
hostName: string; // the host name e.g. domain name hostName: string; // the host name e.g. domain name
destination: string; destination: string;
configString: string; // the actual host config file as 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.smartnginxInstance = smartnginxInstanceArg;
this.hostName = optionsArg.hostName; this.hostName = optionsArg.hostName;
this.destination = optionsArg.destination; this.destination = optionsArg.destination;
@ -39,8 +36,8 @@ export class NginxHost {
* *
* @param certInstanceArg * @param certInstanceArg
*/ */
async deploy() { public async deploy() {
let filePath = plugins.path.join(paths.nginxHostFileBase, this.hostName + '.conf'); const filePath = plugins.path.join(paths.nginxHostDirPath, `${this.hostName}.conf`);
// writeConfig // writeConfig
plugins.smartfile.memory.toFsSync(this.configString, filePath); plugins.smartfile.memory.toFsSync(this.configString, filePath);
} }

View File

@ -5,78 +5,65 @@ import { NginxHost } from './smartnginx.classes.nginxhost';
import { Smartshell } from '@pushrocks/smartshell'; import { Smartshell } from '@pushrocks/smartshell';
import { ChildProcess } from 'child_process';
/** /**
* manages a nginxprocess for an NginxConfig * manages a nginxprocess for an NginxConfig
*/ */
export class NginxProcess { export class NginxProcess {
started: boolean = false; public started: boolean = false;
nginxConfig: SmartNginx; public smartNginxRef: SmartNginx;
nginxChildProcess: plugins.childProcess.ChildProcess; private nginxChildProcess: ChildProcess;
smartshellInstance = new Smartshell({ private smartshellInstance = new Smartshell({
executor: 'bash' executor: 'bash'
}); });
constructor(nginxConfigArg) {
this.nginxConfig = nginxConfigArg; constructor(nginxRefArg: SmartNginx) {
this.smartNginxRef = nginxRefArg;
} }
/** /**
* start nginx * start nginx
*/ */
start() { public async start() {
let done = plugins.smartpromise.defer(); if (!this.nginxChildProcess) {
if (typeof this.nginxChildProcess == 'undefined') { this.nginxChildProcess = (await this.smartshellInstance.execStreaming(
this.nginxChildProcess = plugins.childProcess.exec( `nginx -c ${paths.nginxConfFile}`
`nginx -c ${paths.nginxConfFile}`, )).childProcess;
function(error, stdout, stderr) {
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
if (error !== null) {
console.log(`exec error: ${error}`);
}
}
);
} }
this.started = true; this.started = true;
plugins.smartlog.defaultLogger.log('info', 'started Nginx!'); plugins.smartlog.defaultLogger.log('info', 'started Nginx!');
done.resolve();
return done.promise;
} }
/** /**
* reload config * reload config
*/ */
reloadConfig() { public async reloadConfig() {
let done = plugins.smartpromise.defer(); if (!this.started) {
if (this.started == false) {
this.start(); this.start();
} else { } 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!'); this.smartNginxRef.logger.log('info', 'NginxProcess has loaded the new config!');
done.resolve();
return done.promise;
} }
/** /**
* stop the nginx instance * stop the nginx instance
*/ */
stop() { public async stop() {
let done = plugins.smartpromise.defer(); if (this.nginxChildProcess) {
if (typeof this.nginxChildProcess != 'undefined') {
this.smartshellInstance.exec('nginx -s quit'); this.smartshellInstance.exec('nginx -s quit');
this.started = false; this.started = false;
plugins.smartlog.defaultLogger.log('info', 'stopped Nginx!'); this.smartNginxRef.logger.log('info', 'stopped Nginx!');
} else { } 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 * checks if nginx is in path
*/ */
check(): boolean { public check(): boolean {
return; return;
} }
} }

View File

@ -3,20 +3,20 @@ import * as paths from './smartnginx.paths';
import * as snippets from './smartnginx.snippets'; import * as snippets from './smartnginx.snippets';
import { NginxHost } from './smartnginx.classes.nginxhost'; import { NginxHost } from './smartnginx.classes.nginxhost';
import { NginxProcess } from './smartnginx.classes.nginxprocess'; import { NginxProcess } from './smartnginx.classes.nginxprocess';
import { CertHandler } from './smartnginx.classes.certhandler'; import { IHostConfig } from './interfaces/hostconfig';
let allConfigs: SmartNginx[] = [];
/** /**
* main class that manages a NginxInstance * main class that manages a NginxInstance
*/ */
export class SmartNginx { export class SmartNginx {
certHandler = new CertHandler(); public logger: plugins.smartlog.Smartlog;
hosts: NginxHost[] = []; private hosts = new plugins.lik.Objectmap<NginxHost>();
nginxProcess: NginxProcess = new NginxProcess(this); public nginxProcess: NginxProcess = new NginxProcess(this);
isDeployed: boolean = false; constructor(optionsArg: { logger?: plugins.smartlog.Smartlog }) {
constructor() { optionsArg.logger
? (this.logger = optionsArg.logger)
}; : (this.logger = plugins.smartlog.defaultLogger);
}
// =================== // ===================
// interact with Hosts // interact with Hosts
@ -26,61 +26,57 @@ export class SmartNginx {
* add a host * add a host
* @param nginxHostArg * @param nginxHostArg
*/ */
addHost(hostNameArg: string, destinationIp: string): NginxHost { public addHost(optionsArg: IHostConfig): NginxHost {
const nginxHost = new NginxHost(this, { const nginxHost = new NginxHost(this, optionsArg);
hostName: hostNameArg, this.hosts.add(nginxHost);
destination: destinationIp
})
this.hosts.push(nginxHost);
return 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 this.hosts.find(nginxHost => {
return nginxHost.hostName === hostNameArg; return nginxHost.hostName === hostNameArg;
}) });
} }
/** /**
* listHosts * listHosts
*/ */
listHosts(): NginxHost[] { public listHosts(): NginxHost[] {
return this.hosts; return this.hosts.getArray();
} }
/** /**
* remove a Host * remove a Host
* @param nginxHostArg * @param nginxHostArg
*/ */
removeHost(nginxHostArg: NginxHost) {} public removeHost(nginxHostArg: NginxHost) {
this.hosts.remove(nginxHostArg);
}
/** /**
* clean all hosts * clean all hosts
*/ */
clean() { public wipeHosts() {
this.hosts = []; this.hosts.wipe();
} }
/** /**
* deploy the current stack and restart nginx * deploy the current stack and restart nginx
*/ */
async deploy() { public 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;
// write base config // write base config
plugins.smartfile.fs.ensureDirSync(paths.nginxConfigDirPath);
plugins.smartfile.memory.toFsSync(snippets.getBaseConfigString(), paths.nginxConfFile); plugins.smartfile.memory.toFsSync(snippets.getBaseConfigString(), paths.nginxConfFile);
// deploy hosts // deploy hosts
let promiseArray = []; plugins.smartfile.fs.ensureEmptyDirSync(paths.nginxHostDirPath);
for (let host of this.hosts) { for (const host of this.hosts.getArray()) {
await host.deploy(); await host.deploy();
plugins.smartlog.defaultLogger.log('info', `Host ${host.hostName} deployed!`); this.logger.log('info', `Host ${host.hostName} deployed!`);
this.nginxProcess.reloadConfig(); }
}; this.nginxProcess.reloadConfig();
} }
} }

View File

@ -1,11 +1,9 @@
import * as plugins from './smartnginx.plugins'; import * as plugins from './smartnginx.plugins';
// directories // directories
export let packageBase = plugins.path.join(__dirname, '../'); export const packageBase = plugins.path.join(__dirname, '../');
export let nginxConfigBase = plugins.path.join(packageBase, 'nginxconfig'); export const nginxConfigDirPath = plugins.path.join(packageBase, 'nginxconfig');
export const nginxHostDirPath = plugins.path.join(nginxConfigDirPath, 'hosts');
export let nginxHostFileBase = plugins.path.join(nginxConfigBase, 'hosts');
export let nginxCertBase = plugins.path.join(nginxConfigBase, 'cert');
// files // files
export let nginxConfFile = plugins.path.join(nginxConfigBase, 'nginx.conf'); export const nginxConfFile = plugins.path.join(nginxConfigDirPath, 'nginx.conf');

View File

@ -1,17 +1,14 @@
import * as smartlog from '@pushrocks/smartlog'; // native
import * as childProcess from 'child_process';
import * as path from 'path'; 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 smartpromise from '@pushrocks/smartpromise';
import * as smartshell from '@pushrocks/smartshell'; import * as smartshell from '@pushrocks/smartshell';
import * as smartfile from '@pushrocks/smartfile'; import * as smartfile from '@pushrocks/smartfile';
import * as smartstring from '@pushrocks/smartstring'; import * as smartstring from '@pushrocks/smartstring';
export { export { lik, smartlog, smartpromise, smartshell, smartfile, smartstring };
smartlog,
childProcess,
path,
smartpromise,
smartshell,
smartfile,
smartstring
}

17
tslint.json Normal file
View 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"
}