Merge pull request #159 from Superalgos/develop
Merge Develop into Master for release
This commit is contained in:
67 files changed
+8803
-7845
No files matched your search
@@ -0,0 +1,34 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Unreleased]
|
||||
### Changed
|
||||
- [List changes here for upcoming release]
|
||||
|
||||
## 0.1.4 - 2019-01-17
|
||||
### Change
|
||||
- Both: Migrate to superalgos.org
|
||||
|
||||
## 0.1.3 - 2018-12-17
|
||||
### Change
|
||||
- Client: Fix newsletter signup notification integration
|
||||
|
||||
## 0.1.2 - 2018-12-16
|
||||
### Change
|
||||
- Client: Upgrade Material-ui to fix webpack deepmerge import bug
|
||||
|
||||
## 0.1.1 - 2018-12-16
|
||||
### Changed
|
||||
- Update Master Client integration with Notifications Module
|
||||
|
||||
## 0.1.0 - 2018-12-14
|
||||
### Added
|
||||
- Notifications Module - Sending notifications such as emails, messages to client, etc
|
||||
- Reintroduced CORS whitelist
|
||||
- Created CHANGELOG — for the logging of changes
|
||||
|
||||
### Removed
|
||||
- Removed Sendgrid Mutations (moved to notifications module)
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
+1
-1
@@ -28,7 +28,7 @@ Cool? Then, by submitting your first Pull Request, and as a condition of your co
|
||||
|
||||
2. **What the Project doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Project doesn't own it. In other words, the Project doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1.
|
||||
|
||||
3. **Contribution of your IP to Project projects.** If you include your own IP – such as IP you created prior to working for the Project – into a Project product or service, it's still yours, of course, but you grant the Project a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Project would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
|
||||
3. **Contribution of your IP to Project projects.** If you include your own IP – such as IP you created prior to working for the Project – into a Project product or service, it's still yours, of course, but you grant the Project a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Project would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
|
||||
|
||||
4. **Your contributions to non-Project projects.** The Project recognizes that you may be engaged in work that requires you to submit IP to entities other than the Project, such as open source projects used by the Project. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Project and so should be run through Legal first.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# MasterApp
|
||||
The Master App is an application layer that wraps the client-side web modules of the various Advanced Algos platform modules (Users, Teams, KeyVault, Financial Beings, Hosts, etc).
|
||||
The Master App is an application layer that wraps the client-side web modules of the various Superalgos platform modules (Users, Teams, KeyVault, Financial Beings, Hosts, etc).
|
||||
It provides, to these modules, an authentication layer and GraphQL data layer, among other commonly used utilities and APIs.
|
||||
|
||||
Each client-side module is published as an NPM package and their function is best described as a
|
||||
@@ -61,7 +61,7 @@ In the client of the module to be developed:
|
||||
npm link
|
||||
```
|
||||
|
||||
Make note of the module package name — the name in the module's client package.json. *e.g. @advancedalgos/key-vault-client*
|
||||
Make note of the module package name — the name in the module's client package.json. *e.g. @superalgos/key-vault-client*
|
||||
|
||||
In the Master app client dir link the developing module:
|
||||
|
||||
@@ -70,7 +70,7 @@ In the Master app client dir link the developing module:
|
||||
npm link <module-package-name>
|
||||
|
||||
e.g.
|
||||
npm link @advancedalgos/key-vault-client
|
||||
npm link @superalgos/key-vault-client
|
||||
```
|
||||
|
||||
### Starting a new module
|
||||
|
||||
+4
-5
@@ -3,13 +3,12 @@ PORT=3100
|
||||
NODE_ENV=development
|
||||
|
||||
#Graphql API
|
||||
DEV_GRAPHQL=http://localhost:4100/graphql
|
||||
PROD_GRAPHQL=https://app.advancedalgos.net/graphql
|
||||
PLATFORM_API_URL=http://localhost:4100/graphql
|
||||
|
||||
#Auth0 Server
|
||||
AUTH0_DOMAIN=advancedalgos.eu.auth0.com
|
||||
AUTH0_AUDIENCE=https://auth-dev.advancedalgos.net
|
||||
AUTH0_ISSUER=https://advancedalgos.eu.auth0.com/
|
||||
AUTH0_DOMAIN=superalgos.eu.auth0.com
|
||||
AUTH0_AUDIENCE=https://auth-dev.superalgos.org
|
||||
AUTH0_ISSUER=https://superalgos.eu.auth0.com/
|
||||
AUTH0_CLIENTID=<auth0-client-id>
|
||||
|
||||
#Auth0 Client
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
[ignore]
|
||||
node_modules
|
||||
|
||||
[libs]
|
||||
flow-typed
|
||||
|
||||
[lints]
|
||||
|
||||
[options]
|
||||
module.name_mapper='.*\(.scss\)' -> 'empty/object'
|
||||
module.name_mapper='.*\(.css\)' -> 'empty/object'
|
||||
module.name_mapper='^src/\(.*\)$' -> '<PROJECT_ROOT>/src/\1'
|
||||
|
||||
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue
|
||||
suppress_type=$FlowIssue
|
||||
suppress_type=$FlowFixMe
|
||||
suppress_type=$FixMe
|
||||
|
||||
[strict]
|
||||
@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at feedback at advancedalgos dot org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at feedback at superalgos dot org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Contributing
|
||||
|
||||
We are thrilled you are interested in contributing to this repository. Your help may be essential to the project's success and we want you in!
|
||||
We are thrilled you are interested in contributing to this repository. Your help may be essential to the project's success and we want you in!
|
||||
|
||||
Advanced Algos LTD is a startup, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community.
|
||||
Superalgos.org is an open source project, currently at a very early stage. Although this repository is not open source software yet, we do welcome contributions from the community.
|
||||
|
||||
Contributions are deemed _voluntary work_. There might be incentives in place for certain kinds of contributions. Contact us for more information in this regards.
|
||||
|
||||
@@ -10,7 +10,7 @@ In any case, contributors agree to provide an express grant of patent rights for
|
||||
|
||||
# Balanced Contributor Intellectual Property Agreement 1.0.1
|
||||
|
||||
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Advanced Algos LTD ("Company").
|
||||
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person or team submitting Pull Requests to this repository and Superalgos.org ("Company").
|
||||
|
||||
**What is this?** This is the Company's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Company.
|
||||
|
||||
@@ -26,9 +26,9 @@ Cool? Then, by submitting your first Pull Request, and as a condition of your co
|
||||
|
||||
"Company IP" includes concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, and works of authorship.
|
||||
|
||||
2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1.
|
||||
2. **What the Company doesn't own.** If you create IP that doesn't fit into one of the categories listed above, the Company doesn't own it. In other words, the Company doesn't own concepts, designs, developments, discoveries, ideas, improvements, inventions, trade secrets, trademarks, or works of authorship that you develop, invent, or create that do not meet any of the conditions in Section 1.
|
||||
|
||||
3. **Contribution of your IP to Company projects.** If you include your own IP – such as IP you created prior to working for the Company – into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
|
||||
3. **Contribution of your IP to Company projects.** If you include your own IP � such as IP you created prior to working for the Company � into a Company product or service, it's still yours, of course, but you grant the Company a non-exclusive, irrevocable, fully paid-up, royalty-free, perpetual, sublicensable, transferable, worldwide license to use it without restriction in any way or implementation, in modified form, or as is, by itself, or incorporated into another product or service ("License"). If you include your name in any project over which the Company would have rights under this Agreement, such as in a copyright notice or a comment in code or documentation, then the License covers the rights associated with that use of your name as well.
|
||||
|
||||
4. **Your contributions to non-Company projects.** The Company recognizes that you may be engaged in work that requires you to submit IP to entities other than the Company, such as open source projects used by the Company. Please make sure that Legal is aware of what you're working on so that Legal can help with any licensing issues. If any project asks you to sign a contribution agreement, you should check with Legal before doing so. These agreements may be legally binding on the Company and so should be run through Legal first.
|
||||
|
||||
@@ -42,4 +42,4 @@ Cool? Then, by submitting your first Pull Request, and as a condition of your co
|
||||
|
||||
"Confidential Information" includes non-public technical details about our products or services, financial information, business strategies and forecasts, customer data, or any other information, data or know-how that is valuable to the Company because it is not publicly known.
|
||||
|
||||
The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your contribution and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise.
|
||||
The Company's Confidential Information is sensitive and we expect that you'll treat it as such. You agree to only use the Company's Confidential Information for the purpose of performing your contribution and for the benefit of the Company. You will do your best to keep Confidential Information secret. If you are not sure if something is Confidential Information, you should assume that it is, until you can confirm otherwise.
|
||||
+14
-16
@@ -1,42 +1,40 @@
|
||||
COPYRIGHT NOTICE
|
||||
|
||||
© Copyright 2018 Advanced Algos LTD.
|
||||
© Copyright 2018 Superalgos.org
|
||||
|
||||
|
||||
LICENSE NOTICE
|
||||
|
||||
Advanced Algos LTD. is a startup, currently at a very early stage. Because certain aspects of
|
||||
the business are still not clearly defined, we have chosen to --temporarily-- grant a
|
||||
restrictive license for the use of this repository, until those business aspects are clarified
|
||||
Superalgos.org is a startup, currently at a very early stage. Because certain aspects of
|
||||
the business are still not clearly defined, we have chosen to --temporarily-- grant a
|
||||
restrictive license for the use of this repository, until those business aspects are clarified
|
||||
and a proper open source license can be granted.
|
||||
|
||||
Advanced Algos LTD. is publishing the code of this software for several reasons. However,
|
||||
it shall not be considered free software yet. Advanced Algos LTD. is a for-profit company
|
||||
Superalgos.org is publishing the code of this software for several reasons. However,
|
||||
it shall not be considered free software yet. Superalgos.org is a for-profit company
|
||||
in the crypto space and this module is still proprietary software.
|
||||
|
||||
The reasons for opening up the code of this module at this stage are the following:
|
||||
|
||||
* We believe that transparency is paramount to achieving our goals, so we want everyone
|
||||
to be able to understand what this module does and how. Opening up the code of this module
|
||||
* We believe that transparency is paramount to achieving our goals, so we want everyone
|
||||
to be able to understand what this module does and how. Opening up the code of this module
|
||||
allows anyone to take a close look.
|
||||
|
||||
* We welcome contributions from the community. Contributions are regarded as voluntary work.
|
||||
* We welcome contributions from the community. Contributions are regarded as voluntary work.
|
||||
There may be incentives in place for certain kinds of contributions. Contact us to learn more.
|
||||
Contributors agree to provide an express grant of patent rights for their contributions.
|
||||
|
||||
|
||||
LICENSE WORDING
|
||||
|
||||
Advanced Algos LTD. grants a limited license for the following uses:
|
||||
Superalgos.org grants a limited license for the following uses:
|
||||
|
||||
1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze,
|
||||
1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze,
|
||||
review or audit the code.
|
||||
|
||||
2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork this repository
|
||||
with the sole purpose of correcting bugs and developing functionality in agreement with
|
||||
Advanced Algos LTD. By contributing to this repository you explicitely agree to the terms
|
||||
2. COLLABORATING WITH SUPERALGOS.ORG You are granted permission to fork this repository
|
||||
with the sole purpose of correcting bugs and developing functionality in agreement with
|
||||
Superalgos.org By contributing to this repository you explicitely agree to the terms
|
||||
detailed in CONTRIBUTING.MD.
|
||||
|
||||
PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS TO THIS REPOSITORY.
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
module.exports = (api) => {
|
||||
api.cache(true);
|
||||
api.cache(true)
|
||||
|
||||
const presets = [
|
||||
'@babel/preset-env',
|
||||
'@babel/preset-react'
|
||||
];
|
||||
]
|
||||
|
||||
const plugins = [
|
||||
'react-hot-loader/babel',
|
||||
@@ -12,10 +12,10 @@ module.exports = (api) => {
|
||||
'@babel/plugin-syntax-dynamic-import',
|
||||
'dynamic-import-node',
|
||||
'@babel/plugin-transform-runtime'
|
||||
];
|
||||
]
|
||||
|
||||
return {
|
||||
presets,
|
||||
plugins
|
||||
};
|
||||
}
|
||||
}
|
||||
+19
-12
@@ -2,43 +2,50 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Advanced Algos</title>
|
||||
<title>Superalgos Platform</title>
|
||||
<meta name="description" content="The system enabling a collective of humans and machines to collaborate and compete while co-building trading algorithms.">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="Responsible for loading all web modules and running them">
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link href="https://fonts.googleapis.com/css?family=Saira+Condensed:300,600|Saira:300,600&subset=latin-ext,vietnamese" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
|
||||
<link rel="shortcut icon" type="image/png/ico" href="/favicon.ico" />
|
||||
<link rel="shortcut icon" type="image/png/ico" href="/html/favicon.ico" />
|
||||
<script src="https://unpkg.com/apollo-client-browser@1.7.0"></script>
|
||||
|
||||
<script type="text/javascript" src="https://develop.advancedalgos.net/Scripts/Require.js"></script>
|
||||
<script type="text/javascript" src="https://develop.advancedalgos.net/Scripts/AppPreLoader.js"></script>
|
||||
<script type="text/javascript" src="https://charts-dev.superalgos.org/Scripts/require.js"></script>
|
||||
<script type="text/javascript" src="https://charts-dev.superalgos.org/Scripts/AppPreLoader.js"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function loadCanvas(){
|
||||
|
||||
if (window.canvasApp.visible === undefined) {
|
||||
window.canvasApp = {
|
||||
sessionToken: '',
|
||||
executingAt: 'Master App',
|
||||
visible: false,
|
||||
topMargin: 130,
|
||||
urlPrefix: 'https://develop.advancedalgos.net/' , /* 'http://localhost:1337/' */ /* 'https://develop.advancedalgos.net/' */
|
||||
urlPrefix: '<%= process.env.CANVAS_URL %>',
|
||||
graphQL: {
|
||||
masterAppApiUrl: 'https://app-api.advancedalgos.net/graphql'
|
||||
},
|
||||
context: {}
|
||||
masterAppApiUrl: '<%= process.env.PLATFORM_API_URL %>',
|
||||
},
|
||||
context: {}
|
||||
};
|
||||
|
||||
loadAdvancedAlgosPlatform();
|
||||
let delay = 0
|
||||
if (window.innerHeight === 0) {delay = 3000} // Inside IFRAMES the onload event is reaised before the window has its real size.
|
||||
setTimeout(loadAdvancedAlgosPlatform, delay)
|
||||
}
|
||||
}
|
||||
|
||||
function onResize(){
|
||||
if (window.canvasApp === undefined) {return}
|
||||
if (window.canvasApp.eventHandler === undefined) {return}
|
||||
window.canvasApp.eventHandler.raiseEvent('Browser Resized')
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
<body id="body" onload="loadCanvas()" onresize="window.canvasApp.eventHandler.raiseEvent('Browser Resized')">
|
||||
<body id="body" onload="loadCanvas()" onresize="onResize()">
|
||||
<div id="masterApp"></div>
|
||||
<div id="canvasApp"></div>
|
||||
</body>
|
||||
|
||||
Generated
+6714
-6153
File diff suppressed because it is too large.
Load diff
+19
-10
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "master-app-client",
|
||||
"version": "0.0.1",
|
||||
"version": "0.1.3",
|
||||
"description": "Responsible for loading all web modules and running them.",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
@@ -8,32 +8,39 @@
|
||||
"build": "NODE_ENV=production webpack --mode production --config ./webpack.config.js",
|
||||
"dev_win": "webpack-dev-server --hot --port 3100 --config ./webpack.config.js",
|
||||
"build_win": "webpack --mode production --config ./webpack.config.js",
|
||||
"lint": "prettier-standard 'src/**/*.js'"
|
||||
"lint": "prettier-standard 'src/**/*.js'",
|
||||
"flow-coverage": "npm run flow-coverage:build && npm run flow-coverage:open",
|
||||
"flow-coverage:build": "flow-coverage-report --strict-coverage ",
|
||||
"flow-coverage:open": "concurrently \"cd flow-coverage && http-server -c-1 \" \"open http://127.0.0.1:8080\"",
|
||||
"flow": "flow"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Algoteers/MasterApp.git"
|
||||
},
|
||||
"author": "Advanced Algos, ltd.",
|
||||
"author": "Superalgos.org",
|
||||
"license": "SEE LICENSE IN LICENSE.MD",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Algoteers/MasterApp/issues"
|
||||
},
|
||||
"homepage": "https://github.com/Algoteers/MasterApp#readme",
|
||||
"devDependencies": {
|
||||
"@advancedalgos/events-client": "^0.0.4",
|
||||
"@advancedalgos/key-vault-client": "^0.0.21",
|
||||
"@advancedalgos/teams-client": "^0.0.27",
|
||||
"@advancedalgos/users-client": "^0.0.22",
|
||||
"@advancedalgos/web-components": "0.0.13",
|
||||
"@advancedalgos/events-client": "0.0.4",
|
||||
"@advancedalgos/financial-beings-client": "0.0.5",
|
||||
"@superalgos/operations-client": "0.0.13",
|
||||
"@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/key-vault-client": "0.0.26",
|
||||
"@superalgos/teams-client": "0.0.33",
|
||||
"@superalgos/users-client": "0.0.25",
|
||||
"@superalgos/web-components": "0.0.18",
|
||||
"autoprefixer": "^9.2.0",
|
||||
"babel-loader": "^8.0.4",
|
||||
"babel-preset-flow": "6.23.0",
|
||||
"connect-history-api-fallback": "^1.5.0",
|
||||
"css-loader": "^1.0.0",
|
||||
"debug": "^4.1.0",
|
||||
@@ -41,12 +48,14 @@
|
||||
"eslint": "^5.7.0",
|
||||
"eslint-config-standard": "^12.0.0",
|
||||
"eslint-config-standard-react": "^7.0.2",
|
||||
"eslint-plugin-flowtype": "^2.42.0",
|
||||
"eslint-plugin-import": "^2.14.0",
|
||||
"eslint-plugin-node": "^7.0.1",
|
||||
"eslint-plugin-promise": "^4.0.1",
|
||||
"eslint-plugin-react": "^7.11.1",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"file-loader": "^2.0.0",
|
||||
"flow-bin": "0.79.1",
|
||||
"html-webpack-harddisk-plugin": "^0.2.0",
|
||||
"html-webpack-plugin": "^3.2.0",
|
||||
"koa-connect": "^2.0.1",
|
||||
@@ -57,7 +66,7 @@
|
||||
"script-ext-html-webpack-plugin": "^2.0.1",
|
||||
"webpack": "^4.20.2",
|
||||
"webpack-cli": "^3.1.2",
|
||||
"webpack-dev-server": "^3.1.9",
|
||||
"webpack-dev-server": "^3.1.14",
|
||||
"webpack-merge": "^4.1.4"
|
||||
},
|
||||
"standard": {
|
||||
@@ -72,7 +81,7 @@
|
||||
"@fortawesome/free-brands-svg-icons": "^5.5.0",
|
||||
"@fortawesome/free-solid-svg-icons": "^5.5.0",
|
||||
"@fortawesome/react-fontawesome": "^0.1.3",
|
||||
"@material-ui/core": "^3.2.2",
|
||||
"@material-ui/core": "^3.6.2",
|
||||
"@material-ui/icons": "^3.0.1",
|
||||
"apollo-cache-inmemory": "^1.3.5",
|
||||
"apollo-client": "^2.4.2",
|
||||
|
||||
+20
-5
@@ -14,17 +14,19 @@ import Auth from './auth'
|
||||
|
||||
import { Layout, Home, Charts, Callback, EmailSignupConfirm } from './views'
|
||||
|
||||
import Users from '@advancedalgos/users-client'
|
||||
import Teams from '@advancedalgos/teams-client'
|
||||
import Users from '@superalgos/users-client'
|
||||
import Teams from '@superalgos/teams-client'
|
||||
import Events from '@advancedalgos/events-client'
|
||||
import KeyVault from '@advancedalgos/key-vault-client'
|
||||
import KeyVault from '@superalgos/key-vault-client'
|
||||
import FinancialBeings from '@advancedalgos/financial-beings-client'
|
||||
import Operations from '@superalgos/operations-client'
|
||||
|
||||
export const auth = new Auth(
|
||||
result => console.log('Authentication successful.'),
|
||||
client
|
||||
)
|
||||
|
||||
export const MasterApp = (props) => (
|
||||
export const MasterApp = props => (
|
||||
<BrowserRouter>
|
||||
<ApolloProvider client={client}>
|
||||
<MuiThemeProvider theme={theme}>
|
||||
@@ -43,7 +45,12 @@ export const MasterApp = (props) => (
|
||||
path='/email-verification'
|
||||
render={props => {
|
||||
console.log(props.location)
|
||||
return <EmailSignupConfirm {...props} tokenParam={props.location.search} />
|
||||
return (
|
||||
<EmailSignupConfirm
|
||||
{...props}
|
||||
tokenParam={props.location.search}
|
||||
/>
|
||||
)
|
||||
}}
|
||||
/>
|
||||
<Route
|
||||
@@ -62,10 +69,18 @@ export const MasterApp = (props) => (
|
||||
path='/events'
|
||||
render={props => <Events {...props} auth={auth} />}
|
||||
/>
|
||||
<Route
|
||||
path='/financial-beings'
|
||||
render={props => <FinancialBeings {...props} auth={auth}/>}
|
||||
/>
|
||||
<Route
|
||||
path='/key-vault'
|
||||
render={props => <KeyVault {...props} auth={auth} />}
|
||||
/>
|
||||
<Route
|
||||
path='/operations'
|
||||
render={props => <Operations {...props} auth={auth} />}
|
||||
/>
|
||||
</Switch>
|
||||
</Layout>
|
||||
</MuiThemeProvider>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 120 24"><defs><style>.cls-1,.cls-3{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{stroke:#2a96ff;stroke-miterlimit:10;stroke-width:0.5px;}.cls-4{fill:#fff;}.cls-5{fill:#e3493c;}</style><clipPath id="clip-path"><rect class="cls-1" x="272.54" y="79.59" width="600" height="600"/></clipPath></defs><title>aa-logo-dark</title><g id="Layer_1" data-name="Layer 1"><g class="cls-2"><circle class="cls-3" cx="338.14" cy="263.28" r="277.97"/></g></g><g id="Layer_4" data-name="Layer 4"><path class="cls-4" d="M27.67,15.74l-.19-1.58H26.29l-.2,1.58H24.51L25.7,7.79h2.39l1.19,8Zm-.75-6.39h-.08l-.4,3.41h.89Z"/><path class="cls-4" d="M32.15,7.79h1.93a2.39,2.39,0,0,1,1.46.35,1.68,1.68,0,0,1,.54,1.11,21,21,0,0,1,.1,2.52,20.93,20.93,0,0,1-.1,2.51,1.68,1.68,0,0,1-.54,1.11,2.39,2.39,0,0,1-1.46.35H32.15Zm1.93,6.51a.46.46,0,0,0,.37-.12,1.19,1.19,0,0,0,.13-.6c0-.32,0-.93,0-1.81s0-1.5,0-1.82a1.19,1.19,0,0,0-.13-.6.46.46,0,0,0-.37-.12h-.36V14.3Z"/><path class="cls-4" d="M39.94,15.74,38.87,7.79h1.59l.66,6.31h.12l.61-6.31h1.57l-1.07,8Z"/><path class="cls-4" d="M48.8,15.74l-.19-1.58H47.42l-.2,1.58H45.64l1.19-7.95h2.39l1.19,8Zm-.75-6.39H48l-.4,3.41h.89Z"/><path class="cls-4" d="M56.06,15.74l-1.23-4h0v4h-1.5V7.79h1.47l1.13,3.61h.06V7.79h1.51v8Z"/><path class="cls-4" d="M63.14,15.77a3.11,3.11,0,0,1-.59.06,2.06,2.06,0,0,1-1.36-.37,1.94,1.94,0,0,1-.58-1.19,17.1,17.1,0,0,1-.13-2.5,14.22,14.22,0,0,1,.15-2.5,1.94,1.94,0,0,1,.58-1.2,2,2,0,0,1,1.34-.37,4.21,4.21,0,0,1,.62,0,1.86,1.86,0,0,1,.45.12V9.2a5.77,5.77,0,0,0-.78-.06.77.77,0,0,0-.55.15,1.22,1.22,0,0,0-.18.64c0,.33,0,.94,0,1.84s0,1.5,0,1.83a1.22,1.22,0,0,0,.18.64.77.77,0,0,0,.55.15,4.74,4.74,0,0,0,.8-.06v1.29A1.56,1.56,0,0,1,63.14,15.77Z"/><path class="cls-4" d="M66.59,15.74V7.79h3.19V9.23h-1.6V11h1.41v1.45H68.18V14.3h1.6v1.44Z"/><path class="cls-4" d="M72.79,7.79h1.92a2.4,2.4,0,0,1,1.47.35,1.67,1.67,0,0,1,.53,1.11,20.46,20.46,0,0,1,.11,2.52,20.38,20.38,0,0,1-.11,2.51,1.67,1.67,0,0,1-.53,1.11,2.4,2.4,0,0,1-1.47.35H72.79Zm1.92,6.51a.48.48,0,0,0,.38-.12,1.19,1.19,0,0,0,.13-.6c0-.32,0-.93,0-1.81s0-1.5,0-1.82a1.19,1.19,0,0,0-.13-.6.48.48,0,0,0-.38-.12h-.35V14.3Z"/><path class="cls-5" d="M85.6,15.74l-.91-2.31H80.93L80,15.74h-.76l3.11-7.95h.89l3.12,8ZM82.84,8.66h-.06l-1.61,4.08h3.27Z"/><path class="cls-5" d="M88.44,15.74V7.79h.74V15H93v.72Z"/><path class="cls-5" d="M97.86,12.24v-.68h2.7v4c-.37.06-.8.12-1.26.16s-.87.06-1.22.06a5.68,5.68,0,0,1-2.14-.3A1.71,1.71,0,0,1,95,14.4a9.76,9.76,0,0,1-.26-2.63A9.85,9.85,0,0,1,95,9.13,1.71,1.71,0,0,1,96,8a5.91,5.91,0,0,1,2.13-.29c.38,0,.81,0,1.27.06s.86.1,1.18.16v.66a13.61,13.61,0,0,0-2-.19,8.76,8.76,0,0,0-2,.16,1.21,1.21,0,0,0-.79.85,8.45,8.45,0,0,0-.23,2.37A10.48,10.48,0,0,0,95.66,14a1.27,1.27,0,0,0,.7.91,4.41,4.41,0,0,0,1.72.24l.9,0c.35,0,.64,0,.87-.09V12.24Z"/><path class="cls-5" d="M103.84,15.54a1.48,1.48,0,0,1-.83-1.08,13.91,13.91,0,0,1-.17-2.69,14,14,0,0,1,.17-2.7A1.48,1.48,0,0,1,103.84,8a6,6,0,0,1,2.21-.29,5.94,5.94,0,0,1,2.2.29,1.46,1.46,0,0,1,.83,1.08,13.75,13.75,0,0,1,.18,2.7,13.7,13.7,0,0,1-.18,2.69,1.46,1.46,0,0,1-.83,1.08,5.94,5.94,0,0,1-2.2.29A6,6,0,0,1,103.84,15.54Zm3.93-.57a1,1,0,0,0,.61-.81,13.62,13.62,0,0,0,.14-2.39,13.68,13.68,0,0,0-.14-2.4,1,1,0,0,0-.61-.81,8.84,8.84,0,0,0-3.45,0,1,1,0,0,0-.6.81,12.47,12.47,0,0,0-.15,2.4,12.42,12.42,0,0,0,.15,2.39,1,1,0,0,0,.6.81,8.84,8.84,0,0,0,3.45,0Z"/><path class="cls-5" d="M112.94,15.79c-.5,0-.94-.06-1.31-.11V15l1.33.1c.48,0,.88.05,1.2.05a8.75,8.75,0,0,0,1-.05,1.78,1.78,0,0,0,.65-.22.68.68,0,0,0,.35-.47,3.13,3.13,0,0,0,.09-.83,4.54,4.54,0,0,0-.06-.9.57.57,0,0,0-.31-.37,3.72,3.72,0,0,0-.88-.18l-2-.22a2.08,2.08,0,0,1-1.06-.32,1.18,1.18,0,0,1-.44-.64,5,5,0,0,1-.09-1.07,2.57,2.57,0,0,1,.3-1.38,1.56,1.56,0,0,1,.9-.63,6.12,6.12,0,0,1,1.59-.16c.45,0,.9,0,1.35,0s.81.08,1.07.13v.66c-.31,0-.68-.07-1.11-.1s-.83,0-1.19,0a6.52,6.52,0,0,0-1.1.07,1.88,1.88,0,0,0-.66.22.73.73,0,0,0-.33.44,2.52,2.52,0,0,0-.08.75,2.94,2.94,0,0,0,.07.77.61.61,0,0,0,.29.36,2.05,2.05,0,0,0,.69.16l2,.21a4.86,4.86,0,0,1,1.17.24,1,1,0,0,1,.55.63,4.24,4.24,0,0,1,.13,1.27,3,3,0,0,1-.31,1.54,1.36,1.36,0,0,1-.85.64,5.78,5.78,0,0,1-1.47.14C113.93,15.83,113.45,15.82,112.94,15.79Z"/><path class="cls-5" d="M11.36,13.89a7.43,7.43,0,0,1,2.52.4c.82.58,2,.89,2.5.3s0-1.61-.79-2.38a7.64,7.64,0,0,1-.93-2.35c.11-1-.23-2.23-1-2.35s-1.47,1-1.65,1.88a7.38,7.38,0,0,1-1.61,2c-.9.42-1.77,1.3-1.49,2S10.48,14.16,11.36,13.89Z"/><path class="cls-5" d="M14.75,3.42C16,3.47,16.49,6,16.29,7.91a26.16,26.16,0,0,0,1.64,4.69,1.88,1.88,0,0,0,.79.79,10.55,10.55,0,0,1-.84-5c.79-2.19.44-5.15-.75-5.84a2.71,2.71,0,0,0-3.68,1.2A1.8,1.8,0,0,1,14.75,3.42Z"/><path class="cls-5" d="M5,14C4.4,13,6.3,11.26,8.09,10.45,8.66,10.2,11,7.2,11.33,6.7a2,2,0,0,0,.29-1.09A10.62,10.62,0,0,1,7.68,8.86C5.38,9.27,3,11.05,3,12.42A2.71,2.71,0,0,0,5.87,15,1.88,1.88,0,0,1,5,14Z"/><path class="cls-5" d="M19.12,17.42c-.66,1-3.07.23-4.67-.92a25.88,25.88,0,0,0-4.87-.92,1.79,1.79,0,0,0-1.08.29,10.37,10.37,0,0,1,4.Line truncated
|
||||
|
Before Width: | Height: | Size: 5.0 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 120 24"><defs><style>.cls-1,.cls-3{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{stroke:#2a96ff;stroke-miterlimit:10;stroke-width:0.5px;}.cls-4{fill:#fff;}.cls-5{fill:#e3493c;}</style><clipPath id="clip-path"><rect class="cls-1" x="272.54" y="79.59" width="600" height="600"/></clipPath></defs><title>aa-logo-horiz-dark</title><g id="Layer_1" data-name="Layer 1"><g class="cls-2"><circle class="cls-3" cx="338.14" cy="263.28" r="277.97"/></g></g><g id="Layer_4" data-name="Layer 4"><path class="cls-4" d="M27.67,15.74l-.19-1.58H26.29l-.2,1.58H24.51L25.7,7.79h2.39l1.19,8Zm-.75-6.39h-.08l-.4,3.41h.89Z"/><path class="cls-4" d="M32.15,7.79h1.93a2.39,2.39,0,0,1,1.46.35,1.68,1.68,0,0,1,.54,1.11,21,21,0,0,1,.1,2.52,20.93,20.93,0,0,1-.1,2.51,1.68,1.68,0,0,1-.54,1.11,2.39,2.39,0,0,1-1.46.35H32.15Zm1.93,6.51a.46.46,0,0,0,.37-.12,1.19,1.19,0,0,0,.13-.6c0-.32,0-.93,0-1.81s0-1.5,0-1.82a1.19,1.19,0,0,0-.13-.6.46.46,0,0,0-.37-.12h-.36V14.3Z"/><path class="cls-4" d="M39.94,15.74,38.87,7.79h1.59l.66,6.31h.12l.61-6.31h1.57l-1.07,8Z"/><path class="cls-4" d="M48.8,15.74l-.19-1.58H47.42l-.2,1.58H45.64l1.19-7.95h2.39l1.19,8Zm-.75-6.39H48l-.4,3.41h.89Z"/><path class="cls-4" d="M56.06,15.74l-1.23-4h0v4h-1.5V7.79h1.47l1.13,3.61h.06V7.79h1.51v8Z"/><path class="cls-4" d="M63.14,15.77a3.11,3.11,0,0,1-.59.06,2.06,2.06,0,0,1-1.36-.37,1.94,1.94,0,0,1-.58-1.19,17.1,17.1,0,0,1-.13-2.5,14.22,14.22,0,0,1,.15-2.5,1.94,1.94,0,0,1,.58-1.2,2,2,0,0,1,1.34-.37,4.21,4.21,0,0,1,.62,0,1.86,1.86,0,0,1,.45.12V9.2a5.77,5.77,0,0,0-.78-.06.77.77,0,0,0-.55.15,1.22,1.22,0,0,0-.18.64c0,.33,0,.94,0,1.84s0,1.5,0,1.83a1.22,1.22,0,0,0,.18.64.77.77,0,0,0,.55.15,4.74,4.74,0,0,0,.8-.06v1.29A1.56,1.56,0,0,1,63.14,15.77Z"/><path class="cls-4" d="M66.59,15.74V7.79h3.19V9.23h-1.6V11h1.41v1.45H68.18V14.3h1.6v1.44Z"/><path class="cls-4" d="M72.79,7.79h1.92a2.4,2.4,0,0,1,1.47.35,1.67,1.67,0,0,1,.53,1.11,20.46,20.46,0,0,1,.11,2.52,20.38,20.38,0,0,1-.11,2.51,1.67,1.67,0,0,1-.53,1.11,2.4,2.4,0,0,1-1.47.35H72.79Zm1.92,6.51a.48.48,0,0,0,.38-.12,1.19,1.19,0,0,0,.13-.6c0-.32,0-.93,0-1.81s0-1.5,0-1.82a1.19,1.19,0,0,0-.13-.6.48.48,0,0,0-.38-.12h-.35V14.3Z"/><path class="cls-5" d="M85.6,15.74l-.91-2.31H80.93L80,15.74h-.76l3.11-7.95h.89l3.12,8ZM82.84,8.66h-.06l-1.61,4.08h3.27Z"/><path class="cls-5" d="M88.44,15.74V7.79h.74V15H93v.72Z"/><path class="cls-5" d="M97.86,12.24v-.68h2.7v4c-.37.06-.8.12-1.26.16s-.87.06-1.22.06a5.68,5.68,0,0,1-2.14-.3A1.71,1.71,0,0,1,95,14.4a9.76,9.76,0,0,1-.26-2.63A9.85,9.85,0,0,1,95,9.13,1.71,1.71,0,0,1,96,8a5.91,5.91,0,0,1,2.13-.29c.38,0,.81,0,1.27.06s.86.1,1.18.16v.66a13.61,13.61,0,0,0-2-.19,8.76,8.76,0,0,0-2,.16,1.21,1.21,0,0,0-.79.85,8.45,8.45,0,0,0-.23,2.37A10.48,10.48,0,0,0,95.66,14a1.27,1.27,0,0,0,.7.91,4.41,4.41,0,0,0,1.72.24l.9,0c.35,0,.64,0,.87-.09V12.24Z"/><path class="cls-5" d="M103.84,15.54a1.48,1.48,0,0,1-.83-1.08,13.91,13.91,0,0,1-.17-2.69,14,14,0,0,1,.17-2.7A1.48,1.48,0,0,1,103.84,8a6,6,0,0,1,2.21-.29,5.94,5.94,0,0,1,2.2.29,1.46,1.46,0,0,1,.83,1.08,13.75,13.75,0,0,1,.18,2.7,13.7,13.7,0,0,1-.18,2.69,1.46,1.46,0,0,1-.83,1.08,5.94,5.94,0,0,1-2.2.29A6,6,0,0,1,103.84,15.54Zm3.93-.57a1,1,0,0,0,.61-.81,13.62,13.62,0,0,0,.14-2.39,13.68,13.68,0,0,0-.14-2.4,1,1,0,0,0-.61-.81,8.84,8.84,0,0,0-3.45,0,1,1,0,0,0-.6.81,12.47,12.47,0,0,0-.15,2.4,12.42,12.42,0,0,0,.15,2.39,1,1,0,0,0,.6.81,8.84,8.84,0,0,0,3.45,0Z"/><path class="cls-5" d="M112.94,15.79c-.5,0-.94-.06-1.31-.11V15l1.33.1c.48,0,.88.05,1.2.05a8.75,8.75,0,0,0,1-.05,1.78,1.78,0,0,0,.65-.22.68.68,0,0,0,.35-.47,3.13,3.13,0,0,0,.09-.83,4.54,4.54,0,0,0-.06-.9.57.57,0,0,0-.31-.37,3.72,3.72,0,0,0-.88-.18l-2-.22a2.08,2.08,0,0,1-1.06-.32,1.18,1.18,0,0,1-.44-.64,5,5,0,0,1-.09-1.07,2.57,2.57,0,0,1,.3-1.38,1.56,1.56,0,0,1,.9-.63,6.12,6.12,0,0,1,1.59-.16c.45,0,.9,0,1.35,0s.81.08,1.07.13v.66c-.31,0-.68-.07-1.11-.1s-.83,0-1.19,0a6.52,6.52,0,0,0-1.1.07,1.88,1.88,0,0,0-.66.22.73.73,0,0,0-.33.44,2.52,2.52,0,0,0-.08.75,2.94,2.94,0,0,0,.07.77.61.61,0,0,0,.29.36,2.05,2.05,0,0,0,.69.16l2,.21a4.86,4.86,0,0,1,1.17.24,1,1,0,0,1,.55.63,4.24,4.24,0,0,1,.13,1.27,3,3,0,0,1-.31,1.54,1.36,1.36,0,0,1-.85.64,5.78,5.78,0,0,1-1.47.14C113.93,15.83,113.45,15.82,112.94,15.79Z"/><path class="cls-5" d="M11.36,13.89a7.43,7.43,0,0,1,2.52.4c.82.58,2,.89,2.5.3s0-1.61-.79-2.38a7.64,7.64,0,0,1-.93-2.35c.11-1-.23-2.23-1-2.35s-1.47,1-1.65,1.88a7.38,7.38,0,0,1-1.61,2c-.9.42-1.77,1.3-1.49,2S10.48,14.16,11.36,13.89Z"/><path class="cls-5" d="M14.75,3.42C16,3.47,16.49,6,16.29,7.91a26.16,26.16,0,0,0,1.64,4.69,1.88,1.88,0,0,0,.79.79,10.55,10.55,0,0,1-.84-5c.79-2.19.44-5.15-.75-5.84a2.71,2.71,0,0,0-3.68,1.2A1.8,1.8,0,0,1,14.75,3.42Z"/><path class="cls-5" d="M5,14C4.4,13,6.3,11.26,8.09,10.45,8.66,10.2,11,7.2,11.33,6.7a2,2,0,0,0,.29-1.09A10.62,10.62,0,0,1,7.68,8.86C5.38,9.27,3,11.05,3,12.42A2.71,2.71,0,0,0,5.87,15,1.88,1.88,0,0,1,5,14Z"/><path class="cls-5" d="M19.12,17.42c-.66,1-3.07.23-4.67-.92a25.88,25.88,0,0,0-4.87-.92,1.79,1.79,0,0,0-1.08.29,10.37,10.37,0,Line truncated
|
||||
|
Before Width: | Height: | Size: 5.0 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 98 140"><defs><style>.cls-1,.cls-3{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{stroke:#2a96ff;stroke-miterlimit:10;stroke-width:0.5px;}.cls-4{fill:#fff;}.cls-5{fill:#e3493c;}</style><clipPath id="clip-path"><rect class="cls-1" x="144.54" y="59.59" width="600" height="600"/></clipPath></defs><title>aa-logo-vert-dark</title><g id="Layer_1" data-name="Layer 1"><g class="cls-2"><circle class="cls-3" cx="210.14" cy="243.28" r="277.97"/></g></g><g id="Layer_4" data-name="Layer 4"><path class="cls-4" d="M11.27,108.29l-.38-3H8.62l-.38,3h-3L7.49,93.1h4.57l2.28,15.19ZM9.83,96.08H9.68L8.9,102.6h1.71Z"/><path class="cls-4" d="M18,93.1h3.69a4.53,4.53,0,0,1,2.79.67,3.22,3.22,0,0,1,1,2.11,41.13,41.13,0,0,1,.19,4.82,41,41,0,0,1-.19,4.81,3.19,3.19,0,0,1-1,2.11,4.46,4.46,0,0,1-2.79.67H18Zm3.69,12.43a.89.89,0,0,0,.71-.22,2.31,2.31,0,0,0,.25-1.15c0-.61,0-1.77,0-3.46s0-2.85,0-3.47a2.31,2.31,0,0,0-.25-1.15.89.89,0,0,0-.71-.22H21v9.67Z"/><path class="cls-4" d="M31.16,108.29,29.11,93.1h3l1.25,12.06h.23L34.8,93.1h3l-2.05,15.19Z"/><path class="cls-4" d="M46.35,108.29l-.38-3H43.7l-.38,3h-3L42.57,93.1h4.57l2.28,15.19ZM44.91,96.08h-.15L44,102.6h1.7Z"/><path class="cls-4" d="M58.44,108.29l-2.36-7.62H56v7.62H53.12V93.1h2.8L58.09,100h.11V93.1h2.89v15.19Z"/><path class="cls-4" d="M70.19,108.36a6.43,6.43,0,0,1-1.12.11,4,4,0,0,1-2.61-.71,3.72,3.72,0,0,1-1.1-2.28,31.28,31.28,0,0,1-.26-4.78,29.46,29.46,0,0,1,.28-4.77,3.82,3.82,0,0,1,1.12-2.3,3.9,3.9,0,0,1,2.57-.71,7.72,7.72,0,0,1,1.18.1,3.21,3.21,0,0,1,.85.24v2.53a11.75,11.75,0,0,0-1.48-.11,1.48,1.48,0,0,0-1.05.29,2.16,2.16,0,0,0-.35,1.23c0,.62-.08,1.79-.08,3.5s0,2.87.08,3.5a2.15,2.15,0,0,0,.35,1.22,1.48,1.48,0,0,0,1.05.29,9.89,9.89,0,0,0,1.53-.11v2.47A4.23,4.23,0,0,1,70.19,108.36Z"/><path class="cls-4" d="M75,108.29V93.1h6.09v2.76H78v3.38h2.7V102H78v3.53h3.07v2.76Z"/><path class="cls-4" d="M85.08,93.1h3.69a4.55,4.55,0,0,1,2.79.67,3.16,3.16,0,0,1,1,2.11,38.45,38.45,0,0,1,.2,4.82,38.37,38.37,0,0,1-.2,4.81,3.14,3.14,0,0,1-1,2.11,4.48,4.48,0,0,1-2.79.67H85.08Zm3.69,12.43a.89.89,0,0,0,.71-.22,2.31,2.31,0,0,0,.25-1.15c0-.61,0-1.77,0-3.46s0-2.85,0-3.47a2.31,2.31,0,0,0-.25-1.15.89.89,0,0,0-.71-.22h-.69v9.67Z"/><path class="cls-5" d="M19.79,134.79l-2.1-5.3H9.08L7,134.79H5.24l7.15-18.23h2l7.16,18.23Zm-6.33-16.24h-.14L9.64,127.9h7.5Z"/><path class="cls-5" d="M26.41,134.79V116.56h1.7v16.58H37v1.65Z"/><path class="cls-5" d="M48.1,126.76V125.2h6.2v9.3c-.87.14-1.84.26-2.9.35s-2,.15-2.8.15a12.88,12.88,0,0,1-4.9-.69,3.89,3.89,0,0,1-2.15-2.6,22.5,22.5,0,0,1-.58-6,22.11,22.11,0,0,1,.6-6A3.87,3.87,0,0,1,43.72,117a13.15,13.15,0,0,1,4.88-.67c.88,0,1.85.05,2.92.14s2,.22,2.7.36v1.51a33.49,33.49,0,0,0-4.66-.42,18.69,18.69,0,0,0-4.55.37,2.7,2.7,0,0,0-1.81,1.93,18.81,18.81,0,0,0-.53,5.43,23.5,23.5,0,0,0,.39,5.13,3,3,0,0,0,1.59,2.09,10.15,10.15,0,0,0,4,.55c.56,0,1.25,0,2.07-.08s1.47-.12,2-.19v-6.41Z"/><path class="cls-5" d="M61.91,134.32A3.33,3.33,0,0,1,60,131.86a31.94,31.94,0,0,1-.41-6.19,31.89,31.89,0,0,1,.41-6.18A3.33,3.33,0,0,1,61.91,117a13.45,13.45,0,0,1,5.07-.67A13.42,13.42,0,0,1,72,117a3.33,3.33,0,0,1,1.89,2.47,31.89,31.89,0,0,1,.41,6.18,31.94,31.94,0,0,1-.41,6.19A3.33,3.33,0,0,1,72,134.32,13.38,13.38,0,0,1,67,135,13.4,13.4,0,0,1,61.91,134.32Zm9-1.29a2.34,2.34,0,0,0,1.37-1.86,29.55,29.55,0,0,0,.34-5.5,29.7,29.7,0,0,0-.34-5.5,2.32,2.32,0,0,0-1.37-1.85,13.69,13.69,0,0,0-4-.38,13.73,13.73,0,0,0-4,.38,2.32,2.32,0,0,0-1.37,1.85,28.82,28.82,0,0,0-.34,5.5,28.68,28.68,0,0,0,.34,5.5A2.34,2.34,0,0,0,63,133a13.73,13.73,0,0,0,4,.38A13.69,13.69,0,0,0,70.94,133Z"/><path class="cls-5" d="M82.89,134.91c-1.17-.07-2.18-.15-3-.25v-1.59c.91.08,1.93.16,3,.23s2,.11,2.76.11a17.72,17.72,0,0,0,2.32-.12,4,4,0,0,0,1.49-.49,1.67,1.67,0,0,0,.81-1.07,7.68,7.68,0,0,0,.2-1.92,9.6,9.6,0,0,0-.15-2.07,1.14,1.14,0,0,0-.71-.83,7.63,7.63,0,0,0-2-.42L83,126a4.91,4.91,0,0,1-2.42-.74,2.61,2.61,0,0,1-1-1.47,10.4,10.4,0,0,1-.23-2.45,5.81,5.81,0,0,1,.71-3.17,3.47,3.47,0,0,1,2-1.44,14.24,14.24,0,0,1,3.66-.37c1,0,2,0,3.09.1a19.49,19.49,0,0,1,2.44.29v1.51c-.7-.08-1.55-.16-2.54-.22s-1.9-.09-2.73-.09a15.54,15.54,0,0,0-2.52.16,4.18,4.18,0,0,0-1.51.5,1.74,1.74,0,0,0-.76,1,6,6,0,0,0-.19,1.72,6.83,6.83,0,0,0,.17,1.76,1.32,1.32,0,0,0,.67.82,4.9,4.9,0,0,0,1.57.39l4.51.47a10.3,10.3,0,0,1,2.69.56,2.23,2.23,0,0,1,1.25,1.43,9.9,9.9,0,0,1,.3,2.91,6.84,6.84,0,0,1-.72,3.54,3.17,3.17,0,0,1-2,1.47,14.17,14.17,0,0,1-3.38.32C85.14,135,84.05,135,82.89,134.91Z"/><path class="cls-5" d="M47.08,49.62c1.17-.36,8.61.83,9.61,1.53,3.13,2.21,7.71,3.41,9.55,1.15s-.08-6.13-3-9.1c-.88-.88-3.7-7.75-3.56-9,.42-3.87-.85-8.5-3.73-9s-5.61,3.66-6.3,7.16c-.24,1.22-5,7.11-6.14,7.62-3.48,1.62-6.77,5-5.73,7.69S43.7,50.65,47.08,49.62Z"/><path class="cls-5" d="M60,9.61c4.68.2,6.65,9.72,5.89,17.18-.24,2.37,5.27,15.71,6.24,17.91a7.29,7.29,0,0,0,3,3C71.63,38.07,71.32,30.32,72,28.51c3-8.4,1.71-19.69-2.85-22.32-3.07-1.77-9.79-2.48-14.07,4.56A6.91,6.91,0,0,1,60,9.61Z"/><path class="cls-5" d="M22.61,50.2C2Line truncated
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 98 140"><defs><style>.cls-1,.cls-3{fill:none;}.cls-2{clip-path:url(#clip-path);}.cls-3{stroke:#2a96ff;stroke-miterlimit:10;stroke-width:0.5px;}.cls-4{fill:#4d4d4d;}.cls-5{fill:#e3493c;}</style><clipPath id="clip-path"><rect class="cls-1" x="144.54" y="59.59" width="600" height="600"/></clipPath></defs><title>aa-logo-vert</title><g id="Layer_1" data-name="Layer 1"><g class="cls-2"><circle class="cls-3" cx="210.14" cy="243.28" r="277.97"/></g></g><g id="Layer_4" data-name="Layer 4"><path class="cls-4" d="M11.27,108.29l-.38-3H8.62l-.38,3h-3L7.49,93.1h4.57l2.28,15.19ZM9.83,96.08H9.68L8.9,102.6h1.71Z"/><path class="cls-4" d="M18,93.1h3.69a4.53,4.53,0,0,1,2.79.67,3.22,3.22,0,0,1,1,2.11,41.13,41.13,0,0,1,.19,4.82,41,41,0,0,1-.19,4.81,3.19,3.19,0,0,1-1,2.11,4.46,4.46,0,0,1-2.79.67H18Zm3.69,12.43a.89.89,0,0,0,.71-.22,2.31,2.31,0,0,0,.25-1.15c0-.61,0-1.77,0-3.46s0-2.85,0-3.47a2.31,2.31,0,0,0-.25-1.15.89.89,0,0,0-.71-.22H21v9.67Z"/><path class="cls-4" d="M31.16,108.29,29.11,93.1h3l1.25,12.06h.23L34.8,93.1h3l-2.05,15.19Z"/><path class="cls-4" d="M46.35,108.29l-.38-3H43.7l-.38,3h-3L42.57,93.1h4.57l2.28,15.19ZM44.91,96.08h-.15L44,102.6h1.7Z"/><path class="cls-4" d="M58.44,108.29l-2.36-7.62H56v7.62H53.12V93.1h2.8L58.09,100h.11V93.1h2.89v15.19Z"/><path class="cls-4" d="M70.19,108.36a6.43,6.43,0,0,1-1.12.11,4,4,0,0,1-2.61-.71,3.72,3.72,0,0,1-1.1-2.28,31.28,31.28,0,0,1-.26-4.78,29.46,29.46,0,0,1,.28-4.77,3.82,3.82,0,0,1,1.12-2.3,3.9,3.9,0,0,1,2.57-.71,7.72,7.72,0,0,1,1.18.1,3.21,3.21,0,0,1,.85.24v2.53a11.75,11.75,0,0,0-1.48-.11,1.48,1.48,0,0,0-1.05.29,2.16,2.16,0,0,0-.35,1.23c0,.62-.08,1.79-.08,3.5s0,2.87.08,3.5a2.15,2.15,0,0,0,.35,1.22,1.48,1.48,0,0,0,1.05.29,9.89,9.89,0,0,0,1.53-.11v2.47A4.23,4.23,0,0,1,70.19,108.36Z"/><path class="cls-4" d="M75,108.29V93.1h6.09v2.76H78v3.38h2.7V102H78v3.53h3.07v2.76Z"/><path class="cls-4" d="M85.08,93.1h3.69a4.55,4.55,0,0,1,2.79.67,3.16,3.16,0,0,1,1,2.11,38.45,38.45,0,0,1,.2,4.82,38.37,38.37,0,0,1-.2,4.81,3.14,3.14,0,0,1-1,2.11,4.48,4.48,0,0,1-2.79.67H85.08Zm3.69,12.43a.89.89,0,0,0,.71-.22,2.31,2.31,0,0,0,.25-1.15c0-.61,0-1.77,0-3.46s0-2.85,0-3.47a2.31,2.31,0,0,0-.25-1.15.89.89,0,0,0-.71-.22h-.69v9.67Z"/><path class="cls-5" d="M19.79,134.79l-2.1-5.3H9.08L7,134.79H5.24l7.15-18.23h2l7.16,18.23Zm-6.33-16.24h-.14L9.64,127.9h7.5Z"/><path class="cls-5" d="M26.41,134.79V116.56h1.7v16.58H37v1.65Z"/><path class="cls-5" d="M48.1,126.76V125.2h6.2v9.3c-.87.14-1.84.26-2.9.35s-2,.15-2.8.15a12.88,12.88,0,0,1-4.9-.69,3.89,3.89,0,0,1-2.15-2.6,22.5,22.5,0,0,1-.58-6,22.11,22.11,0,0,1,.6-6A3.87,3.87,0,0,1,43.72,117a13.15,13.15,0,0,1,4.88-.67c.88,0,1.85.05,2.92.14s2,.22,2.7.36v1.51a33.49,33.49,0,0,0-4.66-.42,18.69,18.69,0,0,0-4.55.37,2.7,2.7,0,0,0-1.81,1.93,18.81,18.81,0,0,0-.53,5.43,23.5,23.5,0,0,0,.39,5.13,3,3,0,0,0,1.59,2.09,10.15,10.15,0,0,0,4,.55c.56,0,1.25,0,2.07-.08s1.47-.12,2-.19v-6.41Z"/><path class="cls-5" d="M61.91,134.32A3.33,3.33,0,0,1,60,131.86a31.94,31.94,0,0,1-.41-6.19,31.89,31.89,0,0,1,.41-6.18A3.33,3.33,0,0,1,61.91,117a13.45,13.45,0,0,1,5.07-.67A13.42,13.42,0,0,1,72,117a3.33,3.33,0,0,1,1.89,2.47,31.89,31.89,0,0,1,.41,6.18,31.94,31.94,0,0,1-.41,6.19A3.33,3.33,0,0,1,72,134.32,13.38,13.38,0,0,1,67,135,13.4,13.4,0,0,1,61.91,134.32Zm9-1.29a2.34,2.34,0,0,0,1.37-1.86,29.55,29.55,0,0,0,.34-5.5,29.7,29.7,0,0,0-.34-5.5,2.32,2.32,0,0,0-1.37-1.85,13.69,13.69,0,0,0-4-.38,13.73,13.73,0,0,0-4,.38,2.32,2.32,0,0,0-1.37,1.85,28.82,28.82,0,0,0-.34,5.5,28.68,28.68,0,0,0,.34,5.5A2.34,2.34,0,0,0,63,133a13.73,13.73,0,0,0,4,.38A13.69,13.69,0,0,0,70.94,133Z"/><path class="cls-5" d="M82.89,134.91c-1.17-.07-2.18-.15-3-.25v-1.59c.91.08,1.93.16,3,.23s2,.11,2.76.11a17.72,17.72,0,0,0,2.32-.12,4,4,0,0,0,1.49-.49,1.67,1.67,0,0,0,.81-1.07,7.68,7.68,0,0,0,.2-1.92,9.6,9.6,0,0,0-.15-2.07,1.14,1.14,0,0,0-.71-.83,7.63,7.63,0,0,0-2-.42L83,126a4.91,4.91,0,0,1-2.42-.74,2.61,2.61,0,0,1-1-1.47,10.4,10.4,0,0,1-.23-2.45,5.81,5.81,0,0,1,.71-3.17,3.47,3.47,0,0,1,2-1.44,14.24,14.24,0,0,1,3.66-.37c1,0,2,0,3.09.1a19.49,19.49,0,0,1,2.44.29v1.51c-.7-.08-1.55-.16-2.54-.22s-1.9-.09-2.73-.09a15.54,15.54,0,0,0-2.52.16,4.18,4.18,0,0,0-1.51.5,1.74,1.74,0,0,0-.76,1,6,6,0,0,0-.19,1.72,6.83,6.83,0,0,0,.17,1.76,1.32,1.32,0,0,0,.67.82,4.9,4.9,0,0,0,1.57.39l4.51.47a10.3,10.3,0,0,1,2.69.56,2.23,2.23,0,0,1,1.25,1.43,9.9,9.9,0,0,1,.3,2.91,6.84,6.84,0,0,1-.72,3.54,3.17,3.17,0,0,1-2,1.47,14.17,14.17,0,0,1-3.38.32C85.14,135,84.05,135,82.89,134.91Z"/><path class="cls-5" d="M47.08,49.62c1.17-.36,8.61.83,9.61,1.53,3.13,2.21,7.71,3.41,9.55,1.15s-.08-6.13-3-9.1c-.88-.88-3.7-7.75-3.56-9,.42-3.87-.85-8.5-3.73-9s-5.61,3.66-6.3,7.16c-.24,1.22-5,7.11-6.14,7.62-3.48,1.62-6.77,5-5.73,7.69S43.7,50.65,47.08,49.62Z"/><path class="cls-5" d="M60,9.61c4.68.2,6.65,9.72,5.89,17.18-.24,2.37,5.27,15.71,6.24,17.91a7.29,7.29,0,0,0,3,3C71.63,38.07,71.32,30.32,72,28.51c3-8.4,1.71-19.69-2.85-22.32-3.07-1.77-9.79-2.48-14.07,4.56A6.91,6.91,0,0,1,60,9.61Z"/><path class="cls-5" d="M22.61,50.2C20.Line truncated
|
||||
|
Before Width: | Height: | Size: 5.3 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 360 96"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#e3493c;}</style></defs><title>Superalgos-logo-horz-dark</title><g id="Layer_4" data-name="Layer 4"><path class="cls-1" d="M105.33,66.86a30.85,30.85,0,0,1-3.58-.6V61.84a49.59,49.59,0,0,0,5.92.42,11.06,11.06,0,0,0,2.47-.21,2.63,2.63,0,0,0,1.37-.78,3.4,3.4,0,0,0,.65-1.64,17.68,17.68,0,0,0,.18-2.83,24.15,24.15,0,0,0-.18-3.61,2.16,2.16,0,0,0-.8-1.45,6.77,6.77,0,0,0-2.24-.81l-4.41-.88a3.53,3.53,0,0,1-2.78-2.62,23,23,0,0,1-.7-6.57,16.26,16.26,0,0,1,1-6.24,6,6,0,0,1,2.86-3.17,11.16,11.16,0,0,1,4.91-.93,25.48,25.48,0,0,1,4,.28c1.19.2,2,.36,2.57.5v4.46a17,17,0,0,0-2.08-.28c-1-.09-2-.13-3-.13a11.47,11.47,0,0,0-2.78.26,2.19,2.19,0,0,0-1.37.93,3.69,3.69,0,0,0-.63,1.59,17.44,17.44,0,0,0-.15,2.57,20.72,20.72,0,0,0,.15,3,2.29,2.29,0,0,0,.6,1.3,3.23,3.23,0,0,0,1.48.59l3.9.83a7.33,7.33,0,0,1,2.78,1.15,4.9,4.9,0,0,1,1.63,2.59,19.4,19.4,0,0,1,.57,5.77,21.38,21.38,0,0,1-.85,6.83,5.84,5.84,0,0,1-2.68,3.38,10.64,10.64,0,0,1-4.93,1A36.1,36.1,0,0,1,105.33,66.86Z"/><path class="cls-1" d="M143.91,30.93V51a72.1,72.1,0,0,1-.5,10.12,6.77,6.77,0,0,1-2.31,4.52q-1.82,1.41-6,1.41t-6-1.41a6.68,6.68,0,0,1-2.29-4.49A77.15,77.15,0,0,1,126.3,51V30.93h5.3V53.27c0,2.91.06,4.93.18,6.08a3.46,3.46,0,0,0,.88,2.31,3.76,3.76,0,0,0,2.42.6,3.83,3.83,0,0,0,2.46-.6,3.51,3.51,0,0,0,.89-2.31c.12-1.15.18-3.17.18-6.08V30.93Z"/><path class="cls-1" d="M153.51,30.93h9.19a8.12,8.12,0,0,1,5.15,1.38,6.6,6.6,0,0,1,2.26,3.82,31.56,31.56,0,0,1,.54,6.54,31.4,31.4,0,0,1-.52,6.39,6.7,6.7,0,0,1-2.26,3.9,7.89,7.89,0,0,1-5.17,1.45h-3.89V66.67h-5.3Zm8.36,18.71a3.57,3.57,0,0,0,2.32-.6,3.32,3.32,0,0,0,.93-2,28.88,28.88,0,0,0,.23-4.37,28.19,28.19,0,0,0-.23-4.33,3.29,3.29,0,0,0-.93-2,3.63,3.63,0,0,0-2.32-.6h-3.06V49.64Z"/><path class="cls-1" d="M179.28,66.67V30.93h14.07v4.83h-8.73V46.21h7.64V51h-7.64v10.8h8.73v4.83Z"/><path class="cls-1" d="M214.78,66.67l-3.27-13.29h-4V66.67h-5.29V30.93h9.4a8.5,8.5,0,0,1,5.14,1.3A6.17,6.17,0,0,1,219,35.89a29.17,29.17,0,0,1,.55,6.27,26.68,26.68,0,0,1-.63,6.44,5.71,5.71,0,0,1-2.59,3.63l3.89,14.44Zm-1.69-18.54a3,3,0,0,0,.93-1.87,24.61,24.61,0,0,0,.24-4,24.07,24.07,0,0,0-.24-4,2.87,2.87,0,0,0-1-1.87,3.67,3.67,0,0,0-2.28-.58H207.5V48.7h3.28A3.69,3.69,0,0,0,213.09,48.13Z"/><path class="cls-2" d="M243.19,66.67l-1.51-8.57h-7l-1.46,8.57H228l6.44-35.74h7.68l6.45,35.74Zm-4.84-29.92H238l-2.75,16.63h5.82Z"/><path class="cls-2" d="M257,66.67V30.93h5.35V61.79h7.84v4.88Z"/><path class="cls-2" d="M286.87,51.4V46.73H295V66.05a22.89,22.89,0,0,1-3.64.75,30.25,30.25,0,0,1-4,.29q-4.05,0-6-1.43t-2.76-5.25a63.23,63.23,0,0,1-.77-11.61,60.57,60.57,0,0,1,.8-11.58q.81-3.8,2.88-5.25c1.39-1,3.5-1.45,6.34-1.45a26,26,0,0,1,3.66.28,27.48,27.48,0,0,1,3.46.71V36c-1-.17-2.05-.32-3.12-.44a23.88,23.88,0,0,0-2.44-.18,9.28,9.28,0,0,0-4.24.68c-.77.44-1.32,1.56-1.63,3.35A63.63,63.63,0,0,0,283,48.8q0,6.35.29,9a6.46,6.46,0,0,0,1.17,3.64,3.93,3.93,0,0,0,3,.93,10.23,10.23,0,0,0,2.7-.31V51.4Z"/><path class="cls-2" d="M306.66,65.58q-1.91-1.5-2.39-5a95.6,95.6,0,0,1-.5-11.74,95.52,95.52,0,0,1,.5-11.73,7.43,7.43,0,0,1,2.39-5q1.89-1.5,6.26-1.5t6.31,1.5a7.52,7.52,0,0,1,2.39,5,98.19,98.19,0,0,1,.49,11.73,98.27,98.27,0,0,1-.49,11.74q-.5,3.54-2.39,5t-6.31,1.51Q308.55,67.09,306.66,65.58Zm8.9-4c.49-.45.82-1.56,1-3.32s.26-4.92.26-9.46-.09-7.69-.26-9.45-.5-2.88-1-3.32a3.9,3.9,0,0,0-2.64-.68,3.83,3.83,0,0,0-2.63.68c-.47.44-.79,1.55-1,3.32s-.26,4.92-.26,9.45.09,7.69.26,9.46.49,2.87,1,3.32a3.83,3.83,0,0,0,2.63.68A3.9,3.9,0,0,0,315.56,61.58Z"/><path class="cls-2" d="M334.69,66.86a30.48,30.48,0,0,1-3.58-.6V61.84a49.59,49.59,0,0,0,5.92.42,11,11,0,0,0,2.46-.21,2.66,2.66,0,0,0,1.38-.78,3.5,3.5,0,0,0,.65-1.64,17.68,17.68,0,0,0,.18-2.83,24.15,24.15,0,0,0-.18-3.61,2.13,2.13,0,0,0-.81-1.45,6.69,6.69,0,0,0-2.23-.81l-4.41-.88a3.51,3.51,0,0,1-2.78-2.62,23,23,0,0,1-.7-6.57,16.26,16.26,0,0,1,1-6.24,6,6,0,0,1,2.85-3.17,11.19,11.19,0,0,1,4.91-.93,25.52,25.52,0,0,1,4,.28c1.19.2,2,.36,2.57.5v4.46a17,17,0,0,0-2.08-.28c-1-.09-2-.13-3-.13a11.47,11.47,0,0,0-2.78.26,2.24,2.24,0,0,0-1.38.93,3.56,3.56,0,0,0-.62,1.59,17.23,17.23,0,0,0-.16,2.57,20.35,20.35,0,0,0,.16,3,2.17,2.17,0,0,0,.6,1.3,3.19,3.19,0,0,0,1.48.59l3.89.83a7.26,7.26,0,0,1,2.78,1.15,4.91,4.91,0,0,1,1.64,2.59,19.4,19.4,0,0,1,.57,5.77,21.33,21.33,0,0,1-.86,6.83,5.79,5.79,0,0,1-2.67,3.38,10.66,10.66,0,0,1-4.94,1A35.92,35.92,0,0,1,334.69,66.86Z"/><path class="cls-2" d="M46.72,59c1.23-.38,9.08.88,10.13,1.62,3.3,2.33,8.14,3.58,10.08,1.2s-.09-6.47-3.19-9.59c-.92-.94-3.89-8.18-3.75-9.47.44-4.09-.9-9-3.94-9.46s-5.91,3.86-6.64,7.56c-.25,1.29-5.32,7.5-6.48,8-3.67,1.7-7.14,5.24-6,8.11S43.15,60.05,46.72,59Z"/><path class="cls-2" d="M60.38,16.76c4.93.21,7,10.25,6.21,18.12-.25,2.5,5.56,16.57,6.58,18.88A7.82,7.82,0,0,0,76.37,57C72.61,46.77,72.28,38.6,73,36.69c3.21-8.85,1.8-20.77-3-23.53-3.25-1.87-10.33-2.62-14.85,4.8A7.33,7.33,0,0,1,60.38,16.76Z"/><path class="cls-2" d="M20.91,59.57c-2.28-4.39,5.38-11.2,12.6-14.45C35.8,44.09,45.07,32,46.57,30a7.77,7.77,0,0,0,1.17-4.37c-7,8.35-13.86,Line truncated
|
||||
|
After Width: | Height: | Size: 5.2 KiB |
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+3
-3
@@ -3,7 +3,7 @@
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
|
||||
<link rel="manifest" href="/site.webmanifest">
|
||||
<link rel="mask-icon" href="/safari-pinned-tab.svg" color="#e3493c">
|
||||
<meta name="apple-mobile-web-app-title" content="Advanced Algos">
|
||||
<meta name="application-name" content="Advanced Algos">
|
||||
<meta name="apple-mobile-web-app-title" content="Superalgos">
|
||||
<meta name="application-name" content="Superalgos">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
File renamed without changes.
File renamed without changes.
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "Advanced Algos",
|
||||
"short_name": "Advanced Algos",
|
||||
"name": "Superalgos",
|
||||
"short_name": "Superalgos",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
@@ -32,6 +32,7 @@ const VERIFY_TEAM_INVITE = gql`
|
||||
export const defaultOptions = {
|
||||
oidcConformant: true,
|
||||
autoclose: true,
|
||||
allowedConnections: ['Username-Password-Authentication'],
|
||||
auth: {
|
||||
sso: true,
|
||||
redirectUrl: window.location.origin + '/callback',
|
||||
@@ -40,7 +41,15 @@ export const defaultOptions = {
|
||||
params: {
|
||||
scope: `openid profile email user_metadata app_metadata picture`
|
||||
}
|
||||
}
|
||||
},
|
||||
theme: {
|
||||
logo: 'https://aadevelop.blob.core.windows.net/module-master/assets/logos/Superalgos-mark-auth0-lock.png',
|
||||
primaryColor: '#e3493c'
|
||||
},
|
||||
languageDictionary: {
|
||||
title: 'Platform Dev'
|
||||
},
|
||||
avatar:null
|
||||
}
|
||||
|
||||
export const inviteOptions = {
|
||||
@@ -172,9 +181,6 @@ class Auth {
|
||||
alias: authResult.idTokenPayload.nickname
|
||||
}
|
||||
setItem('user', JSON.stringify(user))
|
||||
if (window.location.href.includes(`callback`)) {
|
||||
// window.location.href = '/dashboard'
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
||||
@@ -192,9 +198,7 @@ class Auth {
|
||||
alias: response.data.users_Authenticate.alias
|
||||
}
|
||||
setItem('user', JSON.stringify(user))
|
||||
if (window.location.href.includes(`callback`)) {
|
||||
window.location.href = '/'
|
||||
}
|
||||
window.location.href = '/'
|
||||
return response.data
|
||||
} catch (err) {
|
||||
return console.log('Sign in or create account error: ', err)
|
||||
|
||||
@@ -7,12 +7,7 @@ import { setContext } from 'apollo-link-context'
|
||||
|
||||
import { getItem } from '../utils/local-storage'
|
||||
|
||||
const graphqlEndpoint =
|
||||
process.env.NODE_ENV === 'production'
|
||||
? process.env.PROD_GRAPHQL
|
||||
: process.env.DEV_GRAPHQL
|
||||
|
||||
const httpLink = new HttpLink({ uri: graphqlEndpoint })
|
||||
const httpLink = new HttpLink({ uri: process.env.PLATFORM_API_URL })
|
||||
|
||||
const authRetryLink = onError(
|
||||
({ graphQLErrors, networkError, operation, forward }) => {
|
||||
|
||||
+6
-1
@@ -12,4 +12,9 @@ if (process.env.NODE_ENV !== 'production') {
|
||||
window.localStorage.setItem('debug', 'advanced-algos:*')
|
||||
}
|
||||
|
||||
ReactDOM.render(<Provider store={store}><MasterApp /></Provider>, document.getElementById('masterApp'))
|
||||
ReactDOM.render(
|
||||
<Provider store={store}>
|
||||
<MasterApp />
|
||||
</Provider>,
|
||||
document.getElementById('masterApp')
|
||||
)
|
||||
@@ -7,7 +7,7 @@ $height-nav-bar: 131px;
|
||||
|
||||
$height-not-top: 87px;
|
||||
|
||||
$image-height-big: 75px;
|
||||
$image-height-big: 60px;
|
||||
$image-height-small: 45px;
|
||||
|
||||
$text-height: 25px;
|
||||
@@ -44,7 +44,8 @@ $advanced-algos-red: rgb(245,88,88);
|
||||
}
|
||||
|
||||
body{
|
||||
overflow-y:scroll;
|
||||
padding-right: 0 !important;
|
||||
overflow-y: scroll;
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
border: 1px solid #000;
|
||||
@@ -235,6 +236,9 @@ header.menu{
|
||||
&:hover{
|
||||
color: $advanced-algos-red;
|
||||
}
|
||||
svg{
|
||||
padding-top: 10px;
|
||||
}
|
||||
}
|
||||
ul.subMenu{
|
||||
display: none;
|
||||
@@ -293,6 +297,9 @@ header.menu{
|
||||
&.selected{
|
||||
color: $advanced-algos-red;
|
||||
}
|
||||
svg{
|
||||
padding-top: 10px;
|
||||
}
|
||||
}
|
||||
ul.subMenu{
|
||||
display: none;
|
||||
@@ -331,7 +338,7 @@ header.menu{
|
||||
.bannerTopBar{
|
||||
background-position: center center;
|
||||
background-size: cover;
|
||||
background-image: url(https://advancedalgos.net/img/photos/teams.jpg);
|
||||
background-image: url(https://superalgos.org/img/photos/teams.jpg);
|
||||
width: 100%;
|
||||
height: 220px;
|
||||
&.big{
|
||||
|
||||
@@ -6,7 +6,7 @@ const Callback = () => <BannerTopBar
|
||||
size='big'
|
||||
title=''
|
||||
text='Authenticating...'
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
/>
|
||||
|
||||
export default Callback
|
||||
@@ -44,23 +44,30 @@ class Charts extends Component {
|
||||
size='medium'
|
||||
title=''
|
||||
text='Charts loading...'
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
/>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const mapStateToProps = state => {
|
||||
return {
|
||||
context: state.context
|
||||
}
|
||||
}
|
||||
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
const mapDispatchToProps = dispatch => {
|
||||
return {
|
||||
hideFooter: () => { dispatch({ type: 'HIDE_FOOTER' }) },
|
||||
showFooter: () => { dispatch({ type: 'SHOW_FOOTER' }) }
|
||||
hideFooter: () => {
|
||||
dispatch({ type: 'HIDE_FOOTER' })
|
||||
},
|
||||
showFooter: () => {
|
||||
dispatch({ type: 'SHOW_FOOTER' })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default connect(mapStateToProps, mapDispatchToProps)(withStyles(styles)(Charts))
|
||||
export default connect(
|
||||
mapStateToProps,
|
||||
mapDispatchToProps
|
||||
)(withStyles(styles)(Charts))
|
||||
@@ -2,17 +2,18 @@ import React from 'react'
|
||||
import PropTypes from 'prop-types'
|
||||
import Typography from '@material-ui/core/Typography'
|
||||
|
||||
const BannerTopBar = ({
|
||||
size,
|
||||
backgroundUrl,
|
||||
title,
|
||||
text,
|
||||
children
|
||||
}) => (
|
||||
<div className={`bannerTopBar ${size}`} style={backgroundUrl ? { backgroundImage: `url(${backgroundUrl})` } : {}}>
|
||||
const BannerTopBar = ({ size, backgroundUrl, title, text, children }) => (
|
||||
<div
|
||||
className={`bannerTopBar ${size}`}
|
||||
style={backgroundUrl ? { backgroundImage: `url(${backgroundUrl})` } : {}}
|
||||
>
|
||||
<div className='caption'>
|
||||
<Typography className='title' variant='h1' align='center'>{title}</Typography>
|
||||
<Typography className='text' variant='h2' align='center'>{text}</Typography>
|
||||
<Typography className='title' variant='h1' align='center'>
|
||||
{title}
|
||||
</Typography>
|
||||
<Typography className='text' variant='h2' align='center'>
|
||||
{text}
|
||||
</Typography>
|
||||
{children}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -47,7 +47,7 @@ export class SignupForm extends Component {
|
||||
return (
|
||||
<Grid container className={classes.signupRight} direction='column' justify={alignCenter ? 'center' : 'flex-start'}>
|
||||
{displayTitle && <Typography variant='h4' className={classNames(classes.textWhite, classes.signupTitle)} gutterBottom>Stay in touch!</Typography>}
|
||||
{displayIntro && <Typography variant='subtitle1' className={classNames(classes.textWhite, classes.signupText)} gutterBottom>Opt-in our mailing list to stay up to date with the Advanced Algos Project.</Typography>}
|
||||
{displayIntro && <Typography variant='subtitle1' className={classNames(classes.textWhite, classes.signupText)} gutterBottom>Opt-in our mailing list to stay up to date with the Superalgos Project.</Typography>}
|
||||
<form id='email-signup' action='#' className='form-inline' autoComplete='off'>
|
||||
<Typography
|
||||
variant='subtitle1'
|
||||
@@ -122,7 +122,7 @@ export class SignupForm extends Component {
|
||||
console.log('NewsletterSignup handleSubmit: ', this.state.email)
|
||||
const signupResponse = await NewsletterSignup({ variables: { email: this.state.email } })
|
||||
console.log('NewsletterSignup: ', signupResponse)
|
||||
if (signupResponse.data.master_NewsletterSignup === 'SUCCESS') this.setState({ email: '', success: true })
|
||||
if (signupResponse.data.notifications_Master_NewsletterSignup === 'SUCCESS') this.setState({ email: '', success: true })
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ export class SignupVerifyResponse extends React.Component {
|
||||
componentDidMount () {
|
||||
const { mutate } = this.props
|
||||
mutate()
|
||||
};
|
||||
}
|
||||
|
||||
render () {
|
||||
const { loading, error, data } = this.props
|
||||
@@ -17,7 +17,10 @@ export class SignupVerifyResponse extends React.Component {
|
||||
let displayForm = false
|
||||
console.log('SignupVerifyResponse:', loading, error, data)
|
||||
if (error) {
|
||||
if (error.message === 'GraphQL error: Error: Token Expired. Please resubmit email address.') {
|
||||
if (
|
||||
error.message ===
|
||||
'GraphQL error: Error: Token Expired. Please resubmit email address.'
|
||||
) {
|
||||
BannerText = [
|
||||
<strong key='EmailSignupConfirm-error-b1'>
|
||||
Newsletter Signup Error: Verification Token Expired
|
||||
@@ -29,30 +32,38 @@ export class SignupVerifyResponse extends React.Component {
|
||||
]
|
||||
displayForm = true
|
||||
} else {
|
||||
BannerText = ['Newsletter Signup Error: ', <br key='EmailSignupConfirm-error-br' />, error.message]
|
||||
BannerText = [
|
||||
'Newsletter Signup Error: ',
|
||||
<br key='EmailSignupConfirm-error-br' />,
|
||||
error.message
|
||||
]
|
||||
}
|
||||
return (
|
||||
<BannerTopBar
|
||||
size='big'
|
||||
title={BannerTitle}
|
||||
text={BannerText}
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
/>
|
||||
)
|
||||
}
|
||||
if (loading && !error) {
|
||||
BannerText = ['Processing newsletter sign-up...', <br key='EmailSignupConfirm-br' />, 'Thank you for opting-in to recieve updates about the Advanced Algos project!']
|
||||
BannerText = [
|
||||
'Processing newsletter sign-up...',
|
||||
<br key='EmailSignupConfirm-br' />,
|
||||
'Thank you for opting-in to recieve updates about the Superalgos project!'
|
||||
]
|
||||
}
|
||||
if (data !== undefined && data !== null) {
|
||||
console.log(data)
|
||||
if (data.master_NewsletterSignupVerify === 'SUCCESS') {
|
||||
if (data.notifications_Master_NewsletterSignupVerify === 'SUCCESS') {
|
||||
return (
|
||||
<React.Fragment>
|
||||
<BannerTopBar
|
||||
size='big'
|
||||
title='Mailing Sign-Up Complete!'
|
||||
text='We look forward to keeping you up-to-date on the Advanced Algos project.'
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
text='We look forward to keeping you up-to-date on the Superalgos project.'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
>
|
||||
{displayForm && <SignupForm alignCenter />}
|
||||
</BannerTopBar>
|
||||
@@ -65,7 +76,7 @@ export class SignupVerifyResponse extends React.Component {
|
||||
size='big'
|
||||
title='Processing...'
|
||||
text=''
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import gql from 'graphql-tag'
|
||||
|
||||
const NEWSLETTER_SIGNUP = gql`
|
||||
mutation NewsletterSignup($email: String!) {
|
||||
master_NewsletterSignup(email: $email)
|
||||
notifications_Master_NewsletterSignup(email: $email)
|
||||
}
|
||||
`
|
||||
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
import gql from 'graphql-tag'
|
||||
|
||||
const NEWSLETTER_SIGNUP_VERIFY = gql`
|
||||
mutation NewsletterSignupVerify($token: String!) {
|
||||
master_NewsletterSignupVerify(token: $token)
|
||||
mutation NewsletterSignupVerify($token: String!){
|
||||
notifications_Master_NewsletterSignupVerify(token: $token)
|
||||
}
|
||||
`
|
||||
|
||||
|
||||
@@ -27,16 +27,13 @@ export const EmailSignupConfirm = ({ tokenParam }) => {
|
||||
size='big'
|
||||
title=''
|
||||
text={BannerText}
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
/>
|
||||
)
|
||||
}
|
||||
console.log(token)
|
||||
return (
|
||||
<Mutation
|
||||
mutation={NEWSLETTER_SIGNUP_VERIFY}
|
||||
variables={{ token: token }}
|
||||
>
|
||||
<Mutation mutation={NEWSLETTER_SIGNUP_VERIFY} variables={{ token: token }}>
|
||||
{(NewsletterSignupVerify, { loading, error, data }) => {
|
||||
return (
|
||||
<SignupVerifyResponse
|
||||
@@ -46,8 +43,7 @@ export const EmailSignupConfirm = ({ tokenParam }) => {
|
||||
data={data}
|
||||
/>
|
||||
)
|
||||
}
|
||||
}
|
||||
}}
|
||||
</Mutation>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -8,13 +8,13 @@ class Home extends Component {
|
||||
<React.Fragment>
|
||||
<BannerTopBar
|
||||
size='big'
|
||||
title='Advanced Algos Platform'
|
||||
text='Enabling the evolutionary race towards the emergence of superalgos'
|
||||
backgroundUrl='https://aacorporatesitedevelop.azurewebsites.net/img/photos/superalgos-platform.jpg'
|
||||
title='Superalgos Platform'
|
||||
text='People and machines working together to create Superalgos'
|
||||
backgroundUrl='https://superalgos.org/img/photos/superalgos-platform.jpg'
|
||||
/>
|
||||
<div className='homePage container'>
|
||||
<Typography variant='h1' align='center' className='title'>Welcome to the Advanced Algos Platform!</Typography>
|
||||
<Typography variant='h2' align='center' className='subtitle'>CO-CREATE >> COMPETE >> EVOLVE</Typography>
|
||||
<Typography variant='h1' align='center' className='title'>Welcome to the Superalgos Platform!</Typography>
|
||||
<Typography variant='h2' align='center' className='subtitle'>Enabling the evolutionary race towards the emergence of superalgos</Typography>
|
||||
<div className='column'>
|
||||
<Typography align='justify'>
|
||||
Before you begin, please be aware <strong>this is a development environment in pre-alpha stage</strong>.
|
||||
@@ -28,11 +28,11 @@ class Home extends Component {
|
||||
</div>
|
||||
<div className='column'>
|
||||
<Typography align='justify'>
|
||||
Feel free to explore the menu in the top-right corner or visit the <a href='https://www.advancedalgos.net/documentation-quick-start.shtml' target='_blank'>Quick Start Guide</a>.
|
||||
Reporting of bugs at the corresponding <a href='https://github.com/AdvancedAlgos' target='_blank' rel='nofollow'>Advanced Algos Github repository</a> is highly appreciated.
|
||||
Feel free to explore the menu in the top-right corner or visit the <a href='https://www.superalgos.org/documentation-quick-start.shtml' target='_blank'>Quick Start Guide</a>.
|
||||
Reporting of bugs at the corresponding <a href='https://github.com/Superalgos' target='_blank' rel='nofollow'>Superalgos Github repository</a> is highly appreciated.
|
||||
</Typography>
|
||||
<Typography align='justify'>
|
||||
Get in touch with the rest of the community and get answers to your questions in our <a href='https://t.me/advancedalgoscommunity' target='_blank' rel='nofollow'>Telegram Group</a>.
|
||||
Get in touch with the rest of the community and get answers to your questions in our <a href='https://t.me/superalgoscommunity' target='_blank' rel='nofollow'>Telegram Group</a>.
|
||||
Have fun!
|
||||
</Typography>
|
||||
</div>
|
||||
|
||||
@@ -15,7 +15,7 @@ import styles from './styles'
|
||||
|
||||
import SignupForm from '../../email-verification/components/SignupForm'
|
||||
|
||||
import aalogo from '../../../assets/advanced-algos/aa-logo-horiz-dark.svg'
|
||||
import aalogo from '../../../assets/superalgos/Superalgos-logo-horz-dark.svg'
|
||||
|
||||
class Footer extends Component {
|
||||
render () {
|
||||
@@ -34,16 +34,16 @@ class Footer extends Component {
|
||||
className={classes.footerContainer}
|
||||
>
|
||||
<Grid item xs={12} sm={4} md={4}>
|
||||
<NavLink to='/'>
|
||||
<a target='_blank' href='https://superalgos.org/' className={classes.linkStrong}>
|
||||
<img alt='' src={aalogo} width={'100%'} height={'auto'} className={classes.footerLogo} />
|
||||
</NavLink>
|
||||
</a>
|
||||
<Grid container className={classes.descriptionLeft} direction='column'>
|
||||
<Typography className={classNames(classes.textLight, classes.descriptionText)} ><strong>Advanced Algos Ltd.</strong></Typography>
|
||||
<Typography className={classNames(classes.textLight, classes.descriptionText)} ><strong>Superalgos Ltd.</strong></Typography>
|
||||
<Typography className={classNames(classes.textLight, classes.descriptionText)} gutterBottom>Ground Floor, Palace Court, Church Street,<br />St. Julians STJ3049, Malta</Typography>
|
||||
<Typography className={classNames(classes.textLight, classes.descriptionText)}>
|
||||
<Link to='legal-privacy-statement.shtml' className={classNames(classes.textLight, classes.descriptionText)}>Privacy Statement</Link> | <a href='legal-terms-of-service.shtml' className={classes.linkLight}>Terms of Service</a>
|
||||
<a target='_blank' href='https://www.superalgos.org/legal-privacy-statement.shtml' className={classes.linkLight}>Privacy Statement</a> | <a target='_blank' href='https://www.superalgos.org/legal-terms-of-service.shtml' className={classes.linkLight}>Terms of Service</a>
|
||||
</Typography>
|
||||
<Typography variant='body2' className={classNames(classes.textLight, classes.copyright)} gutterBottom>© Advanced Algos, Ltd. 2018 | All Rights Reserved.</Typography>
|
||||
<Typography variant='body2' className={classNames(classes.textLight, classes.copyright)} gutterBottom>© Superalgos, Ltd. 2018 | All Rights Reserved.</Typography>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid item xs={12} sm={1} md={1} />
|
||||
@@ -51,24 +51,24 @@ class Footer extends Component {
|
||||
<SignupForm displayTitle displayIntro />
|
||||
<Typography variant='subtitle1' className={classes.textWhite} style={{ textAlign: width === 'xs' ? 'center' : '' }}>Meet us on Social Networks:</Typography>
|
||||
<Grid container justify={width === 'xs' ? 'center' : 'flex-start'}>
|
||||
<Link to='https://t.me/advancedalgoscommunity' title='Join us on Telgram' className={classes.linkLight}>
|
||||
<a target='_blank' href='https://t.me/superalgoscommunity' title='Join us on Telgram' className={classes.linkLight}>
|
||||
<FontAwesomeIcon
|
||||
icon={faTelegramPlane}
|
||||
className={classNames(classes.icon, classes.iconHover)}
|
||||
/>
|
||||
</Link>
|
||||
<Link to='https://twitter.com/advancedalgos' title='Follow us on Twitter' className={classes.linkLight}>
|
||||
</a>
|
||||
<a target='_blank' href='https://twitter.com/superalgos' title='Follow us on Twitter' className={classes.linkLight}>
|
||||
<FontAwesomeIcon
|
||||
icon={faTwitter}
|
||||
className={classNames(classes.icon, classes.iconHover)}
|
||||
/>
|
||||
</Link>
|
||||
<Link to='https://www.facebook.com/Advanced-Algos-173249670001615/' title='Meet us on Facebook' className={classes.linkLight}>
|
||||
</a>
|
||||
<a target='_blank' href='https://www.facebook.com/Superalgos-375022859724428/' title='Meet us on Facebook' className={classes.linkLight}>
|
||||
<FontAwesomeIcon
|
||||
icon={faFacebookF}
|
||||
className={classNames(classes.icon, classes.iconHover)}
|
||||
/>
|
||||
</Link>
|
||||
</a>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
@@ -42,7 +42,7 @@ const styles = theme => ({
|
||||
footer: {
|
||||
borderTop: `4px solid ${theme.palette.secondary.light}`,
|
||||
padding: `${theme.spacing.unit * 6}px 0`,
|
||||
backgroundColor: '#19191C', /* #29292c */
|
||||
backgroundColor: '#19191C' /* #29292c */,
|
||||
color: theme.palette.primary.light
|
||||
},
|
||||
footerContainer: {
|
||||
|
||||
@@ -19,9 +19,10 @@ export const LoggedIn = props => {
|
||||
displayName = user.firstName
|
||||
}
|
||||
|
||||
if (isDefined(user.firstName) && isDefined(user.lastName)) {
|
||||
displayName = user.firstName + ' ' + user.lastName
|
||||
}
|
||||
displayName = displayName.split('-')[0]
|
||||
displayName = displayName.split('.')[0]
|
||||
displayName = displayName.split('_')[0]
|
||||
displayName = displayName.split(' ')[0]
|
||||
|
||||
return (
|
||||
|
||||
@@ -32,8 +33,9 @@ export const LoggedIn = props => {
|
||||
>
|
||||
<Link to='/users/user' onClick={() => toggleMenuOpen(42, true)}> {displayName} </Link>
|
||||
<ul className='subMenu'>
|
||||
<li><Link to='/users/user' onClick={() => closeAll()}> Profile </Link></li>
|
||||
<li><Link to='/users/user' onClick={() => closeAll()}> Your Profile </Link></li>
|
||||
<li><a href='#' onClick={() => auth.logout()}> Logout </a></li>
|
||||
<li><a href='https://superalgos.org'> Exit Platform </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
)
|
||||
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
BugReport,
|
||||
People,
|
||||
Group,
|
||||
Adb,
|
||||
// Adb,
|
||||
VpnKey,
|
||||
Home,
|
||||
AddCircleOutline
|
||||
@@ -18,10 +18,10 @@ const usersMenus = {
|
||||
to: '/users',
|
||||
icon: Home,
|
||||
submenus: [
|
||||
{ title: 'Your Profile', to: '/users/user', icon: People, authenticated: true },
|
||||
{ title: 'Directory', to: '/users/browse', icon: ImportContacts },
|
||||
{ title: 'Search', to: '/users/search', icon: Search },
|
||||
{ title: 'Report', to: 'https://github.com/AdvancedAlgos/UsersModule/issues/new', icon: BugReport, externalLink: true }
|
||||
{ title: 'Your Profile', to: '/users/user', icon: People, authenticated: true },
|
||||
{ title: 'Report a Bug', to: 'https://github.com/Superalgos/UsersModule/issues/new', icon: BugReport, externalLink: true }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -30,11 +30,10 @@ const teamsMenus = {
|
||||
to: '/teams',
|
||||
icon: Home,
|
||||
submenus: [
|
||||
{ title: 'Explore teams', to: '/teams/explore', icon: Search },
|
||||
{ title: 'Directory', to: '/teams/explore', icon: ImportContacts },
|
||||
{ title: 'Your teams', to: '/teams/manage-teams', icon: Group, authenticated: true },
|
||||
{ title: 'Team members', to: '/teams/team-members', icon: People, authenticated: true },
|
||||
{ title: 'Financial beings', to: '/teams/financial-beings', icon: Adb, authenticated: true },
|
||||
{ title: 'Report', to: 'https://github.com/AdvancedAlgos/TeamsModule/issues/new', icon: BugReport, externalLink: true }
|
||||
{ title: 'Report a Bug', to: 'https://github.com/Superalgos/TeamsModule/issues/new', icon: BugReport, externalLink: true }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -43,11 +42,11 @@ const eventsMenus = {
|
||||
to: '/events',
|
||||
icon: Home,
|
||||
submenus: [
|
||||
{ title: 'All events', to: '/events', icon: Search },
|
||||
{ title: 'Directory', to: '/events', icon: ImportContacts },
|
||||
{ title: 'Your events', to: '/events/my', icon: GamepadRounded, authenticated: true },
|
||||
{ title: 'Your hosted events', to: '/events/host', icon: AccessibilityNew, authenticated: true },
|
||||
{ title: 'Host an event', to: '/events/create', icon: LibraryAdd, authenticated: true },
|
||||
{ title: 'Report', to: 'https://github.com/AdvancedAlgos/UsersModule/issues/new', icon: BugReport, externalLink: true }
|
||||
{ title: 'Report a Bug', to: 'https://github.com/Superalgos/UsersModule/issues/new', icon: BugReport, externalLink: true }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -57,12 +56,42 @@ const keyvaultMenus = {
|
||||
icon: Home,
|
||||
authenticated: true,
|
||||
submenus: [
|
||||
{ title: 'Manage keys', to: '/key-vault/browse', icon: VpnKey },
|
||||
{ title: 'Your keys', to: '/key-vault/browse', icon: VpnKey },
|
||||
{ title: 'Add key', to: '/key-vault/addKey', icon: AddCircleOutline },
|
||||
{ title: 'Report', to: 'https://github.com/AdvancedAlgos/KeyVaultModule/issues/new', icon: BugReport, externalLink: true }
|
||||
{ title: 'Report a Bug', to: 'https://github.com/Superalgos/KeyVaultModule/issues/new', icon: BugReport, externalLink: true }
|
||||
]
|
||||
}
|
||||
|
||||
const allMenus = [ usersMenus, teamsMenus, eventsMenus, keyvaultMenus ]
|
||||
const operationsMenus = {
|
||||
title: 'Operations',
|
||||
to: '/operations',
|
||||
icon: Home,
|
||||
authenticated: true,
|
||||
submenus: [
|
||||
{ title: 'Active clones', to: '/operations/browse', icon: ImportContacts },
|
||||
{ title: 'History', to: '/operations/history', icon: LibraryAdd },
|
||||
{ title: 'Clone a bot', to: '/operations/add', icon: AddCircleOutline },
|
||||
{ title: 'Report a Bug', to: 'https://github.com/Superalgos/OperationsModule/issues/new', icon: BugReport, externalLink: true }
|
||||
]
|
||||
}
|
||||
|
||||
const financialBeingsMenus = {
|
||||
title: 'FBs',
|
||||
to: '/financial-beings',
|
||||
icon: Home,
|
||||
authenticated: false,
|
||||
submenus: [
|
||||
{ title: 'Directory', to: '/financial-beings', icon: ImportContacts }
|
||||
]
|
||||
}
|
||||
|
||||
const allMenus = [
|
||||
usersMenus,
|
||||
teamsMenus,
|
||||
// eventsMenus,
|
||||
// financialBeingsMenus,
|
||||
keyvaultMenus,
|
||||
operationsMenus
|
||||
]
|
||||
|
||||
export default allMenus
|
||||
@@ -8,7 +8,7 @@ import withWidth from '@material-ui/core/withWidth'
|
||||
import { LoggedIn } from './LoggedIn'
|
||||
|
||||
import allMenus from './imports'
|
||||
import AALogo from '../../../assets/advanced-algos/aa-logo-dark.svg'
|
||||
import AALogo from '../../../assets/superalgos/Superalgos-logo-horz-dark.svg'
|
||||
|
||||
class Header extends Component {
|
||||
constructor (props) {
|
||||
@@ -98,7 +98,7 @@ class Header extends Component {
|
||||
<ul className='subMenu'>
|
||||
{ bigScreen
|
||||
? ''
|
||||
: <li key={index + 'home'}><a href={to}> <Icon /> Homepage </a></li>
|
||||
: <li key={index + 'home'}><Link to={to}> <Icon /> Module Home Page </Link></li>
|
||||
}
|
||||
{
|
||||
submenus.map(({ icon: SubIcon, to: subTo, title: subTitle, externalLink, authenticated: subAuthenticated }, subindex) => {
|
||||
@@ -107,7 +107,7 @@ class Header extends Component {
|
||||
}
|
||||
if (externalLink) {
|
||||
return (
|
||||
<li key={subindex}><a href={subTo}> <SubIcon /> {subTitle} </a></li>
|
||||
<li key={subindex}><a href={subTo} target='_blank'> <SubIcon /> {subTitle} </a></li>
|
||||
)
|
||||
}
|
||||
return (
|
||||
@@ -123,7 +123,7 @@ class Header extends Component {
|
||||
<React.Fragment>
|
||||
<header className={onTop ? 'menu' : 'menu notOnTop'}>
|
||||
<div className='container'>
|
||||
<Link to='/'> <img className='logo' src={AALogo} alt='Advanced Algos' /> </Link>
|
||||
<Link to='/'> <img className='logo' src={AALogo} alt='Superalgos' /> </Link>
|
||||
<div className={mobileOpen ? 'mobileHandle openedMobile' : 'mobileHandle'} onClick={() => this.toggleMobileOpen()}>
|
||||
Menu
|
||||
</div>
|
||||
@@ -134,7 +134,7 @@ class Header extends Component {
|
||||
</li>
|
||||
{menus}
|
||||
<li className='primaryLink'>
|
||||
<a href='https://www.advancedalgos.net/documentation-quick-start.shtml'> Docs </a>
|
||||
<a href='https://www.superalgos.org/documentation-quick-start.shtml'> Docs </a>
|
||||
</li>
|
||||
{this.state.user !== undefined && this.state.user !== null ? (
|
||||
<LoggedIn
|
||||
|
||||
@@ -11,9 +11,7 @@ class Index extends React.Component {
|
||||
return (
|
||||
<div className={this.props.classes.layout}>
|
||||
<Header auth={this.props.auth} />
|
||||
<div>
|
||||
{this.props.children}
|
||||
</div>
|
||||
<div>{this.props.children}</div>
|
||||
<Footer />
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -7,6 +7,16 @@ module.exports = {
|
||||
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.js$/,
|
||||
include: /node_modules\\@superalgos/,
|
||||
loader: 'babel-loader'
|
||||
},
|
||||
{
|
||||
test: /\.js$/,
|
||||
include: /node_modules\/@superalgos/,
|
||||
loader: 'babel-loader'
|
||||
},
|
||||
{
|
||||
test: /\.js$/,
|
||||
include: /node_modules\\@advancedalgos/,
|
||||
|
||||
@@ -16,6 +16,6 @@ The symlinks in
|
||||
1. Navigate to your module client.
|
||||
2. Run `npm link`
|
||||
3. Navigate `MasterApp/client`.
|
||||
4. Run `npm link [you-module-package]`. eg `npm link @advancedalgos/teams-client`
|
||||
4. Run `npm link [you-module-package]`. eg `npm link @superalgos/teams-client`
|
||||
5. Start server: `npm run dev`
|
||||
6. When a change is made in your module, after a second or two, the browser page should update without reloading.
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "master-app",
|
||||
"version": "0.0.1",
|
||||
"version": "0.1.3",
|
||||
"description": "Responsible for loading all web modules and running them.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
@@ -10,7 +10,7 @@
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Algoteers/MasterApp.git"
|
||||
},
|
||||
"author": "Advanced Algos, ltd.",
|
||||
"author": "Superalgos, ltd.",
|
||||
"license": "SEE LICENSE IN LICENSE.MD",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Algoteers/MasterApp/issues"
|
||||
|
||||
+16
-10
@@ -1,13 +1,24 @@
|
||||
NODE_ENV=development
|
||||
|
||||
TEAMS_API_PRESHARED=THIS_IS_VERY_SECRET
|
||||
USERS_API_PRESHARED=THIS_IS_VERY_SECRET
|
||||
EVENTS_API_PRESHARED=THIS_IS_VERY_SECRET
|
||||
KEYVAULT_API_PRESHARED=THIS_IS_VERY_SECRET
|
||||
FINANCIAL_BEINGS_API_PRESHARED=THIS_IS_VERY_SECRET
|
||||
NOTIFICATIONS_API_PRESHARED=THIS_IS_VERY_SECRET
|
||||
|
||||
GRAPHQL_API_URL=https://app-api.advancedalgos.net/graphql
|
||||
TEAMS_API_URL=https://teams-api.advancedalgos.net/graphql
|
||||
USERS_API_URL=https://users-api.advancedalgos.net/graphql
|
||||
EVENTS_API_URL=https://events-api.advancedalgos.net/graphql
|
||||
KEYVAULT_API_URL=https://keyvault-api.advancedalgos.net/graphql
|
||||
# PROJECT_SITE_URL=https://superalgos.org
|
||||
PROJECT_SITE_URL=http://localhost:3999
|
||||
# PLATFORM_URL=https://platform.superalgos.org
|
||||
PLATFORM_URL=http://localhost:3100
|
||||
|
||||
GRAPHQL_API_URL=https://platform-api-dev.superalgos.org/graphql
|
||||
TEAMS_API_URL=https://teams-api-dev.superalgos.org/graphql
|
||||
USERS_API_URL=https://users-api-dev.superalgos.org/graphql
|
||||
EVENTS_API_URL=https://events-api-dev.superalgos.org/graphql
|
||||
KEYVAULT_API_URL=https://keyvault-api-dev.superalgos.org/graphql
|
||||
FINANCIAL_BEINGS_API_URL=https://financialbeings-api-dev.superalgos.org/graphql
|
||||
NOTIFICATIONS_API_URL=https://notifications-api-dev.superalgos.org/graphql
|
||||
|
||||
AUTH0_DOMAIN=auth0-domain
|
||||
AUTH0_AUDIENCE=auth0-audience
|
||||
@@ -16,8 +27,3 @@ AUTH0_ISSUER=auth0-issuer
|
||||
AACLOUD_ID=aacloud-id
|
||||
|
||||
RECAPTCHA=<RECAPTCHA_KEY>
|
||||
|
||||
SG_APIKEY=<SENDGRID_API_KEY>
|
||||
SG_APIKEY_CONTACTS=<SENDGRID_API_KEY_CONTACTS>
|
||||
SG_SIGNUP_EMAILID=<SENDGRID_SIGNUP_EMAILID>
|
||||
SG_CONTACT_EMAILID=<SENDGRID_CONTACT_EMAILID>
|
||||
+4
-1
@@ -20,5 +20,8 @@ dist/
|
||||
# Visual Studio Code
|
||||
.vscode
|
||||
|
||||
#Mac specific files
|
||||
# Mac specific files
|
||||
.DS_Store
|
||||
|
||||
# JetBrains
|
||||
.idea
|
||||
@@ -34,7 +34,7 @@ This Code of Conduct applies both within project spaces and in public spaces whe
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at feedback at advancedalgos dot org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at feedback at superalgos dot org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
We are thrilled you are interested in contributing to the this module. Your help may be essential to the project's success and we want you in!
|
||||
|
||||
Advanced Algos LTD is a startup, currently at a very early stage. Although this module is not open source software yet, we do welcome contributions from the community.
|
||||
Superalgos.org is an open source project, currently at a very early stage. Although this module is not open source software yet, we do welcome contributions from the community.
|
||||
|
||||
Contributions are deemed _work for hire_ and --as such-- are compensated on a case by case basis, with ALGO tokens. Contributors agree to provide an express grant of patent rights for their contributions. Our Balanced Contributor Intellectual Property Agreement is a direct implementation of GitHub's [Balanced Employee Intellectual Property Agreement 1.0.1](https://github.com/github/balanced-employee-ip-agreement/blob/master/Balanced_Employee_IP_Agreement.md).
|
||||
|
||||
# Balanced Contributor Intellectual Property Agreement 1.0.1
|
||||
|
||||
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person named below and Advanced Algos ("Company").
|
||||
This BALANCED CONTRIBUTOR INTELLECTUAL PROPERTY AGREEMENT is between person named below and Superalgos ("Company").
|
||||
|
||||
**What is this?** This is the Company's Intellectual Property Agreement ("Agreement"). If you've worked in the technology space before, there's a good chance that you've run across one or more of these in the past. This document is the official, entire and exclusive agreement on what intellectual property ("IP") is yours, and what belongs to the Company.
|
||||
|
||||
|
||||
+7
-7
@@ -1,17 +1,17 @@
|
||||
COPYRIGHT NOTICE
|
||||
|
||||
© Copyright 2018 Advanced Algos LTD.
|
||||
© Copyright 2018 Superalgos.org
|
||||
|
||||
|
||||
LICENSE NOTICE
|
||||
|
||||
Advanced Algos LTD. is a startup, currently at a very early stage. Because certain aspects of
|
||||
Superalgos.org is a startup, currently at a very early stage. Because certain aspects of
|
||||
the business are still not clearly defined, we have chosen to --temporarily-- grant a
|
||||
restrictive license for the use of this module, until those business aspects are clarified
|
||||
and a proper open source license can be granted.
|
||||
|
||||
Advanced Algos LTD. is publishing the code of this software for several reasons. However,
|
||||
it shall not be considered free software yet. Advanced Algos LTD. is a for-profit company
|
||||
Superalgos.org is publishing the code of this software for several reasons. However,
|
||||
it shall not be considered free software yet. Superalgos.org is a for-profit company
|
||||
in the crypto space and this module is still proprietary software.
|
||||
|
||||
The reasons for opening up the code of this module at this stage are the following:
|
||||
@@ -27,14 +27,14 @@ The reasons for opening up the code of this module at this stage are the followi
|
||||
|
||||
LICENSE WORDING
|
||||
|
||||
Advanced Algos LTD. grants a limited license for the following uses:
|
||||
Superalgos.org grants a limited license for the following uses:
|
||||
|
||||
1. CODE REVIEW AND AUDITS. You are granted permission to clone this repository to analyze,
|
||||
review or audit the code.
|
||||
|
||||
2. COLLABORATING WITH ADVANCED ALGOS LTD. You are granted permission to fork the this repository
|
||||
2. COLLABORATING WITH SUPERALGOS.ORG You are granted permission to fork the this repository
|
||||
with the sole purpose of correcting bugs and developing functionality in agreement with
|
||||
Advanced Algos LTD. By contributing to this repository you explicitely agree to the terms
|
||||
Superalgos.org By contributing to this repository you explicitely agree to the terms
|
||||
detailed in CONTRIBUTING.MD.
|
||||
|
||||
PLEASE SEE CONTRIBUTING.MD FOR MORE DETAILS ON THE IMPLICATIONS SURROUNDING YOUR CONTRIBUTIONS
|
||||
|
||||
Generated
+1683
-1230
File diff suppressed because it is too large.
Load diff
+2
-2
@@ -11,7 +11,7 @@
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/Algoteers/MasterApp.git"
|
||||
},
|
||||
"author": "Advanced Algos, ltd.",
|
||||
"author": "Superalgos, ltd.",
|
||||
"license": "SEE LICENSE IN LICENSE.MD",
|
||||
"bugs": {
|
||||
"url": "https://github.com/Algoteers/MasterApp/issues"
|
||||
@@ -21,7 +21,7 @@
|
||||
"babel-cli": "^6.26.0",
|
||||
"babel-preset-env": "^1.7.0",
|
||||
"babel-preset-stage-2": "^6.24.1",
|
||||
"nodemon": "^1.18.4"
|
||||
"nodemon": "^1.18.10"
|
||||
},
|
||||
"dependencies": {
|
||||
"apollo-link": "^1.2.3",
|
||||
|
||||
@@ -45,9 +45,10 @@ export const createRemoteSchema = async (uri, preshared_key) => {
|
||||
export const createTransformedRemoteSchema = async (prefix, uri, preshared_key) => {
|
||||
var schema
|
||||
try {
|
||||
logger.info('About to create %s schema at %s.', prefix, uri)
|
||||
schema = await createRemoteSchema(uri, preshared_key)
|
||||
} catch (error) {
|
||||
logger.error(`An error occured while fetching ${prefix}, ${uri} schema. Details: ${error}`)
|
||||
logger.error('An error occured while fetching %s, %s schema. Details: %j', prefix, uri, error)
|
||||
return false
|
||||
}
|
||||
const transformedSchema = transformSchema(schema, [
|
||||
|
||||
+51
-11
@@ -9,8 +9,7 @@ import axios from 'axios'
|
||||
|
||||
import { createTransformedRemoteSchema } from './createRemoteSchema'
|
||||
import { teams, events } from './links'
|
||||
import { typeDef as masterSchema } from './schema'
|
||||
import masterResolvers from './resolvers'
|
||||
|
||||
import logger from './logger'
|
||||
|
||||
async function getUserId (authId) {
|
||||
@@ -43,6 +42,10 @@ async function getUserId (authId) {
|
||||
}
|
||||
|
||||
async function run () {
|
||||
const transformedKeyVaultSchema = await createTransformedRemoteSchema(
|
||||
'keyVault_',
|
||||
process.env.KEYVAULT_API_URL,
|
||||
process.env.KEYVAULT_API_PRESHARED)
|
||||
const transformedTeamsSchema = await createTransformedRemoteSchema(
|
||||
'teams_',
|
||||
process.env.TEAMS_API_URL,
|
||||
@@ -55,14 +58,21 @@ async function run () {
|
||||
'events_',
|
||||
process.env.EVENTS_API_URL,
|
||||
process.env.EVENTS_API_PRESHARED)
|
||||
const transformedKeyVaultSchema = await createTransformedRemoteSchema(
|
||||
'keyVault_',
|
||||
process.env.KEYVAULT_API_URL,
|
||||
process.env.KEYVAULT_API_PRESHARED)
|
||||
const transformedFinancialBeingsSchema = await createTransformedRemoteSchema(
|
||||
'financialBeings_',
|
||||
process.env.FINANCIAL_BEINGS_API_URL,
|
||||
process.env.FINANCIAL_BEINGS_API_PRESHARED)
|
||||
const transformedOperationsSchema = await createTransformedRemoteSchema(
|
||||
'operations_',
|
||||
process.env.OPERATIONS_API_URL,
|
||||
process.env.OPERATIONS_API_PRESHARED)
|
||||
const transformedNotificationsSchema = await createTransformedRemoteSchema(
|
||||
'notifications_',
|
||||
process.env.NOTIFICATIONS_API_URL,
|
||||
process.env.NOTIFICATIONS_API_PRESHARED)
|
||||
|
||||
var schemas = [masterSchema]
|
||||
var schemas = []
|
||||
var resolvers = {}
|
||||
resolvers = Object.assign(resolvers, masterResolvers)
|
||||
|
||||
if (transformedTeamsSchema) {
|
||||
schemas.push(transformedTeamsSchema)
|
||||
@@ -84,6 +94,15 @@ async function run () {
|
||||
if (transformedKeyVaultSchema) {
|
||||
schemas.push(transformedKeyVaultSchema)
|
||||
}
|
||||
if (transformedFinancialBeingsSchema) {
|
||||
schemas.push(transformedFinancialBeingsSchema)
|
||||
}
|
||||
if (transformedOperationsSchema) {
|
||||
schemas.push(transformedOperationsSchema)
|
||||
}
|
||||
if (transformedNotificationsSchema) {
|
||||
schemas.push(transformedNotificationsSchema)
|
||||
}
|
||||
|
||||
const schema = mergeSchemas({
|
||||
schemas,
|
||||
@@ -151,7 +170,7 @@ async function run () {
|
||||
return error
|
||||
},
|
||||
formatResponse: response => {
|
||||
logger.debug('Response from Apolo Server: ' + response)
|
||||
logger.debug('Response from Apollo Server: ' + response)
|
||||
return response
|
||||
},
|
||||
playground: {
|
||||
@@ -162,9 +181,30 @@ async function run () {
|
||||
}
|
||||
})
|
||||
|
||||
server.applyMiddleware({ app })
|
||||
const whitelist = [
|
||||
process.env.PROJECT_SITE_URL,
|
||||
process.env.PLATFORM_URL,
|
||||
process.env.GRAPHQL_API_URL,
|
||||
process.env.TEAMS_API_URL,
|
||||
process.env.USERS_API_URL,
|
||||
process.env.EVENTS_API_URL,
|
||||
process.env.KEYVAULT_API_URL,
|
||||
process.env.FINANCIAL_BEINGS_API_URL,
|
||||
process.env.NOTIFICATIONS_API_URL
|
||||
]
|
||||
|
||||
app.use(cors())
|
||||
const corsOptionsDelegate = (req, callback) => {
|
||||
let corsOptions
|
||||
if (whitelist.indexOf(req.header('Origin')) !== -1) {
|
||||
corsOptions = { origin: true, credentials: true }
|
||||
} else {
|
||||
corsOptions = { origin: false, credentials: true }
|
||||
}
|
||||
callback(null, corsOptions)
|
||||
}
|
||||
|
||||
// server.applyMiddleware({ app, cors: corsOptionsDelegate })
|
||||
server.applyMiddleware({ app, cors: { origin: true, credentials: true, methods:'GET,PUT,POST,DELETE,OPTIONS'}})
|
||||
|
||||
app.listen(4100)
|
||||
logger.info(`Server running. Open ${process.env.GRAPHQL_API_URL} to run queries.`)
|
||||
|
||||
@@ -26,6 +26,7 @@ const logger = createLogger({
|
||||
level: 'info',
|
||||
format: format.combine(
|
||||
format.colorize(),
|
||||
format.splat(),
|
||||
format.timestamp({ format: 'YY/MM/DD HH:mm' }),
|
||||
format.printf(
|
||||
info => `${info.timestamp} - ${info.level}: ${JSON.parse(JSON.stringify(inspect(info.message)))}`
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import merge from 'lodash.merge'
|
||||
import { SendgridMutations } from './mutation'
|
||||
// import { SendgridMutations } from './mutation'
|
||||
|
||||
const resolvers = {
|
||||
Mutation: {
|
||||
...SendgridMutations
|
||||
// ...SendgridMutations
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
import SendgridMutations from './sendgrid'
|
||||
|
||||
export { SendgridMutations }
|
||||
@@ -1,245 +0,0 @@
|
||||
import axios from 'axios'
|
||||
import jwt from 'jsonwebtoken'
|
||||
import { ApolloError } from 'apollo-server-express'
|
||||
|
||||
import logger from '../../logger'
|
||||
|
||||
const API_KEY = process.env.SG_APIKEY
|
||||
const API_KEY_CONTACTS = process.env.SG_APIKEY_CONTACTS
|
||||
|
||||
const dev = process.env.NODE_ENV === 'development' ? true : false
|
||||
let origin = 'https://app.advancedalgos.net'
|
||||
if (dev){
|
||||
origin = 'http://localhost:3100'
|
||||
}
|
||||
|
||||
export default {
|
||||
async master_NewsletterSignup(parent, { email }, ctx, info) {
|
||||
logger.info('master_NewsletterSignup params email:')
|
||||
logger.info(email)
|
||||
const token = jwt.sign({ email: email }, API_KEY, { expiresIn: '1d' })
|
||||
const params = '/email-verification?token='
|
||||
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin' : origin,
|
||||
'Access-Control-Allow-Credentials': 'true'
|
||||
}
|
||||
|
||||
const data = JSON.stringify({
|
||||
"personalizations": [
|
||||
{
|
||||
"to": [
|
||||
{
|
||||
"email": email
|
||||
}
|
||||
],
|
||||
dynamic_template_data: {
|
||||
"aaverifylink": origin + params + token,
|
||||
"subject": 'VERIFY YOUR INTEREST in Advanced Algos'
|
||||
},
|
||||
"subject": 'VERIFY YOUR INTEREST in Advanced Algos'
|
||||
}
|
||||
],
|
||||
"from": {
|
||||
"email": "feedback@advancedalgos.net",
|
||||
"name": "Advanced Algos Team"
|
||||
},
|
||||
"reply_to": {
|
||||
"email": "feedback@advancedalgos.net",
|
||||
"name": "Advanced Algos Team"
|
||||
},
|
||||
"template_id": process.env.SG_SIGNUP_EMAILID
|
||||
})
|
||||
|
||||
const sendVerify = axios({
|
||||
method: 'post',
|
||||
url: 'https://api.sendgrid.com/v3/mail/send',
|
||||
data: data,
|
||||
headers:{
|
||||
'content-type': 'application/json',
|
||||
'authorization': 'Bearer ' + API_KEY
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
logger.info('Sendgrid sendVerify response:')
|
||||
logger.info(response)
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return 'SUCCESS'
|
||||
} else {
|
||||
throw response.data.errors[0].message
|
||||
}
|
||||
})
|
||||
.catch(function (error) {
|
||||
logger.error('Sendgrid sendVerify Error:')
|
||||
logger.error(error)
|
||||
throw new ApolloError(`Sendgrid sendVerify Error: ${error.response.data.errors[0].message}`, 404)
|
||||
})
|
||||
return sendVerify
|
||||
},
|
||||
async master_NewsletterSignupVerify(parent, { token }, ctx, info){
|
||||
let origin = 'https://app.advancedalgos.net'
|
||||
if (dev){
|
||||
origin = 'http://localhost:3100'
|
||||
}
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin' : origin,
|
||||
'Access-Control-Allow-Credentials': 'true'
|
||||
}
|
||||
|
||||
let verifiedToken
|
||||
try {
|
||||
verifiedToken = jwt.verify(token, API_KEY, {maxAge: '1d'})
|
||||
} catch(err) {
|
||||
logger.error('Sendgrid verifiedToken Error:')
|
||||
logger.error(err)
|
||||
if (err.name === 'TokenExpiredError'){
|
||||
throw new ApolloError('Error: Token Expired. Please resubmit email address.', 400)
|
||||
} else {
|
||||
throw new ApolloError(`Error: ${err.message}`, 400)
|
||||
}
|
||||
}
|
||||
logger.info('Sendgrid verifySignup verifiedToken: ')
|
||||
logger.info(verifiedToken)
|
||||
|
||||
const email = verifiedToken.email
|
||||
|
||||
const subscribe = axios({
|
||||
method: 'post',
|
||||
url: 'https://api.sendgrid.com/v3/contactdb/recipients',
|
||||
data: [{"email": email}],
|
||||
headers:{
|
||||
'content-type': 'application/json',
|
||||
'authorization': 'Bearer ' + API_KEY_CONTACTS
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
logger.info('Sendgrid verifySignup subscribe: ')
|
||||
logger.info(response)
|
||||
const recipients = response.data.persisted_recipients
|
||||
|
||||
if (recipients.length > 0 ){
|
||||
const addToList = axios({
|
||||
method: 'post',
|
||||
url: 'https://api.sendgrid.com/v3/contactdb/lists/4068018/recipients/' + recipients[0],
|
||||
headers:{
|
||||
'content-type': 'application/json',
|
||||
'authorization': 'Bearer ' + API_KEY_CONTACTS
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
logger.info('Sendgrid verifySignup addToList: ')
|
||||
logger.info(response)
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return 'SUCCESS'
|
||||
} else {
|
||||
throw response.data.errors[0].message
|
||||
}
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error('Sendgrid verifySignUp subscribe Error:')
|
||||
logger.error(error)
|
||||
throw `Email SignUp Error: ${error}`
|
||||
})
|
||||
return addToList
|
||||
} else{
|
||||
return response.data.errors[0].message
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
return response
|
||||
})
|
||||
.catch(error => {
|
||||
logger.error('Sendgrid verifySubscribe Error:')
|
||||
logger.error(error)
|
||||
throw new ApolloError(`Sendgrid verifySubscribe Error: ${error.response.data.errors[0].message}`, 404)
|
||||
})
|
||||
return subscribe
|
||||
},
|
||||
async master_Contact(parent, { email, subject, message, recaptcha }, ctx, info) {
|
||||
const headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Access-Control-Allow-Origin' : origin,
|
||||
'Access-Control-Allow-Credentials': 'true'
|
||||
}
|
||||
|
||||
const toEmail = 'feedback@advancedalgos.net'
|
||||
|
||||
const data = JSON.stringify({
|
||||
"personalizations": [
|
||||
{
|
||||
"to": [
|
||||
{
|
||||
"email": email
|
||||
}
|
||||
],
|
||||
dynamic_template_data: {
|
||||
"aacontactname": name,
|
||||
"aacontactemail": email,
|
||||
"aacontactbody": message
|
||||
},
|
||||
"subject": `AA Corporate Site Contact - Message from ${name}`
|
||||
}
|
||||
],
|
||||
"from": {
|
||||
"email": email,
|
||||
"name": name
|
||||
},
|
||||
"reply_to": {
|
||||
"email": email,
|
||||
"name": name
|
||||
},
|
||||
"template_id": process.env.SG_CONTACT_EMAILID
|
||||
})
|
||||
|
||||
const checkCaptcha = axios({
|
||||
method: 'post',
|
||||
url: 'https://www.google.com/recaptcha/api/siteverify',
|
||||
params: {
|
||||
secret: process.env.RECAPTCHA,
|
||||
response: recaptcha
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
logger.info(response.data)
|
||||
if (response.status >= 200 && response.status < 300 && response.data.success) {
|
||||
context.log('presend SendGrid')
|
||||
return axios({
|
||||
method: 'post',
|
||||
url: 'https://api.sendgrid.com/v3/mail/send',
|
||||
data: data,
|
||||
headers:{
|
||||
'content-type': 'application/json',
|
||||
'authorization': 'Bearer ' + API_KEY
|
||||
}
|
||||
})
|
||||
.then(function (response) {
|
||||
logger.info('Sendgrid Contact response: ')
|
||||
logger.info(response)
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return `Contact email sent`
|
||||
} else {
|
||||
throw response.data.errors[0].message
|
||||
}
|
||||
})
|
||||
.catch(function (error) {
|
||||
logger.error(`sendgrid Error: ${JSON.stringify(error)}`)
|
||||
throw `Contact email send error: ${error.response.data.errors[0].message}`
|
||||
})
|
||||
}else{
|
||||
throw response.data
|
||||
}
|
||||
})
|
||||
.then(function(response){
|
||||
return response
|
||||
})
|
||||
.catch(function (error) {
|
||||
logger.error('Sendgrid Contact RECAPTCHA Error:')
|
||||
logger.error(error)
|
||||
throw new ApolloError(`Sendgrid Contact RECAPTCHA Error: ${error.response.data.errors[0].message}`, 404)
|
||||
})
|
||||
|
||||
return checkCaptcha
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
export const typeDef = `
|
||||
type Mutation {
|
||||
master_NewsletterSignup(email: String!): String
|
||||
master_NewsletterSignupVerify(token: String!): String
|
||||
master_Contact(email: String!, subject: String!, Message: String!, recaptcha: String!): String
|
||||
master_SampleMutation(variable: String!): String
|
||||
}
|
||||
|
||||
schema {
|
||||
|
||||
Reference in new issue
Block a user