Merge branch 'develop' of https://github.com/Superalgos/Superalgos into develop

This commit is contained in:
gitforkgit committed 2021-11-22 14:33:05 +01:00
commit 5bee1671da
24 files changed
+14745 -10629

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.vars.outputs.tag }}.${{ steps.date.outputs.date }}
tag_name: ${{ steps.vars.outputs.tag }}-${{ steps.date.outputs.date }}
release_name: Superalgos-Beta-v${{ steps.vars.outputs.tag }} Snapshot ${{ steps.date.outputs.date }}
keep_num: 5
keep_tags: false
+1 -1
View File
@@ -3,7 +3,7 @@ WORKDIR /app
COPY . .
RUN apk add --no-cache --virtual .build-deps make g++ \
&& apk add --no-cache python3 \
&& if [ "$(uname -m)" = "x86_64" ]; then node setup noShortcuts tensorflow; else node setup noShortcuts; fi \
&& npm ci \
&& mkdir -p ./Platform/My-Data-Storage ./Platform/My-Log-Files ./Platform/My-Workspaces \
&& addgroup superalgos \
&& adduser --disabled-password --no-create-home --ingroup superalgos superalgos \
+17
View File
@@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\..\\PlatformRoot.js"
}
]
}
+26
View File
@@ -0,0 +1,26 @@
{
"files.exclude": {
"**/Data-Storage": true,
"**/Log-Files": true,
"**/node_modules": true,
"**/My-Social-Trading-Data": true,
"**/My-Network-Nodes-Data": true,
"**/My-Workspaces": true,
"**/My-Secrets": true,
"**/My-Data-Storage": true,
"**/My-Log-Files": true,
},
"search.exclude": {
"**/Data-Storage": true,
"**/Log-Files": true,
"**/node_modules": true,
"**/My-Social-Trading-Data": true,
"**/My-Network-Nodes-Data": true,
"**/My-Workspaces": true,
"**/My-Secrets": true,
"**/My-Data-Storage": true,
"**/My-Log-Files": true,
},
"search.maintainFileSearchCache": true,
"editor.mouseWheelZoom": true
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

+8 -1
View File
@@ -66,6 +66,13 @@
function drawSplashText() {
const splashTextArray = [
{
"splashTextLine1Html": '<span class="credits-red">Every month, 10M SA tokens, with a market value of more than 500,000 USD are distributed between everyone contributing to the project during that month. </span>'
,
"splashTextLine2Html": 'In October 2021 we counted around 50 contributors, with an average mining reward of 10,000 USD for each one. Contributing to Superalgos now is like mining Bitcoin in 2010 where there were no more than 50 people mining it. Ask the community moderators how to join a team an participate in the next distribution.'
,
"splashTextLine3Html": ''
} /*,
{
"splashTextLine1Html": '<span class="credits-red">Superalgos is open source, forever free for everyone, and is constantly improving thanks to the involvement of contributors!</span>'
,
@@ -107,7 +114,7 @@
"splashTextLine2Html": 'Look around, find something that is missing and start coding! If you need help, ask in the chat groups to find a mentor!'
,
"splashTextLine3Html": 'Follow our motto: Just code it!'
}
} */
]
let arrayIndex = Math.trunc(Math.random() * splashTextArray.length)
File diff suppressed because it is too large. Load diff
@@ -17,7 +17,7 @@
"situations": [
{
"type": "Situation",
"name": "EMA crossover",
"name": "Crossover",
"project": "Foundations",
"conditions": [
{
@@ -27,17 +27,17 @@
"javascriptCode": {
"type": "Javascript Code",
"name": "New Javascript Code",
"code": "chart.at01hs.EMA.previous.ema1 < chart.at01hs.EMA.previous.ema2",
"code": "chart.at01hs.EMA.ema1 > chart.at01hs.EMA.ema2 && chart.at01hs.EMA.previous.ema1 < chart.at01hs.EMA.previous.ema2",
"project": "Foundations",
"id": "c4e9205d-5729-4c06-92ab-6c48ca195f9b",
"id": "eac8aa9b-2ead-4376-8ea2-aaf1a276c568",
"savedPayload": {
"position": {
"x": 29767.05237465183,
"y": 30529.07127139445
"x": 30145.01097090622,
"y": 29906.8528149571
},
"targetPosition": {
"x": 30066.6412350782,
"y": 30513.370484521565
"x": 30357.143005262184,
"y": 30118.984849313063
},
"floatingObject": {
"isPinned": false,
@@ -52,71 +52,15 @@
}
}
},
"id": "3a2d3669-04fb-43dc-9f4f-1fc14643dec3",
"id": "9d9ff49e-cb3b-4f2c-a562-3d33beb8fe32",
"savedPayload": {
"position": {
"x": 30066.6412350782,
"y": 30513.370484521565
"x": 30357.143005262184,
"y": 30118.984849313063
},
"targetPosition": {
"x": 30366.230095504572,
"y": 30497.669697648682
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
{
"type": "Condition",
"name": "Crossover",
"code": "chart.at24hs.Fisher.begin > chart.at24hs.Fisher.begin",
"project": "Foundations",
"javascriptCode": {
"type": "Javascript Code",
"name": "New Javascript Code",
"code": "chart.at01hs.EMA.ema1 > chart.at01hs.EMA.ema2",
"project": "Foundations",
"id": "b7f0dd1f-4d65-417a-b815-0fe0b138229e",
"savedPayload": {
"position": {
"x": 30039.446674495557,
"y": 29994.46735688143
},
"targetPosition": {
"x": 30202.838385000065,
"y": 30246.068527265055
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 2,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "8dbc8bd5-b3a9-48b5-945b-881bf38b216b",
"savedPayload": {
"position": {
"x": 30202.838385000065,
"y": 30246.068527265055
},
"targetPosition": {
"x": 30366.230095504572,
"y": 30497.669697648682
"x": 30569.275039618147,
"y": 30331.116883669027
},
"floatingObject": {
"isPinned": false,
@@ -132,7 +76,7 @@
}
}
],
"id": "66bd082e-2824-46c5-9791-d650ca28276d",
"id": "567cfdbe-b067-4990-9611-dbfba9b9a793",
"savedPayload": {
"position": {
"x": 30569.275039618147,
@@ -145,7 +89,7 @@
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": true,
"isCollapsed": false,
"angleToParent": 2,
"distanceToParent": 3,
"arrangementStyle": 0
@@ -157,7 +101,7 @@
}
],
"announcements": [],
"id": "e6cb0b5d-da60-4cf1-9d0a-cce48aacdfdb",
"id": "fc232171-151c-471b-a0b8-6ad2f7cb6adf",
"savedPayload": {
"position": {
"x": 30781.40707397411,
@@ -186,7 +130,7 @@
"situations": [
{
"type": "Situation",
"name": "EMA Crossunder",
"name": "Crossunder",
"project": "Foundations",
"conditions": [
{
@@ -195,17 +139,17 @@
"project": "Foundations",
"javascriptCode": {
"type": "Javascript Code",
"code": "chart.at01hs.EMA.ema1 < chart.at01hs.EMA.ema2",
"code": "chart.at01hs.EMA.ema1 < chart.at01hs.EMA.ema2 && chart.at01hs.EMA.previous.ema1 > chart.at01hs.EMA.previous.ema2",
"project": "Foundations",
"id": "b4730ec2-fbc3-4b6c-b36e-71f1d4a5816e",
"id": "f47f7cc3-395f-4a45-9e6e-21f02a522e3a",
"savedPayload": {
"position": {
"x": 30128.535252952344,
"y": 30074.683073224664
"x": 30993.539108330075,
"y": 29555.380952380954
},
"targetPosition": {
"x": 30421.979533172485,
"y": 30137.05658046999
"x": 30993.539108330075,
"y": 29855.380952380954
},
"floatingObject": {
"isPinned": false,
@@ -220,70 +164,15 @@
}
}
},
"id": "7dde214e-8ecf-4541-bdab-9768c8236f65",
"id": "13378aa9-2623-4f2b-a300-158a35bf46d6",
"savedPayload": {
"position": {
"x": 30421.979533172485,
"y": 30137.05658046999
"x": 30993.539108330075,
"y": 29855.380952380954
},
"targetPosition": {
"x": 30715.423813392626,
"y": 30199.43008771532
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
{
"type": "Condition",
"name": "New Condition",
"project": "Foundations",
"javascriptCode": {
"type": "Javascript Code",
"name": "New Javascript Code",
"code": "chart.at01hs.EMA.previous.ema1 > chart.at01hs.EMA.previous.ema2",
"project": "Foundations",
"id": "82a1f178-10f4-4d9f-a41c-56f6e0cab768",
"savedPayload": {
"position": {
"x": 31116.902177207943,
"y": 29753.543192428882
},
"targetPosition": {
"x": 30916.162995300285,
"y": 29976.4866400721
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "f5c13131-c464-4510-9648-38be2d1905a5",
"savedPayload": {
"position": {
"x": 30916.162995300285,
"y": 29976.4866400721
},
"targetPosition": {
"x": 30715.423813392626,
"y": 30199.43008771532
"x": 30993.539108330075,
"y": 30155.380952380954
},
"floatingObject": {
"isPinned": false,
@@ -299,7 +188,7 @@
}
}
],
"id": "7f57d1a7-6c2f-4483-a3cc-2c04cb187cf3",
"id": "2f91ed82-f85d-4b30-b255-465382b39a6f",
"savedPayload": {
"position": {
"x": 30993.539108330075,
@@ -312,7 +201,7 @@
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": true,
"isCollapsed": false,
"angleToParent": 3,
"distanceToParent": 3,
"arrangementStyle": 0
@@ -324,7 +213,7 @@
}
],
"announcements": [],
"id": "b2e64101-d51b-4c7b-9cd7-11df40ec6169",
"id": "0e26f382-b651-4f73-98a3-90e154012560",
"savedPayload": {
"position": {
"x": 30993.539108330075,
@@ -365,7 +254,7 @@
"name": "New Javascript Code",
"code": "true",
"project": "Foundations",
"id": "108efe9b-0e78-4650-95fa-5f47ea4566c3",
"id": "b88c81e8-4f12-46bc-9d3f-2be795784a46",
"savedPayload": {
"position": {
"x": 31445.622609705046,
@@ -388,7 +277,7 @@
}
}
},
"id": "5c513fb3-8787-41ba-87e9-09e2611b26ae",
"id": "8a94a57d-7752-4eb7-ac6c-587af40cef77",
"savedPayload": {
"position": {
"x": 31309.425459783182,
@@ -412,7 +301,7 @@
}
}
],
"id": "7be78fed-0640-4023-910b-b1404f16bd3a",
"id": "ef049a10-10d0-4cd0-8174-b114c669860b",
"savedPayload": {
"position": {
"x": 31173.22830986132,
@@ -437,7 +326,7 @@
}
],
"announcements": [],
"id": "09472203-67ee-4eba-ac2f-1f3cb48226df",
"id": "6f7e0b1f-883b-4e9f-a997-4e531da4eb41",
"savedPayload": {
"position": {
"x": 31205.67114268604,
@@ -461,7 +350,7 @@
}
},
"announcements": [],
"id": "e4f2b5cb-2cb8-4619-9de3-c066aaa1a214",
"id": "829fe6d9-f8e8-44a7-8175-a884132e7497",
"savedPayload": {
"position": {
"x": 30993.539108330075,
@@ -502,7 +391,7 @@
"name": "Entry Target Rate",
"code": "tradingEngine.tradingCurrent.tradingEpisode.candle.close.value",
"project": "Foundations",
"id": "f8736b16-edde-45a2-b565-49673a3d524e",
"id": "3c57e8dc-6924-48b4-8275-3345e2535577",
"savedPayload": {
"position": {
"x": 31853.346729465407,
@@ -525,7 +414,7 @@
}
}
},
"id": "db001dc4-af5f-4059-a17c-0ce7c5583f78",
"id": "934af723-db70-4eb3-bc63-1439c7669173",
"savedPayload": {
"position": {
"x": 31703.346729465407,
@@ -557,7 +446,7 @@
"name": "Target Size in Quoted Asset",
"code": "tradingEngine.tradingCurrent.tradingEpisode.episodeQuotedAsset.balance.value\n",
"project": "Foundations",
"id": "c45c5654-232e-4ebe-a0eb-8103901a3fb6",
"id": "801ccf6e-6b49-4433-8f3d-f6217c6caab7",
"savedPayload": {
"position": {
"x": 32153.346729465407,
@@ -580,7 +469,7 @@
}
}
},
"id": "726c5b24-7420-4496-84fb-9ada5054e1b3",
"id": "40607c04-0955-4e90-9367-d4a26806833a",
"savedPayload": {
"position": {
"x": 31853.346729465407,
@@ -603,7 +492,7 @@
}
}
},
"id": "1350ac22-df5a-422e-bce3-771e15a3c75f",
"id": "298964cc-3b37-4019-b576-6f9a96b1dacd",
"savedPayload": {
"position": {
"x": 31553.346729465407,
@@ -640,7 +529,7 @@
{
"type": "Market Buy Order",
"name": "New Market Buy Order",
"config": "{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}",
"config": "{\n\"percentageOfAlgorithmSize\": 20, \n\"spawnMultipleOrders\": true \n}",
"project": "Foundations",
"createOrderEvent": {
"type": "Create Order Event",
@@ -659,9 +548,9 @@
"javascriptCode": {
"type": "Javascript Code",
"name": "New Javascript Code",
"code": "chart.at01hs.WEMAsignal.signal > 0.5 && chart.at01hs.WEMAsignal.signal >= chart.at01hs.WEMAsignal.previous.signal",
"code": "chart.at01hs.WEMAsignal.signal >= 0.5 ",
"project": "Foundations",
"id": "8596b4b4-d567-4c5d-868e-65e6688c5e70",
"id": "05bd7461-7d39-4620-ad3e-62ca086103c7",
"savedPayload": {
"position": {
"x": 33112.1924562774,
@@ -684,7 +573,7 @@
}
}
},
"id": "71d536ee-8221-4903-981e-03e98374cbb8",
"id": "8b212c49-db16-4604-ab38-c75386fe0ae8",
"savedPayload": {
"position": {
"x": 32852.38483514207,
@@ -708,7 +597,7 @@
}
}
],
"id": "cc73b406-6cb8-45cd-9173-4565e2355337",
"id": "602edc66-1cda-4517-80b0-8b70b8e837cd",
"savedPayload": {
"position": {
"x": 32592.57721400674,
@@ -733,7 +622,7 @@
}
],
"announcements": [],
"id": "4874e11f-9b13-4da0-ba2f-a48b6e50ab89",
"id": "c155e10a-1cc7-48e6-b1f0-a8bd33f39710",
"savedPayload": {
"position": {
"x": 32332.769592871406,
@@ -756,7 +645,7 @@
}
}
},
"id": "321a9446-757c-4f6b-bd08-b251cc5743dc",
"id": "9790e36e-c011-420a-b37b-02411270d505",
"savedPayload": {
"position": {
"x": 32072.961971736073,
@@ -814,7 +703,7 @@
"marketSellOrders": [],
"limitBuyOrders": [],
"limitSellOrders": [],
"id": "9b82b9ad-205e-4bea-82ca-c51ba13e8a31",
"id": "bca241c1-d104-4f57-82cf-910871e45362",
"savedPayload": {
"position": {
"x": 31813.15435060074,
@@ -839,7 +728,7 @@
}
}
],
"id": "ccf4976a-236f-4856-9061-bde952db5e57",
"id": "66b8730e-850a-4a29-a205-5a81725e93b7",
"savedPayload": {
"position": {
"x": 31553.346729465407,
@@ -863,7 +752,7 @@
}
},
"announcements": [],
"id": "2b77a85e-6bb5-4c68-997c-c9fce2b84388",
"id": "9059702a-8b3a-47e2-a0a6-c2bd0e4397a8",
"savedPayload": {
"position": {
"x": 31293.539108330075,
@@ -903,7 +792,7 @@
"name": "Target Rate Formula",
"code": "tradingEngine.tradingCurrent.tradingEpisode.candle.close.value",
"project": "Foundations",
"id": "08cd7f3b-d747-44c5-a69e-99303464414f",
"id": "699d2c78-c689-4b1c-baad-43256bdfa585",
"savedPayload": {
"position": {
"x": 31663.15435060074,
@@ -926,7 +815,7 @@
}
}
},
"id": "10599ce9-11ac-4093-b633-fd8b9665d991",
"id": "fe062d57-7da6-4773-bfec-5809514f3c66",
"savedPayload": {
"position": {
"x": 31403.346729465407,
@@ -958,7 +847,7 @@
"name": "New Formula",
"code": "tradingEngine.tradingCurrent.tradingEpisode.episodeBaseAsset.balance.value",
"project": "Foundations",
"id": "50bc8bac-b0e4-462c-85c1-3767a4e5076f",
"id": "20b4c043-a62c-458c-b0dd-9d9f0fe8e5a9",
"savedPayload": {
"position": {
"x": 31143.539108330075,
@@ -981,7 +870,7 @@
}
}
},
"id": "ba2f4863-486a-4215-a8dd-dac6b357c439",
"id": "c89cb5c4-d81c-4232-8086-c3fcfc1b2c48",
"savedPayload": {
"position": {
"x": 31143.539108330075,
@@ -1004,7 +893,7 @@
}
}
},
"id": "aedbcfb2-3a10-4f76-ad0f-67d6952d6cb7",
"id": "558b4a55-7cbd-4794-a3ad-009015aca2f3",
"savedPayload": {
"position": {
"x": 31143.539108330075,
@@ -1041,7 +930,7 @@
{
"type": "Market Sell Order",
"name": "New Market Sell Order",
"config": "{\n\"percentageOfAlgorithmSize\": 100, \n\"spawnMultipleOrders\": false \n}",
"config": "{\n\"percentageOfAlgorithmSize\": 20, \n\"spawnMultipleOrders\": true \n}",
"project": "Foundations",
"createOrderEvent": {
"type": "Create Order Event",
@@ -1060,9 +949,9 @@
"javascriptCode": {
"type": "Javascript Code",
"name": "New Javascript Code",
"code": "chart.at01hs.WEMAsignal.previous.signal >= 0.5 && chart.at01hs.WEMAsignal.signal < 0.5",
"code": "chart.at01hs.WEMAsignal.signal < 0.5",
"project": "Foundations",
"id": "d129d107-2206-4230-adaf-4976981c397d",
"id": "e1fe9c08-832a-4411-9a46-19dad548583e",
"savedPayload": {
"position": {
"x": 30626.476248922347,
@@ -1085,7 +974,7 @@
}
}
},
"id": "197420ae-f425-41ac-b4b4-d10a61c964ba",
"id": "ad126cf6-3be8-431c-9221-d23ed5a9b318",
"savedPayload": {
"position": {
"x": 30548.83053539159,
@@ -1109,7 +998,7 @@
}
}
],
"id": "f1ba99a2-6819-44b5-9087-a24855b4b48a",
"id": "e801551a-f69e-4433-bcf4-070b750fa909",
"savedPayload": {
"position": {
"x": 30471.184821860832,
@@ -1144,9 +1033,9 @@
"javascriptCode": {
"type": "Javascript Code",
"name": "New Javascript Code",
"code": "tradingEngine.tradingCurrent.tradingEpisode.candle.close.value >= tradingEngine.tradingCurrent.position.entryTargetRate.value * 1.30",
"code": "tradingEngine.tradingCurrent.tradingEpisode.candle.close.value >= tradingEngine.tradingCurrent.position.entryTargetRate.value * 1.17",
"project": "Foundations",
"id": "67ae2544-d4ec-4fcd-beaa-6768984bbf48",
"id": "f6578611-b4d5-4cb8-84a5-af567b367c55",
"savedPayload": {
"position": {
"x": 29943.539108330075,
@@ -1169,7 +1058,7 @@
}
}
},
"id": "03b9f164-f638-41c7-ad06-94cfeca007e7",
"id": "ed0fb6c0-acf8-402f-9b62-21f9f6a2d204",
"savedPayload": {
"position": {
"x": 30093.539108330075,
@@ -1193,7 +1082,7 @@
}
}
],
"id": "3a2b7b7d-36a4-42d4-9147-4112115c53f7",
"id": "9f1e5745-3edc-4c75-96a7-806c90146778",
"savedPayload": {
"position": {
"x": 30243.539108330075,
@@ -1230,7 +1119,7 @@
"name": "New Javascript Code",
"code": "tradingEngine.tradingCurrent.tradingEpisode.candle.close.value < 0.99 * tradingEngine.tradingCurrent.position.entryTargetRate.value",
"project": "Foundations",
"id": "2b58539e-d6c9-4c81-aa81-d0f6d762f8f8",
"id": "49d2a48c-caab-4ce6-9430-809c9f68345d",
"savedPayload": {
"position": {
"x": 29524.20586466991,
@@ -1253,7 +1142,7 @@
}
}
},
"id": "55eb23dc-b9c8-4ed3-be4b-cceee33097ce",
"id": "caaf0c1e-4faa-439c-b80e-53ffa2774540",
"savedPayload": {
"position": {
"x": 29813.983612556633,
@@ -1277,7 +1166,7 @@
}
}
],
"id": "ce8433b3-1764-477d-b7fe-cb37c3e21f6c",
"id": "e8fe9bbc-b9d8-4177-b291-e1e88952ea07",
"savedPayload": {
"position": {
"x": 30103.761360443354,
@@ -1302,7 +1191,7 @@
}
],
"announcements": [],
"id": "7d35f880-508f-4de0-b8b4-1779fd3f85d0",
"id": "fd3e6184-de9d-440d-8d1b-cc0f68f227bf",
"savedPayload": {
"position": {
"x": 30393.539108330075,
@@ -1325,7 +1214,7 @@
}
}
},
"id": "208a3dfa-fd43-4d88-97e9-cd72b9b7cf13",
"id": "bacbbd95-ce0d-49de-9991-4820ea678296",
"savedPayload": {
"position": {
"x": 30543.539108330075,
@@ -1382,7 +1271,7 @@
],
"limitBuyOrders": [],
"limitSellOrders": [],
"id": "e628be12-6c65-4c84-87f1-93b9743e3ff3",
"id": "abf3b874-e889-4735-bb49-6e3cf7b0dbd1",
"savedPayload": {
"position": {
"x": 30693.539108330075,
@@ -1406,7 +1295,7 @@
}
}
],
"id": "e05fc323-fde9-4b43-9559-fb88abf5f3e3",
"id": "d070d00a-5728-4ff7-8763-95e52e7eee86",
"savedPayload": {
"position": {
"x": 30843.539108330075,
@@ -1430,7 +1319,7 @@
}
},
"announcements": [],
"id": "be7862dd-f241-4b73-9faf-ca0fb9bee6b7",
"id": "392a1c94-23e2-45ac-bc59-f10284ec2f16",
"savedPayload": {
"position": {
"x": 30993.539108330075,
@@ -1453,7 +1342,7 @@
}
}
},
"id": "85ed96f4-8744-43ce-a7ca-d7277f3e8183",
"id": "889d297a-c62d-4fcb-b7bc-1e6526111891",
"savedPayload": {
"position": {
"x": 30993.539108330075,
@@ -1466,7 +1355,7 @@
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": true,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
@@ -1477,7 +1366,7 @@
}
}
],
"id": "e9a1f6f4-7f43-4355-921e-a4f24375de5f",
"id": "9e13804e-0aca-4773-960a-fbe37184f0c6",
"savedPayload": {
"position": {
"x": 30693.539108330075,
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -141,6 +141,12 @@ function newFoundationsDocsFooter() {
}
HTML = HTML + '"></a>'
HTML = HTML + '<a href="#" onClick="UI.projects.education.spaces.docsSpace.changeLanguage(\'EL\')"><img src="Images/Languages/EL.png" title="Greek" class="docs-footer-language'
if (languageCode === 'EL') {
HTML = HTML + '-selected'
}
HTML = HTML + '"></a>'
HTML = HTML + '</div>'
HTML = HTML + '<div class="docs-footer-cell">'
@@ -52,6 +52,10 @@ function newEducationUtilitiesLanguages() {
languageLabel = 'Arabic'
break
}
case 'EL': {
languageLabel = 'Greek'
break
}
}
return languageLabel
}
@@ -39,6 +39,13 @@
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Add Specified Workspace Project",
"label": "Add Specified Workspace Project",
"relatedUiObject": "Workspace",
"actionFunction": "payload.executeAction",
"relatedUiObjectProject": "Foundations"
},
{
"action": "Check For Missing References",
"label": "Check For Missing References",
@@ -58,7 +65,8 @@
"config": "{\"docsLanguage\": \"EN\"}"
},
"editors": {
"config": true
"config": true,
"list": true
},
"isTitleAllwaysVisible": true,
"addLeftIcons": false,
@@ -407,6 +407,11 @@ function newFoundationsActionSwitch() {
UI.projects.foundations.functionLibraries.workspaceFunctions.addMissingWorkspaceProjects(action.node, action.rootNodes)
}
break
case 'Add Specified Workspace Project':
{
UI.projects.foundations.functionLibraries.workspaceFunctions.addSpecifiedWorkspaceProject(action.node, action.rootNodes)
}
break
case 'Check For Missing References':
{
UI.projects.foundations.functionLibraries.workspaceFunctions.checkForMissingReferences(action.rootNodes)
@@ -1,6 +1,7 @@
function newFoundationsFunctionLibraryWorkspaceFunctions() {
let thisObject = {
addMissingWorkspaceProjects: addMissingWorkspaceProjects,
addSpecifiedWorkspaceProject: addSpecifiedWorkspaceProject,
checkForMissingReferences: checkForMissingReferences,
fixMissingReferences: fixMissingReferences
}
@@ -32,6 +33,42 @@ function newFoundationsFunctionLibraryWorkspaceFunctions() {
}
}
function addSpecifiedWorkspaceProject(node, rootNodes) {
let action = { node: node }
let validProjects = PROJECTS_SCHEMA
// Find the Projects not already part of the Workspace
for (let i = 0; i < PROJECTS_SCHEMA.length; i++) {
let projectDefinition = PROJECTS_SCHEMA[i]
let project = projectDefinition.name
for (let k = 0; k < rootNodes.length; k++) {
let rootNode = rootNodes[k]
if (rootNode.type === project + ' Project') {
validProjects = validProjects.filter(function(val) {
return val.name + ' Project' !== rootNode.type
})
}
}
}
// Create the Projects as an Array
let projectList = []
for (let i = 0; i < validProjects.length; i++) {
projectList.push(validProjects[i].name)
}
let eventSubscriptionId = node.payload.uiObject.container.eventHandler.listenToEvent('listSelectorClicked', onListSelect)
node.payload.uiObject.listSelector.activate(action, projectList, eventSubscriptionId)
function onListSelect(event) {
UI.projects.visualScripting.functionLibraries.uiObjectsFromNodes.addUIObject(node, event.selectedNode + ' Project', rootNodes, event.selectedNode)
node.payload.uiObject.container.eventHandler.stopListening('listSelectorClicked')
}
}
// This function scales the current workspace and highlights any nodes that have unresolved references
function checkForMissingReferences(rootNodes) {
let nodes
@@ -285,9 +285,21 @@ function newListSelector() {
let index = i + selected
let label = ''
let subLabel = ''
if (index >= 0 && index < optionsList.length) {
if (typeof(optionsList[index]) !== "string") {
let path = UI.projects.visualScripting.utilities.hierarchy.getNodeNameTypePath(optionsList[index].payload.parentNode)
for (let i = 0; i < path.length; i++) {
path[i].splice(1, 3)
}
label = optionsList[index].name
subLabel = path.join("->")
if (label.length > 65) { label = label.substring(0,65) + " (cont...)" }
if (subLabel.length > 65) { subLabel = subLabel.substring(0,65) + " (cont...)" }
if (optionsList[index].payload.uiObject.icon !== undefined) {
icon = optionsList[index].payload.uiObject.icon
@@ -333,13 +345,19 @@ function newListSelector() {
let middleValue = Math.floor(VISIBLE_LABELS / 2)
let evenOffset = 0
let subOffset = 0
if (VISIBLE_LABELS % 2 === 0) {
evenOffset = rowHeight / 2
}
if (subLabel !== '') {
subOffset = 10
}
UI.projects.foundations.utilities.drawPrint.drawIcon(icon, 1 / 2, 1 / 2, - offset + SIZE, (i - middleValue) * rowHeight + evenOffset, SIZE, thisObject.container)
UI.projects.foundations.utilities.drawPrint.drawLabel(label, 1 / 2, 1 / 2, 0, (SIZE - fontSize) / 2 + (i - middleValue) * rowHeight + evenOffset, fontSize, thisObject.container, fontColor, undefined, undefined, opacity)
UI.projects.foundations.utilities.drawPrint.drawLabel(label, 1 / 2, 1 / 2, 0, (SIZE - fontSize) / 2 + (i - middleValue) * rowHeight + evenOffset - subOffset, fontSize, thisObject.container, fontColor, undefined, undefined, opacity)
UI.projects.foundations.utilities.drawPrint.drawLabel(subLabel, 1 / 2, 1 / 2, 0, (SIZE - fontSize) / 2 + (i - middleValue) * rowHeight + evenOffset + subOffset, fontSize / 2, thisObject.container, fontColor, undefined, undefined, opacity)
}
}
}
@@ -0,0 +1,250 @@
{
"type": "User Profile",
"name": "claudioLopezSA",
"config": "{\n \"signature\": {\n \"message\": \"claudioLopezSA\",\n \"messageHash\": \"0x3b308be230ec9ef862455792912103ecb6faea1d53857fd0f7327e43d3352a54\",\n \"v\": \"0x1b\",\n \"r\": \"0x6fe828ffedd7123b31b05b1a7334b2f5927b37dd179b2598e9f69b09cc773b88\",\n \"s\": \"0x6991fbe6bf8000a1025c691b8927b96a43054163be8fe182c422e62aadf5ba7b\",\n \"signature\": \"0x6fe828ffedd7123b31b05b1a7334b2f5927b37dd179b2598e9f69b09cc773b886991fbe6bf8000a1025c691b8927b96a43054163be8fe182c422e62aadf5ba7b1b\"\n }\n}",
"project": "Governance",
"tokenPowerSwitch": {
"type": "Token Power Switch",
"name": "New Token Power Switch",
"config": "{}",
"project": "Governance",
"tokenPowerSwitch": [],
"onboardingPrograms": {
"type": "Onboarding Programs",
"name": "New Onboarding Programs",
"config": "{}",
"project": "Governance",
"airdropProgram": {
"type": "Airdrop Program",
"name": "New Airdrop Program",
"config": "{}",
"project": "Governance",
"tokensAwarded": {
"type": "Tokens Awarded",
"name": "New Tokens Awarded",
"project": "Governance",
"id": "77d14b16-eb24-403e-8553-deeaaa1e416a",
"savedPayload": {
"position": {
"x": 13553.000000000002,
"y": 5107.635444127544
},
"targetPosition": {
"x": 13703.000000000002,
"y": 5367.443065262876
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "240a3a59-fb2e-49c2-a073-1a33d952e955",
"savedPayload": {
"position": {
"x": 13703.000000000002,
"y": 5367.443065262876
},
"targetPosition": {
"x": 13853.000000000002,
"y": 5627.250686398208
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"githubProgram": {
"type": "Github Program",
"name": "New Github Program",
"config": "{}",
"project": "Governance",
"tokensAwarded": {
"type": "Tokens Awarded",
"name": "New Tokens Awarded",
"project": "Governance",
"id": "1f113e80-6369-4886-b0e2-2792a40e7d85",
"savedPayload": {
"position": {
"x": 14453.000000000002,
"y": 5627.250686398208
},
"targetPosition": {
"x": 14153.000000000002,
"y": 5627.250686398208
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "3234464c-487c-4b5b-99aa-c53e71c88c26",
"savedPayload": {
"position": {
"x": 14153.000000000002,
"y": 5627.250686398208
},
"targetPosition": {
"x": 13853.000000000002,
"y": 5627.250686398208
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "1a9146b0-c5bd-49ef-a024-a1ecaf5dda7b",
"savedPayload": {
"position": {
"x": 13853.000000000002,
"y": 5627.250686398208
},
"targetPosition": {
"x": 13703.000000000002,
"y": 5887.05830753354
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"communityBuildingPrograms": {
"type": "Community Building Programs",
"name": "New Community Building Programs",
"config": "{}",
"project": "Governance",
"id": "e02aaf5c-1358-4bb1-8245-d72b42027120",
"savedPayload": {
"position": {
"x": 13853.000000000002,
"y": 6146.865928668872
},
"targetPosition": {
"x": 13703.000000000002,
"y": 5887.05830753354
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "513d45de-cf30-41e6-8dd9-0f691652f26e",
"savedPayload": {
"position": {
"x": 13703.000000000002,
"y": 5887.05830753354
},
"targetPosition": {
"x": 13403.000000000002,
"y": 5887.05830753354
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"tokensMined": {
"type": "Tokens Mined",
"name": "New Tokens Mined",
"project": "Governance",
"id": "cdbae959-57e3-44a8-8a84-b34ff6b82c92",
"savedPayload": {
"position": {
"x": 13103.000000000002,
"y": 5887.05830753354
},
"targetPosition": {
"x": 13403.000000000002,
"y": 5887.05830753354
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
},
"id": "9098f5b1-df84-463c-adf8-227b3c51dbba",
"savedPayload": {
"position": {
"x": 13403.000000000002,
"y": 5887.05830753354
},
"targetPosition": {
"x": 13403.000000000002,
"y": 5887.05830753354
},
"floatingObject": {
"isPinned": false,
"isFrozen": false,
"isCollapsed": false,
"angleToParent": 1,
"distanceToParent": 3,
"arrangementStyle": 0
},
"uiObject": {
"isRunning": false
}
}
}
@@ -2,7 +2,14 @@
"type": "Governance Address",
"definition": {
"text": "Your Governance Address is a Superalgos SA Token address generated from within Superalgos, using the Profile Constructor. The tokens you hold in this address confer you Token Power which you may use from within your User Profile to participate in governance.",
"updated": 1630083503097
"updated": 1630083503097,
"translations": [
{
"language": "ES",
"text": "Su dirección de gobierno en Superalgos es una SA Token address ( dirección del token) generadadesde dentro de Superalgos, utilizando el Profile Constructor ( Pérfil de constructor). Los tokens que holdea en esta dirección confiere su Token Power el cual puede utilizar a traves de su User Profile para participar en la gobernanza.",
"updated": 1637404208656
}
]
},
"paragraphs": [
{
@@ -13,7 +20,14 @@
{
"style": "Callout",
"text": "Your Governance Address is a Superalgos SA Token address generated from within Superalgos, using the Profile Constructor. The tokens you hold in this address confer you Token Power which you may use from within your User Profile to participate in governance.",
"updated": 1630083498247
"updated": 1630083498247,
"translations": [
{
"language": "ES",
"text": "Su dirección de gobierno de Superalgos es una SA Token address generada dentro de Superalgos, usando el Profile Constructor. Los tokens que holdea en esta dirección le confiere su Token Power el cual puede usar a través de su User Profile para participatar en la gobernanza.",
"updated": 1637404363372
}
]
}
]
}
@@ -4,21 +4,49 @@
"type": "Introduction to Governance Definitions",
"definition": {
"text": "For Contributors to participate in governance, the project must be thoroughly defined, as it is these definitions that may accept votes and claims from Contributors.",
"updated": 1624706736435
"updated": 1624706736435,
"translations": [
{
"language": "ES",
"text": "Para que los Contribuyentes participen en la gobernanza, el proyecto debe estar completamente definido, ya que son estas definiciones las que pueden aceptar votos y reclamos de los Contribuyentes.",
"updated": 1637405662285
}
]
},
"paragraphs": [
{
"style": "Text",
"text": "The Governance Project is designed in a way that allows describing the project in a highly granular fashion. This is one of the features that enable a massive collaboration, as it allows different people to get involved with very specific areas of the project.",
"updated": 1624706744817
"updated": 1624706744817,
"translations": [
{
"language": "ES",
"text": "The Governance Project ( el proyecto de gobernanza) iestá diseñado de una manera que permite describir el proyecto de una manera muy granular. Ésta es una de las características que posibilita una colaboración masiva, ya que permite que distintas personas se involucren en áreas muy específicas del proyecto.",
"updated": 1637405719048
}
]
},
{
"style": "Text",
"text": "Usually, governance definitions are produced by top contributors leading significant areas of the project. They are best suited to define the areas they lead, as they have profound knowledge of the existing infrastructure and the development roadmap."
"text": "Usually, governance definitions are produced by top contributors leading significant areas of the project. They are best suited to define the areas they lead, as they have profound knowledge of the existing infrastructure and the development roadmap.",
"translations": [
{
"language": "ES",
"text": "Por lo general, las definiciones de gobernanza son elaboradas por los principales contribuyentes que lideran áreas importantes del proyecto. Son los más adecuados para definir las áreas que lideran, ya que tienen un conocimiento profundo de la infraestructura existente y la hoja de ruta del desarrollo.",
"updated": 1637406151282
}
]
},
{
"style": "Text",
"text": "Regular contributors tend to interact with these definitions to cast their votes and raise their claims."
"text": "Regular contributors tend to interact with these definitions to cast their votes and raise their claims.",
"translations": [
{
"language": "ES",
"text": "Los contribuyentes habituales tienden a interactuar con estas definiciones para emitir sus votos y plantear sus solicitudes.",
"updated": 1637406185693
}
]
}
]
}
@@ -4,7 +4,14 @@
"type": "Governance Workspaces",
"definition": {
"text": "The Governance Project features multiple Project Definition Hierarchies spread across multiple Plugin Workspaces — one Workspace per Project — to facilitate the granular management of definitions by independent teams of maintainers. These are the Governance Workspaces.",
"updated": 1630567756861
"updated": 1630567756861,
"translations": [
{
"language": "ES",
"text": "Superalgos Pools es la jerarquía de nivel superior que pone en marcha la definición del todo Superalgos Project. Cuenta con la definición de varios nodos Pool que describen las áreas principales del desarrollo del project que la Community desea incentivar.",
"updated": 1637405480065
}
]
},
"paragraphs": [
{
@@ -15,7 +22,14 @@
{
"style": "Text",
"text": "The Token Distribution Superalgos Governance Workspace is the main workspace. Load this workspace to start your interaction with governance. This is where you would usually build and set up your User Profile.",
"updated": 1630568963531
"updated": 1630568963531,
"translations": [
{
"language": "ES",
"text": "El Token Distribution Superalgos Governance Workspace (Espacio de trabajo de gobernanza de Superalgos de distribución de tokens) es el workspace principal. Cargue este workspace para comenzar su interacción con la gobernanza. Aquí es donde normalmente construiría y configuraría su User Profile (Pérfil de usuario).",
"updated": 1637404937644
}
]
},
{
"style": "Title",
@@ -23,7 +37,14 @@
},
{
"style": "Text",
"text": "All Governance Workspaces follow a similar naming structure, to make them easy to spot in the Workspaces Tab:"
"text": "All Governance Workspaces follow a similar naming structure, to make them easy to spot in the Workspaces Tab:",
"translations": [
{
"language": "ES",
"text": "Todos los espacios de trabajo de gobernanza siguen una estructura de nomenclatura similar, para que sean fáciles de detectar en la pestaña de espacios de trabajo.:",
"updated": 1637404978098
}
]
},
{
"style": "Json",
@@ -43,7 +64,14 @@
{
"style": "Text",
"text": "Each of the Governance Workspaces features several Project Definition Hierarchies describing the Pools, Assets, Features, and Positions of the corresponding Project.",
"updated": 1630568821141
"updated": 1630568821141,
"translations": [
{
"language": "ES",
"text": "Cada uno de los espacios de trabajo de gobernanza presenta varias Project Definition Hierarchies describiendo los Pools, Assets, Features, and Positions del Proyecto correspondiente.",
"updated": 1637405088014
}
]
},
{
"style": "Include",
@@ -4,7 +4,14 @@
"type": "Token Distribution Superalgos Governance Workspace",
"definition": {
"text": "This is the main governance workspace where broad Superalgos Project definitions live.",
"updated": 1630575735214
"updated": 1630575735214,
"translations": [
{
"language": "ES",
"text": "Este es el workspace principal de la gobernanaza donde ampliar definiciones en vivo del Superalgos Project (el proyecto Superalgos).",
"updated": 1637406477955
}
]
},
"paragraphs": [
{
@@ -15,7 +22,14 @@
{
"style": "List",
"text": "Creating Your User Profile Tutorial",
"updated": 1630576522747
"updated": 1630576522747,
"translations": [
{
"language": "ES",
"text": "Creating Your User Profile Tutorial (Tutorial de creación de su perfil de usuario)",
"updated": 1637406504592
}
]
},
{
"style": "Title",
@@ -23,7 +37,14 @@
},
{
"style": "List",
"text": "Profiles of Core Team members and Community Mods."
"text": "Profiles of Core Team members and Community Mods.",
"translations": [
{
"language": "ES",
"text": "Pérfiles de los miembros del Core Team ( equipo central) y Community Mods (moderadores de la comunidad).",
"updated": 1637406590297
}
]
},
{
"style": "Title",
@@ -32,7 +53,14 @@
{
"style": "Text",
"text": "The workspace features definitions that span the whole Superalgos Project.",
"updated": 1630576025223
"updated": 1630576025223,
"translations": [
{
"language": "ES",
"text": "Este workspaceincluye definiciones que abarcan todo el Superalgos Project.",
"updated": 1637406627595
}
]
},
{
"style": "Subtitle",
@@ -41,7 +69,14 @@
{
"style": "List",
"text": "Superalgos Pools hierarchy.",
"updated": 1630576375102
"updated": 1630576375102,
"translations": [
{
"language": "ES",
"text": "Jerarquías Superalgos Pools.",
"updated": 1637406655122
}
]
},
{
"style": "Subtitle",
@@ -50,12 +85,26 @@
{
"style": "List",
"text": "Superalgos Marketing (project-wide marketing-related positions),",
"updated": 1630576292069
"updated": 1630576292069,
"translations": [
{
"language": "ES",
"text": "Superalgos Marketing (posiciones relacionadas con el marketing de todo el proyecto),",
"updated": 1637406711264
}
]
},
{
"style": "List",
"text": "Superalgos (project-wide positions such as Community Mods, Core Team, or Business Lead).",
"updated": 1630576271333
"updated": 1630576271333,
"translations": [
{
"language": "ES",
"text": "Superalgos (posiciones de todo el proyecto como Community Mods, Core Team, or Business Lead).",
"updated": 1637406807754
}
]
},
{
"style": "Subtitle",
@@ -64,7 +113,14 @@
{
"style": "List",
"text": "Superalgos (project-wide features such as the Charting Space, the Visual Designer, the Tensor Flow integration, and so on).",
"updated": 1630576362020
"updated": 1630576362020,
"translations": [
{
"language": "ES",
"text": "Superalgos (características de todo el proyecto, como Charting Space, el diseñador visual, la integración de Tensor Flow, etc.).",
"updated": 1637406897904
}
]
},
{
"style": "Subtitle",
@@ -73,12 +129,26 @@
{
"style": "List",
"text": "Superalgos Exchanges (assets related to exchange listings),",
"updated": 1630576480397
"updated": 1630576480397,
"translations": [
{
"language": "ES",
"text": "Superalgos Exchanges (activos relacionados con el listado de los exchange),",
"updated": 1637406934412
}
]
},
{
"style": "List",
"text": "Superalgos Marketing (project-wide, marketing-related assets),",
"updated": 1630576486012
"updated": 1630576486012,
"translations": [
{
"language": "ES",
"text": "Superalgos Marketing (activos relacionados con el marketing de todo el proyecto),",
"updated": 1637406967294
}
]
},
{
"style": "List",
@@ -8,8 +8,8 @@
"translations": [
{
"language": "ES",
"text": "The Community puede participar en múltiples Governance Programs, cada uno diseñado para cumplir un objetivo específico. Los programas se agrupan en los siguientes dominios: Onboarding Programs, Community Building Programs, Votes and Claims Programs, y Financial Programs.",
"updated": 1631678191412
"text": "La Community puede participar en múltiples Governance Programs, cada uno diseñado para cumplir un objetivo específico. Los programas se agrupan en los siguientes dominios: Onboarding Programs, Community Building Programs, Votes and Claims Programs, y Financial Programs.",
"updated": 1637405573505
}
]
},
+101 -6
View File
@@ -14,6 +14,8 @@
- [Windows Install](#windows-install)
- [Mac OS Install](#mac-os-install)
- [Linux Install (e.g. Raspberry Pi running Raspberry Pi OS/Raspbian)](#linux-install--eg-raspberry-pi-running-raspberry-pi-os-raspbian-)
- [Installing on Debian & Debian WSL/WSL2](#installing-on-debian-or-debian-wsl-wsl2)
- [WSL2 IDE Environment Setup](#wsl2-ide-environment-setup)
- [Superalgos Platform Client Installation](#superalgos-platform-client-installation)
- [Fork the Superalgos Repository](#fork-the-superalgos-repository)
- [Clone Your Fork](#clone-your-fork)
@@ -120,20 +122,113 @@ You can use Safari or Google Chrome as your default browser. If you run into a b
[Follow the Node.js package manager install instructions](https://nodejs.org/en/download/package-manager/) for your distribution to ensure you are getting the latest version of Node.js. Many distributions only maintain an older version in their default repositories. Python 3 is only required for running machine learning (TensorFlow).
```sh
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt-get install -y nodejs npm git python3
curl -sL https://deb.nodesource.com/setup_17.x | sudo -E bash - && sudo apt-get \
install -y \
nodejs npm git python3
```
You may verify the installed versions with these commands:
You may verify the installed versions with this command string:
```sh
node -v
npm -v
git --version
node \
-v && npm \
-v && git --version
```
If you are running headless (i.e. as a server without a monitor attached) then you do not need to install a web browser and you can follow the tutorial for information on connecting remotely to the server.
Alternatively, one could use [https://github.com/nymea/berrylan](https://github.com/nymea/berrylan) to setup a tool for using bluetooth to quickly assign WPA2 access on a WLAN on a Raspbian based Distro. Nymea also has tools for automation of IoT products to allow setting up SuperAlgos as a timed function without needing to learn how to code.
Also, if you are having node version errors there is a chance you may need to read the information following this to install and use NVM to handle node versions. This is due to some distributions having out of date repositories in the package manager lists.
#### Installing on Debian or Debian WSL/WSL2
(NVM & NPM Fix)
For this to work you will need to [use NVM to install and control node] (https://github.com/nvm-sh/nvm)
- You will need to remove any versions of node already installed on Debian due to the repositories currently being out of date.
- - __This is necessary before proceeding.__
```sh
sudo apt \
remove nodejs -y && \
```
```sh
sudo apt \
update && apt upgrade \
-y sudo apt \
install npm -y
```
```sh
sudo apt \
autoremove -y && \
sudo apt autoclean -y
```
```sh
sudo curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.3/install.sh | bash
```
_Without running the next 3 commands, you will need to logout of your shell/WSL2 user account before you are to use NVM_
```sh
export NVM_DIR="$HOME/.nvm"
```
```sh
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
```
```sh
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
```
_Make sure things are up to date and packages not needed are removed_
```sh
sudo apt update \
sudo apt upgrade && \
apt autoremove -y
```
```sh
cd
```
into the directory of SuperAlgos
and __run the install commands as follows__:
```sh
nvm run node <command string/var>
```
(This is for node.js/node only as npm should work fine with Debian.)
##### WSL2 IDE Environment Setup
__There is a few parts that are necessary to obtain full functionality from VSCode as an app to run notebooks for ML/AI algos and you can turn VSCode and Windows into a development bench for working with Super Algos.__
- First you need to install WSL and WSL2 [https://docs.microsoft.com/en-us/windows/wsl/install](https://docs.microsoft.com/en-us/windows/wsl/install) then reboot if promoted.
- You may want to review the Docker WSL2 Backend information for VSCode as well before proceeding. [https://aka.ms/vscode-remote/containers/docker-wsl2](https://aka.ms/vscode-remote/containers/docker-wsl2)
- Install Debian or Ubuntu from the Windows Store, Setup the VM as instructed.
To make managing these WSL instances a lot easier, we will now move to installing VSCode + Tools to allow for Dockerizing and rapidly deploying as well as editing and manging test/usage cases of SuperAlgos edit and forks you create and contribute.
- Install VSCode [https://code.visualstudio.com/docs/?dv=win64user](https://code.visualstudio.com/docs/?dv=win64user)
- Install the remote container and remote docker plugins/extensions for Visual Studio Code [https://code.visualstudio.com/docs/remote/containers#_installation](https://code.visualstudio.com/docs/remote/containers#_installation)
- _You may want to spend time reading the specifics of this documentation on their website._
- *When prompted* install shell shortcuts for right click options, this way you can open SuperAlgos really easy inside of VSCode.
__Please refer to the information above__ for properly setting up node.js and npm on Debian systems with complications regarding versions of node.
Once the install finishes you can now use VSCode as an interactive IDE/Shell to access SuperAlgos, run Dockers for working with SuperAlgos and more.
*As mentioned above, you need to remove node.js/node from your system and install NVM if you are using Debian.*
## Superalgos Platform Client Installation
### Fork the Superalgos Repository
+3 -1
View File
@@ -35,7 +35,9 @@
"twitter": "^1.7.1",
"util": "^0.12.4",
"web3": "^1.6.0",
"ws": "^8.2.3",
"ws": "^8.2.3"
},
"optionalDependencies": {
"@tensorflow/tfjs-node": "^2.8.6"
},
"devDependencies": {