From e06719635f8ccb1e084387f5514808a5c75e59ac Mon Sep 17 00:00:00 2001 From: Oleg Lavrovsky <31819+loleg@users.noreply.github.com> Date: Fri, 19 Apr 2024 10:18:25 +0200 Subject: [PATCH] Preprod to main for feature release v1.6.3 (#537) --- .circleci/config.yml | 2 +- Makefile | 5 +- demo/restore_db/i18n | Bin 262144 -> 262144 bytes go.mod | 16 +- go.sum | 84 ++++++--- main/www/security.go | 2 +- service/document.go | 2 +- sys/workflow/engine.go | 59 ++++++- sys/workflow/node.go | 4 + sys/workflow/workflow.go | 13 +- test/e2e/cypress/integration/0_powerup.js | 6 +- test/e2e/cypress/integration/1_user.js | 2 +- ui/core/package.json | 6 +- ui/core/src/App.vue | 4 + ui/core/src/DocumentApp.vue | 14 +- ui/core/src/assets/styles/vis-styles.scss | 104 +++++++---- ui/core/src/baseApp.js | 79 +++++---- ui/core/src/components/NameAndDetailInput.vue | 10 +- .../document/VerificationFileEntry.vue | 10 +- ui/core/src/global.js | 2 +- ui/core/src/views/AdminLogin.vue | 6 +- ui/core/src/views/DocumentViewer.vue | 2 +- ui/core/src/views/RegisterRequest.vue | 43 +++-- ui/core/src/views/Workflow.vue | 161 +++++++++++++++++- ui/wallet/package.json | 4 +- ui/yarn.lock | 24 +-- 26 files changed, 512 insertions(+), 152 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0a3662ade..bb54e169b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,7 +4,7 @@ version: 2.1 parameters: golang-tag: type: string - default: "1.21" + default: "1.22" nodejs-ver: type: integer default: 16 diff --git a/Makefile b/Makefile index 2dcfa58fc..756f1b35a 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ SHELL:= /bin/bash DEBUG_FLAG?=false -GO_VERSION=1.21 +GO_VERSION=1.22 ifeq ($(DEBUG), "true") BINDATA_OPTS="-debug" @@ -159,7 +159,8 @@ fmt: .PHONY: test test: generate - go test $(COVERAGE_OPTS) ./main/... ./sys/... ./storage/... ./service/... + go test $(COVERAGE_OPTS) ./main/... ./sys/... ./storage/... ./service/...; ret=$$?; \ + echo $$ret .PHONY: test-integration test-integration: diff --git a/demo/restore_db/i18n b/demo/restore_db/i18n index 863e159ff38e082c4b9737de59c43b9f9aa356ef..6f7160f321f91b922384ba44902a8a76b5828512 100644 GIT binary patch delta 763 zcmZo@5NK!+U}TugD4;*lKtOX#6xXrmeEs=2o zo3c_yNl8JmmA-yTezIOcQGP{gX|Y~@QM$geenw(mN>YA)_IAGv#!c)K6HGTfxFZmm z2sNPq=wy(UnNa>iAYTN?_JHzrflgEcva6u{oj^X&2@IZ4J`2!EGC+1ZlwZEt^y3dU zH6q-TnioI$zz@;MbAPxIas*80 zNMO7N?g1x61=Mj4Q=e%DQRxxi$`D7G=Mm490UlR$zXD3n1!9zrqbZdZK3^qzmZ azyl@@MzQIN4$SK94j-7dJA7b1zz+c0g_}YE delta 592 zcmZo@5NK!+U}TugD4;*lKtO`K)1mx_n@vCdV4EJz%BX4_Mvh-pfq%GBd0==pO!MZ8KaR3(VdO}d%yHpL z{VbRZfj(3KvNu8b20$Ni1KB1}emsyb3}pL2`RjmuK_J@=%Kr-GJ3#qnKp%rbEC9;y z1M+!*Y;!38Adn9XA#Mg=sDJ?1=Cq3wz+nngyW#_;`~2H3FnTC5if#A&$oRXCk#~AvBcu5Cm fPzULG&(FyZ;WEfiS9D-jZ+G~>wB6wY^8tPU$bEi6 diff --git a/go.mod b/go.mod index a8cad3b9c..736ae0484 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/ProxeusApp/proxeus-core -go 1.20 +go 1.21 + +toolchain go1.22.0 require ( github.com/SparkPost/gosparkpost v0.2.0 @@ -30,8 +32,8 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonschema v1.2.0 // indirect go.etcd.io/bbolt v1.3.8 // indirect - golang.org/x/crypto v0.21.0 - golang.org/x/net v0.22.0 + golang.org/x/crypto v0.22.0 + golang.org/x/net v0.24.0 gopkg.in/gavv/httpexpect.v2 v2.16.0 ) @@ -43,7 +45,7 @@ require ( github.com/gorilla/context v1.1.2 // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/klauspost/compress v1.17.3 // indirect - github.com/labstack/echo-contrib v0.15.0 + github.com/labstack/echo-contrib v0.17.0 github.com/mattn/go-colorable v0.1.13 // indirect github.com/sergi/go-diff v1.3.1 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect @@ -59,7 +61,7 @@ require ( require ( github.com/labstack/echo/v4 v4.11.4 - go.mongodb.org/mongo-driver v1.14.0 + go.mongodb.org/mongo-driver v1.15.0 ) require ( @@ -78,7 +80,7 @@ require ( github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-sourcemap/sourcemap v2.1.3+incompatible // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20231101202521-4ca4178f5c7a // indirect @@ -102,7 +104,7 @@ require ( golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/sync v0.5.0 // indirect - golang.org/x/sys v0.18.0 // indirect + golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.16.1 // indirect diff --git a/go.sum b/go.sum index 903b1a184..b1d3c51da 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,5 @@ github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= +github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Sereal/Sereal v0.0.0-20181211220259-509a78ddbda3/go.mod h1:D0JMgToj/WdxCgd30Kc1UcA9E+WdZoJqeVOuYW7iTBM= @@ -7,6 +8,7 @@ github.com/Sereal/Sereal v0.0.0-20200820125258-a016b7cda3f3/go.mod h1:D0JMgToj/W github.com/SparkPost/gosparkpost v0.2.0 h1:yzhHQT7cE+rqzd5tANNC74j+2x3lrPznqPJrxC1yR8s= github.com/SparkPost/gosparkpost v0.2.0/go.mod h1:S9WKcGeou7cbPpx0kTIgo8Q69WZvUmVeVzbD+djalJ4= github.com/VictoriaMetrics/fastcache v1.12.1 h1:i0mICQuojGDL3KblA7wUNlY5lOK6a4bwt3uRKnkZU40= +github.com/VictoriaMetrics/fastcache v1.12.1/go.mod h1:tX04vaqcNoQeGLD+ra5pU5sWkuxnzWhEzLwhP9w653o= github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU= github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/andybalholm/brotli v1.0.2/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y= @@ -15,11 +17,13 @@ github.com/andybalholm/brotli v1.0.6/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHG github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154 h1:2lbe+CPe6eQf2EA3jjLdLFZKGv3cbYqVIDjKnzcyOXg= github.com/asdine/storm v0.0.0-20190418133842-e0f77eada154/go.mod h1:cMLKpjHSP4q0P133fV15ojQgwWWB2IMv+hrFsmBF/wI= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bits-and-blooms/bitset v1.11.0 h1:RMyy2mBBShArUAhfVRZJ2xyBO58KCBCtZFShw3umo6k= github.com/bits-and-blooms/bitset v1.11.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= +github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= github.com/buger/jsonparser v1.0.0/go.mod h1:tgcrVJ81GPSF0mz+0nu1Xaz0fazGPrmmJfJtxjbHhUQ= github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b h1:6+ZFm0flnudZzdSE0JxlhR2hKnGPcNB35BjQf4RYQDY= github.com/c2h5oh/datasize v0.0.0-20220606134207-859f65c6625b/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= @@ -27,21 +31,30 @@ github.com/cention-sany/utf7 v0.0.0-20170124080048-26cad61bd60a/go.mod h1:2GxOXO github.com/cespare/cp v1.1.1 h1:nCb6ZLdB7NRaqsm91JtQTAme2SKJzXVsdPIPkyJr1MU= github.com/cespare/cp v1.1.1/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cockroachdb/errors v1.8.1 h1:A5+txlVZfOqFBDa4mGz2bUWSp0aHElvHX2bKkdbQu+Y= +github.com/cockroachdb/errors v1.8.1/go.mod h1:qGwQn6JmZ+oMjuLwjWzUNqblqk0xl4CVV3SQbGwK7Ac= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f h1:o/kfcElHqOiXqcou5a3rIlMc7oJbMQkeLk0VQJ7zgqY= +github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593 h1:aPEJyR4rPBvDmeyi+l/FS/VtA00IWvjeFvjen1m1l1A= +github.com/cockroachdb/pebble v0.0.0-20230928194634-aa077af62593/go.mod h1:6hk1eMY/u5t+Cf18q5lFMUA1Rc+Sm5I6Ra1QuPyxXCo= github.com/cockroachdb/redact v1.0.8 h1:8QG/764wK+vmEYoOlfobpe12EQcS81ukx/a4hdVMxNw= +github.com/cockroachdb/redact v1.0.8/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 h1:IKgmqgMQlVJIZj19CdocBeSfSaiCbEBZGKODaixqtHM= +github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/consensys/bavard v0.1.13 h1:oLhMLOFGTLdlda/kma4VOJazblc7IM5y5QPd2A/YjhQ= github.com/consensys/bavard v0.1.13/go.mod h1:9ItSMtA/dXMAiL7BG6bqW2m3NdSEObYWoH223nGHukI= github.com/consensys/gnark-crypto v0.12.1 h1:lHH39WuuFgVHONRl3J0LRBtuYdQTumFSDtJF7HpyG8M= github.com/consensys/gnark-crypto v0.12.1/go.mod h1:v2Gy7L/4ZRosZ7Ivs+9SfUDr0f5UlG+EM5t7MPHiLuY= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233 h1:d28BXYi+wUpz1KBmiF9bWrjEMacUEREV6MBi2ODnrfQ= +github.com/crate-crypto/go-ipa v0.0.0-20231025140028-3c0104f4b233/go.mod h1:geZJZH3SzKCqnz5VT0q/DyIG/tvu/dZk+VIfXicupJs= github.com/crate-crypto/go-kzg-4844 v0.7.0 h1:C0vgZRk4q4EZ/JgPfzuSoxdCq3C3mOZMBShovmncxvA= github.com/crate-crypto/go-kzg-4844 v0.7.0/go.mod h1:1kMhvPgI0Ky3yIa+9lFySEBUBXkYxeOi8ZF1sYioxhc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= @@ -51,6 +64,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/deckarep/golang-set/v2 v2.3.1 h1:vjmkvJt/IV27WXPyYQpAh4bRyWJc5Y435D17XQ9QU5A= github.com/deckarep/golang-set/v2 v2.3.1/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= @@ -77,6 +91,7 @@ github.com/fatih/structs v1.0.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= +github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= @@ -85,27 +100,33 @@ github.com/gavv/httpexpect/v2 v2.2.0/go.mod h1:lnd0TqJLrP+wkJk3SFwtrpSlOAZQ7HaaI github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08 h1:f6D9Hr8xV8uYKlyuj8XIruxlh9WjVjdh1gIicAS7ays= github.com/gballet/go-libpcsclite v0.0.0-20191108122812-4678299bea08/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46 h1:BAIP2GihuqhwdILrV+7GJel5lyPV3u1+PgzrWLc0TkE= +github.com/gballet/go-verkle v0.1.1-0.20231031103413-a67434b50f46/go.mod h1:QNpY22eby74jVhqH4WhDLDwxc/vqsern6pW+u2kbkpc= github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-sourcemap/sourcemap v2.1.3+incompatible h1:W1iEw64niKVGogNgBN3ePyLFfuisuzeidWPMPWmECqU= github.com/go-sourcemap/sourcemap v2.1.3+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gogs/chardet v0.0.0-20150115103509-2404f7772561/go.mod h1:Pcatq5tYkCW2Q6yrR2VRHlbHpZ/R4/7qyL1TCF7vl14= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb h1:PBC98N2aIaM3XXiurYmW7fx4GZkL8feAMVq7nEjURHk= @@ -118,6 +139,7 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= github.com/google/pprof v0.0.0-20231101202521-4ca4178f5c7a h1:fEBsGL/sjAuJrgah5XqmmYsTLzJp/TO9Lhy39gkverk= github.com/google/pprof v0.0.0-20231101202521-4ca4178f5c7a/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= @@ -139,21 +161,25 @@ github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZH github.com/h2non/filetype v1.1.3 h1:FKkx9QbD7HR/zjK1Ia5XiBsq9zdLi5Kf3zGyFTAFkGg= github.com/h2non/filetype v1.1.3/go.mod h1:319b3zT68BvV+WRj7cwy856M2ehB3HqNOt6sy1HndBY= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= +github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= +github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= +github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.2.4 h1:jUc4Nk8fm9jZabQuqr2JzednajVmBpC+oiTiXZJEApU= github.com/holiman/uint256 v1.2.4/go.mod h1:EOMSn4q6Nyt9P6efbI3bueV4e1b3dGlUCXeiRV4ng7E= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= +github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imkira/go-interpol v1.0.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/imkira/go-interpol v1.1.0 h1:KIiKr0VSG2CUW1hl1jpiyuzuJeKUUpC8iM1AIE7N1Vk= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= +github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= github.com/jaytaylor/html2text v0.0.0-20190408195923-01ec452cbe43/go.mod h1:CVKlgaMiht+LXvHG173ujK6JUhZXKb2u/BQtjPDIvyk= github.com/jhillyerd/enmime v0.8.0/go.mod h1:MBHs3ugk03NGjMM6PuRynlKf+HA5eSillZ+TRCm73AE= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.13.4/go.mod h1:8dP1Hq4DHOhN9w426knH3Rhby4rFm6D8eO+e+Dq5Gzg= @@ -164,19 +190,21 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/labstack/echo-contrib v0.15.0 h1:9K+oRU265y4Mu9zpRDv3X+DGTqUALY6oRHCSZZKCRVU= -github.com/labstack/echo-contrib v0.15.0/go.mod h1:lei+qt5CLB4oa7VHTE0yEfQSEB9XTJI1LUqko9UWvo4= +github.com/labstack/echo-contrib v0.17.0 h1:xam8wakZOsiQYM14Z0og1xF3w/heWNeDF5AtC5PlX8E= +github.com/labstack/echo-contrib v0.17.0/go.mod h1:mjX5VB3OqJcroIEycptBOY9Hr7rK+unq79W8QFKGNV0= github.com/labstack/echo/v4 v4.11.4 h1:vDZmA+qNeh1pd/cCkEicDMrjtrnMGQ1QFI9gWN1zGq8= github.com/labstack/echo/v4 v4.11.4/go.mod h1:noh7EvLwqDsmh/X/HWKPUl1AjzJrhyptRyEbQJfxen8= github.com/labstack/gommon v0.4.2 h1:F8qTUNXgG1+6WQmqoUWnz8WiEU60mXVVw0P4ht1WRA0= github.com/labstack/gommon v0.4.2/go.mod h1:QlUFxVM+SNXhDL/Z7YhocGIBYOiwB0mXm1+1bAPHPyU= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= +github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= @@ -186,22 +214,24 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= -github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mitchellh/mapstructure v1.4.1 h1:CpVNEelQCZBooIPDn+AR3NpivK/TIKU8bDxdASFVQag= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjUEN1uBnDo34A= +github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/mmcloughlin/addchain v0.4.0 h1:SobOdjm2xLj1KkXN5/n0xTIWyZA2+s99UCY1iPfkHRY= github.com/mmcloughlin/addchain v0.4.0/go.mod h1:A86O+tHqZLMNO4w6ZZ4FlVQEadcoqkyU72HC5wJ4RlU= github.com/mmcloughlin/profile v0.1.1/go.mod h1:IhHD7q1ooxgwTgjxQYkACGA77oFTDdFVejUS1/tS/qU= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8eaE= github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY= +github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= @@ -212,17 +242,25 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= -github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= -github.com/prometheus/common v0.40.0 h1:Afz7EVRqGg2Mqqf4JuF9vdvp1pi220m55Pi9T2JnO4Q= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= +github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos= +github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8= +github.com/prometheus/common v0.50.0 h1:YSZE6aa9+luNa2da6/Tik0q0A5AbR+U003TItK57CPQ= +github.com/prometheus/common v0.50.0/go.mod h1:wHFBCEVWVmHMUpg7pYcOm2QUR/ocQdYSJVQJKnHc3xQ= +github.com/prometheus/procfs v0.13.0 h1:GqzLlQyfsPbaEHaQkO7tbDlriv/4o5Hudv6OXHGKX7o= +github.com/prometheus/procfs v0.13.0/go.mod h1:cd4PFCR54QLnGKPaKGA6l+cfuNXtht43ZKY6tow0Y1g= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/robertkrimen/otto v0.3.0 h1:5RI+8860NSxvXywDY9ddF5HcPw0puRsd8EgbXV0oqRE= github.com/robertkrimen/otto v0.3.0/go.mod h1:uW9yN1CYflmUQYvAMS0m+ZiNo3dMzRUDQJX0jWbzgxw= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rs/cors v1.7.0 h1:+88SsELBHx5r+hZ8TCkggzSstaWNbDvThkVK8H6f9ik= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/saintfish/chardet v0.0.0-20120816061221-3af4cd4741ca/go.mod h1:uugorj2VCxiV1x+LzaIdVa9b4S4qGAcH6cbhh4qVxOU= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -236,6 +274,7 @@ github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKl github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf/go.mod h1:RJID2RhlZKId02nZ62WenDCkgHFerpIOmW0iT7GKmXM= github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA= +github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -245,12 +284,15 @@ github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8 github.com/supranational/blst v0.3.11 h1:LyU6FolezeWAhvQk0k6O/d49jqgO52MSDDfYgbeoEm4= github.com/supranational/blst v0.3.11/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 h1:epCh84lMvA70Z7CTTCmYQn2CKbY8j86K7/FAIr141uY= +github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7/go.mod h1:q4W45IWZaF22tdD+VEXcAWRA037jwmWEB5VWYORlTpc= github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= +github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.9.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= @@ -279,6 +321,7 @@ github.com/xeipuuv/gojsonschema v1.1.0/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4m github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0 h1:6fRhSjgLCkTD3JnJxvaJ4Sj+TYblw757bqYgZaOq5ZY= github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a h1:fZHgsYlfvtyqToslyjUt3VOPF4J7aK/3MPcK7xp3PDk= @@ -296,15 +339,15 @@ github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQ go.etcd.io/bbolt v1.3.0/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.8 h1:xs88BrvEv273UsB79e0hcVrlUWmS0a8upikMFhSyAtA= go.etcd.io/bbolt v1.3.8/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= -go.mongodb.org/mongo-driver v1.14.0 h1:P98w8egYRjYe3XDjxhYJagTokP/H6HzlsnojRgZRd80= -go.mongodb.org/mongo-driver v1.14.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= +go.mongodb.org/mongo-driver v1.15.0 h1:rJCKC8eEliewXjZGf0ddURtl7tTVy1TK3bfl0gkUSLc= +go.mongodb.org/mongo-driver v1.15.0/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -323,8 +366,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -350,8 +393,8 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -389,6 +432,7 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= +gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/sourcemap.v1 v1.0.5 h1:inv58fC9f9J3TK2Y2R1NPntXEn3/wjWHkonhIUODNTI= gopkg.in/sourcemap.v1 v1.0.5/go.mod h1:2RlvNNSMglmRrcvhfuzp4hQHwOtjxlbjX7UPY/GXb78= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= diff --git a/main/www/security.go b/main/www/security.go index 46b10872e..453ccbecb 100644 --- a/main/www/security.go +++ b/main/www/security.go @@ -54,7 +54,7 @@ func redirectToLogin(c echo.Context) error { if isAjax { return echo.ErrUnauthorized } - return c.Redirect(http.StatusTemporaryRedirect, "/login") + return c.Redirect(http.StatusTemporaryRedirect, "/login?redirect="+req.URL.Path) } func getURI(host, url string) string { diff --git a/service/document.go b/service/document.go index 7a486aac3..af0bde3d9 100644 --- a/service/document.go +++ b/service/document.go @@ -87,7 +87,7 @@ func (me *DefaultDocumentService) Edit(auth model.Auth, userId string, formInput if !ok { return ErrUnableToEdit } - if len(fName) >= 80 || !filenameRegex.MatchString(fName) { + if len(fName) > 80 || !filenameRegex.MatchString(fName) { return ErrUnableToEdit } usrDataItem, err := userDataDB().Get(auth, userId) diff --git a/sys/workflow/engine.go b/sys/workflow/engine.go index 1abce6e05..d227fcf4a 100644 --- a/sys/workflow/engine.go +++ b/sys/workflow/engine.go @@ -304,8 +304,9 @@ func (me *Engine) setupNodes(ctx *context) error { if len(me.nodeImpls) == 0 { return ErrNodeImplementationNotProvided } + for _, item := range ctx.flow.Nodes { - item.internalNode = item.isCondition() || item.isWorkflow() + item.internalNode = item.isCondition() || item.isWorkflow() || item.isPlaceholder() if !item.internalNode { if s, ok := me.nodeImpls[item.Type]; ok && s.InitImplFunc != nil { item.new = s.InitImplFunc @@ -319,6 +320,62 @@ func (me *Engine) setupNodes(ctx *context) error { return nil } +func (me *Engine) removeUselessNodes(ctx *context) error { + uselessConnections := make(map[string]*Connection, 0) + + for name, item := range ctx.flow.Nodes { + if !item.isPlaceholder() { + continue + } + + for _, conn := range item.Connections { + correctConnection := conn + currentNode := ctx.flow.Nodes[correctConnection.NodeID] + + for currentNode.isPlaceholder() { + if len(currentNode.Connections) > 0 { + correctConnection = currentNode.Connections[0] + currentNode = ctx.flow.Nodes[correctConnection.NodeID] + } else { + break + } + } + + uselessConnections[name] = correctConnection + } + } + + for _, item := range ctx.flow.Nodes { + if item.isPlaceholder() { + continue + } + + for i := 0; i < len(item.Connections); i++ { + conn := item.Connections[i] + + if val, ok := uselessConnections[conn.NodeID]; ok { + item.Connections[i] = val + } + } + } + + if val, ok := uselessConnections[ctx.flow.Start.NodeID]; ok { + ctx.flow.Start.NodeID = val.NodeID + } + + filteredNodes := make(map[string]*Node, 0) + + for name, item := range ctx.flow.Nodes { + if !item.isPlaceholder() { + filteredNodes[name] = item + } + } + + ctx.flow.Nodes = filteredNodes + + return nil +} + func (me *Engine) execute(nn *Node, considerSteps bool) (proceed bool, err error) { nn.focus() if nn.internalNode { diff --git a/sys/workflow/node.go b/sys/workflow/node.go index 8ce64a368..53e77e0e8 100644 --- a/sys/workflow/node.go +++ b/sys/workflow/node.go @@ -71,6 +71,10 @@ func (n *Node) isWorkflow() bool { return n.Type == "workflow" } +func (n *Node) isPlaceholder() bool { + return n.Type == "placeholder" +} + func (me *Node) getImpl() (NodeIF, error) { //instance is still valid for reuse if me.impl != nil { diff --git a/sys/workflow/workflow.go b/sys/workflow/workflow.go index ed0f0e019..0aace00cb 100644 --- a/sys/workflow/workflow.go +++ b/sys/workflow/workflow.go @@ -73,9 +73,11 @@ func newWorkflow(wf *Workflow, engine *Engine, parent *context) (*context, error if wf == nil { return nil, ErrWorkflowMissing } + if wf.Flow == nil || wf.Flow.Start == nil || wf.Flow.Start.NodeID == "" { return nil, ErrStartNodeMissing } + me := context{ id: "root", flow: wf.Flow, @@ -84,11 +86,18 @@ func newWorkflow(wf *Workflow, engine *Engine, parent *context) (*context, error engine: engine, } - err := engine.setupNodes(&me) + err := engine.removeUselessNodes(&me) if err != nil { return nil, err } + + err = engine.setupNodes(&me) + if err != nil { + return nil, err + } + me.start() + return &me, nil } @@ -122,6 +131,8 @@ func (me *context) resolve(n *Node) error { return err } return me.resolve(nn) + } else if n.isPlaceholder() { + return nil } else if n.isWorkflow() { return me.stepIntoWorkflow(n) } diff --git a/test/e2e/cypress/integration/0_powerup.js b/test/e2e/cypress/integration/0_powerup.js index ab5d3059c..fa9f384a4 100644 --- a/test/e2e/cypress/integration/0_powerup.js +++ b/test/e2e/cypress/integration/0_powerup.js @@ -17,6 +17,10 @@ describe(`Power up on ${url}`, () => { it('should bring to home page after saving with default values', () => { cy.get('button.btn-primary').eq(2).click() + + cy.location('pathname', { + timeout: 60000 + }).should('eq', '/'); }) -}) +}) \ No newline at end of file diff --git a/test/e2e/cypress/integration/1_user.js b/test/e2e/cypress/integration/1_user.js index b3d127cad..6f2682d05 100644 --- a/test/e2e/cypress/integration/1_user.js +++ b/test/e2e/cypress/integration/1_user.js @@ -177,7 +177,7 @@ describe(`User signup & login at ${url}`, () => { it('should remove account and logout when clicking again', () => { cy.get('.btn-danger').click() - cy.url().should('eq', `${url}/login`) + cy.url().should('eq', `${url}/login?redirect=%2Fadmin%2Fworkflow`) }) }) }) diff --git a/ui/core/package.json b/ui/core/package.json index 0e25bf920..85e00509b 100644 --- a/ui/core/package.json +++ b/ui/core/package.json @@ -24,7 +24,7 @@ "bootstrap-vue": "2.0.0-rc.12", "brace": "^0.11.1", "codemirror": "^5.39.2", - "core-js": "^3.36.0", + "core-js": "^3.36.1", "ethereumjs-util": "^7.1.5", "flatpickr": "^4.5.1", "font-awesome": "^4.7.0", @@ -38,7 +38,7 @@ "js-sha3": "^0.9.3", "moment": "^2.30.1", "popper.js": "^1.14.4", - "sass": "^1.72.0", + "sass": "^1.75.0", "sortablejs": "^1.15.2", "tippy.js": "^6.3.7", "underscore": "^1.8.3", @@ -67,7 +67,7 @@ "vue-range-slider": "^0.6.0", "vue-router": "^3.0.1", "vue-scrollto": "^2.11.0", - "vue-select": "^2.4.0", + "vue-select": "^3.20.3", "vue-tour": "^2.0.0", "vuedraggable": "^2.16.0", "vuep": "^0.8.1", diff --git a/ui/core/src/App.vue b/ui/core/src/App.vue index 52d9a9456..24c9aa53d 100644 --- a/ui/core/src/App.vue +++ b/ui/core/src/App.vue @@ -50,6 +50,10 @@ export default { window.$root = this.$root this.$root.$on('service-on', this.onServiceOn) this.$root.$on('service-off', this.onServiceOff) + + if (!this.app.checkUserHasSession()) { + this.app.redirectToLogin(window.location.pathname) + } }, beforeDestroy () { this.$root.$off('service-on', this.onServiceOn) diff --git a/ui/core/src/DocumentApp.vue b/ui/core/src/DocumentApp.vue index 9eb4c6dde..9fe4b6f55 100644 --- a/ui/core/src/DocumentApp.vue +++ b/ui/core/src/DocumentApp.vue @@ -24,6 +24,10 @@ export default { created () { this.$root.$on('service-on', this.onServiceOn) this.$root.$on('service-off', this.onServiceOff) + + if (!this.app.checkUserHasSession()) { + this.app.redirectToLogin(window.location.pathname) + } }, beforeDestroy () { this.$root.$off('service-on', this.onServiceOn) @@ -107,13 +111,19 @@ export default { color: $primary; } + body { + overflow: hidden; + } + .navbar h1 { margin-bottom: 0; } .app-main { - @media (max-width: 767px) { - max-width: 100% !important; + max-width: calc(100% - 265px); + + @media (max-width: 979px) { + max-width: calc(100% - 80px); } } diff --git a/ui/core/src/assets/styles/vis-styles.scss b/ui/core/src/assets/styles/vis-styles.scss index 3b05f1212..6c75aa171 100644 --- a/ui/core/src/assets/styles/vis-styles.scss +++ b/ui/core/src/assets/styles/vis-styles.scss @@ -23,7 +23,9 @@ z-index: 10001; } -.flow-chart-main nav, aside, footer { +.flow-chart-main nav, +aside, +footer { background: #dddddd; } @@ -54,29 +56,30 @@ margin: 0; } -.flow-chart-main aside .table > tbody > tr > td, -.flow-chart-main aside .table > thead > tr > th { +.flow-chart-main aside .table>tbody>tr>td, +.flow-chart-main aside .table>thead>tr>th { border-color: #cccccc; } -.flow-chart-main aside .table > thead > tr > th { +.flow-chart-main aside .table>thead>tr>th { text-align: right; } -.flow-chart-main aside .table > tbody > tr > td { +.flow-chart-main aside .table>tbody>tr>td { padding: 0; } -.flow-chart-main aside .table > tbody > tr > td.action { +.flow-chart-main aside .table>tbody>tr>td.action { width: 30px; } -.flow-chart-main aside .table > tbody > tr > td input { +.flow-chart-main aside .table>tbody>tr>td input { width: 100%; height: 30px; } -.flow-chart-main aside .table > tbody > tr > td a, aside .table > tbody > tr > td span { +.flow-chart-main aside .table>tbody>tr>td a, +aside .table>tbody>tr>td span { display: block; height: 30px; width: 188px; @@ -87,18 +90,18 @@ padding: 0 5px; } -.flow-chart-main aside .table > tbody > tr > td span { +.flow-chart-main aside .table>tbody>tr>td span { background: #428bca; color: #ffffff; } -.flow-chart-main aside .table > tbody > tr > td.action a { +.flow-chart-main aside .table>tbody>tr>td.action a { text-align: center; padding: 0; width: auto; } -.flow-chart-main aside .table > tbody > tr > td.delete a { +.flow-chart-main aside .table>tbody>tr>td.delete a { width: auto; font-size: 21px; font-weight: bold; @@ -109,7 +112,7 @@ padding: 0; } -.flow-chart-main aside .table > tbody > tr > td.delete a:hover { +.flow-chart-main aside .table>tbody>tr>td.delete a:hover { color: #000000; text-decoration: none; cursor: pointer; @@ -133,7 +136,8 @@ position: absolute; height: 100%; width: 100%; - -webkit-transition: height 2s; /* Safari */ + -webkit-transition: height 2s; + /* Safari */ transition: width 2s; } @@ -233,11 +237,13 @@ width: 25px; } -.flow-chart-main .step-inner:hover .delete, .result-inner:hover .delete { +.flow-chart-main .step-inner:hover .delete, +.result-inner:hover .delete { opacity: 0.85; } -.flow-chart-main .step-inner .delete, .result-inner .delete { +.flow-chart-main .step-inner .delete, +.result-inner .delete { border-radius: 100px; position: absolute; top: -8px; @@ -252,11 +258,15 @@ transition: opacity 200ms ease-in-out; } -.flow-chart-main .step-inner .delete.btn-default, .result-inner .delete.btn-default { +.flow-chart-main .step-inner .delete.btn-default, +.result-inner .delete.btn-default { border-color: #5d85a1; } -.flow-chart-main .step-inner .delete:hover, .step-inner .delete:active, .result-inner .delete:hover, .result-inner .delete:active { +.flow-chart-main .step-inner .delete:hover, +.step-inner .delete:active, +.result-inner .delete:hover, +.result-inner .delete:active { opacity: 1.0; outline: none; } @@ -270,7 +280,11 @@ position: relative; } -.flow-chart-main .editable select, .editable input, .editable textarea, .editable label, .editable .placeholder { +.flow-chart-main .editable select, +.editable input, +.editable textarea, +.editable label, +.editable .placeholder { position: absolute; z-index: 999; } @@ -318,16 +332,21 @@ top: -100px; } -.flow-chart-main .contact > span, .name > span, .desc > span { +.flow-chart-main .contact>span, +.name>span, +.desc>span { display: block; color: #333333; } -.flow-chart-main .contact > span:hover, .name > span:hover, .desc > span:hover { +.flow-chart-main .contact>span:hover, +.name>span:hover, +.desc>span:hover { text-decoration: none; } -.flow-chart-main .contact, .name { +.flow-chart-main .contact, +.name { height: 37px; float: left; } @@ -336,7 +355,7 @@ border-right: solid 1px rgba(0, 0, 0, 0.13); } -.flow-chart-main .contact > span { +.flow-chart-main .contact>span { font-size: 24px; text-align: center; line-height: 42px; @@ -351,7 +370,7 @@ max-width: 70px; } -.flow-chart-main .name > span { +.flow-chart-main .name>span { font-size: 11px; line-height: 37px; text-indent: 5px; @@ -361,7 +380,7 @@ text-overflow: ellipsis; } -.flow-chart-main .name > span:hover { +.flow-chart-main .name>span:hover { cursor: text; } @@ -389,7 +408,7 @@ margin: 4px 0; } -.flow-chart-main .desc > a { +.flow-chart-main .desc>a { position: absolute; top: 0px; left: 0px; @@ -453,7 +472,8 @@ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); } -.flow-chart-main .poppanel .poppanel-title, .poppanel .poppanel-footer { +.flow-chart-main .poppanel .poppanel-title, +.poppanel .poppanel-footer { padding: 8px 14px; margin: 0; font-size: 14px; @@ -512,12 +532,12 @@ overflow: auto; } -.flow-chart-main .poppanel .poppanel-content .table > tbody > tr > td { +.flow-chart-main .poppanel .poppanel-content .table>tbody>tr>td { padding: 0; line-height: normal; } -.flow-chart-main .poppanel .poppanel-content .table > tbody > tr > td label { +.flow-chart-main .poppanel .poppanel-content .table>tbody>tr>td label { width: 150px; margin: 0; position: relative; @@ -529,16 +549,16 @@ text-overflow: ellipsis; } -.flow-chart-main .poppanel .poppanel-content .table > tbody > tr > td label:hover { +.flow-chart-main .poppanel .poppanel-content .table>tbody>tr>td label:hover { cursor: pointer; } -.flow-chart-main .poppanel .poppanel-content .table > tbody > tr > td label input { +.flow-chart-main .poppanel .poppanel-content .table>tbody>tr>td label input { position: absolute; left: -100px; } -.flow-chart-main .poppanel .poppanel-content .table > tbody > tr > td label .glyphicon { +.flow-chart-main .poppanel .poppanel-content .table>tbody>tr>td label .glyphicon { min-width: 16px; } @@ -611,7 +631,8 @@ font-size: 11px; } -.flow-chart-main .key label svg, .key label img { +.flow-chart-main .key label svg, +.key label img { position: absolute; top: 50%; left: 0px; @@ -754,13 +775,13 @@ input.flow-chart-finder-input { min-height: 54px; } -.fci-node > table { +.fci-node>table { width: 100%; max-width: 100%; table-layout: fixed; } -.flow-chart-node-inner > .fci-node { +.flow-chart-node-inner>.fci-node { width: 100%; } @@ -816,7 +837,8 @@ input.flow-chart-finder-input { margin-top: -4px; } -.wfchart-snavi .wfc-snn .flow-chart-node.flow-chart-node-condition { +.wfchart-snavi .wfc-snn .flow-chart-node.flow-chart-node-condition, +.wfchart-snavi .wfc-snn .flow-chart-node.flow-chart-node-placeholder { .flow-chart-node-inner { padding: $spacer * 0.5; } @@ -876,6 +898,10 @@ input.flow-chart-finder-input { color: #f0a30a; } +.fcn-placeholder { + color: #f5e203; +} + .fcn-form { color: #0eaa64; } @@ -946,7 +972,9 @@ input.flow-chart-finder-input { border: 1px solid lightgray; } -.vis-manipulation, .vis-edit-mode, .vis-close { +.vis-manipulation, +.vis-edit-mode, +.vis-close { display: none !important; } @@ -964,7 +992,9 @@ input.flow-chart-finder-input { color: red; } -.wfvis-ui-delete > table, .wfvis-ui-delete > table td, .wfvis-ui-delete > table tr { +.wfvis-ui-delete>table, +.wfvis-ui-delete>table td, +.wfvis-ui-delete>table tr { border: none; } diff --git a/ui/core/src/baseApp.js b/ui/core/src/baseApp.js index 024cbaf2b..82c1bc6bd 100644 --- a/ui/core/src/baseApp.js +++ b/ui/core/src/baseApp.js @@ -1,7 +1,7 @@ import WalletInterface from './libs/WalletAdapter' export default { - data () { + data() { return { me: null, meta: null, @@ -16,7 +16,7 @@ export default { } }, methods: { - makeURL (uri) { + makeURL(uri) { let origin = location.origin if (/.*\/$/.test(origin)) { origin = origin.substring(0, origin.length - 1) @@ -26,7 +26,7 @@ export default { } return origin + uri }, - isLangAvailable (lang) { + isLangAvailable(lang) { if (this.meta && this.meta.activeLangs) { for (let i = 0; i < this.meta.activeLangs.length; i++) { if (this.meta.activeLangs[i] && @@ -37,37 +37,37 @@ export default { } return false }, - userIsRoot () { + userIsRoot() { if (this.me) { return this.me.role === 100 } return false }, - userIsSuperAdmin () { + userIsSuperAdmin() { if (this.me) { return this.me.role > 10 } return false }, - userIsAdminOrHigher () { + userIsAdminOrHigher() { if (this.me) { return this.me.role >= 10 } return false }, - userIsCreatorOrHigher () { + userIsCreatorOrHigher() { if (this.me) { return this.me.role >= 7 } return false }, - userIsUserOrHigher () { + userIsUserOrHigher() { if (this.me) { return this.me.role >= 5 } return false }, - amIWriteGrantedFor (item) { + amIWriteGrantedFor(item) { try { // check authority if (this.me.role >= 100) { @@ -110,7 +110,7 @@ export default { } catch (e) {} return false }, - handleError (o) { + handleError(o) { if (this.isConToServerLostError(o)) { // couldn't reach the server if (!this.intervalID) { @@ -119,7 +119,7 @@ export default { } } }, - isConToServerLostError (o) { + isConToServerLostError(o) { let txt = '' try { txt = o.data || o.request.response || o.request.responseText @@ -127,7 +127,7 @@ export default { return (o.request && !o.response) || (window.webpackHotUpdate && /^.*\(ECONNREFUSED\)\.$/m.test(txt)) }, - pingService () { + pingService() { console.log('pingService') axios.get('/api/config').then((r) => { if (r.data) { @@ -142,10 +142,10 @@ export default { this.handleError(err) }) }, - getSelectedLang () { + getSelectedLang() { return this.$cookie.get('lang') || this.fallbackLang() }, - setSelectedLang (lang) { + setSelectedLang(lang) { if (lang) { this.$cookie.set('lang', lang, { expires: '1Y' @@ -156,16 +156,27 @@ export default { this.$i18n.set(this.fallbackLang()) } }, - checkUserHasSession () { + checkUserHasSession() { return !!localStorage.getItem('userhassession') }, - initUserHasSession () { + initUserHasSession(redirectTo) { localStorage.setItem('userhassession', true) + + const hasRequestedRedirect = new URLSearchParams(window.location.search).get('redirect') + + if (hasRequestedRedirect && hasRequestedRedirect.startsWith('/')) { + window.location.href = hasRequestedRedirect + } else if (redirectTo) { + window.location.href = redirectTo + } }, - deleteUserHasSession () { + deleteUserHasSession() { localStorage.removeItem('userhassession') }, - loadMe (clb) { + redirectToLogin (backUrl) { + window.location.href = `/login?redirect=${backUrl}` + }, + loadMe(clb) { if (!this.checkUserHasSession()) { return } @@ -185,7 +196,7 @@ export default { this.handleError(err) }) }, - loadLastExportResults (clb, delParams) { + loadLastExportResults(clb, delParams) { let url = '/api/export/results' if (delParams) { url += '?' + delParams @@ -204,7 +215,7 @@ export default { this.handleError(err) }) }, - loadLastImportResults (clb, delParams) { + loadLastImportResults(clb, delParams) { let url = '/api/import/results' if (delParams) { url += '?' + delParams @@ -223,7 +234,7 @@ export default { this.handleError(err) }) }, - exportData (params, cb, url, name) { + exportData(params, cb, url, name) { if (!url) { url = '/api/export?include=' + params } else { @@ -278,7 +289,7 @@ export default { }) }) }, - importData (file, skipExisting, cb) { + importData(file, skipExisting, cb) { if (!file) { return } @@ -316,10 +327,10 @@ export default { this.handleError(err) }) }, - async validateSessionCookie () { + async validateSessionCookie() { return axios.get('/api/session/validate') }, - loadMeta (clb) { + loadMeta(clb) { axios.get('/api/i18n/meta').then((response) => { this.meta = response.data if (this.meta && this.meta.langFallback) { @@ -338,7 +349,7 @@ export default { this.handleError(err) }) }, - updateLangLabel () { + updateLangLabel() { if (this.meta && this.meta.activeLangs) { for (let i = 0; i < this.meta.activeLangs.length; i++) { this.meta.activeLangs[i].label = this.$t( @@ -347,13 +358,13 @@ export default { return this.meta.activeLangs } }, - fallbackLang () { + fallbackLang() { if (this.meta) { return this.meta.langFallback } return null }, - getSelectedLangIndex () { + getSelectedLangIndex() { if (this.meta && this.meta.activeLangs) { for (let i = 0; i < this.meta.activeLangs.length; i++) { if (this.meta.activeLangs[i].Code === this.getSelectedLang()) { @@ -363,7 +374,7 @@ export default { } return null }, - reloadI18n () { + reloadI18n() { axios.get('/api/i18n/all').then( (response) => { this.$i18n.add(this.getSelectedLang(), response.data) @@ -374,7 +385,7 @@ export default { this.handleError(err) }) }, - loadConfig () { + loadConfig() { axios.get('/api/config').then(r => { if (r.data) { this.setConfig(r.data) @@ -383,7 +394,7 @@ export default { this.handleError(err) }) }, - async setConfig (d) { + async setConfig(d) { if (d.blockchainNet) { this.blockchainNet = d.blockchainNet } @@ -399,7 +410,7 @@ export default { await this.wallet.validateUserNetwork(() => this.$root.$emit('service-off'), () => this.$root.$emit('service-on')) } }, - acknowledgeFirstLogin () { + acknowledgeFirstLogin() { // Show the following overlays starting now (they can be delayed) localStorage.setItem('showFirstLoginMessageOn-documents', new Date()) if (this.userIsCreatorOrHigher()) { @@ -409,13 +420,13 @@ export default { }, computed: { app: { - get () { + get() { return this.$root.$children[0] }, - set (a) {} + set(a) {} } }, - created () { + created() { const tmpLangToPreventFromWarnings = 'en' this.$i18n.fallback(tmpLangToPreventFromWarnings) this.$i18n.set(tmpLangToPreventFromWarnings) diff --git a/ui/core/src/components/NameAndDetailInput.vue b/ui/core/src/components/NameAndDetailInput.vue index 3047cffde..279b633fa 100644 --- a/ui/core/src/components/NameAndDetailInput.vue +++ b/ui/core/src/components/NameAndDetailInput.vue @@ -2,10 +2,10 @@
- +
- +
@@ -32,6 +32,12 @@ export default { displayPrice: { type: Boolean, default: false + }, + maxNameLength: { + type: Number + }, + maxDetailLength: { + type: Number } } } diff --git a/ui/core/src/components/document/VerificationFileEntry.vue b/ui/core/src/components/document/VerificationFileEntry.vue index 2b5d8c181..cff6ad654 100644 --- a/ui/core/src/components/document/VerificationFileEntry.vue +++ b/ui/core/src/components/document/VerificationFileEntry.vue @@ -295,7 +295,13 @@ export default { this.isFileInvalidated = false - const result = await this.wallet().verifyHash(this.hash) + let result + + try { + result = await this.wallet().verifyHash(this.hash) + } catch (e) { + throw new Error('UNABLE_TO_VERIFY_HASH') + } const transaction = await this.wallet().web3.eth.getTransaction(result) this.creator = transaction.from @@ -330,6 +336,8 @@ export default { if (this.wallet().isPublicRPCUsing) { this.errorPublicRPC = true + } else if (e?.message === 'UNABLE_TO_VERIFY_HASH') { + this.validationException = false } else { this.errorValidating = true } diff --git a/ui/core/src/global.js b/ui/core/src/global.js index b17d2a555..47d75a9ec 100644 --- a/ui/core/src/global.js +++ b/ui/core/src/global.js @@ -61,7 +61,7 @@ Vue.use(vuexI18n.plugin, store, { window.redirectToLogin = function () { if (/^\/p\//.test(location.pathname) === false) { - window.location.href = '/login' + window.location.href = `/login?redirect=${window.location.pathname}` } } diff --git a/ui/core/src/views/AdminLogin.vue b/ui/core/src/views/AdminLogin.vue index e9eedafd4..68f939c56 100644 --- a/ui/core/src/views/AdminLogin.vue +++ b/ui/core/src/views/AdminLogin.vue @@ -94,9 +94,8 @@ export default { this.pwlogin = true if (this.checkTermsAndConditions()) { axios.post('/api/login', { email: this.email, password: this.password }).then(res => { - this.app.initUserHasSession() this.hasError = false - window.location = res.data.location || '/admin/workflow' + this.app.initUserHasSession(res.data.location || '/admin/workflow') }, (err) => { this.app.deleteUserHasSession() this.app.handleError(err) @@ -180,8 +179,7 @@ export default { this.challenge = '' if (res.status >= 200 && res.status <= 299) { - this.app.initUserHasSession() - window.location = res.data.location || '/admin/workflow' + this.app.initUserHasSession(res.data.location || '/admin/workflow') } else { this.app.deleteUserHasSession() this.walletErrorMessage = this.$t('Could not verify signature.') diff --git a/ui/core/src/views/DocumentViewer.vue b/ui/core/src/views/DocumentViewer.vue index 92a97078c..5b7ee0331 100644 --- a/ui/core/src/views/DocumentViewer.vue +++ b/ui/core/src/views/DocumentViewer.vue @@ -13,7 +13,7 @@
- +

diff --git a/ui/core/src/views/RegisterRequest.vue b/ui/core/src/views/RegisterRequest.vue index e340a0fc0..539573a2e 100644 --- a/ui/core/src/views/RegisterRequest.vue +++ b/ui/core/src/views/RegisterRequest.vue @@ -147,36 +147,47 @@ export default { await window.ethereum.enable() await this.app.wallet.wallet.setupDefaultAccount() } catch (e) { - console.log(e) + this.app.deleteUserHasSession() this.walletErrorMessage = this.$t('Please grant access to MetaMask.') return } } else { + this.app.deleteUserHasSession() this.walletErrorMessage = this.$t('Please grant access to MetaMask.') return } + this.account = this.app.wallet.getCurrentAddress() + if (this.account === undefined) { + this.app.deleteUserHasSession() this.walletErrorMessage = this.$t('Please sign in to MetaMask.') return } + if (this.checkTermsAndConditions()) { - this.app.wallet.signMessage(this.challenge, this.account).then((signature) => { - axios.post('/api/login', { signature }).then((res) => { - this.challenge = '' - if (res.status >= 200 && res.status <= 299) { - window.location = res.data.location || '/admin/workflow' - } else { - this.walletErrorMessage = this.$t('Could not verify signature.') - } - }, (err) => { - this.challenge = '' - this.app.handleError(err) - this.walletErrorMessage = this.$t('Could not verify signature.') + this.app.wallet.signMessage(this.challenge, this.account) + .then((signature) => { + axios.post('/api/login', { signature }) + .then((res) => { + this.challenge = '' + + if (res.status >= 200 && res.status <= 299) { + this.app.initUserHasSession(res.data.location || '/admin/workflow') + } else { + this.app.deleteUserHasSession() + this.walletErrorMessage = this.$t('Could not verify signature.') + } + }, (err) => { + this.challenge = '' + this.app.deleteUserHasSession() + this.app.handleError(err) + this.walletErrorMessage = this.$t('Could not verify signature.') + }) + }).catch(() => { + this.app.deleteUserHasSession() + this.walletErrorMessage = this.$t('Could not Sign Message.') }) - }).catch(() => { - this.walletErrorMessage = this.$t('Could not Sign Message.') - }) } } } diff --git a/ui/core/src/views/Workflow.vue b/ui/core/src/views/Workflow.vue index 1e81c5c47..8f14783df 100644 --- a/ui/core/src/views/Workflow.vue +++ b/ui/core/src/views/Workflow.vue @@ -115,6 +115,15 @@
+
+
+
+ +
{{$t('placeholder')}}
+
+
+
@@ -193,6 +202,44 @@ + = symbolsPerLine) { + split = true + } else { + split = false + } + + if (split && symbol === ' ') { + formatted = `${formatted}${this.lineSeparator}` + pointer = 0 + } else { + formatted = `${formatted}${symbol}` + } + + pointer++ + } + + this.currentNode.label = formatted + this.currentNode.name = formatted + + if ($.isFunction(this.callback)) { + this.callback(this.currentNode) + } + this.$dialog.modal('hide') + } catch (e) { + console.log(e) + } + } + } + }, readOnly: false, main: function () { this.readOnly = !writeRights @@ -777,6 +888,7 @@ function condition(){ _.attachDragAndDrop($(this)) }) this.initConditionDialogHandler() + this.initPlaceholderDialogHandler() }, searchNow: function (v) { var _ = this @@ -960,6 +1072,12 @@ function condition(){ n.data = n._data _.onNodeInsert(n, { x: e.offsetX, y: e.offsetY }) }, true) + } else if (_.$newTarget.attr('data-id') === 'placeholder') { + _.placeholderDialogHandler.open($.extend({}, _.leftMenuNodes[_.$newTarget.attr('data-id')]), + function (n) { + n.data = n._data + _.onNodeInsert(n, { x: e.offsetX, y: e.offsetY }) + }, true) } else { _.onNodeInsert(_.leftMenuNodes[_.$newTarget.attr('data-id')], { x: e.offsetX, @@ -1170,6 +1288,7 @@ function condition(){ priceretriever: 'fcn-externalnode node-icon mdi mdi-send', externalNode: 'fcn-externalnode node-icon mdi mdi-link-variant', condition: 'fcn-condition node-icon mdi mdi-circle-outline', + placeholder: 'fcn-placeholder node-icon mdi mdi-hexagon', user: 'fcn-usr node-icon mdi mdi-account', form: 'fcn-form node-icon mdi mdi-view-quilt', workflow: 'fcn-wflow node-icon mdi mdi-source-branch', @@ -1227,6 +1346,12 @@ function condition(){ _.updateNode(n) }) }, + placeholderDblClick: function (node) { + var _ = this + this.wfm.placeholderDialogHandler.open(node, function (n) { + _.updateNode(n) + }) + }, destroy: function () { if (this.network) { this.network.destroy() @@ -1592,6 +1717,40 @@ function condition(){ dblclick: _.conditionDblClick } }, + placeholder: { + connections: { + from: [ + { + node: { + color: { + background: '#f5e203', + highlight: { background: '#f5e203' }, + hover: { background: '#f5e203' } + }, + borderWidthSelected: 3 + }, + edge: { + font: { align: 'middle' }, + arrows: 'to', + color: { color: '#f5e203', highlight: '#f5e203', hover: '#f5e203' } + } + }], + to: Infinity, + space: 0.6 + }, + font: { + color: '#343434', + size: 15 + }, + icon: { + face: 'Material Design Icons', + code: '\u2B22', + color: '#f5e203' + }, + events: { + dblclick: _.placeholderDblClick + } + }, workflow: { connections: { from: [ diff --git a/ui/wallet/package.json b/ui/wallet/package.json index 6161884e6..9281724c4 100644 --- a/ui/wallet/package.json +++ b/ui/wallet/package.json @@ -29,7 +29,7 @@ "js-sha3": "^0.9.3", "moment": "^2.30.1", "popper.js": "^1.14.4", - "sass": "^1.72.0", + "sass": "^1.75.0", "sortablejs": "^1.15.2", "tippy.js": "^6.3.7", "truffle-assertions": "^0.9.1", @@ -59,7 +59,7 @@ "vue-range-slider": "^0.6.0", "vue-router": "^3.0.1", "vue-scrollto": "^2.11.0", - "vue-select": "^2.4.0", + "vue-select": "^3.20.3", "vue-tour": "^2.0.0", "vuedraggable": "^2.16.0", "vuep": "^0.8.1", diff --git a/ui/yarn.lock b/ui/yarn.lock index c4b8b2a93..1ca60f9c0 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -4361,10 +4361,10 @@ core-js@^2.4.0: resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== -core-js@^3.36.0, core-js@^3.6.5: - version "3.36.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.0.tgz#e752fa0b0b462a0787d56e9d73f80b0f7c0dde68" - integrity sha512-mt7+TUBbTFg5+GngsAxeKBTl5/VS0guFeJacYge9OmHb+m058UwwIm41SE9T4Den7ClatV57B6TYTuJ0CX1MAw== +core-js@^3.36.1, core-js@^3.6.5: + version "3.36.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.36.1.tgz#c97a7160ebd00b2de19e62f4bbd3406ab720e578" + integrity sha512-BTvUrwxVBezj5SZ3f10ImnX2oRByMxql3EimVqMysepbC9EeMUOpLwdy6Eoili2x6E4kf+ZUB5k/+Jv55alPfA== core-util-is@1.0.2: version "1.0.2" @@ -10293,10 +10293,10 @@ sass-loader@^10.1.1: schema-utils "^3.0.0" semver "^7.3.2" -sass@^1.72.0: - version "1.72.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.72.0.tgz#5b9978943fcfb32b25a6a5acb102fc9dabbbf41c" - integrity sha512-Gpczt3WA56Ly0Mn8Sl21Vj94s1axi9hDIzDFn9Ph9x3C3p4nNyvsqJoQyVXKou6cBlfFWEgRW4rT8Tb4i3XnVA== +sass@^1.75.0: + version "1.75.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.75.0.tgz#91bbe87fb02dfcc34e052ddd6ab80f60d392be6c" + integrity sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -12011,10 +12011,10 @@ vue-scrollto@^2.11.0: dependencies: bezier-easing "2.1.0" -vue-select@^2.4.0: - version "2.6.4" - resolved "https://registry.yarnpkg.com/vue-select/-/vue-select-2.6.4.tgz#cb82ea3417a4b0f68101f53528ba1c0b04de5308" - integrity sha512-OZIzzGlYwro2QcgAmcn2c4LQDPrYIT3+iaf4WciKPIeFFjgzRti6FC5Qjr2XEPqd85wqtsifuYyxsyb/JoJ4CQ== +vue-select@^3.20.3: + version "3.20.3" + resolved "https://registry.yarnpkg.com/vue-select/-/vue-select-3.20.3.tgz#559b0ba2780171e4eeda455ebce5f3ce708380eb" + integrity sha512-aDaq4rPBrDavh7NDLgAP8e0G8UNElh6vO3itGWjhf1y9KaGRWtFw21cUkSRHGgj0V5FlCG4EaRb1xdE/C9J+eg== vue-style-loader@^4.1.0, vue-style-loader@^4.1.2: version "4.1.3"