fix(core): update

This commit is contained in:
Philipp Kunz 2019-08-28 11:55:14 +02:00
parent c4e3f628cd
commit 10562afea1
8 changed files with 642 additions and 101 deletions

View File

@ -1,4 +1,5 @@
Copyright (c) 2019 Lossless GmbH (hello@lossless.com)
Copyright (c) 2017-2019, braces lab
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

183
package-lock.json generated
View File

@ -70,7 +70,6 @@
"version": "2.0.1",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fconsolecolor/-/consolecolor-2.0.1.tgz",
"integrity": "sha512-iOFCHVeFZ2OywbdwSxVI4/wokkcLrXVdHLgvMmkNhJ220eeLgjNZWx3EJo3vNW3zq5ybCSCUIq0878djBxrWpw==",
"dev": true,
"requires": {
"ansi-256-colors": "^1.1.0"
}
@ -97,7 +96,6 @@
"version": "3.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2flik/-/lik-3.0.5.tgz",
"integrity": "sha512-pc5Nq0WUysS34qPpyiZXiX254kL3vyRVbt3D36Q5QU+eHhxAThHofSzgOdyVHUZU2WFoaMlKowIVsyUFzIkfdw==",
"dev": true,
"requires": {
"@pushrocks/smartdelay": "^2.0.2",
"@pushrocks/smartpromise": "^2.0.5",
@ -111,8 +109,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=="
}
}
},
@ -143,7 +140,6 @@
"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"
}
@ -152,7 +148,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"
},
@ -160,8 +155,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=="
}
}
},
@ -169,7 +163,6 @@
"version": "1.0.15",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartexit/-/smartexit-1.0.15.tgz",
"integrity": "sha512-pvJBmF13spcDN+O8rSpYlKBOObyfW+omZKQr3hhSMT1VHMEYV8e/njsA19Cg4C2DfLPv+cRFFgPn27zJpleRsQ==",
"dev": true,
"requires": {
"@pushrocks/lik": "^3.0.5",
"@pushrocks/smartdelay": "^2.0.3",
@ -191,28 +184,64 @@
"glob": "^7.1.3",
"js-yaml": "^3.13.1",
"vinyl-file": "^3.0.0"
},
"dependencies": {
"@types/fs-extra": {
"version": "5.1.0",
"resolved": "https://verdaccio.lossless.one/@types%2ffs-extra/-/fs-extra-5.1.0.tgz",
"integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://verdaccio.lossless.one/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.2",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
}
}
}
},
"@pushrocks/smartlog": {
"version": "2.0.19",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog/-/smartlog-2.0.19.tgz",
"integrity": "sha512-I2mDx7WcUlADYWxu5nNP3NSJv95YrCZoG/rarbEqovK7pJQ9a0aINmIcCHkQeL1VSWvxgvhXwHyV/yNEJ4zh3Q==",
"dev": true,
"requires": {
"@pushrocks/smartlog-interfaces": "^2.0.5"
}
},
"@pushrocks/smartlog-destination-local": {
"version": "8.0.2",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-destination-local/-/smartlog-destination-local-8.0.2.tgz",
"integrity": "sha512-+Ed7WxvBF6yNtsT8cZuxkm+NaeCtCUyjt+UVJD/5zetLGMHJ7r0d9texFP771ss4Yu9as18kTs3ompCrxQw+GQ==",
"requires": {
"@pushrocks/consolecolor": "^2.0.1",
"@pushrocks/smartlog-interfaces": "^2.0.2",
"@pushrocks/smartpromise": "^2.0.5"
},
"dependencies": {
"@pushrocks/smartpromise": {
"version": "2.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-2.0.5.tgz",
"integrity": "sha512-9j/chLtIiNkR0MDw7Mpxg9slxAVvAQwUZuiaPYX5KpHdKxQaHLI1VZ8IN0vPhwlfgNO4i4vGXV0wB8BvSDj03g=="
}
}
},
"@pushrocks/smartlog-interfaces": {
"version": "2.0.5",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-interfaces/-/smartlog-interfaces-2.0.5.tgz",
"integrity": "sha512-eLNlRpDwy3E+6v/B6fo/NiAo+UxBO3SxKgIIsgUGbWfVpsyUi0PG2xfVCdhJlhL1AsRRvKglfHSOB8qKE+XCLw==",
"dev": true
"integrity": "sha512-eLNlRpDwy3E+6v/B6fo/NiAo+UxBO3SxKgIIsgUGbWfVpsyUi0PG2xfVCdhJlhL1AsRRvKglfHSOB8qKE+XCLw=="
},
"@pushrocks/smartlog-source-ora": {
"version": "1.0.8",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartlog-source-ora/-/smartlog-source-ora-1.0.8.tgz",
"integrity": "sha512-yPFACo/1gHx2o43qYLJ6LB5AUvSFB42abYynySpaIZfQKzdz09eJB/LMbVdOKPObwk7bcma5owyK5lPHicG9Ig==",
"dev": true,
"requires": {
"@pushrocks/smartlog-interfaces": "^2.0.5",
"ora": "^3.4.0"
@ -246,8 +275,7 @@
"@pushrocks/smartpromise": {
"version": "3.0.2",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartpromise/-/smartpromise-3.0.2.tgz",
"integrity": "sha512-jmrJMUEmBCWChWK8CIcx4Vw3wv/8OgVNmkaxJrbs+WMaoRUfJtpWWJfrAwwHWt9ZXJbarJ+CwfwfYiiZXymndQ==",
"dev": true
"integrity": "sha512-jmrJMUEmBCWChWK8CIcx4Vw3wv/8OgVNmkaxJrbs+WMaoRUfJtpWWJfrAwwHWt9ZXJbarJ+CwfwfYiiZXymndQ=="
},
"@pushrocks/smartrequest": {
"version": "1.1.16",
@ -264,7 +292,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",
@ -275,16 +302,14 @@
"@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=="
}
}
},
"@pushrocks/smartshell": {
"version": "2.0.23",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.23.tgz",
"integrity": "sha512-+YXacX/sp4f+iBYm4vAoxrq/c8WCHnFhMaW66l3R08stl0eezW3SytoSlnr6R+JT1xqnBzIItDfCyyRC3uEVnw==",
"dev": true,
"version": "2.0.25",
"resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartshell/-/smartshell-2.0.25.tgz",
"integrity": "sha512-sYVHOhBRdr+CkjS+o1SDtB5058ZYxTPAYuexx2ydl2g+57KNdEcSRWN/2mOv5+NFH+tvvgtnUjC3AclC9CwJ4A==",
"requires": {
"@pushrocks/smartdelay": "^2.0.3",
"@pushrocks/smartexit": "^1.0.15",
@ -297,7 +322,6 @@
"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",
@ -346,7 +370,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"
@ -371,10 +394,9 @@
}
},
"@types/fs-extra": {
"version": "5.1.0",
"resolved": "https://verdaccio.lossless.one/@types%2ffs-extra/-/fs-extra-5.1.0.tgz",
"integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==",
"dev": true,
"version": "8.0.0",
"resolved": "https://verdaccio.lossless.one/@types%2ffs-extra/-/fs-extra-8.0.0.tgz",
"integrity": "sha512-bCtL5v9zdbQW86yexOlXWTEGvLNqWxMFyi7gQA7Gcthbezr2cPSOb8SkESVKA937QD5cIwOFLDFt0MQoXOEr9Q==",
"requires": {
"@types/node": "*"
}
@ -382,20 +404,17 @@
"@types/luxon": {
"version": "1.15.1",
"resolved": "https://verdaccio.lossless.one/@types%2fluxon/-/luxon-1.15.1.tgz",
"integrity": "sha512-SOGSpxsAoR+pHLev7oFGbQ4mZCmfcmYY2xsv2+/UeEG2rcJA30k5NVux3cW9rgTe2EVtrqFG+KtMs6ERZsTGKA==",
"dev": true
"integrity": "sha512-SOGSpxsAoR+pHLev7oFGbQ4mZCmfcmYY2xsv2+/UeEG2rcJA30k5NVux3cW9rgTe2EVtrqFG+KtMs6ERZsTGKA=="
},
"@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.14.9",
"resolved": "https://verdaccio.lossless.one/@types%2fnode/-/node-10.14.9.tgz",
"integrity": "sha512-NelG/dSahlXYtSoVPErrp06tYFrvzj8XLWmKA+X8x0W//4MqbUyZu++giUG/v0bjAT6/Qxa8IjodrfdACyb0Fg==",
"dev": true
"integrity": "sha512-NelG/dSahlXYtSoVPErrp06tYFrvzj8XLWmKA+X8x0W//4MqbUyZu++giUG/v0bjAT6/Qxa8IjodrfdACyb0Fg=="
},
"@types/vinyl": {
"version": "2.0.3",
@ -409,8 +428,7 @@
"@types/which": {
"version": "1.3.1",
"resolved": "https://verdaccio.lossless.one/@types%2fwhich/-/which-1.3.1.tgz",
"integrity": "sha512-ZrJDWpvg75LTGX4XwuneY9s6bF3OeZcGTpoGh3zDV9ytzcHMFsRrMIaLBRJZQMBoGyKs6unBQfVdrLZiYfb1zQ==",
"dev": true
"integrity": "sha512-ZrJDWpvg75LTGX4XwuneY9s6bF3OeZcGTpoGh3zDV9ytzcHMFsRrMIaLBRJZQMBoGyKs6unBQfVdrLZiYfb1zQ=="
},
"@types/yargs": {
"version": "12.0.12",
@ -421,8 +439,7 @@
"ansi-256-colors": {
"version": "1.1.0",
"resolved": "https://verdaccio.lossless.one/ansi-256-colors/-/ansi-256-colors-1.1.0.tgz",
"integrity": "sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo=",
"dev": true
"integrity": "sha1-kQ3lDvzHwJ49gvL4er1rcAwYgYo="
},
"ansi-regex": {
"version": "3.0.0",
@ -434,7 +451,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"
}
@ -469,14 +485,12 @@
"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="
},
"brace-expansion": {
"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"
@ -533,7 +547,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",
@ -550,16 +563,14 @@
"version": "2.1.0",
"resolved": "https://verdaccio.lossless.one/cli-cursor/-/cli-cursor-2.1.0.tgz",
"integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
"dev": true,
"requires": {
"restore-cursor": "^2.0.0"
}
},
"cli-spinners": {
"version": "2.1.0",
"resolved": "https://verdaccio.lossless.one/cli-spinners/-/cli-spinners-2.1.0.tgz",
"integrity": "sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA==",
"dev": true
"version": "2.2.0",
"resolved": "https://verdaccio.lossless.one/cli-spinners/-/cli-spinners-2.2.0.tgz",
"integrity": "sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ=="
},
"cliui": {
"version": "4.1.0",
@ -611,7 +622,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"
}
@ -619,8 +629,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",
@ -640,8 +649,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",
@ -653,7 +661,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"
}
@ -690,7 +697,6 @@
"version": "1.0.3",
"resolved": "https://verdaccio.lossless.one/defaults/-/defaults-1.0.3.tgz",
"integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=",
"dev": true,
"requires": {
"clone": "^1.0.2"
},
@ -698,8 +704,7 @@
"clone": {
"version": "1.0.4",
"resolved": "https://verdaccio.lossless.one/clone/-/clone-1.0.4.tgz",
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
"dev": true
"integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4="
}
}
},
@ -727,8 +732,7 @@
"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="
},
"esprima": {
"version": "4.0.1",
@ -796,14 +800,20 @@
}
},
"fs-extra": {
"version": "7.0.1",
"resolved": "https://verdaccio.lossless.one/fs-extra/-/fs-extra-7.0.1.tgz",
"integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==",
"dev": true,
"version": "8.1.0",
"resolved": "https://verdaccio.lossless.one/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"requires": {
"graceful-fs": "^4.1.2",
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"dependencies": {
"graceful-fs": {
"version": "4.2.2",
"resolved": "https://verdaccio.lossless.one/graceful-fs/-/graceful-fs-4.2.2.tgz",
"integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q=="
}
}
},
"fs.realpath": {
@ -850,14 +860,12 @@
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://verdaccio.lossless.one/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==",
"dev": true
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"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="
},
"inflight": {
"version": "1.0.6",
@ -914,8 +922,7 @@
"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-tokens": {
"version": "4.0.0",
@ -937,7 +944,6 @@
"version": "4.0.0",
"resolved": "https://verdaccio.lossless.one/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
"dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
@ -965,7 +971,6 @@
"version": "2.2.0",
"resolved": "https://verdaccio.lossless.one/log-symbols/-/log-symbols-2.2.0.tgz",
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
"dev": true,
"requires": {
"chalk": "^2.0.1"
}
@ -973,8 +978,7 @@
"luxon": {
"version": "1.16.0",
"resolved": "https://verdaccio.lossless.one/luxon/-/luxon-1.16.0.tgz",
"integrity": "sha512-qaqB+JwpGwtl7UbIXng3A/l4W/ySBr8drQvwtMLZBMiLD2V+0fEnPWMrs+UjnIy9PsktazQaKvwDUCLzoWz0Hw==",
"dev": true
"integrity": "sha512-qaqB+JwpGwtl7UbIXng3A/l4W/ySBr8drQvwtMLZBMiLD2V+0fEnPWMrs+UjnIy9PsktazQaKvwDUCLzoWz0Hw=="
},
"make-error": {
"version": "1.3.5",
@ -1027,7 +1031,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"
}
@ -1052,14 +1055,12 @@
"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.25",
"resolved": "https://verdaccio.lossless.one/moment-timezone/-/moment-timezone-0.5.25.tgz",
"integrity": "sha512-DgEaTyN/z0HFaVcVbSyVCUU6HeFdnNC3vE4c9cgu2dgMTvjBUBdBzWfasTBmAW45u5OIMeCJtU8yNjM22DHucw==",
"dev": true,
"requires": {
"moment": ">= 2.9.0"
}
@ -1098,7 +1099,6 @@
"version": "2.0.1",
"resolved": "https://verdaccio.lossless.one/onetime/-/onetime-2.0.1.tgz",
"integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
"dev": true,
"requires": {
"mimic-fn": "^1.0.0"
},
@ -1106,8 +1106,7 @@
"mimic-fn": {
"version": "1.2.0",
"resolved": "https://verdaccio.lossless.one/mimic-fn/-/mimic-fn-1.2.0.tgz",
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
"dev": true
"integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ=="
}
}
},
@ -1115,7 +1114,6 @@
"version": "3.4.0",
"resolved": "https://verdaccio.lossless.one/ora/-/ora-3.4.0.tgz",
"integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==",
"dev": true,
"requires": {
"chalk": "^2.4.2",
"cli-cursor": "^2.1.0",
@ -1128,14 +1126,12 @@
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://verdaccio.lossless.one/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://verdaccio.lossless.one/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dev": true,
"requires": {
"ansi-regex": "^4.1.0"
}
@ -1299,7 +1295,6 @@
"version": "2.0.0",
"resolved": "https://verdaccio.lossless.one/restore-cursor/-/restore-cursor-2.0.0.tgz",
"integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
"dev": true,
"requires": {
"onetime": "^2.0.0",
"signal-exit": "^3.0.2"
@ -1309,7 +1304,6 @@
"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"
}
@ -1350,8 +1344,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",
@ -1455,7 +1448,6 @@
"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"
}
@ -1463,8 +1455,7 @@
"symbol-tree": {
"version": "3.2.4",
"resolved": "https://verdaccio.lossless.one/symbol-tree/-/symbol-tree-3.2.4.tgz",
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
"dev": true
"integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw=="
},
"ts-node": {
"version": "8.3.0",
@ -1482,8 +1473,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.17.0",
@ -1544,8 +1534,7 @@
"universalify": {
"version": "0.1.2",
"resolved": "https://verdaccio.lossless.one/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"util-deprecate": {
"version": "1.0.2",
@ -1584,7 +1573,6 @@
"version": "1.0.1",
"resolved": "https://verdaccio.lossless.one/wcwidth/-/wcwidth-1.0.1.tgz",
"integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=",
"dev": true,
"requires": {
"defaults": "^1.0.3"
}
@ -1593,7 +1581,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"
}

View File

@ -20,7 +20,13 @@
"tslint": "^5.11.0",
"tslint-config-prettier": "^1.15.0"
},
"dependencies": {},
"dependencies": {
"@pushrocks/smartlog": "^2.0.19",
"@pushrocks/smartlog-destination-local": "^8.0.2",
"@pushrocks/smartshell": "^2.0.25",
"@types/fs-extra": "^8.0.0",
"fs-extra": "^8.1.0"
},
"files": [
"ts/*",
"ts_web/*",

View File

@ -1,2 +1,26 @@
const removeme = {};
export { removeme };
// node native scope
import * as path from 'path';
export {
path
};
// @pushrocks scope
import * as smartshell from '@pushrocks/smartshell';
import * as smartlog from '@pushrocks/smartlog';
import * as smartlogDestinationLocal from '@pushrocks/smartlog-destination-local';
export {
smartshell,
smartlog,
smartlogDestinationLocal
};
// third party
import * as fs from 'fs-extra';
export {
fs
};

174
ts/smartdaemon.settings.ts Normal file
View File

@ -0,0 +1,174 @@
export const settingsReference = {
name: {
cli: {
short: 'n',
long: 'service',
value: '[name]',
description: 'Service name'
},
mandatory: true
},
description: {
cli: {
short: 'd',
long: 'description',
value: '[description]',
description: 'Service description'
},
default: '{name} service'
},
author: {
cli: {
short: 'k',
long: 'author',
value: '[author]',
description: 'Service author'
}
},
user: {
cli: {
short: 'u',
long: 'user',
value: '[user]',
description: 'User to run service as'
}
},
group: {
cli: {
short: 'g',
long: 'group',
value: '[group]',
description: 'Group to run service as'
}
},
app: {
cli: {
short: 'A',
long: 'app',
value: '[app]',
description: 'Application main file'
},
default: 'main.js'
},
cwd: {
cli: {
short: 'c',
long: 'cwd',
value: '[path]',
description: 'Application cwd'
},
mandatory: true,
fs: true
},
'app.args': {
cli: {
short: 'p',
long: 'app.args',
value: '[args]',
description: 'Application arguments'
}
},
env: {
cli: {
short: 'e',
long: 'env',
value: '[NAME=VALUE]',
description: 'Environment variables to set in systemd job',
function: (v, vars) => {
const _v = v.split('=')
vars[_v[0]] = _v[1]; return vars
},
store: []
}
},
pid: {
cli: {
short: 'P',
long: 'pid',
value: '[file]',
description: 'Service pid file'
},
default: '/var/run/{name}.pid'
},
log: {
cli: {
short: 'L',
long: 'log',
value: '[log]',
description: 'Service log file'
},
default: '/var/log/{name}/log'
},
error: {
cli: {
short: 'E',
long: 'error',
value: '[error]',
description: 'Service error file'
},
default: '/var/log/{name}/error'
},
engine: {
cli: {
short: 'X',
long: 'engine',
value: '[node|forever|pm2]',
description: 'Service engine (node|forever|pm2)'
},
default: 'node',
mandatory: true
},
'engine.bin': {
cli: {
short: 'b',
long: 'engine.bin',
value: '[bin]',
description: 'Service engine bin'
},
default: '/usr/bin/{engine}',
fs: true
},
'engine.args': {
cli: {
short: 't',
long: 'engine.args',
value: '[eargs]',
description: 'Service engine args'
}
},
logrotate: {
cli: {
short: 'l',
long: 'logrotate',
description: 'Add logrotate config'
}
// default false
},
'logrotate.rotate': {
cli: {
short: 'R',
long: 'logrotate.rotate',
value: '[rotate]',
description: 'Logrotate rotations'
},
default: 10
},
'logrotate.frequency': {
cli: {
short: 'F',
long: 'logrotate.frequency',
value: '[frequency]',
description: 'Logrotate frequency'
},
default: 'daily'
},
noroot: {
cli: {
short: 'w',
long: 'noroot',
description: 'Skip check for root permission'
}
}
};

259
ts/smartdaemon.setup.ts Normal file
View File

@ -0,0 +1,259 @@
import * as plugins from './smartdaemon.plugins';
import { logger } from './smartdamon.logging';
import { settingsReference } from './smartdaemon.settings';
import { templateReference } from './smartdaemon.templates';
const smartshellInstance = new plugins.smartshell.Smartshell({
executor: 'bash'
});
/**
* print success message
* @method setup.success
* @param {string} message
*/
export const setupSuccess = (message: string) => {
logger.log('success', `service-systemd: ${message}`);
};
/**
* print error message
* @method setup.fail
* @param {string} message
*/
export const setupFail = (message) => {
logger.log('error', `service-systemd ${message}`);
};
/**
* install the service
* can also be used to update the service
* @method setup.add
* @param {object} settings
* @return {string}
*/
export const setupAdd = async (settings) => {
setupCheckSettings(settings);
const contents = setupParse(settings);
await setupCheckPaths(settings);
await setupAddLog(settings);
await setupAddScripts(settings, contents);
await setupAddLogrotate(settings, contents);
return `service ${settings.name} installed`;
};
/**
* remove the service
* @method setup.remove
* @param {string} service service name
* @return {string}
*/
export const setupRemove = async (service) => {
if (!service) {
throw new Error('Missing argument: service name');
}
const cmd = `systemctl disable ${service}.service`;
logger.log('info', `service-systemd > ${cmd}`);
await smartshellInstance.exec(cmd);
let file = plugins.path.join('/etc/systemd/system', `${service}.service`);
logger.log('info', `service-systemd remove ${file}`);
await plugins.fs.unlink(file);
file = plugins.path.join('/usr/local/bin', `systemd-${service}-start`);
logger.log('info', `service-systemd remove ${file}`);
await plugins.fs.unlink(file);
file = plugins.path.join('/etc/logrotate.d', service);
logger.log('info', `service-systemd remove ${file}`);
await plugins.fs.unlink(file);
return `service ${service} uninstalled`;
};
/**
* check mandatories params and paths
* @method setup.checkSettings
* @param {object} settings
*/
export const setupCheckSettings = (settings) => {
if (!settings.name) {
settings.name = settings.service;
}
delete settings.service;
const paths = [];
for (const optionArg of Object.keys(settingsReference)) {
const option = settingsReference[optionArg];
if (option.mandatory && !settings[optionArg]) {
throw new Error(`Missing ${optionArg} in settings file or arguments`);
}
if (option.fs) {
settings[optionArg] = plugins.path.resolve(settings[optionArg]);
}
}
};
/**
* check mandatories params and paths
* @method setup.checkPaths
* @param {object} settings
*/
export const setupCheckPaths = async (settings) => {
const exists = [];
for (const optionArg of Object.keys(settingsReference)) {
const option = settingsReference[optionArg];
if (option.fs) {
exists.push((async () => {
const exists2 = await plugins.fs.pathExists(settings[optionArg]);
if (!exists2) {
throw Error(`path ${settings[optionArg]} (${optionArg}) does not exists`);
}
})());
}
}
await Promise.all(exists);
};
/**
* merge settings with templates
* create scripts contents
* @method setup.parse
* @param {object} settings
*/
export const setupParse = (settings) => {
if (settings.env) {
settings.envs = '';
for (const key of Object.keys(settings.env)) {
settings.envs += 'Environment=' + key + '=' + settings.env[key] + '\n';
}
}
settings.user = settings.user
? `User=${settings.user}`
: '';
settings.group = settings.group
? `Group=${settings.group}`
: '';
settings.date = (new Date()).toString();
for (const key in settings) {
if (typeof settings[key] === 'string') {
settings[key] = plugins.string.template(settings[key], settings, true);
}
}
const _service = plugins.string.template(templateReference.engines[settings.engine].service, settings, true);
const _start = plugins.string.template(templateReference.engines[settings.engine].start, settings, true);
const _stop = plugins.string.template(templateReference.engines[settings.engine].stop, settings, true);
const _logrotate = settings.logrotate ? plugins.string.template(templateReference.logrotate, settings, true) : '';
return {
service: _service,
start: _start,
stop: _stop,
logrotate: _logrotate
};
};
/**
* write scripts and run commands to install the service
* @method setup.addScripts
* @param {object} settings
* @param {object} contents scripts contents
* @param {string} contents.start
* @param {string} contents.stop
* @param {string} contents.service
*/
export const setupAddScripts = async (settings, contents) => {
const service = plugins.path.join('/etc/systemd/system', `${settings.name}.service`);
const tasks = [];
if (contents.start) {
tasks.push(() => {
const start = plugins.path.join('/usr/local/bin', `systemd-${settings.name}-start`);
logger.log('info', `service-systemd: write file ${start}`);
return plugins.fs.writeFile(start, contents.start, 'utf8');
});
}
if (contents.stop) {
tasks.push(() => {
const stop = plugins.path.join('/usr/local/bin', `systemd-${settings.name}-stop`);
logger.log('info', `service-systemd: write file ${stop}`);
return plugins.fs.writeFile(stop, contents.stop, {
encoding: 'utf8'
});
});
}
if (contents.start || contents.stop) {
tasks.push(() => {
const cmd = `chmod a+x /usr/local/bin/systemd-${settings.name}*`;
logger.log('info', `service-systemd > ${cmd}`);
return smartshellInstance.exec(cmd);
});
}
tasks.push(() => {
logger.log('info', `service-systemd write file ${service}`);
return plugins.fs.writeFile(service, contents.service, 'utf8');
});
tasks.push(() => {
const cmd = `systemctl enable ${service};systemctl daemon-reload`;
logger.log('info', `service-systemd > ${cmd}`);
return smartshellInstance.exec(cmd);
});
for (const task of tasks) {
await task();
}
};
/**
* ensure dirs for log files
* @method setup.addLog
* @param {object} settings
*/
export const setupAddLog = async (settings) => {
const tasks = [];
let dirLog;
let dirError;
if (settings.log) {
dirLog = plugins.path.dirname(settings.log);
logger.log('info', `service-systemd: ensure dir ${dirLog}`);
tasks.push(plugins.fs.ensureDir(dirLog));
}
if (settings.error) {
dirError = plugins.path.dirname(settings.error);
if (dirError !== dirLog) {
logger.log('info', `service-systemd ensure dir ${dirError}`);
tasks.push(plugins.fs.ensureDir(dirError));
}
}
await Promise.all(tasks);
};
/**
* write logrotate conf script
* @method setup.addLogrotate
* @param {object} settings
* @param {object} contents scripts contents
* @param {string} contents.start
* @param {string} contents.stop
* @param {string} contents.service
*/
export const setupAddLogrotate = async (settings, contents) => {
if (!settings.logrotate) {
return;
}
const file = plugins.path.join('/etc/logrotate.d/', settings.name);
logger.log('info', `service-systemd: write logrotate file ${file}`);
await plugins.fs.writeFile(file, contents.logrotate, 'utf8');
};

View File

@ -0,0 +1,75 @@
export const templateReference = {
engines: {
node: {
service:
'# Generated by service-systemd on {{date}}\n' +
'[Unit]\n' +
'Description={description}\n' +
'Requires=network.target\n' +
'After=network.target\n' +
'\n' +
'[Service]\n' +
'Type=simple\n' +
'ExecStart={engine.bin} {engine.args} {app} {app.args}\n' +
'WorkingDirectory={cwd}\n' +
'Restart=on-failure\n' +
'{envs}\n' +
'LimitNOFILE=infinity\n' +
'LimitCORE=infinity\n' +
'StandardInput=null\n' +
'StandardOutput=syslog\n' +
'StandardError=syslog\n' +
'Restart=always\n' +
'SyslogIdentifier={name}\n' +
'PIDFile={pid}\n' +
'{user}\n' +
'{group}\n' +
'[Install]\n' +
'WantedBy=multi-user.target\n'
},
forever: {
service:
'# Generated by service-systemd on {date}\n' +
'[Unit]\n' +
'Description={description}\n' +
'Requires=network.target\n' +
'After=network.target\n' +
'\n' +
'[Service]\n' +
'Type=forking\n' +
'WorkingDirectory={cwd}\n' +
'{envs}\n' +
'ExecStart=/usr/local/bin/systemd-{name}-start\n' +
'ExecStop=/usr/local/bin/systemd-{name}-stop\n' +
'PIDFile={pid}\n' +
'{user}\n' +
'{group}\n' +
'[Install]\n' +
'WantedBy=multi-user.target\n',
start:
'#!/bin/bash\n' +
'{engine.bin} start ' +
'--pidFile {pid} ' +
'--uid {name} ' +
'--sourceDir {cwd} ' +
'-l {log} ' +
'-e {error} ' +
'--append --minUptime 5000 --spinSleepTime 2000 ' +
'{engine.args} ' +
'{app} {app.args}\n' +
'exit 0',
stop: '#!/bin/bash\n' + '{engine.bin} stop {name}\n' + 'exit 0'
}
},
logrotate:
'{log}\n{error} {\n' +
' {logrotate.frequency}\n' +
' rotate {logrotate.rotate}\n' +
' create\n' +
' missingok\n' +
' notifempty\n' +
' compress\n' +
' sharedscripts\n' +
// ' postrotate\n{restart}\n' +
' endscript\n}'
};

15
ts/smartdamon.logging.ts Normal file
View File

@ -0,0 +1,15 @@
import * as plugins from './smartdaemon.plugins';
export const logger = new plugins.smartlog.Smartlog({
logContext: {
company: 'Some Company',
companyunit: 'Some CompanyUnit',
containerName: 'Some Containername',
environment: 'local',
runtime: 'node',
zone: 'gitzone'
},
minimumLogLevel: 'silly'
});
logger.addLogDestination(new plugins.smartlogDestinationLocal.DestinationLocal());