diff --git a/client/babel.config.js b/client/babel.config.js index cd4607f1c..dc0a08776 100644 --- a/client/babel.config.js +++ b/client/babel.config.js @@ -11,7 +11,7 @@ module.exports = (api) => { '@babel/plugin-proposal-class-properties', '@babel/plugin-syntax-dynamic-import', 'dynamic-import-node', - '@babel/plugin-transform-runtime' + ['@babel/plugin-transform-runtime', { useESModules: true }] ] return { diff --git a/client/package-lock.json b/client/package-lock.json index 6a9e61048..158a85bee 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1335,9 +1335,9 @@ } }, "@superalgos/operations-client": { - "version": "0.0.17", - "resolved": "https://registry.npmjs.org/@superalgos/operations-client/-/operations-client-0.0.17.tgz", - "integrity": "sha512-T0OydK2mGov+mxYn4z8z8mHtOL40nhwFCXiQUMT7WduaxElKc5L7bL1/+lLW8/lURSXIwi0AGkCXcCGCld3nFg==", + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@superalgos/operations-client/-/operations-client-0.0.20.tgz", + "integrity": "sha512-PZtr3XIzkGS3RezInDoUrbL00mFmhjskNrFQ3HV8AAz9RprwKE3YivcZdGzQGcrnerB2caa6Da7aX+jpbUkdnQ==", "dev": true, "requires": { "@material-ui/core": "^3.2.2", @@ -1355,6 +1355,124 @@ "react-router-dom": "^4.3.1" } }, + "@superalgos/strategizer-client": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@superalgos/strategizer-client/-/strategizer-client-0.0.3.tgz", + "integrity": "sha512-i6y/wzKbhWyro6ikeA+NYRz9NOQRbBrVj5rZrsHZdGBHh08eIY/SRIgHJLgLl/FXAGv+E3k/b/Spt8VYfl02Cg==", + "dev": true, + "requires": { + "@material-ui/core": "^3.2.0", + "@material-ui/icons": "^3.0.1", + "apollo-client": "^2.5.1", + "graphql": "^14.0.2", + "graphql-tag": "^2.10.0", + "lodash": "^4.17.11", + "react": "^16.8.4", + "react-apollo": "^2.5.2", + "react-apollo-hooks": "^0.4.3", + "react-dom": "^16.8.4", + "react-router-dom": "^4.3.1" + }, + "dependencies": { + "apollo-cache": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/apollo-cache/-/apollo-cache-1.2.1.tgz", + "integrity": "sha512-nzFmep/oKlbzUuDyz6fS6aYhRmfpcHWqNkkA9Bbxwk18RD6LXC4eZkuE0gXRX0IibVBHNjYVK+Szi0Yied4SpQ==", + "dev": true, + "requires": { + "apollo-utilities": "^1.2.1", + "tslib": "^1.9.3" + } + }, + "apollo-client": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/apollo-client/-/apollo-client-2.5.1.tgz", + "integrity": "sha512-MNcQKiqLHdGmNJ0rZ0NXaHrToXapJgS/5kPk0FygXt+/FmDCdzqcujI7OPxEC6e9Yw5S/8dIvOXcRNuOMElHkA==", + "dev": true, + "requires": { + "@types/zen-observable": "^0.8.0", + "apollo-cache": "1.2.1", + "apollo-link": "^1.0.0", + "apollo-link-dedup": "^1.0.0", + "apollo-utilities": "1.2.1", + "symbol-observable": "^1.0.2", + "ts-invariant": "^0.2.1", + "tslib": "^1.9.3", + "zen-observable": "^0.8.0" + } + }, + "apollo-utilities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.2.1.tgz", + "integrity": "sha512-Zv8Udp9XTSFiN8oyXOjf6PMHepD4yxxReLsl6dPUy5Ths7jti3nmlBzZUOxuTWRwZn0MoclqL7RQ5UEJN8MAxg==", + "dev": true, + "requires": { + "fast-json-stable-stringify": "^2.0.0", + "ts-invariant": "^0.2.1", + "tslib": "^1.9.3" + } + }, + "react": { + "version": "16.8.4", + "resolved": "https://registry.npmjs.org/react/-/react-16.8.4.tgz", + "integrity": "sha512-0GQ6gFXfUH7aZcjGVymlPOASTuSjlQL4ZtVC5YKH+3JL6bBLCVO21DknzmaPlI90LN253ojj02nsapy+j7wIjg==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.4" + } + }, + "react-apollo": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/react-apollo/-/react-apollo-2.5.2.tgz", + "integrity": "sha512-lmglhG6NQ+lfAUDzx8ZgelWKUbvxBhhy1l7Z2ksgtQ8+FVqwX7i6p5O3zicAZZlIdKzdq82V0kqq5WkxEsffrA==", + "dev": true, + "requires": { + "apollo-utilities": "^1.2.1", + "hoist-non-react-statics": "^3.0.0", + "lodash.isequal": "^4.5.0", + "prop-types": "^15.6.0", + "ts-invariant": "^0.3.0", + "tslib": "^1.9.3" + }, + "dependencies": { + "ts-invariant": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.3.2.tgz", + "integrity": "sha512-QsY8BCaRnHiB5T6iE4DPlJMAKEG3gzMiUco9FEt1jUXQf0XP6zi0idT0i0rMTu8A326JqNSDsmlkA9dRSh1TRg==", + "dev": true, + "requires": { + "tslib": "^1.9.3" + } + } + } + }, + "react-dom": { + "version": "16.8.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.8.4.tgz", + "integrity": "sha512-Ob2wK7XG2tUDt7ps7LtLzGYYB6DXMCLj0G5fO6WeEICtT4/HdpOi7W/xLzZnR6RCG1tYza60nMdqtxzA8FaPJQ==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.13.4" + } + }, + "scheduler": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.13.4.tgz", + "integrity": "sha512-cvSOlRPxOHs5dAhP9yiS/6IDmVAVxmk33f0CtTJRkmUWcb1Us+t7b1wqdzoC0REw2muC9V5f1L/w5R5uKGaepA==", + "dev": true, + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + } + } + }, "@superalgos/teams-client": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/@superalgos/teams-client/-/teams-client-0.0.33.tgz", @@ -2622,7 +2740,7 @@ "dependencies": { "fbjs": { "version": "0.3.2", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.3.2.tgz", + "resolved": "http://registry.npmjs.org/fbjs/-/fbjs-0.3.2.tgz", "integrity": "sha1-AzpUBZUIS13jUJpAXQbxoqjlufs=", "requires": { "core-js": "^1.0.0", @@ -2689,7 +2807,7 @@ }, "whatwg-fetch": { "version": "0.9.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", + "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-0.9.0.tgz", "integrity": "sha1-DjaExsuZlbQ+/J3wPkw2XZX9nMA=" } } @@ -2730,7 +2848,7 @@ }, "axios": { "version": "0.18.0", - "resolved": "http://registry.npmjs.org/axios/-/axios-0.18.0.tgz", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.0.tgz", "integrity": "sha1-MtU+SFHv3AoRmTts0AB4nXDAUQI=", "dev": true, "requires": { @@ -5317,13 +5435,13 @@ "dependencies": { "node-fetch": { "version": "2.1.2", - "resolved": "http://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=", "dev": true }, "whatwg-fetch": { "version": "2.0.4", - "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", "dev": true } @@ -6672,7 +6790,7 @@ }, "load-json-file": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { @@ -9628,7 +9746,7 @@ }, "html-webpack-plugin": { "version": "3.2.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", "dev": true, "requires": { @@ -13128,7 +13246,7 @@ }, "chalk": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { @@ -18103,7 +18221,7 @@ }, "acorn-jsx": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", "dev": true, "requires": { @@ -18112,7 +18230,7 @@ "dependencies": { "acorn": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "resolved": "http://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", "dev": true } @@ -18170,7 +18288,7 @@ }, "eslint": { "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "resolved": "http://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", "dev": true, "requires": { @@ -18216,7 +18334,7 @@ }, "espree": { "version": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "resolved": "http://registry.npmjs.org/espree/-/espree-3.5.4.tgz", "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", "dev": true, "requires": { @@ -18226,7 +18344,7 @@ }, "external-editor": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "resolved": "http://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", "dev": true, "requires": { @@ -18354,7 +18472,7 @@ }, "regexpp": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "resolved": "http://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", "dev": true }, @@ -18717,6 +18835,15 @@ } } }, + "react-apollo-hooks": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/react-apollo-hooks/-/react-apollo-hooks-0.4.3.tgz", + "integrity": "sha512-mRFPb7bk42wOlGnIdwLc4XO43uTczdx7CzpdTmNwjzAgb/H/nKEXeZitoF1Wgtj0Zb6R5wTGs2nBIMfz0/DzEA==", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, "react-app-polyfill": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-0.2.0.tgz", @@ -19003,9 +19130,9 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "react-number-format": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-4.0.6.tgz", - "integrity": "sha512-WfBlqYRD0fGZpQxRy1apxsPeaqtxhzo7CnUVFKBoGDsQbc89+DQNhjG/D3IxgGYM47oKB+W/Su9ol/vVS6Wc2Q==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-4.0.7.tgz", + "integrity": "sha512-boRHwPzkNDuyqeQ9zyHp0XgVAqT5RyS+BsohOhiTz6VMxEQr3DuSuNdg0Q8c3CYTgNESYlxnH278DPqaQFO72w==", "dev": true, "requires": { "prop-types": "^15.6.0" @@ -19198,7 +19325,7 @@ }, "cacache": { "version": "10.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "resolved": "http://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", "dev": true, "requires": { @@ -22765,6 +22892,15 @@ "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", "dev": true }, + "ts-invariant": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.2.1.tgz", + "integrity": "sha512-Z/JSxzVmhTo50I+LKagEISFJW3pvPCqsMWLamCTX8Kr3N5aMrnGOqcflbe5hLUzwjvgPfnLzQtHZv0yWQ+FIHg==", + "dev": true, + "requires": { + "tslib": "^1.9.3" + } + }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -24433,7 +24569,7 @@ }, "xmlbuilder": { "version": "9.0.7", - "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "dev": true }, diff --git a/client/package.json b/client/package.json index 406b4625d..ad830fa25 100644 --- a/client/package.json +++ b/client/package.json @@ -25,17 +25,18 @@ }, "homepage": "https://github.com/Algoteers/MasterApp#readme", "devDependencies": { - "@superalgos/logs-client": "0.0.1", - "@superalgos/events-client": "0.0.2", "@advancedalgos/financial-beings-client": "0.0.5", - "@superalgos/operations-client": "0.0.18", "@babel/core": "^7.1.2", "@babel/plugin-proposal-class-properties": "^7.1.0", "@babel/plugin-syntax-dynamic-import": "^7.0.0", "@babel/plugin-transform-runtime": "^7.1.0", "@babel/preset-env": "^7.1.0", "@babel/preset-react": "^7.0.0", + "@superalgos/events-client": "0.0.2", "@superalgos/key-vault-client": "0.0.31", + "@superalgos/logs-client": "0.0.1", + "@superalgos/operations-client": "0.0.20", + "@superalgos/strategizer-client": "0.0.3", "@superalgos/teams-client": "0.0.33", "@superalgos/users-client": "0.0.25", "@superalgos/web-components": "0.0.18", diff --git a/client/src/App.js b/client/src/App.js index 3a4e95f43..105c11189 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -20,7 +20,9 @@ import Events from '@superalgos/events-client' import KeyVault from '@superalgos/key-vault-client' import FinancialBeings from '@advancedalgos/financial-beings-client' import Operations from '@superalgos/operations-client' +import Strategizer from '@superalgos/strategizer-client' import Logs from '@superalgos/logs-client' +// import Miners from '@superalgos/miners-client' export const auth = new Auth( result => console.log('Authentication successful.'), @@ -82,10 +84,15 @@ export const MasterApp = props => ( path='/clones' render={props => } /> + } + /> } /> + diff --git a/client/src/auth/index.js b/client/src/auth/index.js index 2ed00e1b2..8ef99e1ff 100644 --- a/client/src/auth/index.js +++ b/client/src/auth/index.js @@ -32,7 +32,7 @@ const VERIFY_TEAM_INVITE = gql` export const defaultOptions = { oidcConformant: true, autoclose: true, - allowedConnections: ['Username-Password-Authentication'], + allowedConnections: ['Username-Password-Authentication', 'github'], auth: { sso: true, redirectUrl: window.location.origin + '/callback', @@ -49,13 +49,14 @@ export const defaultOptions = { languageDictionary: { title: 'Superalgos Platform' }, - avatar:null + avatar: null, + mustAcceptTerms: true } export const inviteOptions = { oidcConformant: true, autoclose: false, - allowedConnections: ['Username-Password-Authentication'], + allowedConnections: ['Username-Password-Authentication', 'github'], allowShowPassword: true, auth: { sso: false, @@ -67,7 +68,12 @@ export const inviteOptions = { scope: `email` } }, - prefill: { email: '' } + prefill: { email: '' }, + languageDictionary: { + title: 'Superalgos Platform' + }, + avatar: null, + mustAcceptTerms: true } let lock = new Auth0Lock( diff --git a/client/src/views/layout/header/imports.js b/client/src/views/layout/header/imports.js index 953a7ddf5..ec03f89f5 100644 --- a/client/src/views/layout/header/imports.js +++ b/client/src/views/layout/header/imports.js @@ -9,7 +9,8 @@ import { Group, VpnKey, Home, - AddCircleOutline + AddCircleOutline, + ViewModule } from '@material-ui/icons' const usersMenus = { @@ -73,6 +74,16 @@ const operationsMenus = { ] } +const minersMenus = { + title: 'Miners', + to: '/miners', + icon: Home, + authenticated: false, + submenus: [ + { title: 'Report a Bug', to: 'https://github.com/Superalgos/minersClient/issues/new', icon: BugReport, externalLink: true } + ] +} + // const financialBeingsMenus = { // title: 'FBs', // to: '/financial-beings', @@ -83,13 +94,26 @@ const operationsMenus = { // ] // } +const strategizerMenus = { + title: 'Strategizer', + to: '/strategizer', + icon: Home, + authenticated: false, + submenus: [ + { title: 'Your strategies', to: '/strategizer/manage-strategies', icon: ViewModule, authenticated: false }, + { title: 'Report a Bug', to: 'https://github.com/Superalgos/StrategizerClientModule/issues/new', icon: BugReport, externalLink: true } + ] +} + const allMenus = [ usersMenus, teamsMenus, eventsMenus, // financialBeingsMenus, keyvaultMenus, - operationsMenus + operationsMenus, + minersMenus, + strategizerMenus ] export default allMenus diff --git a/server/src/index.js b/server/src/index.js index 9a56839a1..9001d7703 100644 --- a/server/src/index.js +++ b/server/src/index.js @@ -74,6 +74,10 @@ async function run () { 'logs_', process.env.LOGS_API_URL, process.env.LOGS_API_PRESHARED) + // const transformedMinersSchema = await createTransformedRemoteSchema( + // 'miners_', + // process.env.MINERS_API_URL, + // process.env.MINERS_PRESHARED) const transformeStrategizerSchema = await createTransformedRemoteSchema( 'strategizer_', process.env.STRATEGIZER_API_URL,