mirror of https://github.com/statping/statping
api routes - fixed services after update issue - refector some methods
parent
b2f07a146f
commit
a6cb01e31a
4
Makefile
4
Makefile
|
@ -1,4 +1,4 @@
|
||||||
VERSION=0.48
|
VERSION=0.49
|
||||||
BINARY_NAME=statup
|
BINARY_NAME=statup
|
||||||
GOPATH:=$(GOPATH)
|
GOPATH:=$(GOPATH)
|
||||||
GOCMD=go
|
GOCMD=go
|
||||||
|
@ -72,7 +72,7 @@ docker-run: docker
|
||||||
docker-dev: clean docker-base
|
docker-dev: clean docker-base
|
||||||
docker build -t hunterlong/statup:dev -f dev/Dockerfile-dev .
|
docker build -t hunterlong/statup:dev -f dev/Dockerfile-dev .
|
||||||
|
|
||||||
docker-push-dev: docker-base docker-dev docker-cypress
|
docker-push-dev:
|
||||||
docker push hunterlong/statup:dev
|
docker push hunterlong/statup:dev
|
||||||
docker tag hunterlong/statup:base hunterlong/statup:base-v$(VERSION)
|
docker tag hunterlong/statup:base hunterlong/statup:base-v$(VERSION)
|
||||||
docker push hunterlong/statup:base
|
docker push hunterlong/statup:base
|
||||||
|
|
|
@ -201,26 +201,26 @@ func (s *Service) AvgUptime() string {
|
||||||
return s.TotalUptime
|
return s.TotalUptime
|
||||||
}
|
}
|
||||||
|
|
||||||
func RemoveArray(u *Service) []*types.Service {
|
func removeService(s int) []*types.Service {
|
||||||
var srvcs []*types.Service
|
slice := CoreApp.DbServices
|
||||||
for _, s := range CoreApp.DbServices {
|
return append(slice[:s], slice[s+1:]...)
|
||||||
if s.Id != u.Id {
|
|
||||||
srvcs = append(srvcs, s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CoreApp.DbServices = srvcs
|
|
||||||
return srvcs
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateService(new *Service) {
|
func (s *Service) index() int {
|
||||||
var services []*types.Service
|
for k, service := range CoreApp.DbServices {
|
||||||
for _, s := range CoreApp.DbServices {
|
if s.Id == service.Id {
|
||||||
if s.Id == new.Id {
|
return k
|
||||||
s = new.Service
|
|
||||||
}
|
}
|
||||||
services = append(services, s)
|
|
||||||
}
|
}
|
||||||
CoreApp.DbServices = services
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateService(service *Service) {
|
||||||
|
service.Close()
|
||||||
|
service.Start()
|
||||||
|
go service.CheckQueue(true)
|
||||||
|
index := service.index()
|
||||||
|
CoreApp.DbServices[index] = service.Service
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *Service) Delete() error {
|
func (u *Service) Delete() error {
|
||||||
|
@ -231,7 +231,7 @@ func (u *Service) Delete() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
u.Close()
|
u.Close()
|
||||||
RemoveArray(u)
|
CoreApp.DbServices = removeService(u.index())
|
||||||
OnDeletedService(u)
|
OnDeletedService(u)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -245,11 +245,6 @@ func (u *Service) Update() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
updateService(u)
|
updateService(u)
|
||||||
CoreApp.SelectAllServices()
|
|
||||||
if err != nil {
|
|
||||||
utils.Log(3, fmt.Sprintf("error selecting all services: %v", err))
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
OnUpdateService(u)
|
OnUpdateService(u)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,8 +27,11 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSelectAllServices(t *testing.T) {
|
func TestSelectAllServices(t *testing.T) {
|
||||||
services, err := CoreApp.SelectAllServices()
|
services := CoreApp.Services()
|
||||||
assert.Nil(t, err)
|
for _, s := range services {
|
||||||
|
service := s.Check(true)
|
||||||
|
assert.True(t, service.Online)
|
||||||
|
}
|
||||||
assert.Equal(t, 5, len(services))
|
assert.Equal(t, 5, len(services))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,11 +49,18 @@ func TestSelectTCPService(t *testing.T) {
|
||||||
|
|
||||||
func TestUpdateService(t *testing.T) {
|
func TestUpdateService(t *testing.T) {
|
||||||
service := SelectService(1)
|
service := SelectService(1)
|
||||||
|
service2 := SelectService(2)
|
||||||
assert.Equal(t, "Google", service.Name)
|
assert.Equal(t, "Google", service.Name)
|
||||||
srv := service
|
assert.Equal(t, "Statup Github", service2.Name)
|
||||||
srv.Name = "Updated Google"
|
assert.True(t, service.Online)
|
||||||
err := srv.Update()
|
assert.True(t, service2.Online)
|
||||||
|
service.Name = "Updated Google"
|
||||||
|
service.Interval = 5
|
||||||
|
err := service.Update()
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
|
// check if updating pointer array shutdown any other service
|
||||||
|
service2 = SelectService(2)
|
||||||
|
assert.True(t, service2.Online)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestUpdateAllServices(t *testing.T) {
|
func TestUpdateAllServices(t *testing.T) {
|
||||||
|
@ -116,21 +126,21 @@ func TestServiceHits(t *testing.T) {
|
||||||
service := SelectService(5)
|
service := SelectService(5)
|
||||||
hits, err := service.Hits()
|
hits, err := service.Hits()
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, int(1), len(hits))
|
assert.Equal(t, int(2), len(hits))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestServiceLimitedHits(t *testing.T) {
|
func TestServiceLimitedHits(t *testing.T) {
|
||||||
service := SelectService(5)
|
service := SelectService(5)
|
||||||
hits, err := service.LimitedHits()
|
hits, err := service.LimitedHits()
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, int(1), len(hits))
|
assert.Equal(t, int(2), len(hits))
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestServiceTotalHits(t *testing.T) {
|
func TestServiceTotalHits(t *testing.T) {
|
||||||
service := SelectService(5)
|
service := SelectService(5)
|
||||||
hits, err := service.TotalHits()
|
hits, err := service.TotalHits()
|
||||||
assert.Nil(t, err)
|
assert.Nil(t, err)
|
||||||
assert.Equal(t, uint64(0x1), hits)
|
assert.Equal(t, uint64(0x2), hits)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestServiceSum(t *testing.T) {
|
func TestServiceSum(t *testing.T) {
|
||||||
|
|
|
@ -9,10 +9,10 @@
|
||||||
"resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz",
|
||||||
"integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=",
|
"integrity": "sha1-p3SS9LEdzHxEajSz4ochr9M8ZCo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3",
|
"chalk": "^1.1.3",
|
||||||
"cli-cursor": "1.0.2",
|
"cli-cursor": "^1.0.2",
|
||||||
"date-fns": "1.29.0",
|
"date-fns": "^1.27.2",
|
||||||
"figures": "1.7.0"
|
"figures": "^1.7.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": {
|
"chalk": {
|
||||||
|
@ -20,11 +20,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "2.2.1",
|
"ansi-styles": "^2.2.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.2",
|
||||||
"has-ansi": "2.0.0",
|
"has-ansi": "^2.0.0",
|
||||||
"strip-ansi": "3.0.1",
|
"strip-ansi": "^3.0.0",
|
||||||
"supports-color": "2.0.0"
|
"supports-color": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
|
@ -39,8 +39,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.3.tgz",
|
||||||
"integrity": "sha512-yYrK+/bgL3hwoRHMZG4r5fyLniCy1pXex5fimtewAY6vE/jsVs8Q37UsEO03tFlcmiLnQ3rBNMaZBYTi/+C1cw==",
|
"integrity": "sha512-yYrK+/bgL3hwoRHMZG4r5fyLniCy1pXex5fimtewAY6vE/jsVs8Q37UsEO03tFlcmiLnQ3rBNMaZBYTi/+C1cw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"debug": "3.1.0",
|
"debug": "^3.1.0",
|
||||||
"lodash.once": "4.1.1"
|
"lodash.once": "^4.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/blob-util": {
|
"@types/blob-util": {
|
||||||
|
@ -63,8 +63,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/@types/chai-jquery/-/chai-jquery-1.1.35.tgz",
|
"resolved": "https://registry.npmjs.org/@types/chai-jquery/-/chai-jquery-1.1.35.tgz",
|
||||||
"integrity": "sha512-7aIt9QMRdxuagLLI48dPz96YJdhu64p6FCa6n4qkGN5DQLHnrIjZpD9bXCvV2G0NwgZ1FAmfP214dxc5zNCfgQ==",
|
"integrity": "sha512-7aIt9QMRdxuagLLI48dPz96YJdhu64p6FCa6n4qkGN5DQLHnrIjZpD9bXCvV2G0NwgZ1FAmfP214dxc5zNCfgQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/chai": "4.0.8",
|
"@types/chai": "*",
|
||||||
"@types/jquery": "3.2.16"
|
"@types/jquery": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/jquery": {
|
"@types/jquery": {
|
||||||
|
@ -97,8 +97,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-2.7.29.tgz",
|
"resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-2.7.29.tgz",
|
||||||
"integrity": "sha512-EkI/ZvJT4hglWo7Ipf9SX+J+R9htNOMjW8xiOhce7+0csqvgoF5IXqY5Ae1GqRgNtWCuaywR5HjVa1snkTqpOw==",
|
"integrity": "sha512-EkI/ZvJT4hglWo7Ipf9SX+J+R9htNOMjW8xiOhce7+0csqvgoF5IXqY5Ae1GqRgNtWCuaywR5HjVa1snkTqpOw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@types/chai": "4.0.8",
|
"@types/chai": "*",
|
||||||
"@types/sinon": "4.0.0"
|
"@types/sinon": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ajv": {
|
"ajv": {
|
||||||
|
@ -106,10 +106,10 @@
|
||||||
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
"resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
|
||||||
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
"integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"co": "4.6.0",
|
"co": "^4.6.0",
|
||||||
"fast-deep-equal": "1.1.0",
|
"fast-deep-equal": "^1.0.0",
|
||||||
"fast-json-stable-stringify": "2.0.0",
|
"fast-json-stable-stringify": "^2.0.0",
|
||||||
"json-schema-traverse": "0.3.1"
|
"json-schema-traverse": "^0.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ansi-escapes": {
|
"ansi-escapes": {
|
||||||
|
@ -132,7 +132,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
|
||||||
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
"integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"safer-buffer": "2.1.2"
|
"safer-buffer": "~2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"assert-plus": {
|
"assert-plus": {
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/async/-/async-2.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/async/-/async-2.4.0.tgz",
|
||||||
"integrity": "sha1-SZAgDxjqW4N8LMT4wDGmmFw4VhE=",
|
"integrity": "sha1-SZAgDxjqW4N8LMT4wDGmmFw4VhE=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"lodash": "4.17.10"
|
"lodash": "^4.14.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"asynckit": {
|
"asynckit": {
|
||||||
|
@ -168,8 +168,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
|
||||||
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
|
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"core-js": "2.5.7",
|
"core-js": "^2.4.0",
|
||||||
"regenerator-runtime": "0.11.1"
|
"regenerator-runtime": "^0.11.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"balanced-match": {
|
"balanced-match": {
|
||||||
|
@ -183,7 +183,7 @@
|
||||||
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
"integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"tweetnacl": "0.14.5"
|
"tweetnacl": "^0.14.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"bluebird": {
|
"bluebird": {
|
||||||
|
@ -196,7 +196,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
|
||||||
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"balanced-match": "1.0.0",
|
"balanced-match": "^1.0.0",
|
||||||
"concat-map": "0.0.1"
|
"concat-map": "0.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -210,7 +210,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/cachedir/-/cachedir-1.3.0.tgz",
|
||||||
"integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==",
|
"integrity": "sha512-O1ji32oyON9laVPJL1IZ5bmwd2cB46VfpxkDequezH+15FDzzVddEyrGEeX4WusDSqKxdyFdDQDEG1yo1GoWkg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"os-homedir": "1.0.2"
|
"os-homedir": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"caseless": {
|
"caseless": {
|
||||||
|
@ -223,9 +223,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz",
|
||||||
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
|
"integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "3.2.1",
|
"ansi-styles": "^3.2.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.5",
|
||||||
"supports-color": "5.4.0"
|
"supports-color": "^5.3.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ansi-styles": {
|
"ansi-styles": {
|
||||||
|
@ -233,7 +233,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
|
||||||
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
"integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"color-convert": "1.9.2"
|
"color-convert": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
|
@ -241,7 +241,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz",
|
||||||
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
|
"integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "3.0.0"
|
"has-flag": "^3.0.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -261,7 +261,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
|
||||||
"integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
|
"integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"restore-cursor": "1.0.1"
|
"restore-cursor": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cli-spinners": {
|
"cli-spinners": {
|
||||||
|
@ -275,7 +275,7 @@
|
||||||
"integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
|
"integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"slice-ansi": "0.0.4",
|
"slice-ansi": "0.0.4",
|
||||||
"string-width": "1.0.2"
|
"string-width": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"co": {
|
"co": {
|
||||||
|
@ -306,7 +306,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
|
||||||
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
|
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"delayed-stream": "1.0.0"
|
"delayed-stream": "~1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"commander": {
|
"commander": {
|
||||||
|
@ -319,7 +319,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz",
|
||||||
"integrity": "sha1-EYe+Tz1M8MBCfUP3Tu8fc1AWFMA=",
|
"integrity": "sha1-EYe+Tz1M8MBCfUP3Tu8fc1AWFMA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"babel-runtime": "6.26.0"
|
"babel-runtime": "^6.18.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"concat-map": {
|
"concat-map": {
|
||||||
|
@ -332,9 +332,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
|
||||||
"integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
|
"integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"inherits": "2.0.3",
|
"inherits": "^2.0.3",
|
||||||
"readable-stream": "2.3.6",
|
"readable-stream": "^2.2.2",
|
||||||
"typedarray": "0.0.6"
|
"typedarray": "^0.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"core-js": {
|
"core-js": {
|
||||||
|
@ -352,11 +352,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
|
||||||
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
"integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"nice-try": "1.0.4",
|
"nice-try": "^1.0.4",
|
||||||
"path-key": "2.0.1",
|
"path-key": "^2.0.1",
|
||||||
"semver": "5.5.0",
|
"semver": "^5.5.0",
|
||||||
"shebang-command": "1.2.0",
|
"shebang-command": "^1.2.0",
|
||||||
"which": "1.3.1"
|
"which": "^1.2.9"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"cypress": {
|
"cypress": {
|
||||||
|
@ -411,7 +411,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
|
||||||
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
"integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"assert-plus": "1.0.0"
|
"assert-plus": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"date-fns": {
|
"date-fns": {
|
||||||
|
@ -444,8 +444,8 @@
|
||||||
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
"integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
|
||||||
"optional": true,
|
"optional": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"jsbn": "0.1.1",
|
"jsbn": "~0.1.0",
|
||||||
"safer-buffer": "2.1.2"
|
"safer-buffer": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"elegant-spinner": {
|
"elegant-spinner": {
|
||||||
|
@ -464,13 +464,13 @@
|
||||||
"integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
|
"integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"duplexer": "0.1.1",
|
"duplexer": "~0.1.1",
|
||||||
"from": "0.1.7",
|
"from": "~0",
|
||||||
"map-stream": "0.1.0",
|
"map-stream": "~0.1.0",
|
||||||
"pause-stream": "0.0.11",
|
"pause-stream": "0.0.11",
|
||||||
"split": "0.3.3",
|
"split": "0.3",
|
||||||
"stream-combiner": "0.0.4",
|
"stream-combiner": "~0.0.4",
|
||||||
"through": "2.3.8"
|
"through": "~2.3.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"execa": {
|
"execa": {
|
||||||
|
@ -478,13 +478,13 @@
|
||||||
"resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz",
|
||||||
"integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
|
"integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"cross-spawn": "6.0.5",
|
"cross-spawn": "^6.0.0",
|
||||||
"get-stream": "3.0.0",
|
"get-stream": "^3.0.0",
|
||||||
"is-stream": "1.1.0",
|
"is-stream": "^1.1.0",
|
||||||
"npm-run-path": "2.0.2",
|
"npm-run-path": "^2.0.0",
|
||||||
"p-finally": "1.0.0",
|
"p-finally": "^1.0.0",
|
||||||
"signal-exit": "3.0.2",
|
"signal-exit": "^3.0.0",
|
||||||
"strip-eof": "1.0.0"
|
"strip-eof": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"executable": {
|
"executable": {
|
||||||
|
@ -492,7 +492,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz",
|
||||||
"integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
|
"integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"pify": "2.3.0"
|
"pify": "^2.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"exit-hook": {
|
"exit-hook": {
|
||||||
|
@ -529,7 +529,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz",
|
||||||
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
|
"integrity": "sha1-lSj0QtqxsihOWLQ3m7GU4i4MQAU=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"fd-slicer": "1.0.1"
|
"fd-slicer": "~1.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -554,7 +554,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.0.1.tgz",
|
||||||
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
|
"integrity": "sha1-i1vL2ewyfFBBv5qwI/1nUPEXfmU=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"pend": "1.2.0"
|
"pend": "~1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"figures": {
|
"figures": {
|
||||||
|
@ -562,8 +562,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
|
"resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
|
||||||
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
|
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.5",
|
||||||
"object-assign": "4.1.1"
|
"object-assign": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"forever-agent": {
|
"forever-agent": {
|
||||||
|
@ -576,9 +576,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
|
"resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz",
|
||||||
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
|
"integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"asynckit": "0.4.0",
|
"asynckit": "^0.4.0",
|
||||||
"combined-stream": "1.0.6",
|
"combined-stream": "1.0.6",
|
||||||
"mime-types": "2.1.19"
|
"mime-types": "^2.1.12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"from": {
|
"from": {
|
||||||
|
@ -592,9 +592,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.1.tgz",
|
||||||
"integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=",
|
"integrity": "sha1-f8DGyJV/mD9X8waiTlud3Y0N2IA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"graceful-fs": "4.1.11",
|
"graceful-fs": "^4.1.2",
|
||||||
"jsonfile": "3.0.1",
|
"jsonfile": "^3.0.0",
|
||||||
"universalify": "0.1.2"
|
"universalify": "^0.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"fs.realpath": {
|
"fs.realpath": {
|
||||||
|
@ -620,7 +620,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
|
||||||
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"assert-plus": "1.0.0"
|
"assert-plus": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"glob": {
|
"glob": {
|
||||||
|
@ -628,12 +628,12 @@
|
||||||
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
|
||||||
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
|
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"fs.realpath": "1.0.0",
|
"fs.realpath": "^1.0.0",
|
||||||
"inflight": "1.0.6",
|
"inflight": "^1.0.4",
|
||||||
"inherits": "2.0.3",
|
"inherits": "2",
|
||||||
"minimatch": "3.0.4",
|
"minimatch": "^3.0.4",
|
||||||
"once": "1.4.0",
|
"once": "^1.3.0",
|
||||||
"path-is-absolute": "1.0.1"
|
"path-is-absolute": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"global-dirs": {
|
"global-dirs": {
|
||||||
|
@ -641,7 +641,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz",
|
||||||
"integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
|
"integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ini": "1.3.5"
|
"ini": "^1.3.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"graceful-fs": {
|
"graceful-fs": {
|
||||||
|
@ -659,8 +659,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz",
|
||||||
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
|
"integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ajv": "5.5.2",
|
"ajv": "^5.1.0",
|
||||||
"har-schema": "2.0.0"
|
"har-schema": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"has-ansi": {
|
"has-ansi": {
|
||||||
|
@ -668,7 +668,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
|
||||||
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
|
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "2.1.1"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"has-flag": {
|
"has-flag": {
|
||||||
|
@ -687,9 +687,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
|
||||||
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
"integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"assert-plus": "1.0.0",
|
"assert-plus": "^1.0.0",
|
||||||
"jsprim": "1.4.1",
|
"jsprim": "^1.2.2",
|
||||||
"sshpk": "1.14.2"
|
"sshpk": "^1.7.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"indent-string": {
|
"indent-string": {
|
||||||
|
@ -697,7 +697,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
|
||||||
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
|
"integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"repeating": "2.0.1"
|
"repeating": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"inflight": {
|
"inflight": {
|
||||||
|
@ -705,8 +705,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
|
||||||
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"once": "1.4.0",
|
"once": "^1.3.0",
|
||||||
"wrappy": "1.0.2"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"inherits": {
|
"inherits": {
|
||||||
|
@ -724,7 +724,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz",
|
||||||
"integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=",
|
"integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ci-info": "1.3.1"
|
"ci-info": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-finite": {
|
"is-finite": {
|
||||||
|
@ -732,7 +732,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz",
|
||||||
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
|
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "1.0.1"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-fullwidth-code-point": {
|
"is-fullwidth-code-point": {
|
||||||
|
@ -740,7 +740,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
|
||||||
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"number-is-nan": "1.0.1"
|
"number-is-nan": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-installed-globally": {
|
"is-installed-globally": {
|
||||||
|
@ -748,8 +748,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz",
|
||||||
"integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
|
"integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"global-dirs": "0.1.1",
|
"global-dirs": "^0.1.0",
|
||||||
"is-path-inside": "1.0.1"
|
"is-path-inside": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-path-inside": {
|
"is-path-inside": {
|
||||||
|
@ -757,7 +757,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz",
|
||||||
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
|
"integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"path-is-inside": "1.0.2"
|
"path-is-inside": "^1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-promise": {
|
"is-promise": {
|
||||||
|
@ -808,11 +808,11 @@
|
||||||
"integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=",
|
"integrity": "sha1-M4WseQGSEwy+Iw6ALsAskhW7/to=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"hoek": "4.2.1",
|
"hoek": "4.x.x",
|
||||||
"isemail": "2.2.1",
|
"isemail": "2.x.x",
|
||||||
"items": "2.1.1",
|
"items": "2.x.x",
|
||||||
"moment": "2.22.2",
|
"moment": "2.x.x",
|
||||||
"topo": "2.0.2"
|
"topo": "2.x.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jsbn": {
|
"jsbn": {
|
||||||
|
@ -841,7 +841,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
|
||||||
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
|
"integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"graceful-fs": "4.1.11"
|
"graceful-fs": "^4.1.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jsprim": {
|
"jsprim": {
|
||||||
|
@ -865,22 +865,22 @@
|
||||||
"resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/listr/-/listr-0.12.0.tgz",
|
||||||
"integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=",
|
"integrity": "sha1-a84sD1YD+klYDqF81qAMwOX6RRo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3",
|
"chalk": "^1.1.3",
|
||||||
"cli-truncate": "0.2.1",
|
"cli-truncate": "^0.2.1",
|
||||||
"figures": "1.7.0",
|
"figures": "^1.7.0",
|
||||||
"indent-string": "2.1.0",
|
"indent-string": "^2.1.0",
|
||||||
"is-promise": "2.1.0",
|
"is-promise": "^2.1.0",
|
||||||
"is-stream": "1.1.0",
|
"is-stream": "^1.1.0",
|
||||||
"listr-silent-renderer": "1.1.1",
|
"listr-silent-renderer": "^1.1.1",
|
||||||
"listr-update-renderer": "0.2.0",
|
"listr-update-renderer": "^0.2.0",
|
||||||
"listr-verbose-renderer": "0.4.1",
|
"listr-verbose-renderer": "^0.4.0",
|
||||||
"log-symbols": "1.0.2",
|
"log-symbols": "^1.0.2",
|
||||||
"log-update": "1.0.2",
|
"log-update": "^1.0.2",
|
||||||
"ora": "0.2.3",
|
"ora": "^0.2.3",
|
||||||
"p-map": "1.2.0",
|
"p-map": "^1.1.1",
|
||||||
"rxjs": "5.5.11",
|
"rxjs": "^5.0.0-beta.11",
|
||||||
"stream-to-observable": "0.1.0",
|
"stream-to-observable": "^0.1.0",
|
||||||
"strip-ansi": "3.0.1"
|
"strip-ansi": "^3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": {
|
"chalk": {
|
||||||
|
@ -888,11 +888,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "2.2.1",
|
"ansi-styles": "^2.2.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.2",
|
||||||
"has-ansi": "2.0.0",
|
"has-ansi": "^2.0.0",
|
||||||
"strip-ansi": "3.0.1",
|
"strip-ansi": "^3.0.0",
|
||||||
"supports-color": "2.0.0"
|
"supports-color": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"log-symbols": {
|
"log-symbols": {
|
||||||
|
@ -900,7 +900,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
|
||||||
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
|
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3"
|
"chalk": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
|
@ -920,14 +920,14 @@
|
||||||
"resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.2.0.tgz",
|
||||||
"integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=",
|
"integrity": "sha1-yoDhd5tOcCZoB+ju0a1qvjmFUPk=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3",
|
"chalk": "^1.1.3",
|
||||||
"cli-truncate": "0.2.1",
|
"cli-truncate": "^0.2.1",
|
||||||
"elegant-spinner": "1.0.1",
|
"elegant-spinner": "^1.0.1",
|
||||||
"figures": "1.7.0",
|
"figures": "^1.7.0",
|
||||||
"indent-string": "3.2.0",
|
"indent-string": "^3.0.0",
|
||||||
"log-symbols": "1.0.2",
|
"log-symbols": "^1.0.2",
|
||||||
"log-update": "1.0.2",
|
"log-update": "^1.0.2",
|
||||||
"strip-ansi": "3.0.1"
|
"strip-ansi": "^3.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": {
|
"chalk": {
|
||||||
|
@ -935,11 +935,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "2.2.1",
|
"ansi-styles": "^2.2.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.2",
|
||||||
"has-ansi": "2.0.0",
|
"has-ansi": "^2.0.0",
|
||||||
"strip-ansi": "3.0.1",
|
"strip-ansi": "^3.0.0",
|
||||||
"supports-color": "2.0.0"
|
"supports-color": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"indent-string": {
|
"indent-string": {
|
||||||
|
@ -952,7 +952,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz",
|
||||||
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
|
"integrity": "sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3"
|
"chalk": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
|
@ -967,10 +967,10 @@
|
||||||
"resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz",
|
||||||
"integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=",
|
"integrity": "sha1-ggb0z21S3cWCfl/RSYng6WWTOjU=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3",
|
"chalk": "^1.1.3",
|
||||||
"cli-cursor": "1.0.2",
|
"cli-cursor": "^1.0.2",
|
||||||
"date-fns": "1.29.0",
|
"date-fns": "^1.27.2",
|
||||||
"figures": "1.7.0"
|
"figures": "^1.7.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": {
|
"chalk": {
|
||||||
|
@ -978,11 +978,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "2.2.1",
|
"ansi-styles": "^2.2.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.2",
|
||||||
"has-ansi": "2.0.0",
|
"has-ansi": "^2.0.0",
|
||||||
"strip-ansi": "3.0.1",
|
"strip-ansi": "^3.0.0",
|
||||||
"supports-color": "2.0.0"
|
"supports-color": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
|
@ -1007,7 +1007,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
|
||||||
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
|
"integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "2.4.1"
|
"chalk": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"log-update": {
|
"log-update": {
|
||||||
|
@ -1015,8 +1015,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz",
|
||||||
"integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=",
|
"integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-escapes": "1.4.0",
|
"ansi-escapes": "^1.0.0",
|
||||||
"cli-cursor": "1.0.2"
|
"cli-cursor": "^1.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"map-stream": {
|
"map-stream": {
|
||||||
|
@ -1035,7 +1035,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
|
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.19.tgz",
|
||||||
"integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
|
"integrity": "sha512-P1tKYHVSZ6uFo26mtnve4HQFE3koh1UWVkp8YUC+ESBHe945xWSoXuHHiGarDqcEZ+whpCDnlNw5LON0kLo+sw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"mime-db": "1.35.0"
|
"mime-db": "~1.35.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimatch": {
|
"minimatch": {
|
||||||
|
@ -1043,7 +1043,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
|
||||||
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"brace-expansion": "1.1.11"
|
"brace-expansion": "^1.1.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"minimist": {
|
"minimist": {
|
||||||
|
@ -1087,7 +1087,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
|
||||||
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
|
"integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"path-key": "2.0.1"
|
"path-key": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
|
@ -1110,7 +1110,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||||
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"wrappy": "1.0.2"
|
"wrappy": "1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"onetime": {
|
"onetime": {
|
||||||
|
@ -1123,10 +1123,10 @@
|
||||||
"resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
|
"resolved": "https://registry.npmjs.org/ora/-/ora-0.2.3.tgz",
|
||||||
"integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
|
"integrity": "sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"chalk": "1.1.3",
|
"chalk": "^1.1.1",
|
||||||
"cli-cursor": "1.0.2",
|
"cli-cursor": "^1.0.2",
|
||||||
"cli-spinners": "0.1.2",
|
"cli-spinners": "^0.1.2",
|
||||||
"object-assign": "4.1.1"
|
"object-assign": "^4.0.1"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chalk": {
|
"chalk": {
|
||||||
|
@ -1134,11 +1134,11 @@
|
||||||
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
|
||||||
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-styles": "2.2.1",
|
"ansi-styles": "^2.2.1",
|
||||||
"escape-string-regexp": "1.0.5",
|
"escape-string-regexp": "^1.0.2",
|
||||||
"has-ansi": "2.0.0",
|
"has-ansi": "^2.0.0",
|
||||||
"strip-ansi": "3.0.1",
|
"strip-ansi": "^3.0.0",
|
||||||
"supports-color": "2.0.0"
|
"supports-color": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"supports-color": {
|
"supports-color": {
|
||||||
|
@ -1189,7 +1189,7 @@
|
||||||
"integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
|
"integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"through": "2.3.8"
|
"through": "~2.3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pend": {
|
"pend": {
|
||||||
|
@ -1223,7 +1223,7 @@
|
||||||
"integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
|
"integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"event-stream": "3.3.4"
|
"event-stream": "~3.3.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"punycode": {
|
"punycode": {
|
||||||
|
@ -1251,13 +1251,13 @@
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
|
||||||
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
"integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"core-util-is": "1.0.2",
|
"core-util-is": "~1.0.0",
|
||||||
"inherits": "2.0.3",
|
"inherits": "~2.0.3",
|
||||||
"isarray": "1.0.0",
|
"isarray": "~1.0.0",
|
||||||
"process-nextick-args": "2.0.0",
|
"process-nextick-args": "~2.0.0",
|
||||||
"safe-buffer": "5.1.2",
|
"safe-buffer": "~5.1.1",
|
||||||
"string_decoder": "1.1.1",
|
"string_decoder": "~1.1.1",
|
||||||
"util-deprecate": "1.0.2"
|
"util-deprecate": "~1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"regenerator-runtime": {
|
"regenerator-runtime": {
|
||||||
|
@ -1270,7 +1270,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
|
||||||
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
|
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"is-finite": "1.0.2"
|
"is-finite": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"request": {
|
"request": {
|
||||||
|
@ -1278,26 +1278,26 @@
|
||||||
"resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
|
"resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz",
|
||||||
"integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
|
"integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"aws-sign2": "0.7.0",
|
"aws-sign2": "~0.7.0",
|
||||||
"aws4": "1.8.0",
|
"aws4": "^1.6.0",
|
||||||
"caseless": "0.12.0",
|
"caseless": "~0.12.0",
|
||||||
"combined-stream": "1.0.6",
|
"combined-stream": "~1.0.5",
|
||||||
"extend": "3.0.2",
|
"extend": "~3.0.1",
|
||||||
"forever-agent": "0.6.1",
|
"forever-agent": "~0.6.1",
|
||||||
"form-data": "2.3.2",
|
"form-data": "~2.3.1",
|
||||||
"har-validator": "5.0.3",
|
"har-validator": "~5.0.3",
|
||||||
"http-signature": "1.2.0",
|
"http-signature": "~1.2.0",
|
||||||
"is-typedarray": "1.0.0",
|
"is-typedarray": "~1.0.0",
|
||||||
"isstream": "0.1.2",
|
"isstream": "~0.1.2",
|
||||||
"json-stringify-safe": "5.0.1",
|
"json-stringify-safe": "~5.0.1",
|
||||||
"mime-types": "2.1.19",
|
"mime-types": "~2.1.17",
|
||||||
"oauth-sign": "0.8.2",
|
"oauth-sign": "~0.8.2",
|
||||||
"performance-now": "2.1.0",
|
"performance-now": "^2.1.0",
|
||||||
"qs": "6.5.2",
|
"qs": "~6.5.1",
|
||||||
"safe-buffer": "5.1.2",
|
"safe-buffer": "^5.1.1",
|
||||||
"tough-cookie": "2.3.4",
|
"tough-cookie": "~2.3.3",
|
||||||
"tunnel-agent": "0.6.0",
|
"tunnel-agent": "^0.6.0",
|
||||||
"uuid": "3.3.2"
|
"uuid": "^3.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"request-progress": {
|
"request-progress": {
|
||||||
|
@ -1305,7 +1305,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/request-progress/-/request-progress-0.3.1.tgz",
|
||||||
"integrity": "sha1-ByHBBdipasayzossia4tXs/Pazo=",
|
"integrity": "sha1-ByHBBdipasayzossia4tXs/Pazo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"throttleit": "0.0.2"
|
"throttleit": "~0.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"restore-cursor": {
|
"restore-cursor": {
|
||||||
|
@ -1313,8 +1313,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
|
||||||
"integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
|
"integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"exit-hook": "1.1.1",
|
"exit-hook": "^1.0.0",
|
||||||
"onetime": "1.1.0"
|
"onetime": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"rx": {
|
"rx": {
|
||||||
|
@ -1351,7 +1351,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
|
||||||
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
"integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"shebang-regex": "1.0.0"
|
"shebang-regex": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"shebang-regex": {
|
"shebang-regex": {
|
||||||
|
@ -1375,7 +1375,7 @@
|
||||||
"integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
|
"integrity": "sha1-zQ7qXmOiEd//frDwkcQTPi0N0o8=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"through": "2.3.8"
|
"through": "2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sshpk": {
|
"sshpk": {
|
||||||
|
@ -1383,15 +1383,15 @@
|
||||||
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
|
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz",
|
||||||
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
|
"integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"asn1": "0.2.4",
|
"asn1": "~0.2.3",
|
||||||
"assert-plus": "1.0.0",
|
"assert-plus": "^1.0.0",
|
||||||
"bcrypt-pbkdf": "1.0.2",
|
"bcrypt-pbkdf": "^1.0.0",
|
||||||
"dashdash": "1.14.1",
|
"dashdash": "^1.12.0",
|
||||||
"ecc-jsbn": "0.1.2",
|
"ecc-jsbn": "~0.1.1",
|
||||||
"getpass": "0.1.7",
|
"getpass": "^0.1.1",
|
||||||
"jsbn": "0.1.1",
|
"jsbn": "~0.1.0",
|
||||||
"safer-buffer": "2.1.2",
|
"safer-buffer": "^2.0.2",
|
||||||
"tweetnacl": "0.14.5"
|
"tweetnacl": "~0.14.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"start-server-and-test": {
|
"start-server-and-test": {
|
||||||
|
@ -1423,7 +1423,7 @@
|
||||||
"integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
|
"integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"duplexer": "0.1.1"
|
"duplexer": "~0.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"stream-to-observable": {
|
"stream-to-observable": {
|
||||||
|
@ -1436,9 +1436,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
|
||||||
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"code-point-at": "1.1.0",
|
"code-point-at": "^1.0.0",
|
||||||
"is-fullwidth-code-point": "1.0.0",
|
"is-fullwidth-code-point": "^1.0.0",
|
||||||
"strip-ansi": "3.0.1"
|
"strip-ansi": "^3.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"string_decoder": {
|
"string_decoder": {
|
||||||
|
@ -1446,7 +1446,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "5.1.2"
|
"safe-buffer": "~5.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"strip-ansi": {
|
"strip-ansi": {
|
||||||
|
@ -1454,7 +1454,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
|
||||||
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ansi-regex": "2.1.1"
|
"ansi-regex": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"strip-eof": {
|
"strip-eof": {
|
||||||
|
@ -1467,7 +1467,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz",
|
||||||
"integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==",
|
"integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"has-flag": "2.0.0"
|
"has-flag": "^2.0.0"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"has-flag": {
|
"has-flag": {
|
||||||
|
@ -1498,7 +1498,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
|
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz",
|
||||||
"integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
|
"integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"os-tmpdir": "1.0.2"
|
"os-tmpdir": "~1.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"topo": {
|
"topo": {
|
||||||
|
@ -1507,7 +1507,7 @@
|
||||||
"integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
|
"integrity": "sha1-zVYVdSU5BXwNwEkaYhw7xvvh0YI=",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"hoek": "4.2.1"
|
"hoek": "4.x.x"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tough-cookie": {
|
"tough-cookie": {
|
||||||
|
@ -1515,7 +1515,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
|
||||||
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
|
"integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"punycode": "1.4.1"
|
"punycode": "^1.4.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tunnel-agent": {
|
"tunnel-agent": {
|
||||||
|
@ -1523,7 +1523,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
"integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"safe-buffer": "5.1.2"
|
"safe-buffer": "^5.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"tweetnacl": {
|
"tweetnacl": {
|
||||||
|
@ -1573,9 +1573,9 @@
|
||||||
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
"resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
|
||||||
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
"integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"assert-plus": "1.0.0",
|
"assert-plus": "^1.0.0",
|
||||||
"core-util-is": "1.0.2",
|
"core-util-is": "1.0.2",
|
||||||
"extsprintf": "1.3.0"
|
"extsprintf": "^1.2.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wait-on": {
|
"wait-on": {
|
||||||
|
@ -1584,11 +1584,11 @@
|
||||||
"integrity": "sha512-hDwJ674+7dfiiK/cxtYCwPxlnjXDjto/pCz1PF02sXUhqCqCWsgvxZln0699PReWqXXgkxqkF6DDo5Rj9sjNvw==",
|
"integrity": "sha512-hDwJ674+7dfiiK/cxtYCwPxlnjXDjto/pCz1PF02sXUhqCqCWsgvxZln0699PReWqXXgkxqkF6DDo5Rj9sjNvw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
"core-js": "2.5.7",
|
"core-js": "^2.4.1",
|
||||||
"joi": "9.2.0",
|
"joi": "^9.2.0",
|
||||||
"minimist": "1.2.0",
|
"minimist": "^1.2.0",
|
||||||
"request": "2.87.0",
|
"request": "^2.78.0",
|
||||||
"rx": "4.1.0"
|
"rx": "^4.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"which": {
|
"which": {
|
||||||
|
@ -1596,7 +1596,7 @@
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||||
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
"integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"isexe": "2.0.0"
|
"isexe": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"wrappy": {
|
"wrappy": {
|
||||||
|
@ -1609,8 +1609,8 @@
|
||||||
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz",
|
"resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.8.0.tgz",
|
||||||
"integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=",
|
"integrity": "sha1-eUUK/yKyqcWkHvVOAtuQfM+/nuI=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"buffer-crc32": "0.2.13",
|
"buffer-crc32": "~0.2.3",
|
||||||
"fd-slicer": "1.0.1"
|
"fd-slicer": "~1.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
166
handlers/api.go
166
handlers/api.go
|
@ -22,14 +22,23 @@ import (
|
||||||
"github.com/hunterlong/statup/types"
|
"github.com/hunterlong/statup/types"
|
||||||
"github.com/hunterlong/statup/utils"
|
"github.com/hunterlong/statup/utils"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"os"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type ApiResponse struct {
|
||||||
|
Object string `json:"type"`
|
||||||
|
Method string `json:"method"`
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Status string `json:"status"`
|
||||||
|
}
|
||||||
|
|
||||||
func ApiIndexHandler(w http.ResponseWriter, r *http.Request) {
|
func ApiIndexHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if !isAPIAuthorized(r) {
|
if !isAPIAuthorized(r) {
|
||||||
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
json.NewEncoder(w).Encode(core.CoreApp)
|
out := core.CoreApp
|
||||||
|
json.NewEncoder(w).Encode(out)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ApiRenewHandler(w http.ResponseWriter, r *http.Request) {
|
func ApiRenewHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -66,6 +75,31 @@ func ApiServiceHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
}
|
}
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
service := core.SelectService(utils.StringInt(vars["id"]))
|
service := core.SelectService(utils.StringInt(vars["id"]))
|
||||||
|
if service == nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(service)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ApiCreateServiceHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !isAPIAuthorized(r) {
|
||||||
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var service *types.Service
|
||||||
|
decoder := json.NewDecoder(r.Body)
|
||||||
|
err := decoder.Decode(&service)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
newService := core.ReturnService(service)
|
||||||
|
_, err = newService.Create()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
json.NewEncoder(w).Encode(service)
|
json.NewEncoder(w).Encode(service)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,12 +109,46 @@ func ApiServiceUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
serv := core.SelectService(utils.StringInt(vars["id"]))
|
service := core.SelectService(utils.StringInt(vars["id"]))
|
||||||
var s *types.Service
|
if service == nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var updatedService *types.Service
|
||||||
decoder := json.NewDecoder(r.Body)
|
decoder := json.NewDecoder(r.Body)
|
||||||
decoder.Decode(&s)
|
decoder.Decode(&updatedService)
|
||||||
serv.Update()
|
service = core.ReturnService(updatedService)
|
||||||
json.NewEncoder(w).Encode(s)
|
err := service.Update()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(service)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ApiServiceDeleteHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !isAPIAuthorized(r) {
|
||||||
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
service := core.SelectService(utils.StringInt(vars["id"]))
|
||||||
|
if service == nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := service.Delete()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
output := ApiResponse{
|
||||||
|
Object: "service",
|
||||||
|
Method: "delete",
|
||||||
|
Id: service.Id,
|
||||||
|
Status: "success",
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(output)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ApiAllServicesHandler(w http.ResponseWriter, r *http.Request) {
|
func ApiAllServicesHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
@ -88,7 +156,7 @@ func ApiAllServicesHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
services, _ := core.CoreApp.SelectAllServices()
|
services := core.CoreApp.Services()
|
||||||
json.NewEncoder(w).Encode(services)
|
json.NewEncoder(w).Encode(services)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,10 +166,62 @@ func ApiUserHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
vars := mux.Vars(r)
|
vars := mux.Vars(r)
|
||||||
user, _ := core.SelectUser(utils.StringInt(vars["id"]))
|
user, err := core.SelectUser(utils.StringInt(vars["id"]))
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
json.NewEncoder(w).Encode(user)
|
json.NewEncoder(w).Encode(user)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ApiUserUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !isAPIAuthorized(r) {
|
||||||
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
user, err := core.SelectUser(utils.StringInt(vars["id"]))
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var updateUser *types.User
|
||||||
|
decoder := json.NewDecoder(r.Body)
|
||||||
|
decoder.Decode(&updateUser)
|
||||||
|
user = core.ReturnUser(updateUser)
|
||||||
|
err = user.Update()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(user)
|
||||||
|
}
|
||||||
|
|
||||||
|
func ApiUserDeleteHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !isAPIAuthorized(r) {
|
||||||
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
vars := mux.Vars(r)
|
||||||
|
user, err := core.SelectUser(utils.StringInt(vars["id"]))
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = user.Delete()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
output := ApiResponse{
|
||||||
|
Object: "user",
|
||||||
|
Method: "delete",
|
||||||
|
Id: user.Id,
|
||||||
|
Status: "success",
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(output)
|
||||||
|
}
|
||||||
|
|
||||||
func ApiAllUsersHandler(w http.ResponseWriter, r *http.Request) {
|
func ApiAllUsersHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
if !isAPIAuthorized(r) {
|
if !isAPIAuthorized(r) {
|
||||||
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
@ -111,7 +231,37 @@ func ApiAllUsersHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
json.NewEncoder(w).Encode(users)
|
json.NewEncoder(w).Encode(users)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ApiCreateUsersHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if !isAPIAuthorized(r) {
|
||||||
|
http.Error(w, http.StatusText(http.StatusUnauthorized), http.StatusUnauthorized)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var user *types.User
|
||||||
|
decoder := json.NewDecoder(r.Body)
|
||||||
|
err := decoder.Decode(&user)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
newUser := core.ReturnUser(user)
|
||||||
|
uId, err := newUser.Create()
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
output := ApiResponse{
|
||||||
|
Object: "user",
|
||||||
|
Method: "create",
|
||||||
|
Id: uId,
|
||||||
|
Status: "success",
|
||||||
|
}
|
||||||
|
json.NewEncoder(w).Encode(output)
|
||||||
|
}
|
||||||
|
|
||||||
func isAPIAuthorized(r *http.Request) bool {
|
func isAPIAuthorized(r *http.Request) bool {
|
||||||
|
if os.Getenv("GO_ENV") == "test" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
if IsAuthenticated(r) {
|
if IsAuthenticated(r) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
// Statup
|
||||||
|
// Copyright (C) 2018. Hunter Long and the project contributors
|
||||||
|
// Written by Hunter Long <info@socialeck.com> and the project contributors
|
||||||
|
//
|
||||||
|
// https://github.com/hunterlong/statup
|
||||||
|
//
|
||||||
|
// The licenses for most software and other practical works are designed
|
||||||
|
// to take away your freedom to share and change the works. By contrast,
|
||||||
|
// the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
// share and change all versions of a program--to make sure it remains free
|
||||||
|
// software for all its users.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package handlers
|
|
@ -111,6 +111,9 @@ func ExecuteResponse(w http.ResponseWriter, r *http.Request, file string, data i
|
||||||
"underscore": func(html string) string {
|
"underscore": func(html string) string {
|
||||||
return utils.UnderScoreString(html)
|
return utils.UnderScoreString(html)
|
||||||
},
|
},
|
||||||
|
"URL": func() string {
|
||||||
|
return r.URL.String()
|
||||||
|
},
|
||||||
})
|
})
|
||||||
t, err = t.Parse(nav)
|
t, err = t.Parse(nav)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -79,14 +79,25 @@ func Router() *mux.Router {
|
||||||
r.Handle("/help", http.HandlerFunc(HelpHandler))
|
r.Handle("/help", http.HandlerFunc(HelpHandler))
|
||||||
r.Handle("/logs", http.HandlerFunc(LogsHandler))
|
r.Handle("/logs", http.HandlerFunc(LogsHandler))
|
||||||
r.Handle("/logs/line", http.HandlerFunc(LogsLineHandler))
|
r.Handle("/logs/line", http.HandlerFunc(LogsLineHandler))
|
||||||
|
|
||||||
|
// SERVICE API Routes
|
||||||
|
r.Handle("/api/services", http.HandlerFunc(ApiAllServicesHandler)).Methods("GET")
|
||||||
|
r.Handle("/api/services", http.HandlerFunc(ApiCreateServiceHandler)).Methods("POST")
|
||||||
|
r.Handle("/api/services/{id}", http.HandlerFunc(ApiServiceHandler)).Methods("GET")
|
||||||
|
r.Handle("/api/services/{id}", http.HandlerFunc(ApiServiceUpdateHandler)).Methods("POST")
|
||||||
|
r.Handle("/api/services/{id}", http.HandlerFunc(ApiServiceDeleteHandler)).Methods("DELETE")
|
||||||
|
|
||||||
|
// USER API Routes
|
||||||
|
r.Handle("/api/users", http.HandlerFunc(ApiAllUsersHandler)).Methods("GET")
|
||||||
|
r.Handle("/api/users", http.HandlerFunc(ApiCreateUsersHandler)).Methods("POST")
|
||||||
|
r.Handle("/api/users/{id}", http.HandlerFunc(ApiUserHandler)).Methods("GET")
|
||||||
|
r.Handle("/api/users/{id}", http.HandlerFunc(ApiUserUpdateHandler)).Methods("POST")
|
||||||
|
r.Handle("/api/users/{id}", http.HandlerFunc(ApiUserDeleteHandler)).Methods("DELETE")
|
||||||
|
|
||||||
|
// Generic API Routes
|
||||||
r.Handle("/api", http.HandlerFunc(ApiIndexHandler))
|
r.Handle("/api", http.HandlerFunc(ApiIndexHandler))
|
||||||
r.Handle("/api/renew", http.HandlerFunc(ApiRenewHandler))
|
r.Handle("/api/renew", http.HandlerFunc(ApiRenewHandler))
|
||||||
r.Handle("/api/checkin/{api}", http.HandlerFunc(ApiCheckinHandler))
|
r.Handle("/api/checkin/{api}", http.HandlerFunc(ApiCheckinHandler))
|
||||||
r.Handle("/api/services", http.HandlerFunc(ApiAllServicesHandler))
|
|
||||||
r.Handle("/api/services/{id}", http.HandlerFunc(ApiServiceHandler)).Methods("GET")
|
|
||||||
r.Handle("/api/services/{id}", http.HandlerFunc(ApiServiceUpdateHandler)).Methods("POST")
|
|
||||||
r.Handle("/api/users", http.HandlerFunc(ApiAllUsersHandler))
|
|
||||||
r.Handle("/api/users/{id}", http.HandlerFunc(ApiUserHandler))
|
|
||||||
r.Handle("/metrics", http.HandlerFunc(PrometheusHandler))
|
r.Handle("/metrics", http.HandlerFunc(PrometheusHandler))
|
||||||
r.NotFoundHandler = http.HandlerFunc(Error404Handler)
|
r.NotFoundHandler = http.HandlerFunc(Error404Handler)
|
||||||
return r
|
return r
|
||||||
|
|
|
@ -61,7 +61,7 @@ func CreateServiceHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
checkType := r.PostForm.Get("check_type")
|
checkType := r.PostForm.Get("check_type")
|
||||||
postData := r.PostForm.Get("post_data")
|
postData := r.PostForm.Get("post_data")
|
||||||
|
|
||||||
service := &core.Service{Service: &types.Service{
|
service := core.ReturnService(&types.Service{
|
||||||
Name: name,
|
Name: name,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
Method: method,
|
Method: method,
|
||||||
|
@ -72,7 +72,7 @@ func CreateServiceHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
Port: port,
|
Port: port,
|
||||||
PostData: postData,
|
PostData: postData,
|
||||||
Timeout: timeout,
|
Timeout: timeout,
|
||||||
}}
|
})
|
||||||
_, err := service.Create()
|
_, err := service.Create()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
utils.Log(3, fmt.Sprintf("Error starting %v check routine. %v", service.Name, err))
|
utils.Log(3, fmt.Sprintf("Error starting %v check routine. %v", service.Name, err))
|
||||||
|
@ -129,7 +129,7 @@ func ServicesUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
timeout, _ := strconv.Atoi(r.PostForm.Get("timeout"))
|
timeout, _ := strconv.Atoi(r.PostForm.Get("timeout"))
|
||||||
checkType := r.PostForm.Get("check_type")
|
checkType := r.PostForm.Get("check_type")
|
||||||
postData := r.PostForm.Get("post_data")
|
postData := r.PostForm.Get("post_data")
|
||||||
serviceUpdate := &core.Service{Service: &types.Service{
|
serviceUpdate := core.ReturnService(&types.Service{
|
||||||
Id: service.Id,
|
Id: service.Id,
|
||||||
Name: name,
|
Name: name,
|
||||||
Domain: domain,
|
Domain: domain,
|
||||||
|
@ -141,12 +141,9 @@ func ServicesUpdateHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
Port: port,
|
Port: port,
|
||||||
PostData: postData,
|
PostData: postData,
|
||||||
Timeout: timeout,
|
Timeout: timeout,
|
||||||
}}
|
})
|
||||||
serviceUpdate.Update()
|
serviceUpdate.Update()
|
||||||
core.CoreApp.SelectAllServices()
|
ExecuteResponse(w, r, "service.html", serviceUpdate)
|
||||||
|
|
||||||
serv = core.SelectService(serviceUpdate.Id)
|
|
||||||
ExecuteResponse(w, r, "service.html", serv)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func ServicesDeleteFailuresHandler(w http.ResponseWriter, r *http.Request) {
|
func ServicesDeleteFailuresHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
<div class="container col-md-7 col-sm-12 mt-md-5 bg-light">
|
<div class="container col-md-7 col-sm-12 mt-md-5 bg-light">
|
||||||
|
|
||||||
{{template "nav"}}
|
{{template "nav" }}
|
||||||
|
|
||||||
<div class="col-12 mt-5">
|
<div class="col-12 mt-5">
|
||||||
|
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<div class="col-8 offset-2 mt-3">
|
<div class="col-8 offset-2 mt-3">
|
||||||
|
|
||||||
<div class="col-6 offset-3 mb-4"><img width="100%" src="/statup.png"></div>
|
<div class="col-md-6 col-sm-12 offset-md-3 mb-4"><img width="100%" src="/statup.png"></div>
|
||||||
|
|
||||||
{{ if .Error }}
|
{{ if .Error }}
|
||||||
<div class="alert alert-danger" role="alert">
|
<div class="alert alert-danger" role="alert">
|
||||||
|
|
|
@ -4,24 +4,25 @@
|
||||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<div class="collapse navbar-collapse" id="navbarText">
|
<div class="collapse navbar-collapse" id="navbarText">
|
||||||
<ul class="navbar-nav mr-auto">
|
<ul class="navbar-nav mr-auto">
|
||||||
<li class="nav-item active">
|
<li class="nav-item{{ if eq URL "/dashboard" }} active{{ end }}">
|
||||||
<a class="nav-link" href="/dashboard">Dashboard</a>
|
<a class="nav-link" href="/dashboard">Dashboard</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item{{ if eq URL "/services" }} active{{ end }}">
|
||||||
<a class="nav-link" href="/services">Services</a>
|
<a class="nav-link" href="/services">Services</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item{{ if eq URL "/users" }} active{{ end }}">
|
||||||
<a class="nav-link" href="/users">Users</a>
|
<a class="nav-link" href="/users">Users</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item{{ if eq URL "/settings" }} active{{ end }}">
|
||||||
<a class="nav-link" href="/settings">Settings</a>
|
<a class="nav-link" href="/settings">Settings</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item{{ if eq URL "/logs" }} active{{ end }}">
|
||||||
<a class="nav-link" href="/logs">Logs</a>
|
<a class="nav-link" href="/logs">Logs</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item{{ if eq URL "/help" }} active{{ end }}">
|
||||||
<a class="nav-link" href="/help">Help</a>
|
<a class="nav-link" href="/help">Help</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
|
@ -10,7 +10,7 @@ type Checkin struct {
|
||||||
CreatedAt time.Time `db:"created_at"`
|
CreatedAt time.Time `db:"created_at"`
|
||||||
Hits int64 `json:"hits"`
|
Hits int64 `json:"hits"`
|
||||||
Last time.Time `json:"last"`
|
Last time.Time `json:"last"`
|
||||||
CheckinInterface
|
CheckinInterface `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CheckinInterface interface {
|
type CheckinInterface interface {
|
||||||
|
|
|
@ -4,24 +4,24 @@ import "time"
|
||||||
|
|
||||||
type Core struct {
|
type Core struct {
|
||||||
Name string `db:"name" json:"name"`
|
Name string `db:"name" json:"name"`
|
||||||
Description string `db:"description" json:"description"`
|
Description string `db:"description" json:"description,omitempty"`
|
||||||
Config string `db:"config" json:"-"`
|
Config string `db:"config" json:"-"`
|
||||||
ApiKey string `db:"api_key" json:"api_key"`
|
ApiKey string `db:"api_key" json:"-"`
|
||||||
ApiSecret string `db:"api_secret" json:"api_secret"`
|
ApiSecret string `db:"api_secret" json:"-"`
|
||||||
Style string `db:"style" json:"-"`
|
Style string `db:"style" json:"style,omitempty"`
|
||||||
Footer string `db:"footer" json:"-"`
|
Footer string `db:"footer" json:"footer,omitempty"`
|
||||||
Domain string `db:"domain" json:"domain,omitempty"`
|
Domain string `db:"domain" json:"domain,omitempty"`
|
||||||
Version string `db:"version" json:"version,omitempty"`
|
Version string `db:"version" json:"version"`
|
||||||
MigrationId int64 `db:"migration_id" json:"-"`
|
MigrationId int64 `db:"migration_id" json:"migration_id,omitempty"`
|
||||||
UseCdn bool `db:"use_cdn" json:"-"`
|
UseCdn bool `db:"use_cdn" json:"using_cdn,omitempty"`
|
||||||
|
DbConnection string `json:"database"`
|
||||||
|
Started time.Time `json:"started_on"`
|
||||||
DbServices []*Service `json:"services,omitempty"`
|
DbServices []*Service `json:"services,omitempty"`
|
||||||
Plugins []Info
|
Plugins []Info `json:"-"`
|
||||||
Repos []PluginJSON
|
Repos []PluginJSON `json:"-"`
|
||||||
AllPlugins []PluginActions
|
AllPlugins []PluginActions `json:"-"`
|
||||||
Communications []AllNotifiers
|
Communications []AllNotifiers `json:"-"`
|
||||||
DbConnection string
|
CoreInterface `json:"-"`
|
||||||
Started time.Time
|
|
||||||
CoreInterface
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type CoreInterface interface {
|
type CoreInterface interface {
|
||||||
|
|
|
@ -8,7 +8,7 @@ type Failure struct {
|
||||||
Method string `db:"method" json:"method,omitempty"`
|
Method string `db:"method" json:"method,omitempty"`
|
||||||
Service int64 `db:"service" json:"service_id"`
|
Service int64 `db:"service" json:"service_id"`
|
||||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||||
FailureInterface
|
FailureInterface `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type FailureInterface interface {
|
type FailureInterface interface {
|
||||||
|
|
|
@ -42,11 +42,11 @@ type Service struct {
|
||||||
Checkins []*Checkin `json:"checkins"`
|
Checkins []*Checkin `json:"checkins"`
|
||||||
Running chan bool `json:"-"`
|
Running chan bool `json:"-"`
|
||||||
Checkpoint time.Time `json:"-"`
|
Checkpoint time.Time `json:"-"`
|
||||||
LastResponse string
|
LastResponse string `json:"-"`
|
||||||
LastStatusCode int
|
LastStatusCode int `json:"status_code"`
|
||||||
LastOnline time.Time
|
LastOnline time.Time `json:"last_online"`
|
||||||
DnsLookup float64 `json:"dns_lookup_time"`
|
DnsLookup float64 `json:"dns_lookup_time"`
|
||||||
ServiceInterface
|
ServiceInterface `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type ServiceInterface interface {
|
type ServiceInterface interface {
|
||||||
|
|
|
@ -11,7 +11,7 @@ type User struct {
|
||||||
ApiSecret string `db:"api_secret" json:"-"`
|
ApiSecret string `db:"api_secret" json:"-"`
|
||||||
Admin bool `db:"administrator" json:"admin"`
|
Admin bool `db:"administrator" json:"admin"`
|
||||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||||
UserInterface
|
UserInterface `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type UserInterface interface {
|
type UserInterface interface {
|
||||||
|
|
Loading…
Reference in New Issue